X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fmisc.c;h=4c8c4cad5a724ffe6ee631bb96d9cfd7298e5796;hb=dbb3c25374fc5735c57960465bcc10278b147e5a;hp=89bc15c13ca8e3f817e196ba7ed6d947666a750d;hpb=3d9c86e9f70892c82c11530e0db7db78b7e6ce21;p=vpp.git diff --git a/vnet/vnet/misc.c b/vnet/vnet/misc.c index 89bc15c13ca..4c8c4cad5a7 100644 --- a/vnet/vnet/misc.c +++ b/vnet/vnet/misc.c @@ -38,6 +38,7 @@ */ #include +#include vnet_main_t vnet_main; @@ -49,33 +50,39 @@ vnet_get_main (void) static uword vnet_local_interface_tx (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * f) + vlib_node_runtime_t * node, vlib_frame_t * f) { ASSERT (0); return f->n_vectors; } +/* *INDENT-OFF* */ VNET_DEVICE_CLASS (vnet_local_interface_device_class) = { .name = "local", .tx_function = vnet_local_interface_tx, }; +/* *INDENT-ON* */ +/* *INDENT-OFF* */ VNET_HW_INTERFACE_CLASS (vnet_local_interface_hw_class,static) = { .name = "local", }; +/* *INDENT-ON* */ clib_error_t * vnet_main_init (vlib_main_t * vm) { - vnet_main_t * vnm = vnet_get_main(); - clib_error_t * error; + vnet_main_t *vnm = vnet_get_main (); + clib_error_t *error; u32 hw_if_index; - vnet_hw_interface_t * hw; + vnet_hw_interface_t *hw; if ((error = vlib_call_init_function (vm, vnet_interface_init))) return error; + if ((error = vlib_call_init_function (vm, fib_module_init))) + return error; + if ((error = vlib_call_init_function (vm, ip_main_init))) return error; @@ -85,18 +92,33 @@ vnet_main_init (vlib_main_t * vm) if ((error = vlib_call_init_function (vm, ip6_lookup_init))) return error; + if ((error = vlib_call_init_function (vm, mpls_init))) + return error; + vnm->vlib_main = vm; hw_if_index = vnet_register_interface - (vnm, - vnet_local_interface_device_class.index, /* instance */ 0, + (vnm, vnet_local_interface_device_class.index, /* instance */ 0, vnet_local_interface_hw_class.index, /* instance */ 0); hw = vnet_get_hw_interface (vnm, hw_if_index); vnm->local_interface_hw_if_index = hw_if_index; vnm->local_interface_sw_if_index = hw->sw_if_index; + /* the local interface is used as an input interface when decapping from + * an IPSEC tunnel. so it needs to be IP enabled */ + ip4_sw_interface_enable_disable (hw->sw_if_index, 1); + ip6_sw_interface_enable_disable (hw->sw_if_index, 1); + return 0; } VLIB_INIT_FUNCTION (vnet_main_init); + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */