Kea
1.9.9-git
|
Represents DHCPv4-over-DHCPv6 packet. More...
#include <pkt4o6.h>
Public Member Functions | |
Pkt4o6 (const OptionBuffer &pkt4, const Pkt6Ptr &pkt6) | |
Constructor, used in message reception. More... | |
Pkt4o6 (const Pkt4Ptr &pkt4, const Pkt6Ptr &pkt6) | |
Constructor, used in replying to a message. More... | |
Pkt6Ptr | getPkt6 () const |
Returns encapsulating DHCPv6 message. More... | |
virtual bool | isDhcp4o6 () const |
Checks if a DHCPv4 message has been transported over DHCPv6. More... | |
virtual void | pack () |
Prepares on-wire format of DHCPv4-over-DHCPv6 packet. More... | |
virtual void | setCopyRetrievedOptions (const bool copy) |
Overrides the Pkt::setCopyRetrievedOptions to also set the flag for encapsulated Pkt6 instance. More... | |
Public Member Functions inherited from isc::dhcp::Pkt4 | |
Pkt4 (uint8_t msg_type, uint32_t transid) | |
Constructor, used in replying to a message. More... | |
Pkt4 (const uint8_t *data, size_t len) | |
Constructor, used in message reception. More... | |
virtual void | addOption (const OptionPtr &opt) |
Add an option. More... | |
const isc::asiolink::IOAddress & | getCiaddr () const |
Returns ciaddr field. More... | |
std::list< uint16_t > & | getDeferredOptions () |
Returns a reference to option codes which unpacking will be deferred. More... | |
const OptionBuffer | getFile () const |
Returns file field. More... | |
uint16_t | getFlags () const |
Returns flags field. More... | |
const isc::asiolink::IOAddress & | getGiaddr () const |
Returns giaddr field. More... | |
uint8_t | getHlen () const |
Returns hlen field. More... | |
uint8_t | getHops () const |
Returns hops field. More... | |
uint8_t | getHtype () const |
Returns htype field. More... | |
HWAddrPtr | getHWAddr () const |
returns hardware address information More... | |
std::string | getLabel () const |
Returns text representation of the primary packet identifiers. More... | |
HWAddrPtr | getLocalHWAddr () const |
Returns local HW address. More... | |
const char * | getName () const |
Returns name of the DHCP message. More... | |
uint8_t | getOp () const |
Returns op field. More... | |
uint16_t | getSecs () const |
Returns secs field. More... | |
const isc::asiolink::IOAddress & | getSiaddr () const |
Returns siaddr field. More... | |
const OptionBuffer | getSname () const |
Returns sname field. More... | |
uint8_t | getType () const |
Returns DHCP message type (e.g. More... | |
const isc::asiolink::IOAddress & | getYiaddr () const |
Returns yiaddr field. More... | |
bool | isRelayed () const |
Checks if a DHCPv4 message has been relayed. More... | |
size_t | len () |
Returns the size of the required buffer to build the packet. More... | |
void | setCiaddr (const isc::asiolink::IOAddress &ciaddr) |
Sets ciaddr field. More... | |
void | setFile (const uint8_t *file, size_t file_len) |
Sets file field. More... | |
void | setFlags (uint16_t flags) |
Sets flags field. More... | |
void | setGiaddr (const isc::asiolink::IOAddress &giaddr) |
Sets giaddr field. More... | |
void | setHops (uint8_t hops) |
Sets hops field. More... | |
void | setHWAddr (uint8_t htype, uint8_t hlen, const std::vector< uint8_t > &mac_addr) |
Sets hardware address. More... | |
void | setHWAddr (const HWAddrPtr &addr) |
Sets hardware address. More... | |
void | setLocalHWAddr (const uint8_t htype, const uint8_t hlen, const std::vector< uint8_t > &mac_addr) |
Sets local HW address. More... | |
void | setLocalHWAddr (const HWAddrPtr &addr) |
Sets local HW address. More... | |
void | setSecs (uint16_t secs) |
Sets secs field. More... | |
void | setSiaddr (const isc::asiolink::IOAddress &siaddr) |
Sets siaddr field. More... | |
void | setSname (const uint8_t *sname, size_t sname_len) |
Sets sname field. More... | |
void | setType (uint8_t type) |
Sets DHCP message type (e.g. More... | |
void | setYiaddr (const isc::asiolink::IOAddress &yiaddr) |
Sets yiaddr field. More... | |
std::string | toText () const |
Returns text representation of the packet. More... | |
virtual void | unpack () |
Parses on-wire form of DHCPv4 packet. More... | |
Public Member Functions inherited from isc::dhcp::Pkt | |
virtual | ~Pkt () |
Virtual destructor. More... | |
void | addClass (const isc::dhcp::ClientClass &client_class, bool required=false) |
Adds packet to a specified class. More... | |
bool | delOption (uint16_t type) |
Attempts to delete first suboption of requested type. More... | |
isc::util::OutputBuffer & | getBuffer () |
Returns reference to output buffer. More... | |
const ClientClasses & | getClasses (bool required=false) const |
Returns the class set. More... | |
std::string | getIface () const |
Returns interface name. More... | |
uint32_t | getIndex () const |
Returns interface index. More... | |
const isc::asiolink::IOAddress & | getLocalAddr () const |
Returns local IP address. More... | |
uint16_t | getLocalPort () const |
Returns local UDP (and soon TCP) port. More... | |
HWAddrPtr | getMAC (uint32_t hw_addr_src) |
Returns MAC address. More... | |
OptionPtr | getOption (const uint16_t type) |
Returns the first option of specified type. More... | |
const isc::asiolink::IOAddress & | getRemoteAddr () const |
Returns remote IP address. More... | |
HWAddrPtr | getRemoteHWAddr () const |
Returns the remote HW address obtained from raw sockets. More... | |
uint16_t | getRemotePort () const |
Returns remote port. More... | |
const boost::posix_time::ptime & | getTimestamp () const |
Returns packet timestamp. More... | |
uint32_t | getTransid () const |
Returns value of transaction-id field. More... | |
bool | inClass (const isc::dhcp::ClientClass &client_class) |
Checks whether a client belongs to a given class. More... | |
bool | indexSet () const |
Checks if interface index has been set. More... | |
bool | isCopyRetrievedOptions () const |
Returns whether the copying of retrieved options is enabled. More... | |
void | repack () |
Copies content of input buffer to output buffer. More... | |
void | resetIndex () |
Resets interface index to negative value. More... | |
void | setIface (const std::string &iface) |
Sets interface name. More... | |
void | setIndex (uint32_t ifindex) |
Sets interface index. More... | |
void | setLocalAddr (const isc::asiolink::IOAddress &local) |
Sets local IP address. More... | |
void | setLocalPort (uint16_t local) |
Sets local UDP (and soon TCP) port. More... | |
void | setRemoteAddr (const isc::asiolink::IOAddress &remote) |
Sets remote IP address. More... | |
void | setRemoteHWAddr (const HWAddrPtr &hw_addr) |
Sets remote hardware address. More... | |
void | setRemoteHWAddr (const uint8_t htype, const uint8_t hlen, const std::vector< uint8_t > &hw_addr) |
Sets remote hardware address. More... | |
void | setRemotePort (uint16_t remote) |
Sets remote UDP (and soon TCP) port. More... | |
void | setTimestamp (boost::posix_time::ptime ×tamp) |
Set packet timestamp. More... | |
void | setTransid (uint32_t transid) |
Sets transaction-id value. More... | |
void | updateTimestamp () |
Update packet timestamp. More... | |
Public Member Functions inherited from isc::hooks::CalloutHandleAssociate | |
CalloutHandleAssociate () | |
Constructor. More... | |
CalloutHandlePtr | getCalloutHandle () |
Returns callout handle. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from isc::dhcp::Pkt4 | |
static const char * | getName (const uint8_t type) |
Returns name of the DHCP message for a given type number. More... | |
static std::string | makeLabel (const HWAddrPtr &hwaddr, const ClientIdPtr &client_id, const uint32_t transid) |
Returns text representation of the given packet identifiers. More... | |
static std::string | makeLabel (const HWAddrPtr &hwaddr, const ClientIdPtr &client_id) |
Returns text representation of the given packet identifiers. More... | |
Public Attributes inherited from isc::dhcp::Pkt | |
ClientClasses | classes_ |
Classes this packet belongs to. More... | |
OptionBuffer | data_ |
Unparsed data (in received packets). More... | |
isc::dhcp::OptionCollection | options_ |
Collection of options present in this message. More... | |
ClientClasses | required_classes_ |
Classes which are required to be evaluated. More... | |
Static Public Attributes inherited from isc::dhcp::Pkt4 | |
static const size_t | DHCPV4_PKT_HDR_LEN = 236 |
specifies DHCPv4 packet header length (fixed part) More... | |
static const uint16_t | FLAG_BROADCAST_MASK = 0x8000 |
Mask for the value of flags field in the DHCPv4 message to check whether client requested broadcast response. More... | |
static const size_t | MAX_CHADDR_LEN = 16 |
length of the CHADDR field in DHCPv4 message More... | |
static const size_t | MAX_FILE_LEN = 128 |
length of the FILE field in DHCPv4 message More... | |
static const size_t | MAX_SNAME_LEN = 64 |
length of the SNAME field in DHCPv4 message More... | |
Protected Member Functions inherited from isc::dhcp::Pkt4 | |
uint8_t | DHCPTypeToBootpType (uint8_t dhcpType) |
converts DHCP message type to BOOTP op type More... | |
virtual HWAddrPtr | getMACFromDocsisCMTS () |
No-op. More... | |
virtual HWAddrPtr | getMACFromDocsisModem () |
No-op. More... | |
virtual HWAddrPtr | getMACFromDUID () |
No-op. More... | |
virtual HWAddrPtr | getMACFromIPv6RelayOpt () |
No-op. More... | |
virtual HWAddrPtr | getMACFromRemoteIdRelayOption () |
No-op. More... | |
virtual HWAddrPtr | getMACFromSrcLinkLocalAddr () |
No-op. More... | |
Protected Member Functions inherited from isc::dhcp::Pkt | |
Pkt (uint32_t transid, const isc::asiolink::IOAddress &local_addr, const isc::asiolink::IOAddress &remote_addr, uint16_t local_port, uint16_t remote_port) | |
Constructor. More... | |
Pkt (const uint8_t *buf, uint32_t len, const isc::asiolink::IOAddress &local_addr, const isc::asiolink::IOAddress &remote_addr, uint16_t local_port, uint16_t remote_port) | |
Constructor. More... | |
HWAddrPtr | getMACFromIPv6 (const isc::asiolink::IOAddress &addr) |
Attempts to convert IPv6 address into MAC. More... | |
OptionPtr | getNonCopiedOption (const uint16_t type) const |
Returns the first option of specified type without copying. More... | |
Protected Attributes inherited from isc::dhcp::Pkt4 | |
isc::asiolink::IOAddress | ciaddr_ |
ciaddr field (32 bits): Client's IP address More... | |
std::list< uint16_t > | deferred_options_ |
uint8_t | file_ [MAX_FILE_LEN] |
file field (128 bytes) More... | |
uint16_t | flags_ |
flags More... | |
isc::asiolink::IOAddress | giaddr_ |
giaddr field (32 bits): Gateway IP address More... | |
uint8_t | hops_ |
Number of relay agents traversed. More... | |
HWAddrPtr | hwaddr_ |
link-layer address and hardware information represents 3 fields: htype (hardware type, 1 byte), hlen (length of the hardware address, up to 16) and chaddr (hardware address field, 16 bytes) More... | |
HWAddrPtr | local_hwaddr_ |
local HW address (dst if receiving packet, src if sending packet) More... | |
uint8_t | op_ |
message operation code More... | |
uint16_t | secs_ |
elapsed (number of seconds since beginning of transmission) More... | |
isc::asiolink::IOAddress | siaddr_ |
siaddr field (32 bits): next server IP address in boot process(e.g.TFTP) More... | |
uint8_t | sname_ [MAX_SNAME_LEN] |
sname field (64 bytes) More... | |
isc::asiolink::IOAddress | yiaddr_ |
yiaddr field (32 bits): Client's IP address ("your"), set by server More... | |
Protected Attributes inherited from isc::dhcp::Pkt | |
isc::util::OutputBuffer | buffer_out_ |
Output buffer (used during message transmission) More... | |
bool | copy_retrieved_options_ |
Indicates if a copy of the retrieved option should be returned when Pkt::getOption is called. More... | |
std::string | iface_ |
Name of the network interface the packet was received/to be sent over. More... | |
int64_t | ifindex_ |
Interface index. More... | |
isc::asiolink::IOAddress | local_addr_ |
Local IP (v4 or v6) address. More... | |
uint16_t | local_port_ |
local TDP or UDP port More... | |
isc::asiolink::IOAddress | remote_addr_ |
Remote IP address. More... | |
HWAddrPtr | remote_hwaddr_ |
uint16_t | remote_port_ |
remote TCP or UDP port More... | |
boost::posix_time::ptime | timestamp_ |
packet timestamp More... | |
uint32_t | transid_ |
Transaction-id (32 bits for v4, 24 bits for v6) More... | |
Protected Attributes inherited from isc::hooks::CalloutHandleAssociate | |
CalloutHandlePtr | callout_handle_ |
Callout handle stored. More... | |
Represents DHCPv4-over-DHCPv6 packet.
This class derives from Pkt4
in order to be handled by the DHCPv4 server code. It includes a shared pointer to the DHCPv6 message too.
This is an implementation of the DHCPv4-query/response DHCPv6 messages defined in RFC 7341 (http://ietf.org/rfc/rfc7341.txt). See also https://gitlab.isc.org/isc-projects/kea/wikis/designs/dhcpv4o6-design for design discussions.
isc::dhcp::Pkt4o6::Pkt4o6 | ( | const OptionBuffer & | pkt4, |
const Pkt6Ptr & | pkt6 | ||
) |
Constructor, used in message reception.
pkt4 | Content of the DHCPv4-message option |
pkt6 | encapsulating unpacked DHCPv6 message the DHCPv4 message option will be removed |
Definition at line 23 of file pkt4o6.cc.
References D6O_DHCPV4_MSG, isc::dhcp::Pkt::setIface(), isc::dhcp::Pkt::setIndex(), and isc::dhcp::Pkt::setRemoteAddr().
|
inline |
Returns encapsulating DHCPv6 message.
Definition at line 47 of file pkt4o6.h.
Referenced by isc::dhcp::Dhcpv4Exchange::initResponse4o6().
|
inlinevirtual |
Checks if a DHCPv4 message has been transported over DHCPv6.
Reimplemented from isc::dhcp::Pkt4.
|
virtual |
Prepares on-wire format of DHCPv4-over-DHCPv6 packet.
Calls pack() on both DHCPv4 and DHCPv6 parts Inserts the DHCPv4-message option Pkt4::pack and Pkt6::pack
Reimplemented from isc::dhcp::Pkt4.
Definition at line 36 of file pkt4o6.cc.
References D6O_DHCPV4_MSG, isc::dhcp::Pkt::getBuffer(), isc::util::OutputBuffer::getData(), isc::util::OutputBuffer::getLength(), isc::dhcp::Pkt4::pack(), and isc::dhcp::Option::V6.
|
virtual |
Overrides the Pkt::setCopyRetrievedOptions to also set the flag for encapsulated Pkt6 instance.
When the flag is set for the instance of the Pkt4o6 the encapsulated Pkt6, retrieved with Pkt4o6::getPkt6, will inherit this setting.
copy | Indicates if the options should be copied when retrieved (if true), or not copied (if false). |
Reimplemented from isc::dhcp::Pkt.
Definition at line 51 of file pkt4o6.cc.
References isc::dhcp::Pkt::setCopyRetrievedOptions().