L2 over LISP and GRE (VPP-457)
[vpp.git] / vnet / vnet / ip / ip6.h
index 36be649..58bc7f8 100644 (file)
@@ -161,9 +161,7 @@ typedef struct ip6_main_t {
   uword lookup_table_size;
 
   /* feature path configuration lists */
-  vnet_ip_feature_registration_t * next_uc_feature;
-  vnet_ip_feature_registration_t * next_mc_feature;
-  vnet_ip_feature_registration_t * next_tx_feature;
+  vnet_ip_feature_registration_t * next_feature[VNET_N_IP_FEAT];
 
   /* Built-in unicast feature path indices, see ip_feature_init_cast(...)  */
   u32 ip6_unicast_rx_feature_check_access;
@@ -209,8 +207,8 @@ static void __vnet_add_feature_registration_uc_##x (void)       \
 static void __vnet_add_feature_registration_uc_##x (void)       \
 {                                                               \
   ip6_main_t * im = &ip6_main;                                  \
-  uc_##x.next = im->next_uc_feature;                            \
-  im->next_uc_feature = &uc_##x;                                \
+  uc_##x.next = im->next_feature[VNET_IP_RX_UNICAST_FEAT];      \
+  im->next_feature[VNET_IP_RX_UNICAST_FEAT] = &uc_##x;          \
 }                                                               \
 __VA_ARGS__ vnet_ip_feature_registration_t uc_##x 
 
@@ -221,8 +219,8 @@ static void __vnet_add_feature_registration_mc_##x (void)       \
 static void __vnet_add_feature_registration_mc_##x (void)       \
 {                                                               \
   ip6_main_t * im = &ip6_main;                                  \
-  mc_##x.next = im->next_mc_feature;                            \
-  im->next_mc_feature = &mc_##x;                                \
+  mc_##x.next = im->next_feature[VNET_IP_RX_MULTICAST_FEAT];    \
+  im->next_feature[VNET_IP_RX_MULTICAST_FEAT] = &mc_##x;        \
 }                                                               \
 __VA_ARGS__ vnet_ip_feature_registration_t mc_##x 
 
@@ -233,8 +231,8 @@ static void __vnet_add_feature_registration_tx_##x (void)       \
 static void __vnet_add_feature_registration_tx_##x (void)       \
 {                                                               \
   ip6_main_t * im = &ip6_main;                                  \
-  tx_##x.next = im->next_tx_feature;                            \
-  im->next_tx_feature = &tx_##x;                                \
+  tx_##x.next = im->next_feature[VNET_IP_TX_FEAT];              \
+  im->next_feature[VNET_IP_TX_FEAT] = &tx_##x;                  \
 }                                                               \
 __VA_ARGS__ vnet_ip_feature_registration_t tx_##x