From 0487f6fc967c493e36d89f2b466d39afb14b6be5 Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Thu, 27 Dec 2018 16:15:30 +0100 Subject: [PATCH] [82-improve-kea-test-capabilities] Made "server" port --- doc/guide/dhcp4-srv.xml | 2 +- doc/guide/dhcp6-srv.xml | 2 +- src/bin/dhcp4/ctrl_dhcp4_srv.cc | 7 ++++--- src/bin/dhcp4/ctrl_dhcp4_srv.h | 4 ++-- src/bin/dhcp4/dhcp4_messages.mes | 4 ++-- src/bin/dhcp4/dhcp4_srv.cc | 12 +++++++----- src/bin/dhcp4/dhcp4_srv.h | 15 +++++++++------ src/bin/dhcp4/kea-dhcp4.xml | 6 +++--- src/bin/dhcp4/main.cc | 15 ++++++++------- src/bin/dhcp6/ctrl_dhcp6_srv.cc | 7 ++++--- src/bin/dhcp6/ctrl_dhcp6_srv.h | 4 ++-- src/bin/dhcp6/dhcp6_log.h | 2 +- src/bin/dhcp6/dhcp6_messages.mes | 4 ++-- src/bin/dhcp6/dhcp6_srv.cc | 11 ++++++----- src/bin/dhcp6/dhcp6_srv.h | 10 +++++----- src/bin/dhcp6/kea-dhcp6.xml | 6 +++--- src/bin/dhcp6/main.cc | 17 +++++++++-------- 17 files changed, 69 insertions(+), 59 deletions(-) diff --git a/doc/guide/dhcp4-srv.xml b/doc/guide/dhcp4-srv.xml index d942dba994..58c3eb5ef8 100644 --- a/doc/guide/dhcp4-srv.xml +++ b/doc/guide/dhcp4-srv.xml @@ -38,7 +38,7 @@ - -p port - + -p server-port - specifies UDP port on which the server will listen. This is only useful during testing, as a DHCPv4 server listening on ports other than the standard ones will not be able to diff --git a/doc/guide/dhcp6-srv.xml b/doc/guide/dhcp6-srv.xml index 756a6b5077..e74e7f0ef4 100644 --- a/doc/guide/dhcp6-srv.xml +++ b/doc/guide/dhcp6-srv.xml @@ -38,7 +38,7 @@ - -p port - + -p server-port - specifies UDP port on which the server will listen. This is only useful during testing, as a DHCPv6 server listening on ports other than the standard ones will not be able to diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index 766e1026eb..cacfe35d3d 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -657,7 +657,8 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) { // is no need to rollback configuration if socket fails to open on any // of the interfaces. CfgMgr::instance().getStagingCfg()->getCfgIface()-> - openSockets(AF_INET, srv->getPort(), getInstance()->useBroadcast()); + openSockets(AF_INET, srv->getServerPort(), + getInstance()->useBroadcast()); // Install the timers for handling leases reclamation. try { @@ -715,8 +716,8 @@ ControlledDhcpv4Srv::checkConfig(isc::data::ConstElementPtr config) { return (configureDhcp4Server(*srv, config, true)); } -ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t port /*= DHCP4_SERVER_PORT*/) - : Dhcpv4Srv(port), io_service_(), timer_mgr_(TimerMgr::instance()) { +ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t server_port /*= DHCP4_SERVER_PORT*/) + : Dhcpv4Srv(server_port), io_service_(), timer_mgr_(TimerMgr::instance()) { if (getInstance()) { isc_throw(InvalidOperation, "There is another Dhcpv4Srv instance already."); diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.h b/src/bin/dhcp4/ctrl_dhcp4_srv.h index 1978a5880d..34dda4329e 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.h +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.h @@ -27,8 +27,8 @@ public: /// @brief Constructor /// - /// @param port UDP port to be opened for DHCP traffic - ControlledDhcpv4Srv(uint16_t port = DHCP4_SERVER_PORT); + /// @param server_port UDP port to be opened for DHCP traffic + ControlledDhcpv4Srv(uint16_t server_port = DHCP4_SERVER_PORT); /// @brief Destructor. ~ControlledDhcpv4Srv(); diff --git a/src/bin/dhcp4/dhcp4_messages.mes b/src/bin/dhcp4/dhcp4_messages.mes index f0d486a6c3..c66f719055 100644 --- a/src/bin/dhcp4/dhcp4_messages.mes +++ b/src/bin/dhcp4/dhcp4_messages.mes @@ -421,7 +421,7 @@ This message is printed when the DHCPv4 server is attempting to open a configuration database. The database access string with password redacted is logged. -% DHCP4_OPEN_SOCKET opening sockets on port %1 +% DHCP4_OPEN_SOCKET opening service sockets on port %1 A debug message issued during startup, this indicates that the DHCPv4 server is about to open sockets on the specified port. @@ -739,7 +739,7 @@ This informational message indicates that the DHCPv4 server has processed any command-line switches and is starting. The version is also printed. -% DHCP4_START_INFO pid: %1, port: %2, verbose: %3 +% DHCP4_START_INFO pid: %1, server port: %2, verbose: %3 This is a debug message issued during the DHCPv4 server startup. It lists some information about the parameters with which the server is running. diff --git a/src/bin/dhcp4/dhcp4_srv.cc b/src/bin/dhcp4/dhcp4_srv.cc index ab0525ae90..4a15e0ffd8 100644 --- a/src/bin/dhcp4/dhcp4_srv.cc +++ b/src/bin/dhcp4/dhcp4_srv.cc @@ -441,17 +441,19 @@ Dhcpv4Exchange::setReservedMessageFields() { const std::string Dhcpv4Srv::VENDOR_CLASS_PREFIX("VENDOR_CLASS_"); -Dhcpv4Srv::Dhcpv4Srv(uint16_t port, const bool use_bcast, +Dhcpv4Srv::Dhcpv4Srv(uint16_t server_port, const bool use_bcast, const bool direct_response_desired) - : io_service_(new IOService()), shutdown_(true), alloc_engine_(), port_(port), - use_bcast_(use_bcast), network_state_(new NetworkState(NetworkState::DHCPv4)) { + : io_service_(new IOService()), shutdown_(true), alloc_engine_(), + server_port_(server_port), use_bcast_(use_bcast), + network_state_(new NetworkState(NetworkState::DHCPv4)) { - LOG_DEBUG(dhcp4_logger, DBG_DHCP4_START, DHCP4_OPEN_SOCKET).arg(port); + LOG_DEBUG(dhcp4_logger, DBG_DHCP4_START, DHCP4_OPEN_SOCKET) + .arg(server_port); try { // Port 0 is used for testing purposes where we don't open broadcast // capable sockets. So, set the packet filter handling direct traffic // only if we are in non-test mode. - if (port) { + if (server_port) { // First call to instance() will create IfaceMgr (it's a singleton) // it may throw something if things go wrong. // The 'true' value of the call to setMatchingPacketFilter imposes diff --git a/src/bin/dhcp4/dhcp4_srv.h b/src/bin/dhcp4/dhcp4_srv.h index cdd481027a..c7b838c813 100644 --- a/src/bin/dhcp4/dhcp4_srv.h +++ b/src/bin/dhcp4/dhcp4_srv.h @@ -219,11 +219,11 @@ public: /// class for unit testing because features they enable require /// root privileges. /// - /// @param port specifies port number to listen on + /// @param server_port specifies port number to listen on /// @param use_bcast configure sockets to support broadcast messages. /// @param direct_response_desired specifies if it is desired to /// use direct V4 traffic. - Dhcpv4Srv(uint16_t port = DHCP4_SERVER_PORT, + Dhcpv4Srv(uint16_t server_port = DHCP4_SERVER_PORT, const bool use_bcast = true, const bool direct_response_desired = true); @@ -285,8 +285,8 @@ public: /// for testing purposes only. /// /// @return UDP port on which server should listen. - uint16_t getPort() const { - return (port_); + uint16_t getServerPort() const { + return (server_port_); } /// @brief Return bool value indicating that broadcast flags should be set @@ -954,8 +954,11 @@ private: /// @return Option that contains netmask information static OptionPtr getNetmaskOption(const Subnet4Ptr& subnet); - uint16_t port_; ///< UDP port number on which server listens. - bool use_bcast_; ///< Should broadcast be enabled on sockets (if true). + /// UDP port number on which server listens. + uint16_t server_port_; + + /// Should broadcast be enabled on sockets (if true). + bool use_bcast_; protected: diff --git a/src/bin/dhcp4/kea-dhcp4.xml b/src/bin/dhcp4/kea-dhcp4.xml index b298b0848f..03a59336b4 100644 --- a/src/bin/dhcp4/kea-dhcp4.xml +++ b/src/bin/dhcp4/kea-dhcp4.xml @@ -49,7 +49,7 @@ - + @@ -118,8 +118,8 @@ - Port number (1-65535) on which the server listens. This is useful - for testing purposes only. + Server port number (1-65535) on which the server listens. + This is useful for testing purposes only. diff --git a/src/bin/dhcp4/main.cc b/src/bin/dhcp4/main.cc index 357360bca4..15bc920f25 100644 --- a/src/bin/dhcp4/main.cc +++ b/src/bin/dhcp4/main.cc @@ -51,7 +51,7 @@ usage() { cerr << " -d: debug mode with extra verbosity (former -v)" << endl; cerr << " -c file: specify configuration file" << endl; cerr << " -t file: check the configuration file syntax and exit" << endl; - cerr << " -p number: specify non-standard port number 1-65535 " + cerr << " -p number: specify non-standard server port number 1-65535 " << "(useful for testing only)" << endl; exit(EXIT_FAILURE); } @@ -60,8 +60,8 @@ usage() { int main(int argc, char* argv[]) { int ch; - int port_number = DHCP4_SERVER_PORT; // The default. any other values are - // useful for testing only. + // The default. any other values are useful for testing only. + int server_port_number = DHCP4_SERVER_PORT; bool verbose_mode = false; // Should server be verbose? bool check_mode = false; // Check syntax @@ -96,13 +96,13 @@ main(int argc, char* argv[]) { case 'p': try { - port_number = boost::lexical_cast(optarg); + server_port_number = boost::lexical_cast(optarg); } catch (const boost::bad_lexical_cast &) { cerr << "Failed to parse port number: [" << optarg << "], 1-65535 allowed." << endl; usage(); } - if (port_number <= 0 || port_number > 65535) { + if (server_port_number <= 0 || server_port_number > 65535) { cerr << "Failed to parse port number: [" << optarg << "], 1-65535 allowed." << endl; usage(); @@ -187,12 +187,13 @@ main(int argc, char* argv[]) { // Initialize logging. If verbose, we'll use maximum verbosity. Daemon::loggerInit(DHCP4_ROOT_LOGGER_NAME, verbose_mode); LOG_DEBUG(dhcp4_logger, DBG_DHCP4_START, DHCP4_START_INFO) - .arg(getpid()).arg(port_number).arg(verbose_mode ? "yes" : "no"); + .arg(getpid()).arg(server_port_number) + .arg(verbose_mode ? "yes" : "no"); LOG_INFO(dhcp4_logger, DHCP4_STARTING).arg(VERSION); // Create the server instance. - ControlledDhcpv4Srv server(port_number); + ControlledDhcpv4Srv server(server_port_number); // Remember verbose-mode server.setVerbose(verbose_mode); diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index b45ba517c0..4a85b53032 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -676,7 +676,8 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) { // log warnings. Since we allow that this fails for some interfaces there // is no need to rollback configuration if socket fails to open on any // of the interfaces. - CfgMgr::instance().getStagingCfg()->getCfgIface()->openSockets(AF_INET6, srv->getPort()); + CfgMgr::instance().getStagingCfg()->getCfgIface()-> + openSockets(AF_INET6, srv->getServerPort()); // Install the timers for handling leases reclamation. try { @@ -737,8 +738,8 @@ ControlledDhcpv6Srv::checkConfig(isc::data::ConstElementPtr config) { return (configureDhcp6Server(*srv, config, true)); } -ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port) - : Dhcpv6Srv(port), io_service_(), timer_mgr_(TimerMgr::instance()) { +ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t server_port) + : Dhcpv6Srv(server_port), io_service_(), timer_mgr_(TimerMgr::instance()) { if (server_) { isc_throw(InvalidOperation, "There is another Dhcpv6Srv instance already."); diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.h b/src/bin/dhcp6/ctrl_dhcp6_srv.h index a747fec833..f8fd27691e 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.h +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.h @@ -27,8 +27,8 @@ public: /// @brief Constructor /// - /// @param port UDP port to be opened for DHCP traffic - ControlledDhcpv6Srv(uint16_t port = DHCP6_SERVER_PORT); + /// @param server_port UDP port to be opened for DHCP traffic + ControlledDhcpv6Srv(uint16_t server_port = DHCP6_SERVER_PORT); /// @brief Destructor. virtual ~ControlledDhcpv6Srv(); diff --git a/src/bin/dhcp6/dhcp6_log.h b/src/bin/dhcp6/dhcp6_log.h index 2ce7201e12..377b582d6e 100644 --- a/src/bin/dhcp6/dhcp6_log.h +++ b/src/bin/dhcp6/dhcp6_log.h @@ -101,7 +101,7 @@ extern isc::log::Logger packet6_logger; /// @brief Logger for options parser. /// /// This logger is used to issue log messages related to processing of the -/// DHCP options +/// DHCP options. extern isc::log::Logger options6_logger; /// @brief Logger for Hostname or FQDN processing. diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes index 4cdcc57f35..6fa07ce28f 100644 --- a/src/bin/dhcp6/dhcp6_messages.mes +++ b/src/bin/dhcp6/dhcp6_messages.mes @@ -472,7 +472,7 @@ This warning message is issued when current server configuration specifies no interfaces that server should listen on, or specified interfaces are not configured to receive the traffic. -% DHCP6_OPEN_SOCKET opening sockets on port %1 +% DHCP6_OPEN_SOCKET opening service sockets on port %1 A debug message issued during startup, this indicates that the IPv6 DHCP server is about to open sockets on the specified port. @@ -782,7 +782,7 @@ This informational message indicates that the IPv6 DHCP server has processed any command-line switches and is starting. The version is also printed. -% DHCP6_START_INFO pid: %1, port: %2, verbose: %3 +% DHCP6_START_INFO pid: %1, server port: %2, verbose: %3 This is a debug message issued during the IPv6 DHCP server startup. It lists some information about the parameters with which the server is running. diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc index 440b26d620..e333e3be77 100644 --- a/src/bin/dhcp6/dhcp6_srv.cc +++ b/src/bin/dhcp6/dhcp6_srv.cc @@ -179,20 +179,21 @@ namespace dhcp { const std::string Dhcpv6Srv::VENDOR_CLASS_PREFIX("VENDOR_CLASS_"); -Dhcpv6Srv::Dhcpv6Srv(uint16_t port) - : io_service_(new IOService()), port_(port), serverid_(), shutdown_(true), - alloc_engine_(), name_change_reqs_(), +Dhcpv6Srv::Dhcpv6Srv(uint16_t server_port) + : io_service_(new IOService()), server_port_(server_port), serverid_(), + shutdown_(true), alloc_engine_(), name_change_reqs_(), network_state_(new NetworkState(NetworkState::DHCPv6)) { - LOG_DEBUG(dhcp6_logger, DBG_DHCP6_START, DHCP6_OPEN_SOCKET).arg(port); + LOG_DEBUG(dhcp6_logger, DBG_DHCP6_START, DHCP6_OPEN_SOCKET) + .arg(server_port); // Initialize objects required for DHCP server operation. try { // Port 0 is used for testing purposes where in most cases we don't // rely on the physical interfaces. Therefore, it should be possible // to create an object even when there are no usable interfaces. - if ((port > 0) && (IfaceMgr::instance().countIfaces() == 0)) { + if ((server_port > 0) && (IfaceMgr::instance().countIfaces() == 0)) { LOG_ERROR(dhcp6_logger, DHCP6_NO_INTERFACES); return; } diff --git a/src/bin/dhcp6/dhcp6_srv.h b/src/bin/dhcp6/dhcp6_srv.h index e8b8914234..3c04ac530d 100644 --- a/src/bin/dhcp6/dhcp6_srv.h +++ b/src/bin/dhcp6/dhcp6_srv.h @@ -80,8 +80,8 @@ public: /// network interaction. Will instantiate lease manager, and load /// old or create new DUID. /// - /// @param port port on will all sockets will listen - Dhcpv6Srv(uint16_t port = DHCP6_SERVER_PORT); + /// @param server_port port on will all sockets will listen + Dhcpv6Srv(uint16_t server_port = DHCP6_SERVER_PORT); /// @brief Destructor. Used during DHCPv6 service shutdown. virtual ~Dhcpv6Srv(); @@ -138,8 +138,8 @@ public: /// used for testing purposes. /// /// @return UDP port on which server should listen. - uint16_t getPort() const { - return (port_); + uint16_t getServerPort() const { + return (server_port_); } /// @brief Starts DHCP_DDNS client IO if DDNS updates are enabled. @@ -941,7 +941,7 @@ private: bool requestedInORO(const Pkt6Ptr& query, const uint16_t code) const; /// UDP port number on which server listens. - uint16_t port_; + uint16_t server_port_; public: /// @note used by DHCPv4-over-DHCPv6 so must be public and static diff --git a/src/bin/dhcp6/kea-dhcp6.xml b/src/bin/dhcp6/kea-dhcp6.xml index b020e8def7..288ea87a5b 100644 --- a/src/bin/dhcp6/kea-dhcp6.xml +++ b/src/bin/dhcp6/kea-dhcp6.xml @@ -48,7 +48,7 @@ - + @@ -118,8 +118,8 @@ - Port number (1-65535) on which the server listens. This is useful - for testing purposes only. + Server port number (1-65535) on which the server listens. + This is useful for testing purposes only. diff --git a/src/bin/dhcp6/main.cc b/src/bin/dhcp6/main.cc index f16e770723..c934dedbb7 100644 --- a/src/bin/dhcp6/main.cc +++ b/src/bin/dhcp6/main.cc @@ -49,14 +49,14 @@ usage() { cerr << "Kea DHCPv6 server, version " << VERSION << endl; cerr << endl; cerr << "Usage: " << DHCP6_NAME - << " -[v|V|W] [-d] [-{c|t} cfgfile] [-p port_number]" << endl; + << " -[v|V|W] [-d] [-{c|t} cfgfile] [-p server_port_number]" << endl; cerr << " -v: print version number and exit." << endl; cerr << " -V: print extended version and exit" << endl; cerr << " -W: display the configuration report and exit" << endl; cerr << " -d: debug mode with extra verbosity (former -v)" << endl; cerr << " -c file: specify configuration file" << endl; cerr << " -t file: check the configuration file syntax and exit" << endl; - cerr << " -p number: specify non-standard port number 1-65535 " + cerr << " -p number: specify non-standard server port number 1-65535 " << "(useful for testing only)" << endl; exit(EXIT_FAILURE); } @@ -65,8 +65,8 @@ usage() { int main(int argc, char* argv[]) { int ch; - int port_number = DHCP6_SERVER_PORT; // The default. Any other values are - // useful for testing only. + // The default. Any other values are useful for testing only. + int server_port_number = DHCP6_SERVER_PORT; bool verbose_mode = false; // Should server be verbose? bool check_mode = false; // Check syntax @@ -101,13 +101,13 @@ main(int argc, char* argv[]) { case 'p': // port number try { - port_number = boost::lexical_cast(optarg); + server_port_number = boost::lexical_cast(optarg); } catch (const boost::bad_lexical_cast &) { cerr << "Failed to parse port number: [" << optarg << "], 1-65535 allowed." << endl; usage(); } - if (port_number <= 0 || port_number > 65535) { + if (server_port_number <= 0 || server_port_number > 65535) { cerr << "Failed to parse port number: [" << optarg << "], 1-65535 allowed." << endl; usage(); @@ -194,12 +194,13 @@ main(int argc, char* argv[]) { Daemon::loggerInit(DHCP6_LOGGER_NAME, verbose_mode); LOG_DEBUG(dhcp6_logger, DBG_DHCP6_START, DHCP6_START_INFO) - .arg(getpid()).arg(port_number).arg(verbose_mode ? "yes" : "no"); + .arg(getpid()).arg(server_port_number) + .arg(verbose_mode ? "yes" : "no"); LOG_INFO(dhcp6_logger, DHCP6_STARTING).arg(VERSION); // Create the server instance. - ControlledDhcpv6Srv server(port_number); + ControlledDhcpv6Srv server(server_port_number); // Remember verbose-mode server.setVerbose(verbose_mode); -- 2.47.2