Kea 3.3.3
isc::perfdhcp::CommandOptions Class Reference

Command Options. More...

#include <command_options.h>

Inheritance diagram for isc::perfdhcp::CommandOptions:

Classes

class  LeaseType
 A class encapsulating the type of lease being requested from the server. More...

Public Types

enum  ExchangeMode : uint16_t { DO_SA , DORA_SARR }
 2-way (cmd line param -i) or 4-way exchanges More...
typedef std::vector< std::vector< uint8_t > > MacAddrsVector
 A vector holding MAC addresses.

Public Member Functions

 CommandOptions ()
 Default Constructor.
bool checkMultiSubnet ()
 Check if multi subnet mode is enabled.
void extendedVersion () const
 Print extended program version.
bool getAddrUnique () const
 Returns address uniqueness value.
std::vector< std::string > getBase () const
 Returns base values.
int getCleanReport () const
 Returns clean report mode.
std::string getCleanReportSeparator () const
 Returns clean report separator.
uint32_t getClientsNum () const
 Returns number of simulated clients.
std::string getDiags () const
 Returns diagnostic selectors.
std::vector< double > getDropTime () const
 Returns drop time.
std::vector< uint8_t > getDuidTemplate () const
 Returns DUID template.
int getElapsedTimeOffset () const
 Returns template offset for elapsed time.
ExchangeMode getExchangeMode () const
 Returns packet exchange mode.
int getExitWaitTime () const
 Returns the time in microseconds to delay the program by.
const isc::dhcp::OptionCollection & getExtraOpts () const
 Returns extra options to be inserted.
int getIncreaseElapsedTime () const
 Returns increased elapsed time.
uint8_t getIpVersion () const
 Returns IP version.
LeaseType getLeaseType () const
 \ brief Returns the type of lease being requested.
std::string getLocalName () const
 Returns local address or interface name.
int getLocalPort () const
 Returns local port number.
std::string getMacListFile () const
 Returns location of the file containing list of MAC addresses.
const MacAddrsVector & getMacsFromFile () const
 Returns reference to a vector of MAC addresses read from a file.
std::vector< uint8_t > getMacTemplate () const
 Returns MAC address template.
std::vector< int > getMaxDrop () const
 Returns maximum drops number.
std::vector< double > getMaxDropPercentage () const
 Returns maximal percentage of drops.
std::vector< int > getNumRequests () const
 Returns maximum number of exchanges.
int getPeriod () const
 Returns test period.
int getPreload () const
 Returns number of preload exchanges.
std::vector< int > getRandomOffset () const
 Returns template offsets for rnd.
std::string getRandRelayAddr ()
 Returns random relay address.
int getRate () const
 Returns exchange rate.
std::vector< std::string > getRelayAddrList () const
 Returns list of relay addresses.
std::string getRelayAddrListFile () const
 Returns file location with set of relay addresses.
const isc::dhcp::OptionCollection & getRelayOpts (uint8_t encapsulation_level=1) const
 Returns relay options to be inserted at given level of encapsulation.
int getReleaseRate () const
 Returns a rate at which DHCPv6 Release messages are sent.
int getRemotePort () const
 Returns remote port number.
int getRenewRate () const
 Returns a rate at which DHCPv6 Renew messages are sent.
int getReportDelay () const
 Returns delay between two performance reports.
int getRequestedIpOffset () const
 Returns template offset for requested IP.
Scenario getScenario () const
 Returns selected scenario.
uint32_t getSeed () const
 Returns random seed.
int getServerIdOffset () const
 Returns template offset for server-ID.
std::string getServerName () const
 Returns server name.
std::vector< std::string > getTemplateFiles () const
 Returns template file names.
std::vector< int > getTransactionIdOffset () const
 brief Returns template offsets for xid.
int getWaitForElapsedTime () const
 Returns time to wait for elapsed time increase.
std::string getWrapped () const
 Returns wrapped command.
bool isBroadcast () const
 Checks if broadcast address is to be used.
bool isInterface () const
 Checks if interface name was used.
bool isRapidCommit () const
 Check if rapid commit option used.
bool isSeeded () const
 Checks if seed provided.
bool isSingleThreaded () const
 Check if single-threaded mode is enabled.
bool isUseFirst () const
 Check if server-ID to be taken from first package.
bool isUseRelayedV6 () const
 Check if generated DHCPv6 messages should appear as relayed.
bool parse (int argc, char **const argv, bool print_cmd_line=false)
 Parse command line.
void printCommandLine () const
 Print command line arguments.
void reset ()
 Reset to defaults.
bool testDiags (const char diag)
 Find if diagnostic flag has been set.
void version () const
 Print program version.

Static Public Member Functions

static void usage ()
 Print usage.

Static Public Attributes

static const uint8_t RELAY_OPTIONS_MAX_ENCAPSULATION = 1
 Maximum allowed level of encapsulation of added relay options.

Detailed Description

Command Options.

This class is responsible for parsing the command-line and storing the specified options.

Definition at line 31 of file command_options.h.

Member Typedef Documentation

◆ MacAddrsVector

typedef std::vector<std::vector<uint8_t> > isc::perfdhcp::CommandOptions::MacAddrsVector

A vector holding MAC addresses.

Definition at line 43 of file command_options.h.

Member Enumeration Documentation

◆ ExchangeMode

2-way (cmd line param -i) or 4-way exchanges

Enumerator
DO_SA 
DORA_SARR 

Definition at line 121 of file command_options.h.

Constructor & Destructor Documentation

◆ CommandOptions()

isc::perfdhcp::CommandOptions::CommandOptions ( )
inline

Default Constructor.

Private constructor as this is a singleton class. Use CommandOptions::instance() to get instance of it.

Definition at line 38 of file command_options.h.

References reset().

Here is the call graph for this function:

Member Function Documentation

◆ checkMultiSubnet()

bool isc::perfdhcp::CommandOptions::checkMultiSubnet ( )
inline

Check if multi subnet mode is enabled.

Returns
true if multi subnet mode is enabled.

Definition at line 427 of file command_options.h.

◆ extendedVersion()

void isc::perfdhcp::CommandOptions::extendedVersion ( ) const

Print extended program version.

Definition at line 1269 of file command_options.cc.

◆ getAddrUnique()

bool isc::perfdhcp::CommandOptions::getAddrUnique ( ) const
inline

Returns address uniqueness value.

Returns
address uniqueness specified value.

Definition at line 213 of file command_options.h.

◆ getBase()

std::vector< std::string > isc::perfdhcp::CommandOptions::getBase ( ) const
inline

Returns base values.

Returns
all base values specified.

Definition at line 208 of file command_options.h.

◆ getCleanReport()

int isc::perfdhcp::CommandOptions::getCleanReport ( ) const
inline

Returns clean report mode.

Returns
true if cleaner report is enabled.

Definition at line 183 of file command_options.h.

◆ getCleanReportSeparator()

std::string isc::perfdhcp::CommandOptions::getCleanReportSeparator ( ) const
inline

Returns clean report separator.

Returns
returns string which is used as separator for report..

Definition at line 188 of file command_options.h.

◆ getClientsNum()

uint32_t isc::perfdhcp::CommandOptions::getClientsNum ( ) const
inline

Returns number of simulated clients.

Returns
number of simulated clients.

Definition at line 193 of file command_options.h.

◆ getDiags()

std::string isc::perfdhcp::CommandOptions::getDiags ( ) const
inline

Returns diagnostic selectors.

Returns
diagnostics selector.

Definition at line 372 of file command_options.h.

Referenced by main(), and testDiags().

◆ getDropTime()

std::vector< double > isc::perfdhcp::CommandOptions::getDropTime ( ) const
inline

Returns drop time.

The method returns maximum time elapsed from sending the packet before it is assumed dropped.

Returns
return time before request is assumed dropped.

Definition at line 243 of file command_options.h.

◆ getDuidTemplate()

std::vector< uint8_t > isc::perfdhcp::CommandOptions::getDuidTemplate ( ) const
inline

Returns DUID template.

Returns
DUID template to simulate different clients.

Definition at line 203 of file command_options.h.

◆ getElapsedTimeOffset()

int isc::perfdhcp::CommandOptions::getElapsedTimeOffset ( ) const
inline

Returns template offset for elapsed time.

Returns
template offset for elapsed time.

Definition at line 357 of file command_options.h.

◆ getExchangeMode()

ExchangeMode isc::perfdhcp::CommandOptions::getExchangeMode ( ) const
inline

Returns packet exchange mode.

Returns
packet exchange mode.

Definition at line 153 of file command_options.h.

◆ getExitWaitTime()

int isc::perfdhcp::CommandOptions::getExitWaitTime ( ) const
inline

Returns the time in microseconds to delay the program by.

Returns
the time in microseconds to delay the program by.

Definition at line 292 of file command_options.h.

◆ getExtraOpts()

const isc::dhcp::OptionCollection & isc::perfdhcp::CommandOptions::getExtraOpts ( ) const
inline

Returns extra options to be inserted.

Returns
container with options.

Definition at line 382 of file command_options.h.

◆ getIncreaseElapsedTime()

int isc::perfdhcp::CommandOptions::getIncreaseElapsedTime ( ) const
inline

Returns increased elapsed time.

Returns
how long perfdhcp will send messages with increased elapsed time.

Definition at line 235 of file command_options.h.

◆ getIpVersion()

uint8_t isc::perfdhcp::CommandOptions::getIpVersion ( ) const
inline

Returns IP version.

Returns
IP version to be used.

Definition at line 148 of file command_options.h.

Referenced by isc::perfdhcp::StatsMgr::StatsMgr(), and isc::perfdhcp::PerfSocket::openSocket().

◆ getLeaseType()

LeaseType isc::perfdhcp::CommandOptions::getLeaseType ( ) const
inline

\ brief Returns the type of lease being requested.

Returns
type of lease being requested by perfdhcp.

Definition at line 158 of file command_options.h.

Referenced by printCommandLine().

◆ getLocalName()

std::string isc::perfdhcp::CommandOptions::getLocalName ( ) const
inline

Returns local address or interface name.

Returns
local address or interface name.

Definition at line 264 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket().

◆ getLocalPort()

int isc::perfdhcp::CommandOptions::getLocalPort ( ) const
inline

Returns local port number.

Returns
local port number.

Definition at line 282 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket(), and printCommandLine().

◆ getMacListFile()

std::string isc::perfdhcp::CommandOptions::getMacListFile ( ) const
inline

Returns location of the file containing list of MAC addresses.

MAC addresses read from the file are used by the perfdhcp in message exchanges with the DHCP server.

Returns
Location of the file containing list of MAC addresses.

Definition at line 335 of file command_options.h.

◆ getMacsFromFile()

const MacAddrsVector & isc::perfdhcp::CommandOptions::getMacsFromFile ( ) const
inline

Returns reference to a vector of MAC addresses read from a file.

Every MAC address is represented as a vector.

Returns
Reference to a vector of vectors.

Definition at line 342 of file command_options.h.

◆ getMacTemplate()

std::vector< uint8_t > isc::perfdhcp::CommandOptions::getMacTemplate ( ) const
inline

Returns MAC address template.

Returns
MAC address template to simulate different clients.

Definition at line 198 of file command_options.h.

◆ getMaxDrop()

std::vector< int > isc::perfdhcp::CommandOptions::getMaxDrop ( ) const
inline

Returns maximum drops number.

Returns maximum number of packet drops before aborting a test.

Returns
maximum number of dropped requests.

Definition at line 251 of file command_options.h.

◆ getMaxDropPercentage()

std::vector< double > isc::perfdhcp::CommandOptions::getMaxDropPercentage ( ) const
inline

Returns maximal percentage of drops.

Returns maximal percentage of packet drops before aborting a test.

Returns
maximum percentage of lost requests.

Definition at line 259 of file command_options.h.

◆ getNumRequests()

std::vector< int > isc::perfdhcp::CommandOptions::getNumRequests ( ) const
inline

Returns maximum number of exchanges.

Returns
number of exchange requests before test is aborted.

Definition at line 218 of file command_options.h.

◆ getPeriod()

int isc::perfdhcp::CommandOptions::getPeriod ( ) const
inline

Returns test period.

Returns
test period before it is aborted.

Definition at line 223 of file command_options.h.

◆ getPreload()

int isc::perfdhcp::CommandOptions::getPreload ( ) const
inline

Returns number of preload exchanges.

Returns
number of preload exchanges.

Definition at line 277 of file command_options.h.

◆ getRandomOffset()

std::vector< int > isc::perfdhcp::CommandOptions::getRandomOffset ( ) const
inline

Returns template offsets for rnd.

Returns
template offsets for rnd.

Definition at line 352 of file command_options.h.

◆ getRandRelayAddr()

std::string isc::perfdhcp::CommandOptions::getRandRelayAddr ( )
inline

Returns random relay address.

Returns
single string containing relay address.

Definition at line 422 of file command_options.h.

◆ getRate()

int isc::perfdhcp::CommandOptions::getRate ( ) const
inline

Returns exchange rate.

Returns
exchange rate per second.

Definition at line 163 of file command_options.h.

◆ getRelayAddrList()

std::vector< std::string > isc::perfdhcp::CommandOptions::getRelayAddrList ( ) const
inline

Returns list of relay addresses.

Returns
list of relay addresses.

Definition at line 417 of file command_options.h.

◆ getRelayAddrListFile()

std::string isc::perfdhcp::CommandOptions::getRelayAddrListFile ( ) const
inline

Returns file location with set of relay addresses.

Returns
relay addresses list file location.

Definition at line 412 of file command_options.h.

◆ getRelayOpts()

const isc::dhcp::OptionCollection & isc::perfdhcp::CommandOptions::getRelayOpts ( uint8_t encapsulation_level = 1) const

Returns relay options to be inserted at given level of encapsulation.

Parameters
encapsulation_levellevel of encapsulation, by default 1
Exceptions
isc::OutOfRangeWhen trying to access relay options at encapsulation level that doesn't exist.
Returns
container with options.

Definition at line 911 of file command_options.cc.

References isc_throw, and RELAY_OPTIONS_MAX_ENCAPSULATION.

◆ getReleaseRate()

int isc::perfdhcp::CommandOptions::getReleaseRate ( ) const
inline

Returns a rate at which DHCPv6 Release messages are sent.

Returns
A rate at which DHCPv6 Release messages are sent.

Definition at line 173 of file command_options.h.

Referenced by isc::perfdhcp::StatsMgr::StatsMgr(), and printCommandLine().

◆ getRemotePort()

int isc::perfdhcp::CommandOptions::getRemotePort ( ) const
inline

Returns remote port number.

Returns
remote port number.

Definition at line 287 of file command_options.h.

Referenced by printCommandLine().

◆ getRenewRate()

int isc::perfdhcp::CommandOptions::getRenewRate ( ) const
inline

Returns a rate at which DHCPv6 Renew messages are sent.

Returns
A rate at which IPv6 Renew messages are sent.

Definition at line 168 of file command_options.h.

Referenced by isc::perfdhcp::StatsMgr::StatsMgr(), and printCommandLine().

◆ getReportDelay()

int isc::perfdhcp::CommandOptions::getReportDelay ( ) const
inline

Returns delay between two performance reports.

Returns
delay between two consecutive performance reports.

Definition at line 178 of file command_options.h.

◆ getRequestedIpOffset()

int isc::perfdhcp::CommandOptions::getRequestedIpOffset ( ) const
inline

Returns template offset for requested IP.

Returns
template offset for requested IP.

Definition at line 367 of file command_options.h.

◆ getScenario()

Scenario isc::perfdhcp::CommandOptions::getScenario ( ) const
inline

Returns selected scenario.

Returns
enum Scenario.

Definition at line 402 of file command_options.h.

Referenced by main().

◆ getSeed()

uint32_t isc::perfdhcp::CommandOptions::getSeed ( ) const
inline

Returns random seed.

Returns
random seed.

Definition at line 302 of file command_options.h.

◆ getServerIdOffset()

int isc::perfdhcp::CommandOptions::getServerIdOffset ( ) const
inline

Returns template offset for server-ID.

Returns
template offset for server-ID.

Definition at line 362 of file command_options.h.

◆ getServerName()

std::string isc::perfdhcp::CommandOptions::getServerName ( ) const
inline

Returns server name.

Returns
server name.

Definition at line 407 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket().

◆ getTemplateFiles()

std::vector< std::string > isc::perfdhcp::CommandOptions::getTemplateFiles ( ) const
inline

Returns template file names.

Returns
template file names.

Definition at line 327 of file command_options.h.

◆ getTransactionIdOffset()

std::vector< int > isc::perfdhcp::CommandOptions::getTransactionIdOffset ( ) const
inline

brief Returns template offsets for xid.

Returns
template offsets for xid.

Definition at line 347 of file command_options.h.

◆ getWaitForElapsedTime()

int isc::perfdhcp::CommandOptions::getWaitForElapsedTime ( ) const
inline

Returns time to wait for elapsed time increase.

Returns
how long perfdhcp will wait before start sending messages with increased elapsed time.

Definition at line 229 of file command_options.h.

◆ getWrapped()

std::string isc::perfdhcp::CommandOptions::getWrapped ( ) const
inline

Returns wrapped command.

Returns
wrapped command (start/stop).

Definition at line 377 of file command_options.h.

◆ isBroadcast()

bool isc::perfdhcp::CommandOptions::isBroadcast ( ) const
inline

Checks if broadcast address is to be used.

Returns
true if broadcast address is to be used.

Definition at line 307 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket().

◆ isInterface()

bool isc::perfdhcp::CommandOptions::isInterface ( ) const
inline

Checks if interface name was used.

The method checks if interface name was used rather than address.

Returns
true if interface name was used.

Definition at line 272 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket().

◆ isRapidCommit()

bool isc::perfdhcp::CommandOptions::isRapidCommit ( ) const
inline

Check if rapid commit option used.

Returns
true if rapid commit option is used.

Definition at line 312 of file command_options.h.

◆ isSeeded()

bool isc::perfdhcp::CommandOptions::isSeeded ( ) const
inline

Checks if seed provided.

Returns
true if seed was provided.

Definition at line 297 of file command_options.h.

◆ isSingleThreaded()

bool isc::perfdhcp::CommandOptions::isSingleThreaded ( ) const
inline

Check if single-threaded mode is enabled.

Returns
true if single-threaded mode is enabled.

Definition at line 397 of file command_options.h.

◆ isUseFirst()

bool isc::perfdhcp::CommandOptions::isUseFirst ( ) const
inline

Check if server-ID to be taken from first package.

Returns
true if server-iD to be taken from first package.

Definition at line 317 of file command_options.h.

◆ isUseRelayedV6()

bool isc::perfdhcp::CommandOptions::isUseRelayedV6 ( ) const
inline

Check if generated DHCPv6 messages should appear as relayed.

Returns
true if generated traffic should appear as relayed.

Definition at line 322 of file command_options.h.

Referenced by isc::perfdhcp::PerfSocket::openSocket().

◆ parse()

bool isc::perfdhcp::CommandOptions::parse ( int argc,
char **const argv,
bool print_cmd_line = false )

Parse command line.

Parses the command line and stores the selected options in class data members.

Parameters
argcArgument count passed to main().
argvArgument value array passed to main().
print_cmd_linePrint the command line being run to the console.
Exceptions
isc::InvalidParameterif parse fails.
Returns
true if program has been run in help or version mode ('h' or 'v' flag).

Definition at line 174 of file command_options.cc.

References reset().

Referenced by main().

Here is the call graph for this function:

◆ printCommandLine()

void isc::perfdhcp::CommandOptions::printCommandLine ( ) const

Print command line arguments.

Definition at line 1149 of file command_options.cc.

References DO_SA, getLeaseType(), getLocalPort(), getReleaseRate(), getRemotePort(), getRenewRate(), and isc::perfdhcp::CommandOptions::LeaseType::toText().

Here is the call graph for this function:

◆ reset()

void isc::perfdhcp::CommandOptions::reset ( )

Reset to defaults.

Reset data members to default values. This is specifically useful when unit tests are performed using different command line options.

Definition at line 100 of file command_options.cc.

References isc::perfdhcp::CommandOptions::LeaseType::ADDRESS, isc::perfdhcp::BASIC, DORA_SARR, and RELAY_OPTIONS_MAX_ENCAPSULATION.

Referenced by CommandOptions(), and parse().

◆ testDiags()

bool isc::perfdhcp::CommandOptions::testDiags ( const char diag)
inline

Find if diagnostic flag has been set.

Parameters
diagdiagnostic flag (a,e,i,s,r,t,T).
Returns
true if diagnostics flag has been set.

Definition at line 433 of file command_options.h.

References getDiags().

Referenced by isc::perfdhcp::StatsMgr::StatsMgr().

Here is the call graph for this function:

◆ usage()

void isc::perfdhcp::CommandOptions::usage ( )
static

Print usage.

Prints perfdhcp usage.

Definition at line 1258 of file command_options.cc.

Referenced by main().

◆ version()

void isc::perfdhcp::CommandOptions::version ( ) const

Print program version.

Definition at line 1264 of file command_options.cc.

Member Data Documentation

◆ RELAY_OPTIONS_MAX_ENCAPSULATION

const uint8_t isc::perfdhcp::CommandOptions::RELAY_OPTIONS_MAX_ENCAPSULATION = 1
static

Maximum allowed level of encapsulation of added relay options.

Definition at line 46 of file command_options.h.

Referenced by getRelayOpts(), and reset().


The documentation for this class was generated from the following files: