if ((error = vlib_call_init_function (vm, policer_classify_init)))
return error;
+ if ((error = vlib_call_init_function (vm, flow_classify_init)))
+ return error;
+
return error;
}
VLIB_INIT_FUNCTION (ip_main_init);
+
+void
+vnet_config_update_tx_feature_count (ip_lookup_main_t * lm,
+ ip_config_main_t * tx_cm,
+ u32 sw_if_index,
+ int is_add)
+{
+ ASSERT (tx_cm == &lm->feature_config_mains[VNET_IP_TX_FEAT]);
+
+ vec_validate (lm->tx_feature_count_by_sw_if_index, sw_if_index);
+
+ lm->tx_feature_count_by_sw_if_index[sw_if_index] += is_add ? 1 : -1;
+
+ ASSERT (lm->tx_feature_count_by_sw_if_index[sw_if_index] >= 0);
+
+ lm->tx_sw_if_has_ip_output_features =
+ clib_bitmap_set (lm->tx_sw_if_has_ip_output_features, sw_if_index,
+ lm->tx_feature_count_by_sw_if_index[sw_if_index] > 0);
+}
+
+
+