aboutsummaryrefslogtreecommitdiff
path: root/proto.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto.h')
-rw-r--r--proto.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/proto.h b/proto.h
index 77d9c0d..2be24ef 100644
--- a/proto.h
+++ b/proto.h
@@ -28,6 +28,8 @@
#include "common.h"
#include "buffer.h"
+#pragma pack(1)
+
/*
* Tunnel types
*/
@@ -62,6 +64,24 @@ struct openvpn_ethhdr
uint16_t proto; /* packet type ID field */
};
+struct openvpn_arp {
+# define ARP_MAC_ADDR_TYPE 0x0001
+ uint16_t mac_addr_type; // 0x0001
+
+ uint16_t proto_addr_type; // 0x0800
+ uint8_t mac_addr_size; // 0x06
+ uint8_t proto_addr_size; // 0x04
+
+# define ARP_REQUEST 0x0001
+# define ARP_REPLY 0x0002
+ uint16_t arp_command; // 0x0001 for ARP request, 0x0002 for ARP reply
+
+ uint8_t mac_src[OPENVPN_ETH_ALEN];
+ in_addr_t ip_src;
+ uint8_t mac_dest[OPENVPN_ETH_ALEN];
+ in_addr_t ip_dest;
+};
+
struct openvpn_iphdr {
# define OPENVPN_IPH_GET_VER(v) (((v) >> 4) & 0x0F)
# define OPENVPN_IPH_GET_LEN(v) (((v) & 0x0F) << 2)
@@ -129,6 +149,8 @@ struct openvpn_tcphdr {
#define OPENVPN_TCPOPT_MAXSEG 2
#define OPENVPN_TCPOLEN_MAXSEG 4
+#pragma pack()
+
/*
* The following macro is used to update an
* internet checksum. "acc" is a 32-bit