X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fl2%2Fl2_output.h;h=1cc1e738841a9f6bdf06f1879e36d02d1bead959;hb=cfc7a107e;hp=6da3e303c3be0331f36a0d0ea04a67edb3374584;hpb=beb0b2e346c63e21ffe892ae0e04b67bb10fba5e;p=vpp.git diff --git a/src/vnet/l2/l2_output.h b/src/vnet/l2/l2_output.h index 6da3e303c3b..1cc1e738841 100644 --- a/src/vnet/l2/l2_output.h +++ b/src/vnet/l2/l2_output.h @@ -28,8 +28,6 @@ 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 @@ -40,9 +38,7 @@ typedef struct 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; @@ -75,14 +71,19 @@ typedef struct 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_LPM, "gbp-policy-lpm") \ + _(GBP_POLICY_PORT, "gbp-policy-port") \ + _(GBP_POLICY_MAC, "gbp-policy-mac") \ _(CFM, "feature-bitmap-drop") \ _(QOS, "feature-bitmap-drop") \ _(ACL, "l2-output-acl") \ @@ -92,6 +93,7 @@ l2output_main_t l2output_main; _(STP_BLOCKED, "feature-bitmap-drop") \ _(LINESTATUS_DOWN, "feature-bitmap-drop") \ _(OUTPUT_CLASSIFY, "l2-output-classify") \ + _(OUTPUT_FEAT_ARC, "l2-output-feat-arc") \ _(XCRW, "l2-xcrw") /* Feature bitmap positions */ @@ -103,9 +105,12 @@ typedef enum L2OUTPUT_N_FEAT, } l2output_feat_t; +STATIC_ASSERT (L2OUTPUT_N_FEAT <= 32, "too many l2 output features"); + /* Feature bit masks */ typedef enum { + L2OUTPUT_FEAT_NONE = 0, #define _(sym,str) L2OUTPUT_FEAT_##sym = (1<