lisp-gpe: register udp port only if enabled (VPP-1468) 31/15431/2
authorFlorin Coras <fcoras@cisco.com>
Sun, 21 Oct 2018 17:50:48 +0000 (10:50 -0700)
committerMarco Varlese <marco.varlese@suse.de>
Mon, 22 Oct 2018 07:07:56 +0000 (07:07 +0000)
Change-Id: I7d0930a19d927bbd7ba3fc879d5a0c8064827629
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/lisp-gpe/lisp_gpe.c

index c7b3d88..66304ae 100644 (file)
@@ -193,10 +193,15 @@ clib_error_t *
 vnet_lisp_gpe_enable_disable (vnet_lisp_gpe_enable_disable_args_t * a)
 {
   lisp_gpe_main_t *lgm = &lisp_gpe_main;
+  vlib_main_t *vm = vlib_get_main ();
 
   if (a->is_en)
     {
       lgm->is_en = 1;
+      udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe,
+                            lisp_gpe_ip4_input_node.index, 1 /* is_ip4 */ );
+      udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe6,
+                            lisp_gpe_ip6_input_node.index, 0 /* is_ip4 */ );
     }
   else
     {
@@ -206,6 +211,8 @@ vnet_lisp_gpe_enable_disable (vnet_lisp_gpe_enable_disable_args_t * a)
       /* disable all l3 ifaces */
       lisp_gpe_tenant_flush ();
 
+      udp_unregister_dst_port (vm, UDP_DST_PORT_lisp_gpe, 0 /* is_ip4 */ );
+      udp_unregister_dst_port (vm, UDP_DST_PORT_lisp_gpe6, 1 /* is_ip4 */ );
       lgm->is_en = 0;
     }
 
@@ -612,11 +619,6 @@ lisp_gpe_init (vlib_main_t * vm)
   lgm->lisp_gpe_fwd_entries =
     hash_create_mem (0, sizeof (lisp_gpe_fwd_entry_key_t), sizeof (uword));
 
-  udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe,
-                        lisp_gpe_ip4_input_node.index, 1 /* is_ip4 */ );
-  udp_register_dst_port (vm, UDP_DST_PORT_lisp_gpe6,
-                        lisp_gpe_ip6_input_node.index, 0 /* is_ip4 */ );
-
   lgm->lisp_stats_index_by_key =
     hash_create_mem (0, sizeof (lisp_stats_key_t), sizeof (uword));
   memset (&lgm->counters, 0, sizeof (lgm->counters));