X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fl2%2Fl2_output.h;fp=vnet%2Fvnet%2Fl2%2Fl2_output.h;h=0000000000000000000000000000000000000000;hb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;hp=c683b1ade733fdab0cb357f0229fd6143e57eaae;hpb=696f1adec0df3b8f161862566dd9c86174302658;p=vpp.git diff --git a/vnet/vnet/l2/l2_output.h b/vnet/vnet/l2/l2_output.h deleted file mode 100644 index c683b1ade73..00000000000 --- a/vnet/vnet/l2/l2_output.h +++ /dev/null @@ -1,285 +0,0 @@ -/* - * l2_output.h : layer 2 output packet processing - * - * Copyright (c) 2013 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef included_vnet_l2_output_h -#define included_vnet_l2_output_h - -#include -#include -#include -#include - - -/* The L2 output feature configuration, a per-interface struct */ -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 - * the egress EFP filter check - */ - vtr_config_t input_vtr; - vtr_config_t output_vtr; - 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; - - /* split horizon group */ - u8 shg; - - /* flag for output vtr operation */ - u8 out_vtr_flag; - -} l2_output_config_t; - - -/* - * The set of next nodes for features and interface output. - * Each output feature node should include this. - */ -typedef struct -{ - /* - * vector of output next node index, indexed by sw_if_index. - * used when all output features have been executed and the - * next nodes are the interface output nodes. - */ - u32 *output_node_index_vec; - - /* - * array of next node index for each output feature, indexed - * by l2output_feat_t. Used to determine next feature node. - */ - u32 feat_next_node_index[32]; - -} l2_output_next_nodes_st; - - -typedef struct -{ - /* Next nodes for features and output interfaces */ - l2_output_next_nodes_st next_nodes; - - /* config vector indexed by sw_if_index */ - l2_output_config_t *configs; - - /* Convenience variables */ - vlib_main_t *vlib_main; - vnet_main_t *vnet_main; -} l2output_main_t; - -l2output_main_t l2output_main; - -/* L2 output features */ - -/* Mappings from feature ID to graph node name */ -#define foreach_l2output_feat \ - _(SPAN, "feature-bitmap-drop") \ - _(CFM, "feature-bitmap-drop") \ - _(QOS, "feature-bitmap-drop") \ - _(ACL, "l2-output-acl") \ - _(L2PT, "feature-bitmap-drop") \ - _(EFP_FILTER, "l2-efp-filter") \ - _(IPIW, "feature-bitmap-drop") \ - _(STP_BLOCKED, "feature-bitmap-drop") \ - _(LINESTATUS_DOWN, "feature-bitmap-drop") \ - _(OUTPUT_CLASSIFY, "l2-output-classify") \ - _(XCRW, "l2-xcrw") - -/* Feature bitmap positions */ -typedef enum -{ -#define _(sym,str) L2OUTPUT_FEAT_##sym##_BIT, - foreach_l2output_feat -#undef _ - L2OUTPUT_N_FEAT, -} l2output_feat_t; - -/* Feature bit masks */ -typedef enum -{ -#define _(sym,str) L2OUTPUT_FEAT_##sym = (1<l2.feature_bitmap = feature_bitmap; - - /* Determine the next node */ - *next0 = - feat_bitmap_get_next_node_index (next_nodes->feat_next_node_index, - feature_bitmap); - } - else - { - /* - * There are no features. Send packet to TX node for sw_if_index0 - * This is a little tricky in that the output interface next node indexes - * are not precomputed at init time. - */ - - if (sw_if_index == *cached_sw_if_index) - { - /* We hit in the one-entry cache. Use it. */ - *next0 = *cached_next_index; - } - else - { - /* Look up the output TX node */ - *next0 = l2output_get_output_node (vlib_main, - vnet_main, - node_index, - sw_if_index, - &next_nodes->output_node_index_vec); - - if (*next0 == L2OUTPUT_NEXT_DROP) - { - vnet_hw_interface_t *hw0; - hw0 = vnet_get_sup_hw_interface (vnet_main, sw_if_index); - - if (hw0->flags & VNET_HW_INTERFACE_FLAG_L2OUTPUT_MAPPED) - b0->error = node->errors[L2OUTPUT_ERROR_MAPPING_DROP]; - } - - /* Update the one-entry cache */ - *cached_sw_if_index = sw_if_index; - *cached_next_index = *next0; - } - } -} - -/** Get a pointer to the config for the given interface */ -l2_output_config_t *l2output_intf_config (u32 sw_if_index); - -/** Enable (or disable) the feature in the bitmap for the given interface */ -void l2output_intf_bitmap_enable (u32 sw_if_index, - u32 feature_bitmap, u32 enable); - -#endif - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */