Kea 2.7.5
|
DHCPv6 option class representing Prefix Exclude Option (RFC 6603). More...
#include <option6_pdexclude.h>
Public Member Functions | |
Option6PDExclude (const isc::asiolink::IOAddress &delegated_prefix, const uint8_t delegated_prefix_length, const isc::asiolink::IOAddress &excluded_prefix, const uint8_t excluded_prefix_length) | |
Constructor. | |
Option6PDExclude (OptionBufferConstIter begin, OptionBufferConstIter end) | |
Constructor, creates option instance from part of the buffer. | |
virtual OptionPtr | clone () const |
Copies this option and returns a pointer to the copy. | |
asiolink::IOAddress | getExcludedPrefix (const asiolink::IOAddress &delegated_prefix, const uint8_t delegated_prefix_length) const |
Returns excluded prefix. | |
uint8_t | getExcludedPrefixLength () const |
Returns excluded prefix length. | |
const std::vector< uint8_t > & | getExcludedPrefixSubnetID () const |
Returns an excluded prefix in a binary format. | |
virtual uint16_t | len () const |
Returns length of the complete option (data length + DHCPv6 option header) | |
virtual void | pack (isc::util::OutputBuffer &buf, bool check=true) const |
Writes option in wire-format to a buffer. | |
virtual std::string | toText (int indent=0) const |
Returns Prefix Exclude option in textual format. | |
virtual void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end) |
Parses received buffer. | |
Public Member Functions inherited from isc::dhcp::Option | |
Option (const Option &source) | |
Copy constructor. | |
Option (Universe u, uint16_t type) | |
ctor, used for options constructed, usually during transmission | |
Option (Universe u, uint16_t type, const OptionBuffer &data) | |
Constructor, used for received options. | |
Option (Universe u, uint16_t type, OptionBufferConstIter first, OptionBufferConstIter last) | |
Constructor, used for received options. | |
virtual | ~Option () |
just to force that every option has virtual dtor | |
void | addOption (OptionPtr opt) |
Adds a sub-option. | |
bool | delOption (uint16_t type) |
Attempts to delete first suboption of requested type. | |
virtual bool | equals (const Option &other) const |
Checks if two options are equal. | |
bool | equals (const OptionPtr &other) const |
Checks if options are equal. | |
virtual const OptionBuffer & | getData () const |
Returns pointer to actual data. | |
std::string | getEncapsulatedSpace () const |
Returns the name of the option space encapsulated by this option. | |
virtual uint16_t | getHeaderLen () const |
Returns length of header (2 for v4, 4 for v6) | |
OptionCollection & | getMutableOptions () |
Returns all encapsulated options. | |
OptionPtr | getOption (uint16_t type) const |
Returns shared_ptr to suboption of specific type. | |
const OptionCollection & | getOptions () const |
Returns all encapsulated options. | |
void | getOptionsCopy (OptionCollection &options_copy) const |
Performs deep copy of suboptions. | |
uint16_t | getType () const |
Returns option type (0-255 for DHCPv4, 0-65535 for DHCPv6) | |
uint16_t | getUint16 () const |
Returns content of first word. | |
uint32_t | getUint32 () const |
Returns content of first double word. | |
uint8_t | getUint8 () const |
Returns content of first byte. | |
Universe | getUniverse () const |
returns option universe (V4 or V6) | |
Option & | operator= (const Option &rhs) |
Assignment operator. | |
template<typename InputIterator > | |
void | setData (InputIterator first, InputIterator last) |
Sets content of this option from buffer. | |
void | setEncapsulatedSpace (const std::string &encapsulated_space) |
Sets the name of the option space encapsulated by this option. | |
void | setUint16 (uint16_t value) |
Sets content of this option to a single uint16 value. | |
void | setUint32 (uint32_t value) |
Sets content of this option to a single uint32 value. | |
void | setUint8 (uint8_t value) |
Sets content of this option to a single uint8 value. | |
virtual std::vector< uint8_t > | toBinary (const bool include_header=false) const |
Returns binary representation of the option. | |
virtual std::string | toHexString (const bool include_header=false) const |
Returns string containing hexadecimal representation of option. | |
virtual std::string | toString () const |
Returns string representation of the value. | |
virtual bool | valid () const |
returns if option is valid (e.g. | |
Additional Inherited Members | |
Public Types inherited from isc::dhcp::Option | |
typedef OptionPtr | Factory(Option::Universe u, uint16_t type, const OptionBuffer &buf) |
a factory function prototype | |
enum | Universe { V4 , V6 } |
defines option universe DHCPv4 or DHCPv6 More... | |
Static Public Member Functions inherited from isc::dhcp::Option | |
static OptionPtr | create (Universe u, uint16_t type) |
Factory function creating an instance of the Option . | |
static OptionPtr | create (Universe u, uint16_t type, const OptionBuffer &data) |
Factory function creating an instance of the Option . | |
static OptionPtr | factory (Option::Universe u, uint16_t type) |
Factory function to create instance of option. | |
static OptionPtr | factory (Option::Universe u, uint16_t type, const OptionBuffer &buf) |
Factory function to create instance of option. | |
Static Public Attributes inherited from isc::dhcp::Option | |
static bool | lenient_parsing_ |
Governs whether options should be parsed less strictly. | |
static const size_t | OPTION4_HDR_LEN = 2 |
length of the usual DHCPv4 option header (there are exceptions) | |
static const size_t | OPTION6_HDR_LEN = 4 |
length of any DHCPv6 option header | |
Protected Member Functions inherited from isc::dhcp::Option | |
void | check () const |
A protected method used for option correctness. | |
template<typename OptionType > | |
OptionPtr | cloneInternal () const |
Copies this option and returns a pointer to the copy. | |
std::string | headerToText (const int indent=0, const std::string &type_name="") const |
Returns option header in the textual format. | |
void | packHeader (isc::util::OutputBuffer &buf, bool check=true) const |
Store option's header in a buffer. | |
void | packOptions (isc::util::OutputBuffer &buf, bool check=true) const |
Store sub options in a buffer. | |
std::string | suboptionsToText (const int indent=0) const |
Returns collection of suboptions in the textual format. | |
void | unpackOptions (const OptionBuffer &buf) |
Builds a collection of sub options from the buffer. | |
Protected Attributes inherited from isc::dhcp::Option | |
OptionBuffer | data_ |
contains content of this data | |
std::string | encapsulated_space_ |
Name of the option space being encapsulated by this option. | |
OptionCollection | options_ |
collection for storing suboptions | |
uint16_t | type_ |
option type (0-255 for DHCPv4, 0-65535 for DHCPv6) | |
Universe | universe_ |
option universe (V4 or V6) | |
DHCPv6 option class representing Prefix Exclude Option (RFC 6603).
This class represents DHCPv6 Prefix Exclude option (67). This option is carried in the IA Prefix option and it conveys a single prefix which is used by the delegating router to communicate with a requesting router on the requesting router's uplink. This prefix is not used on the requesting router's downlinks (is excluded from other delegated prefixes).
Definition at line 25 of file option6_pdexclude.h.
isc::dhcp::Option6PDExclude::Option6PDExclude | ( | const isc::asiolink::IOAddress & | delegated_prefix, |
const uint8_t | delegated_prefix_length, | ||
const isc::asiolink::IOAddress & | excluded_prefix, | ||
const uint8_t | excluded_prefix_length ) |
Constructor.
delegated_prefix | Delegated prefix. |
delegated_prefix_length | Delegated prefix length. |
excluded_prefix | Excluded prefix. |
excluded_prefix_length | Excluded prefix length. |
BadValue | if prefixes are invalid, if excluded prefix length is not greater than delegated prefix length or if common parts of prefixes does not match. |
Definition at line 28 of file option6_pdexclude.cc.
References isc_throw.
isc::dhcp::Option6PDExclude::Option6PDExclude | ( | OptionBufferConstIter | begin, |
OptionBufferConstIter | end ) |
Constructor, creates option instance from part of the buffer.
This constructor is mostly used to parse Prefix Exclude options in the received messages.
begin | Lower bound of the buffer to create option from. |
end | Upper bound of the buffer to create option from. |
Definition at line 114 of file option6_pdexclude.cc.
References unpack().
|
virtual |
Copies this option and returns a pointer to the copy.
Reimplemented from isc::dhcp::Option.
Definition at line 123 of file option6_pdexclude.cc.
asiolink::IOAddress isc::dhcp::Option6PDExclude::getExcludedPrefix | ( | const asiolink::IOAddress & | delegated_prefix, |
const uint8_t | delegated_prefix_length ) const |
Returns excluded prefix.
Assembles excluded prefix from a delegated prefix and IPv6 subnet id specified as in RFC6603, section 4.2.
delegated_prefix | Delegated prefix for which excluded prefix will be returned. |
delegated_prefix_length | Delegated prefix length. |
Definition at line 193 of file option6_pdexclude.cc.
References isc::asiolink::IOAddress::fromBytes(), and isc::asiolink::IOAddress::toBytes().
|
inline |
Returns excluded prefix length.
Definition at line 100 of file option6_pdexclude.h.
|
inline |
Returns an excluded prefix in a binary format.
Definition at line 105 of file option6_pdexclude.h.
|
virtual |
Returns length of the complete option (data length + DHCPv6 option header)
Reimplemented from isc::dhcp::Option.
Definition at line 179 of file option6_pdexclude.cc.
References isc::dhcp::Option::getHeaderLen().
|
virtual |
Writes option in wire-format to a buffer.
Writes option in wire-format to buffer, returns pointer to first unused byte after stored option (that is useful for writing options one after another).
The format of the option includes excluded prefix length specified as a number of bits. It also includes IPv6 subnet ID field which is computed from the delegated and excluded prefixes, according to the section 4.2 of RFC 6603.
[out] | buf | Pointer to a buffer. |
check | if set to false, allows options larger than 255 for v4 |
Reimplemented from isc::dhcp::Option.
Definition at line 128 of file option6_pdexclude.cc.
References isc_throw, and isc::dhcp::Option::packHeader().
|
virtual |
Returns Prefix Exclude option in textual format.
indent | Number of spaces to be inserted before the text. |
Reimplemented from isc::dhcp::Option.
Definition at line 184 of file option6_pdexclude.cc.
References isc::util::encode::encodeHex(), and isc::dhcp::Option::headerToText().
|
virtual |
Parses received buffer.
begin | iterator to first byte of option data |
end | iterator to end of option data (first byte after option end) |
Reimplemented from isc::dhcp::Option.
Definition at line 147 of file option6_pdexclude.cc.
References isc_throw.
Referenced by Option6PDExclude().