typedef struct
{
- u32 feature_bitmap;
-
/*
* vlan tag rewrite for ingress and egress
* ingress vtr is located here because the same config data is used for
ptr_config_t input_pbb_vtr;
ptr_config_t output_pbb_vtr;
- /* some of these flags may get integrated into the feature bitmap */
- u8 fwd_enable;
- u8 flood_enable;
+ u32 feature_bitmap;
/* split horizon group */
u8 shg;
vnet_main_t *vnet_main;
} l2output_main_t;
-l2output_main_t l2output_main;
+extern l2output_main_t l2output_main;
+
+extern vlib_node_registration_t l2output_node;
/* L2 output features */
-/* Mappings from feature ID to graph node name */
+/* Mappings from feature ID to graph node name in reverse order */
#define foreach_l2output_feat \
_(OUTPUT, "interface-output") \
- _(SPAN, "feature-bitmap-drop") \
+ _(SPAN, "span-l2-output") \
+ _(GBP_POLICY, "gbp-policy") \
_(CFM, "feature-bitmap-drop") \
_(QOS, "feature-bitmap-drop") \
_(ACL, "l2-output-acl") \
L2OUTPUT_N_FEAT,
} l2output_feat_t;
+STATIC_ASSERT (L2OUTPUT_N_FEAT <= 32, "too many l2 output features");
+
/* Feature bit masks */
typedef enum
{
/* Return an array of strings containing graph node names of each feature */
char **l2output_get_feat_names (void);
+/* arg0 - u32 feature_bitmap */
+u8 *format_l2_output_features (u8 * s, va_list * args);
/**
* The next set of functions is for use by output feature graph nodes.