LISP: L2 ARP handling
[vpp.git] / src / vnet / lisp-cp / lisp_types.h
index a65a479..f5d2a67 100644 (file)
@@ -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;
@@ -165,12 +166,22 @@ typedef struct
   u8 si;
 } nsh_t;
 
+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  \