summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcpsrv/subnet_selector.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dhcpsrv/subnet_selector.h')
-rw-r--r--src/lib/dhcpsrv/subnet_selector.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/lib/dhcpsrv/subnet_selector.h b/src/lib/dhcpsrv/subnet_selector.h
new file mode 100644
index 0000000..559fac5
--- /dev/null
+++ b/src/lib/dhcpsrv/subnet_selector.h
@@ -0,0 +1,74 @@
+// Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef SUBNET_SELECTOR_H
+#define SUBNET_SELECTOR_H
+
+#include <asiolink/io_address.h>
+#include <dhcp/classify.h>
+#include <dhcp/option.h>
+#include <string>
+
+namespace isc {
+namespace dhcp {
+
+/// @brief Subnet selector used to specify parameters used to select a subnet.
+///
+/// This structure holds various parameters extracted from a packet sent
+/// by a DHCP client used to select the subnet for the client. This selector
+/// is common for IPv4 and IPv6 subnets.
+struct SubnetSelector {
+ /// @name DHCPv4 specific parameters.
+ //@{
+ /// @brief ciaddr from the client's message.
+ asiolink::IOAddress ciaddr_;
+ /// @brief giaddr from the client's message.
+ asiolink::IOAddress giaddr_;
+ /// @brief RAI link select or subnet select option
+ asiolink::IOAddress option_select_;
+ //@}
+
+ /// @name DHCPv6 specific parameters.
+ //@{
+ /// @brief Interface id option.
+ OptionPtr interface_id_;
+ /// @brief First relay link address.
+ asiolink::IOAddress first_relay_linkaddr_;
+ //@}
+
+ /// @brief Address on which the message was received.
+ asiolink::IOAddress local_address_;
+ /// @brief Source address of the message.
+ asiolink::IOAddress remote_address_;
+ /// @brief Classes that the client belongs to.
+ ClientClasses client_classes_;
+ /// @brief Name of the interface on which the message was received.
+ std::string iface_name_;
+
+ /// @brief Specifies if the packet is DHCP4o6
+ bool dhcp4o6_;
+
+ /// @brief Default constructor.
+ ///
+ /// Sets the default values for the @c Selector.
+ SubnetSelector()
+ : ciaddr_(asiolink::IOAddress("0.0.0.0")),
+ giaddr_(asiolink::IOAddress("0.0.0.0")),
+ option_select_(asiolink::IOAddress("0.0.0.0")),
+ interface_id_(),
+ first_relay_linkaddr_(asiolink::IOAddress("::")),
+ local_address_(asiolink::IOAddress("0.0.0.0")),
+ remote_address_(asiolink::IOAddress("0.0.0.0")),
+ client_classes_(), iface_name_(std::string()),
+ dhcp4o6_(false) {
+ }
+};
+
+
+}
+}
+
+#endif // SUBNET_SELECTOR_H