-#define VNET_IP6_UNICAST_FEATURE_INIT(x,...) \
- __VA_ARGS__ vnet_feature_registration_t uc_##x; \
-static void __vnet_add_feature_registration_uc_##x (void) \
- __attribute__((__constructor__)) ; \
-static void __vnet_add_feature_registration_uc_##x (void) \
-{ \
- ip6_main_t * im = &ip6_main; \
- uc_##x.next = im->next_feature[VNET_IP_RX_UNICAST_FEAT]; \
- im->next_feature[VNET_IP_RX_UNICAST_FEAT] = &uc_##x; \
-} \
-__VA_ARGS__ vnet_feature_registration_t uc_##x
-
-#define VNET_IP6_MULTICAST_FEATURE_INIT(x,...) \
- __VA_ARGS__ vnet_feature_registration_t mc_##x; \
-static void __vnet_add_feature_registration_mc_##x (void) \
- __attribute__((__constructor__)) ; \
-static void __vnet_add_feature_registration_mc_##x (void) \
-{ \
- ip6_main_t * im = &ip6_main; \
- mc_##x.next = im->next_feature[VNET_IP_RX_MULTICAST_FEAT]; \
- im->next_feature[VNET_IP_RX_MULTICAST_FEAT] = &mc_##x; \
-} \
-__VA_ARGS__ vnet_feature_registration_t mc_##x
-
-#define VNET_IP6_TX_FEATURE_INIT(x,...) \
- __VA_ARGS__ vnet_feature_registration_t tx_##x; \
-static void __vnet_add_feature_registration_tx_##x (void) \
- __attribute__((__constructor__)) ; \
-static void __vnet_add_feature_registration_tx_##x (void) \
-{ \
- ip6_main_t * im = &ip6_main; \
- tx_##x.next = im->next_feature[VNET_IP_TX_FEAT]; \
- im->next_feature[VNET_IP_TX_FEAT] = &tx_##x; \
-} \
-__VA_ARGS__ vnet_feature_registration_t tx_##x
-
-