aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/lisp-cp/lisp_types.h
diff options
context:
space:
mode:
authorFilip Tehlar <ftehlar@cisco.com>2017-05-17 17:21:10 +0200
committerFilip Tehlar <ftehlar@cisco.com>2017-05-30 07:18:54 +0200
commitd5a65db98d66c66b03b057ac568be05f2456f73c (patch)
tree8c8c5f14cf8402345e30f24c2491f144e96c8f9b /src/vnet/lisp-cp/lisp_types.h
parentcd76436097b9ddda76864af33c85aec9bab074a3 (diff)
LISP: L2 ARP handling
Change-Id: I1ec328cda73f7eaf7867cd8a2a17852ee0cd23f1 Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Diffstat (limited to 'src/vnet/lisp-cp/lisp_types.h')
-rw-r--r--src/vnet/lisp-cp/lisp_types.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/vnet/lisp-cp/lisp_types.h b/src/vnet/lisp-cp/lisp_types.h
index a65a479e..f5d2a676 100644
--- a/src/vnet/lisp-cp/lisp_types.h
+++ b/src/vnet/lisp-cp/lisp_types.h
@@ -90,6 +90,7 @@ typedef enum
GID_ADDR_MAC,
GID_ADDR_SRC_DST,
GID_ADDR_NSH,
+ GID_ADDR_ARP,
GID_ADDR_NO_ADDRESS,
GID_ADDR_TYPES
} gid_address_type_t;
@@ -167,10 +168,20 @@ typedef struct
typedef struct
{
+ ip4_address_t addr;
+ u32 bd;
+} lcaf_arp_t;
+
+#define lcaf_arp_ip4(_a) (_a)->addr
+#define lcaf_arp_bd(_a) (_a)->bd
+
+typedef struct
+{
/* the union needs to be at the beginning! */
union
{
source_dest_t sd;
+ lcaf_arp_t arp;
vni_t uni;
};
u8 type;
@@ -189,6 +200,7 @@ typedef struct _gid_address_t
lcaf_t lcaf;
u8 mac[6];
source_dest_t sd;
+ lcaf_arp_t arp;
nsh_t nsh;
};
u8 type;
@@ -257,6 +269,9 @@ void gid_address_ip_set (gid_address_t * dst, void *src, u8 version);
#define gid_address_sd_dst(_a) sd_dst(&gid_address_sd(_a))
#define gid_address_sd_src_type(_a) sd_src_type(&gid_address_sd(_a))
#define gid_address_sd_dst_type(_a) sd_dst_type(&gid_address_sd(_a))
+#define gid_address_arp(_a) (_a)->arp
+#define gid_address_arp_ip4(_a) lcaf_arp_ip4(&gid_address_arp (_a))
+#define gid_address_arp_bd(_a) lcaf_arp_bd(&gid_address_arp (_a))
/* 'sub'address functions */
#define foreach_gid_address_type_fcns \