patchpanel: Disable and re-enable IPv6 on IPv6 forwarding update

On Linux IPv6 provisioning is triggered by reception of ICMP6 RA
packets from the IPv6 router. When the interface setup changes,
it is not guaranteed that an RA will arrive immediately so the
namespace needs to poke the router with an RS packet. Without,
this patch IPv6 will not be available right away when there
is a setup change.

One way to fix this is by disabling and re-enabling IPv6. This
will trigger SLAAC in the kernel and an RS will be sent.

BUG=b:182148635
TEST=Connected to ethernet and WiFi;
     Ran:
       - ifconfig eth0 down;
       - ip netns exec connected_netns_0 ping6 <IPV6_ADDR>;
     Without this patch, observe that the ping is failing.
     With this patch, observe that the ping is running.
TEST=units;
TEST=datapath fuzzer;
TEST=make sure that host IPv6 is not restarted;

Change-Id: I171a5670c352299060689b649723d33d40ec0d10
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3081076
Tested-by: Jason Jeremy Iman <jasongustaman@chromium.org>
Commit-Queue: Jason Jeremy Iman <jasongustaman@chromium.org>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
diff --git a/patchpanel/system.h b/patchpanel/system.h
index 98cb089..a517f7c 100644
--- a/patchpanel/system.h
+++ b/patchpanel/system.h
@@ -41,6 +41,8 @@
     IPv6Forward,
     // Used for enabling netfilter connection tracking helper modules.
     ConntrackHelper,
+    // Used for modifying "net.ipv6.conf.all.disable_ipv6"
+    IPv6Disable,
   };
 
   System() = default;