|  | Kea 3.1.0
    | 
Represents DHCPv4-over-DHCPv6 packet. More...
#include <pkt4o6.h>
| Public Member Functions | |
| Pkt4o6 (const OptionBuffer &pkt4, const Pkt6Ptr &pkt6) | |
| Constructor, used in message reception. | |
| Pkt4o6 (const Pkt4Ptr &pkt4, const Pkt6Ptr &pkt6) | |
| Constructor, used in replying to a message. | |
| Pkt6Ptr | getPkt6 () const | 
| Returns encapsulating DHCPv6 message. | |
| virtual bool | isDhcp4o6 () const | 
| Checks if a DHCPv4 message has been transported over DHCPv6. | |
| virtual void | pack () | 
| Prepares on-wire format of DHCPv4-over-DHCPv6 packet. | |
| virtual void | setCopyRetrievedOptions (const bool copy) | 
| Overrides the Pkt::setCopyRetrievedOptions to also set the flag for encapsulated Pkt6 instance. | |
| Public Member Functions inherited from isc::dhcp::Pkt4 | |
| Pkt4 (const uint8_t *data, size_t len) | |
| Constructor, used in message reception. | |
| Pkt4 (uint8_t msg_type, uint32_t transid) | |
| Constructor, used in replying to a message. | |
| virtual void | addOption (const OptionPtr &opt) | 
| Add an option. | |
| const isc::asiolink::IOAddress & | getCiaddr () const | 
| Returns ciaddr field. | |
| std::list< uint16_t > & | getDeferredOptions () | 
| Returns a reference to option codes which unpacking will be deferred. | |
| const OptionBuffer | getFile () const | 
| Returns file field. | |
| uint16_t | getFlags () const | 
| Returns flags field. | |
| const isc::asiolink::IOAddress & | getGiaddr () const | 
| Returns giaddr field. | |
| uint8_t | getHlen () const | 
| Returns hlen field. | |
| uint8_t | getHops () const | 
| Returns hops field. | |
| uint8_t | getHtype () const | 
| Returns htype field. | |
| HWAddrPtr | getHWAddr () const | 
| returns hardware address information | |
| std::string | getHWAddrLabel () const | 
| Returns text representation of the hardware address. | |
| std::string | getLabel () const | 
| Returns text representation of the primary packet identifiers. | |
| HWAddrPtr | getLocalHWAddr () const | 
| Returns local HW address. | |
| const char * | getName () const | 
| Returns name of the DHCP message. | |
| uint8_t | getOp () const | 
| Returns op field. | |
| uint16_t | getSecs () const | 
| Returns secs field. | |
| const isc::asiolink::IOAddress & | getSiaddr () const | 
| Returns siaddr field. | |
| const OptionBuffer | getSname () const | 
| Returns sname field. | |
| uint8_t | getType () const | 
| Returns DHCP message type (e.g. | |
| const isc::asiolink::IOAddress & | getYiaddr () const | 
| Returns yiaddr field. | |
| bool | isRelayed () const | 
| Checks if a DHCPv4 message has been relayed. | |
| size_t | len () | 
| Returns the size of the required buffer to build the packet. | |
| void | setCiaddr (const isc::asiolink::IOAddress &ciaddr) | 
| Sets ciaddr field. | |
| void | setFile (const uint8_t *file, size_t file_len) | 
| Sets file field. | |
| void | setFlags (uint16_t flags) | 
| Sets flags field. | |
| void | setGiaddr (const isc::asiolink::IOAddress &giaddr) | 
| Sets giaddr field. | |
| void | setHops (uint8_t hops) | 
| Sets hops field. | |
| void | setHWAddr (const HWAddrPtr &addr) | 
| Sets hardware address. | |
| void | setHWAddr (uint8_t htype, uint8_t hlen, const std::vector< uint8_t > &mac_addr) | 
| Sets hardware address. | |
| void | setLocalHWAddr (const HWAddrPtr &addr) | 
| Sets local HW address. | |
| void | setLocalHWAddr (const uint8_t htype, const uint8_t hlen, const std::vector< uint8_t > &mac_addr) | 
| Sets local HW address. | |
| void | setSecs (uint16_t secs) | 
| Sets secs field. | |
| void | setSiaddr (const isc::asiolink::IOAddress &siaddr) | 
| Sets siaddr field. | |
| void | setSname (const uint8_t *sname, size_t sname_len) | 
| Sets sname field. | |
| void | setType (uint8_t type) | 
| Sets DHCP message type (e.g. | |
| void | setYiaddr (const isc::asiolink::IOAddress &yiaddr) | 
| Sets yiaddr field. | |
| std::string | toText () const | 
| Returns text representation of the packet. | |
| virtual void | unpack () | 
| Parses on-wire form of DHCPv4 packet. | |
| Public Member Functions inherited from isc::dhcp::Pkt | |
| virtual | ~Pkt () | 
| Virtual destructor. | |
| void | addAdditionalClass (const isc::dhcp::ClientClass &client_class) | 
| Adds a specified class to the packet's additional class list. | |
| void | addClass (const isc::dhcp::ClientClass &client_class) | 
| Adds a specified class to the packet. | |
| void | addPktEvent (const std::string &label, const boost::posix_time::ptime ×tamp=PktEvent::now()) | 
| Adds an event to the end of the event stack. | |
| void | addPktEvent (const std::string &label, const struct timeval ×tamp) | 
| Adds an event to the end of the event stack with the timestamp specified as a struct timeval. | |
| void | addSubClass (const isc::dhcp::ClientClass &class_def, const isc::dhcp::ClientClass &subclass) | 
| Adds a specified subclass to the packet. | |
| void | clearPktEvents () | 
| Discards contents of the packet event stack. | |
| OptionCollection | cloneOptions () | 
| Clones all options so that they can be safely modified. | |
| bool | delOption (uint16_t type) | 
| Attempts to delete first suboption of requested type. | |
| std::string | dumpPktEvents (bool verbose=false) const | 
| Creates a dump of the stack contents to a string for logging. | |
| const ClientClasses & | getAdditionalClasses () const | 
| Returns the additional class list. | |
| isc::util::OutputBuffer & | getBuffer () | 
| Returns reference to output buffer. | |
| const ClientClasses & | getClasses () const | 
| Returns the class set. | |
| std::string | getIface () const | 
| Returns interface name. | |
| int | getIndex () const | 
| Returns interface index. | |
| const isc::asiolink::IOAddress & | getLocalAddr () const | 
| Returns local IP address. | |
| uint16_t | getLocalPort () const | 
| Returns local UDP (and soon TCP) port. | |
| HWAddrPtr | getMAC (uint32_t hw_addr_src) | 
| Returns MAC address. | |
| OptionPtr | getOption (const uint16_t type) | 
| Returns the first option of specified type. | |
| isc::dhcp::OptionCollection | getOptions (const uint16_t type) | 
| Returns all instances of specified type. | |
| const std::list< PktEvent > & | getPktEvents () | 
| Fetches the current event stack contents. | |
| boost::posix_time::ptime | getPktEventTime (const std::string &label) const | 
| Fetches the timestamp for a given event in the stack. | |
| const isc::asiolink::IOAddress & | getRemoteAddr () const | 
| Returns remote IP address. | |
| HWAddrPtr | getRemoteHWAddr () const | 
| Returns the remote HW address obtained from raw sockets. | |
| uint16_t | getRemotePort () const | 
| Returns remote port. | |
| const SubClassRelationContainer & | getSubClassesRelations () const | 
| Returns the class set including template classes associated with subclasses. | |
| const boost::posix_time::ptime & | getTimestamp () const | 
| Returns packet timestamp. | |
| uint32_t | getTransid () const | 
| Returns value of transaction-id field. | |
| bool | inClass (const isc::dhcp::ClientClass &client_class) | 
| Checks whether a client belongs to a given class. | |
| bool | indexSet () const | 
| Checks if interface index has been set. | |
| bool | isCopyRetrievedOptions () const | 
| Returns whether the copying of retrieved options is enabled. | |
| void | repack () | 
| Copies content of input buffer to output buffer. | |
| void | resetIndex () | 
| Resets interface index to negative value. | |
| void | setIface (const std::string &iface) | 
| Sets interface name. | |
| void | setIndex (const unsigned int ifindex) | 
| Sets interface index. | |
| void | setLocalAddr (const isc::asiolink::IOAddress &local) | 
| Sets local IP address. | |
| void | setLocalPort (uint16_t local) | 
| Sets local UDP (and soon TCP) port. | |
| void | setPktEvent (const std::string &label, const boost::posix_time::ptime ×tamp=PktEvent::now()) | 
| Updates (or adds) an event in the event stack. | |
| void | setRemoteAddr (const isc::asiolink::IOAddress &remote) | 
| Sets remote IP address. | |
| void | setRemoteHWAddr (const HWAddrPtr &hw_addr) | 
| Sets remote hardware address. | |
| void | setRemoteHWAddr (const uint8_t htype, const uint8_t hlen, const std::vector< uint8_t > &hw_addr) | 
| Sets remote hardware address. | |
| void | setRemotePort (uint16_t remote) | 
| Sets remote UDP (and soon TCP) port. | |
| void | setTimestamp (boost::posix_time::ptime ×tamp) | 
| Set socket receive timestamp. | |
| void | setTransid (uint32_t transid) | 
| Sets transaction-id value. | |
| void | updateTimestamp () | 
| Update packet timestamp. | |
| Public Member Functions inherited from isc::hooks::CalloutHandleAssociate | |
| CalloutHandleAssociate () | |
| Constructor. | |
| CalloutHandlePtr | getCalloutHandle () | 
| Returns callout handle. | |
| void | resetCalloutHandle () | 
| Reset callout handle. | |
| 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. | |
| static std::string | makeLabel (const HWAddrPtr &hwaddr, const ClientIdPtr &client_id) | 
| Returns text representation of the given packet identifiers. | |
| static std::string | makeLabel (const HWAddrPtr &hwaddr, const ClientIdPtr &client_id, const uint32_t transid) | 
| Returns text representation of the given packet identifiers. | |
| Public Attributes inherited from isc::dhcp::Pkt | |
| ClientClasses | additional_classes_ | 
| Classes to be evaluated during additional class evaluation. | |
| ClientClasses | classes_ | 
| Classes this packet belongs to. | |
| OptionBuffer | data_ | 
| Unparsed data (in received packets). | |
| isc::dhcp::OptionCollection | options_ | 
| Collection of options present in this message. | |
| SubClassRelationContainer | subclasses_ | 
| SubClasses this packet belongs to. | |
| Static Public Attributes inherited from isc::dhcp::Pkt4 | |
| static const size_t | DHCPV4_PKT_HDR_LEN = 236 | 
| specifies DHCPv4 packet header length (fixed part) | |
| 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. | |
| static const size_t | MAX_CHADDR_LEN = 16 | 
| length of the CHADDR field in DHCPv4 message | |
| static const size_t | MAX_FILE_LEN = 128 | 
| length of the FILE field in DHCPv4 message | |
| static const size_t | MAX_SNAME_LEN = 64 | 
| length of the SNAME field in DHCPv4 message | |
| Protected Member Functions inherited from isc::dhcp::Pkt4 | |
| uint8_t | DHCPTypeToBootpType (uint8_t dhcpType) | 
| converts DHCP message type to BOOTP op type | |
| virtual HWAddrPtr | getMACFromDocsisCMTS () | 
| No-op. | |
| virtual HWAddrPtr | getMACFromDocsisModem () | 
| No-op. | |
| virtual HWAddrPtr | getMACFromDUID () | 
| No-op. | |
| virtual HWAddrPtr | getMACFromIPv6RelayOpt () | 
| No-op. | |
| virtual HWAddrPtr | getMACFromRemoteIdRelayOption () | 
| No-op. | |
| virtual HWAddrPtr | getMACFromSrcLinkLocalAddr () | 
| No-op. | |
| Protected Member Functions inherited from isc::dhcp::Pkt | |
| 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. | |
| 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. | |
| HWAddrPtr | getMACFromIPv6 (const isc::asiolink::IOAddress &addr) | 
| Attempts to convert IPv6 address into MAC. | |
| OptionPtr | getNonCopiedOption (const uint16_t type) const | 
| Returns the first option of specified type without copying. | |
| OptionCollection | getNonCopiedOptions (const uint16_t opt_type) const | 
| Returns all option instances of specified type without copying. | |
| Protected Attributes inherited from isc::dhcp::Pkt4 | |
| isc::asiolink::IOAddress | ciaddr_ | 
| ciaddr field (32 bits): Client's IP address | |
| std::list< uint16_t > | deferred_options_ | 
| uint8_t | file_ [MAX_FILE_LEN] | 
| file field (128 bytes) | |
| uint16_t | flags_ | 
| flags | |
| isc::asiolink::IOAddress | giaddr_ | 
| giaddr field (32 bits): Gateway IP address | |
| uint8_t | hops_ | 
| Number of relay agents traversed. | |
| 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) | |
| HWAddrPtr | local_hwaddr_ | 
| local HW address (dst if receiving packet, src if sending packet) | |
| uint8_t | op_ | 
| message operation code | |
| uint16_t | secs_ | 
| elapsed (number of seconds since beginning of transmission) | |
| isc::asiolink::IOAddress | siaddr_ | 
| siaddr field (32 bits): next server IP address in boot process(e.g.TFTP) | |
| uint8_t | sname_ [MAX_SNAME_LEN] | 
| sname field (64 bytes) | |
| isc::asiolink::IOAddress | yiaddr_ | 
| yiaddr field (32 bits): Client's IP address ("your"), set by server | |
| Protected Attributes inherited from isc::dhcp::Pkt | |
| isc::util::OutputBuffer | buffer_out_ | 
| Output buffer (used during message transmission) | |
| bool | copy_retrieved_options_ | 
| Indicates if a copy of the retrieved option should be returned when Pkt::getOption is called. | |
| std::string | iface_ | 
| Name of the network interface the packet was received/to be sent over. | |
| unsigned int | ifindex_ | 
| Interface index. | |
| isc::asiolink::IOAddress | local_addr_ | 
| Local IP (v4 or v6) address. | |
| uint16_t | local_port_ | 
| local TDP or UDP port | |
| isc::asiolink::IOAddress | remote_addr_ | 
| Remote IP address. | |
| HWAddrPtr | remote_hwaddr_ | 
| uint16_t | remote_port_ | 
| remote TCP or UDP port | |
| boost::posix_time::ptime | timestamp_ | 
| packet timestamp | |
| uint32_t | transid_ | 
| Transaction-id (32 bits for v4, 24 bits for v6) | |
| Protected Attributes inherited from isc::hooks::CalloutHandleAssociate | |
| CalloutHandlePtr | callout_handle_ | 
| Callout handle stored. | |
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 isc::dhcp::Pkt4::Pkt4(), D6O_DHCPV4_MSG, isc::dhcp::Pkt::setIface(), isc::dhcp::Pkt::setIndex(), and isc::dhcp::Pkt::setRemoteAddr().
Constructor, used in replying to a message.
| pkt4 | DHCPv4 message | 
| pkt6 | DHCPv6 message | 
Definition at line 32 of file pkt4o6.cc.
References isc::dhcp::Pkt4::Pkt4().
| 
 | inline | 
| 
 | 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::getVector(), 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 49 of file pkt4o6.cc.
References isc::data::copy(), and isc::dhcp::Pkt::setCopyRetrievedOptions().