summaryrefslogtreecommitdiffstats
path: root/src/common/Network/Packet/Arp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Network/Packet/Arp.h')
-rw-r--r--src/common/Network/Packet/Arp.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/common/Network/Packet/Arp.h b/src/common/Network/Packet/Arp.h
new file mode 100644
index 00000000..a16605bd
--- /dev/null
+++ b/src/common/Network/Packet/Arp.h
@@ -0,0 +1,46 @@
+/*
+Copyright (c) 2016-2016 Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#ifndef _ARP_H_
+#define _ARP_H_
+#include "MacAddress.h"
+
+#pragma pack(push, 1)
+class ArpHdr {
+ public:
+ enum arp_hdr_enum_e {
+ ARP_HDR_HRD_ETHER = 1,
+ 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 */
+ ARP_HDR_OP_REVREPLY = 4, /* response giving protocol address */
+ ARP_HDR_OP_INVREQUEST = 5, /* request to identify peer */
+ ARP_HDR_OP_INVREPLY = 6, /* response identifying peer */
+ };
+
+ public:
+ uint16_t m_arp_hrd; /* format of hardware address */
+ uint16_t m_arp_pro; /* format of protocol address */
+ uint8_t m_arp_hln; /* length of hardware address */
+ uint8_t m_arp_pln; /* length of protocol address */
+ uint16_t m_arp_op; /* ARP opcode (command) */
+ MacAddress m_arp_sha; /**< sender hardware address */
+ uint32_t m_arp_sip; /**< sender IP address */
+ MacAddress m_arp_tha; /**< target hardware address */
+ uint32_t m_arp_tip; /**< target IP address */
+};
+#pragma pack(pop)
+
+#endif