diff options
author | imarom <imarom@cisco.com> | 2016-12-06 15:29:55 +0200 |
---|---|---|
committer | imarom <imarom@cisco.com> | 2016-12-06 15:31:28 +0200 |
commit | 0074ceeed2aa9ecafbbd8a71dc42d4bee1b34ffb (patch) | |
tree | 005a24d1465b0fc18825770367e39ea94ede15b9 /src/common/Network/Packet/Arp.h | |
parent | cf72305f2f5632f977d2596db4c912100b438e1f (diff) |
RX features phase 2 - ARP and ICMP self response
Signed-off-by: imarom <imarom@cisco.com>
Diffstat (limited to 'src/common/Network/Packet/Arp.h')
-rw-r--r-- | src/common/Network/Packet/Arp.h | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/common/Network/Packet/Arp.h b/src/common/Network/Packet/Arp.h index a16605bd..e23ff139 100644 --- a/src/common/Network/Packet/Arp.h +++ b/src/common/Network/Packet/Arp.h @@ -20,8 +20,7 @@ limitations under the License. #pragma pack(push, 1) class ArpHdr { public: - enum arp_hdr_enum_e { - ARP_HDR_HRD_ETHER = 1, + enum arp_hdr_op_e { ARP_HDR_OP_REQUEST = 1, /* request to resolve address */ ARP_HDR_OP_REPLY = 2, /* response to previous request */ ARP_HDR_OP_REVREQUEST = 3, /* request proto addr given hardware */ @@ -30,6 +29,46 @@ class ArpHdr { ARP_HDR_OP_INVREPLY = 6, /* response identifying peer */ }; + enum arp_hdr_hrd_e { + ARP_HDR_HRD_ETHER = 1, + }; + + enum arp_hdr_proto_e { + ARP_HDR_PROTO_IPV4 = 0x800, + }; + + void setOp(uint16_t op) { + m_arp_op = PKT_HTONS(op); + } + + uint16_t getOp() const { + return PKT_NTOHS(m_arp_op); + } + + uint16_t getHrdType() const { + return PKT_NTOHS(m_arp_hrd); + } + + uint16_t getProtocolType() const { + return PKT_NTOHS(m_arp_pro); + } + + uint32_t getSip() const { + return PKT_NTOHL(m_arp_sip); + } + + void setSip(uint32_t sip) { + m_arp_sip = PKT_HTONL(sip); + } + + uint32_t getTip() const { + return PKT_NTOHL(m_arp_tip); + } + + void setTip(uint32_t tip) { + m_arp_tip = PKT_HTONL(tip); + } + public: uint16_t m_arp_hrd; /* format of hardware address */ uint16_t m_arp_pro; /* format of protocol address */ |