Restore punt/inject after FIB2.0 02/3702/2
authorIgor Mikhailov (imichail) <imichail@cisco.com>
Sat, 5 Nov 2016 03:25:00 +0000 (20:25 -0700)
committerJohn Lo <loj@cisco.com>
Mon, 7 Nov 2016 16:00:39 +0000 (16:00 +0000)
The tuntap punt/inject should be enabled for IPv4/6 RX once any vpp
interface has an IP address.

Change-Id: I4a507b7540b7464ed6d21035ac9b8f9463028c6f
Signed-off-by: Igor Mikhailov (imichail) <imichail@cisco.com>
vnet/vnet/unix/tuntap.c

index 43ff06a..4eab391 100644 (file)
@@ -753,6 +753,12 @@ tuntap_ip4_add_del_interface_address (ip4_main_t * im,
   snprintf (ifr.ifr_name, sizeof(ifr.ifr_name), 
             "%s:%d", tm->tun_name, (int)(ap - tm->subifs));
 
+  /* the tuntap punt/inject is enabled for IPv4 RX so long as
+   * any vpp interface has an IPv4 address.
+   * this is also ref counted.
+   */
+  ip4_sw_interface_enable_disable (tm->sw_if_index, !is_delete);
+
   if (! is_delete)
     {
       struct sockaddr_in * sin;
@@ -856,6 +862,12 @@ tuntap_ip6_add_del_interface_address (ip6_main_t * im,
   snprintf (ifr.ifr_name, sizeof(ifr.ifr_name), 
             "%s:%d", tm->tun_name, (int)(ap - tm->subifs));
 
+  /* the tuntap punt/inject is enabled for IPv6 RX so long as
+   * any vpp interface has an IPv6 address.
+   * this is also ref counted.
+   */
+  ip6_sw_interface_enable_disable (tm->sw_if_index, !is_delete);
+
   if (! is_delete)
     {
       int sockfd = socket (AF_INET6, SOCK_STREAM, 0);