case 'b':
check(base_.size() > 3, "-b<value> already specified,"
" unexpected occurrence of 5th -b<value>");
- base_.push_back(optarg);
+ base_.push_back(optarg ? optarg : "");
decodeBase(base_.back());
break;
case 'C':
clean_report_ = true;
- clean_report_separator_ = optarg;
+ clean_report_separator_ = optarg ? optarg : "";
break;
case 'd':
"unexpected 3rd occurrence of -d<value>");
try {
drop_time_[drop_time_set_] =
- boost::lexical_cast<double>(optarg);
+ boost::lexical_cast<double>(optarg ? optarg : "");
} catch (const boost::bad_lexical_cast&) {
isc_throw(isc::InvalidParameter,
"value of drop time: -d<value>"
break;
case 'D':
- drop_arg = std::string(optarg);
+ drop_arg = std::string(optarg ? optarg : "");
percent_loc = drop_arg.find('%');
check(max_pdrop_.size() > 1 || max_drop_.size() > 1,
"values of maximum drops: -D<value> already "
break;
case 'g': {
- auto optarg_text = std::string(optarg);
+ std::string optarg_text(optarg ? optarg : "");
if (optarg_text == "single") {
single_thread_mode_ = true;
} else if (optarg_text == "multi") {
case 'J':
check(num_subnet_list_files >= 1, "only one -J option can be specified");
num_subnet_list_files++;
- relay_addr_list_file_ = std::string(optarg);
+ relay_addr_list_file_ = std::string(optarg ? optarg : "");
loadRelayAddr();
break;
case 'l':
- localname_ = std::string(optarg);
+ localname_ = std::string(optarg ? optarg : "");
initIsInterface();
break;
case 'M':
check(num_mac_list_files >= 1, "only one -M option can be specified");
num_mac_list_files++;
- mac_list_file_ = std::string(optarg);
+ mac_list_file_ = std::string(optarg ? optarg : "");
loadMacs();
break;
"-4 or -6 must be explicitly specified before -o is used.");
// custom option (expected format: code,hexstring)
- std::string opt_text = std::string(optarg);
+ std::string opt_text(optarg ? optarg : "");
size_t comma_loc = opt_text.find(',');
check(comma_loc == std::string::npos,
"-o option must provide option code, a comma and hexstring for"
break;
case LONG_OPT_SCENARIO: {
- auto optarg_text = std::string(optarg);
+ std::string optarg_text(optarg ? optarg : "");
if (optarg_text == "basic") {
scenario_ = Scenario::BASIC;
} else if (optarg_text == "avalanche") {
"-A must be explicitly specified before --or is used.");
// custom option (expected format: encapsulation-level:code,hexstring)
- std::string opt_text = std::string(optarg);
+ std::string opt_text(optarg ? optarg : "");
size_t colon_loc = opt_text.find(':');
size_t comma_loc = opt_text.find(',');
// be able to detect negative values provided
// by user. We would not detect negative values
// if we casted directly to unsigned value.
- long long clients_num = boost::lexical_cast<long long>(optarg);
+ long long clients_num = boost::lexical_cast<long long>(optarg ? optarg : "");
check(clients_num < 0, errmsg);
- clients_num_ = boost::lexical_cast<uint32_t>(optarg);
+ clients_num_ = boost::lexical_cast<uint32_t>(optarg ? optarg : "");
} catch (const boost::bad_lexical_cast&) {
isc_throw(isc::InvalidParameter, errmsg);
}
int
CommandOptions::positiveInteger(const std::string& errmsg) const {
try {
- int value = boost::lexical_cast<int>(optarg);
+ int value = boost::lexical_cast<int>(optarg ? optarg : "");
check(value <= 0, errmsg);
return (value);
} catch (const boost::bad_lexical_cast&) {
int
CommandOptions::nonNegativeInteger(const std::string& errmsg) const {
try {
- int value = boost::lexical_cast<int>(optarg);
+ int value = boost::lexical_cast<int>(optarg ? optarg : "");
check(value < 0, errmsg);
return (value);
} catch (const boost::bad_lexical_cast&) {
std::string
CommandOptions::nonEmptyString(const std::string& errmsg) const {
- std::string sarg = optarg;
+ std::string sarg(optarg ? optarg : "");
if (sarg.length() == 0) {
isc_throw(isc::InvalidParameter, errmsg);
}
void
CommandOptions::initLeaseType() {
- std::string lease_type_arg = optarg;
+ std::string lease_type_arg(optarg ? optarg : "");
lease_type_.fromCommandLine(lease_type_arg);
}
const std::unordered_set<std::string> DnrInstance::FORBIDDEN_SVC_PARAMS = {"ipv4hint", "ipv6hint"};
-DnrInstance::DnrInstance(Option::Universe universe) : universe_(universe) {
+DnrInstance::DnrInstance(Option::Universe universe)
+ : universe_(universe), dnr_instance_data_length_(0), service_priority_(0),
+ adn_length_(0), addr_length_(0), svc_params_length_(0),
+ adn_only_mode_(true), dnr_instance_data_length_size_(0),
+ adn_length_size_(0), addr_length_size_(0), minimal_length_(0) {
initMembers();
}
const std::string& adn,
const DnrInstance::AddressContainer& ip_addresses,
const std::string& svc_params)
- : universe_(universe), service_priority_(service_priority), ip_addresses_(ip_addresses),
- svc_params_(svc_params) {
+ : universe_(universe), dnr_instance_data_length_(0),
+ service_priority_(service_priority), adn_length_(0),
+ addr_length_(0), ip_addresses_(ip_addresses), svc_params_length_(0),
+ adn_only_mode_(true), svc_params_(svc_params),
+ dnr_instance_data_length_size_(0), adn_length_size_(0),
+ addr_length_size_(0), minimal_length_(0) {
initMembers();
setAdn(adn);
checkFields();
DnrInstance::DnrInstance(Option::Universe universe,
const uint16_t service_priority,
const std::string& adn)
- : universe_(universe), service_priority_(service_priority) {
+ : universe_(universe), dnr_instance_data_length_(0),
+ service_priority_(service_priority), adn_length_(0),
+ addr_length_(0), svc_params_length_(0), adn_only_mode_(true),
+ dnr_instance_data_length_size_(0), adn_length_size_(0),
+ addr_length_size_(0), minimal_length_(0) {
initMembers();
setAdn(adn);
}
/// @param tls_context server TLS context of this destination
/// @param max_connections maximum number of concurrent connections
/// allowed for in the list URL
- Destination(Url url, TlsContextPtr tls_context, size_t max_connections)
+ Destination(Url const& url, TlsContextPtr tls_context, size_t max_connections)
: url_(url), tls_context_(tls_context),
max_connections_(max_connections), connections_(), queue_(),
last_queue_warn_time_(min_date_time), last_queue_size_(0) {
/// to be growing it will emit a warning log.
///
/// @param desc RequestDescriptor to queue.
- void pushRequest(RequestDescriptor desc) {
+ void pushRequest(RequestDescriptor const& desc) {
queue_.push(desc);
size_t size = queue_.size();
// If the queue size is larger than the threshold and growing, issue a