From 5c5d5a4726b322c7065251ded3ca450c34e9d950 Mon Sep 17 00:00:00 2001 From: Piotrek Zadroga Date: Fri, 12 May 2023 13:46:43 +0200 Subject: [PATCH] [#2834] Adding relayed v6 options --- src/bin/perfdhcp/command_options.cc | 4 ++-- src/bin/perfdhcp/command_options.h | 9 +++++++++ src/bin/perfdhcp/test_control.cc | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/bin/perfdhcp/command_options.cc b/src/bin/perfdhcp/command_options.cc index 945b88a28e..b04975d90f 100644 --- a/src/bin/perfdhcp/command_options.cc +++ b/src/bin/perfdhcp/command_options.cc @@ -616,7 +616,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { size_t coma_loc = opt_text.find(','); check(coma_loc == std::string::npos, "--o1r option must provide option code, a coma and hexstring for" - " the option content, e.g. --o1r60,646f63736973 for sending option" + " the option content, e.g. --o1r 60,646f63736973 for sending option" " 60 (class-id) with the value 'docsis'"); int code = 0; @@ -626,7 +626,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { check(code <= 0, "Option code can't be negative"); } catch (const boost::bad_lexical_cast&) { isc_throw(InvalidParameter, "Invalid option code specified for " - "--o1r option, expected format: --o1r,"); + "--o1r option, expected format: --o1r ,"); } // Now try to interpret the hexstring diff --git a/src/bin/perfdhcp/command_options.h b/src/bin/perfdhcp/command_options.h index 9515e7e308..15d9a6aaa9 100644 --- a/src/bin/perfdhcp/command_options.h +++ b/src/bin/perfdhcp/command_options.h @@ -380,6 +380,15 @@ public: /// @return container with options. const isc::dhcp::OptionCollection& getExtraOpts() const { return extra_opts_; } + /// @brief Returns relay options to be inserted at given level of encapsulation. + /// + /// @param encapsulation_level level of encapsulation, by default 1 + /// + /// @return container with options. + const isc::dhcp::OptionCollection& getRelayOpts(uint8_t encapsulation_level = 1) const { + return relay_opts_.find(encapsulation_level)->second; + } + /// \brief Check if single-threaded mode is enabled. /// /// \return true if single-threaded mode is enabled. diff --git a/src/bin/perfdhcp/test_control.cc b/src/bin/perfdhcp/test_control.cc index d983776365..94b13e4b2d 100644 --- a/src/bin/perfdhcp/test_control.cc +++ b/src/bin/perfdhcp/test_control.cc @@ -1880,6 +1880,7 @@ TestControl::setDefaults6(const Pkt6Ptr& pkt) { relay_info.linkaddr_ = IOAddress(socket_.addr_); } relay_info.peeraddr_ = IOAddress(socket_.addr_); + relay_info.options_.insert(options_.getRelayOpts().begin(), options_.getRelayOpts().end()); pkt->addRelayInfo(relay_info); } } -- 2.47.2