X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvnet%2Fipsec%2Fipsec_punt.c;h=8a276546a56bdcd55d38837418ad0b4bd760fb3c;hb=730c1a40978a321b0788c3240db1c32274937249;hp=357e9596cfca3413ec5087313dbc9e19122f23a9;hpb=b71fa75d48b16f45618ba3fe3aa847c331f837b0;p=vpp.git diff --git a/src/vnet/ipsec/ipsec_punt.c b/src/vnet/ipsec/ipsec_punt.c index 357e9596cfc..8a276546a56 100644 --- a/src/vnet/ipsec/ipsec_punt.c +++ b/src/vnet/ipsec/ipsec_punt.c @@ -17,11 +17,28 @@ #include #include +#include +#include static vlib_punt_hdl_t punt_hdl; vlib_punt_reason_t ipsec_punt_reason[IPSEC_PUNT_N_REASONS]; +static void +ipsec_punt_interested_listener (vlib_enable_or_disable_t action, void *data) +{ + if (action == VLIB_ENABLE) + { + ipsec_tun_register_nodes (AF_IP4); + ipsec_tun_register_nodes (AF_IP6); + } + else + { + ipsec_tun_unregister_nodes (AF_IP4); + ipsec_tun_unregister_nodes (AF_IP6); + } +} + static clib_error_t * ipsec_punt_init (vlib_main_t * vm) { @@ -32,8 +49,11 @@ ipsec_punt_init (vlib_main_t * vm) punt_hdl = vlib_punt_client_register ("ipsec"); -#define _(s,v) vlib_punt_reason_alloc (punt_hdl, v, \ - &ipsec_punt_reason[IPSEC_PUNT_##s]); +#define _(s, v, f) \ + vlib_punt_reason_alloc (punt_hdl, v, ipsec_punt_interested_listener, NULL, \ + &ipsec_punt_reason[IPSEC_PUNT_##s], \ + VNET_PUNT_REASON_F_##f, \ + format_vnet_punt_reason_flags); foreach_ipsec_punt_reason #undef _ return (error);