diff options
Diffstat (limited to 'src/vnet/gre')
-rw-r--r-- | src/vnet/gre/gre.c | 3 | ||||
-rw-r--r-- | src/vnet/gre/interface.c | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/vnet/gre/gre.c b/src/vnet/gre/gre.c index fcdf9c0d6bc..dc735e6a77b 100644 --- a/src/vnet/gre/gre.c +++ b/src/vnet/gre/gre.c @@ -420,9 +420,6 @@ gre_update_adj (vnet_main_t * vnm, u32 sw_if_index, adj_index_t ai) if (!(t->flags & TUNNEL_ENCAP_DECAP_FLAG_ENCAP_INNER_HASH)) af |= ADJ_FLAG_MIDCHAIN_IP_STACK; - if (VNET_LINK_ETHERNET == adj_get_link_type (ai)) - af |= ADJ_FLAG_MIDCHAIN_NO_COUNT; - adj_nbr_midchain_update_rewrite (ai, gre_get_fixup (t->tunnel_dst.fp_proto, adj_get_link_type (ai)), diff --git a/src/vnet/gre/interface.c b/src/vnet/gre/interface.c index 0251ced598f..3b566b6ea81 100644 --- a/src/vnet/gre/interface.c +++ b/src/vnet/gre/interface.c @@ -504,9 +504,15 @@ vnet_gre_tunnel_add (vnet_gre_tunnel_add_del_args_t * a, { t->l2_adj_index = adj_nbr_add_or_lock (t->tunnel_dst.fp_proto, VNET_LINK_ETHERNET, &zero_addr, sw_if_index); + vnet_set_interface_l3_output_node (gm->vlib_main, sw_if_index, + (u8 *) "tunnel-output-no-count"); gre_update_adj (vnm, t->sw_if_index, t->l2_adj_index); } - + else + { + vnet_set_interface_l3_output_node (gm->vlib_main, sw_if_index, + (u8 *) "tunnel-output"); + } if (sw_if_indexp) *sw_if_indexp = sw_if_index; @@ -562,6 +568,7 @@ vnet_gre_tunnel_delete (vnet_gre_tunnel_add_del_args_t * a, clib_mem_free (t->gre_sn); } + vnet_reset_interface_l3_output_node (gm->vlib_main, sw_if_index); hash_unset (gm->instance_used, t->user_instance); gre_tunnel_db_remove (t, &key); pool_put (gm->tunnels, t); |