]> git.proxmox.com Git - ovs.git/commitdiff
OVN: Make periodic RAs consistent with RA responder.
authorMark Michelson <mmichels@redhat.com>
Mon, 25 Mar 2019 21:29:56 +0000 (17:29 -0400)
committerBen Pfaff <blp@ovn.org>
Mon, 25 Mar 2019 21:52:58 +0000 (14:52 -0700)
This commit makes periodic RAs from OVN consistent with the RAs sent in
response to RSs. Specifically, this ensures that prefix flags are set
correctly for each address mode.

This commit also gets rid of some redundant definitions for RA prefix
option flags from packets.h in favor of the ones in ovn-l7.h.

Signed-off-by: Mark Michelson <mmichels@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
lib/packets.h
ovn/controller/pinctrl.c
tests/ovn.at

index 34abdc9ea1a2cc724a5f05feff06dad9b72e4495..8ae054a742715fb26755e18768376a3db6b0f883 100644 (file)
@@ -978,9 +978,6 @@ struct ovs_nd_prefix_opt {
 };
 BUILD_ASSERT_DECL(ND_PREFIX_OPT_LEN == sizeof(struct ovs_nd_prefix_opt));
 
-#define ND_PREFIX_ON_LINK            0x80
-#define ND_PREFIX_AUTONOMOUS_ADDRESS 0x40
-
 /* Neighbor Discovery option: MTU. */
 #define ND_MTU_OPT_LEN 8
 #define ND_MTU_DEFAULT 0
index 1cdc470532364a59850dceef921fc5351ef007f3..8cc6b40fa0eef625b981890d620e3a26d42149c2 100644 (file)
@@ -1637,7 +1637,7 @@ ipv6_ra_update_config(const struct sbrec_port_binding *pb)
     config->min_interval = smap_get_int(&pb->options, "ipv6_ra_min_interval",
             nd_ra_min_interval_default(config->max_interval));
     config->mtu = smap_get_int(&pb->options, "ipv6_ra_mtu", ND_MTU_DEFAULT);
-    config->la_flags = ND_PREFIX_ON_LINK;
+    config->la_flags = IPV6_ND_RA_OPT_PREFIX_ON_LINK;
 
     const char *address_mode = smap_get(&pb->options, "ipv6_ra_address_mode");
     if (!address_mode) {
@@ -1646,10 +1646,11 @@ ipv6_ra_update_config(const struct sbrec_port_binding *pb)
     }
     if (!strcmp(address_mode, "dhcpv6_stateless")) {
         config->mo_flags = IPV6_ND_RA_FLAG_OTHER_ADDR_CONFIG;
+        config->la_flags |= IPV6_ND_RA_OPT_PREFIX_AUTONOMOUS;
     } else if (!strcmp(address_mode, "dhcpv6_stateful")) {
         config->mo_flags = IPV6_ND_RA_FLAG_MANAGED_ADDR_CONFIG;
     } else if (!strcmp(address_mode, "slaac")) {
-        config->la_flags |= ND_PREFIX_AUTONOMOUS_ADDRESS;
+        config->la_flags |= IPV6_ND_RA_OPT_PREFIX_AUTONOMOUS;
     } else {
         VLOG_WARN("Invalid address mode %s", address_mode);
         goto fail;
index 328e346d4f86804e3171662424e573a159304eed..4b14720f324b979b9800b09823aa915268e74f1e 100644 (file)
@@ -10454,7 +10454,7 @@ ra_test 000005dc 80 80 40 aef00000000000000000000000000000 30 fd0f00000000000000
 
 # And the other address mode
 ovn-nbctl --wait=hv set Logical_Router_Port ro-sw ipv6_ra_configs:address_mode=dhcpv6_stateless
-ra_test 000005dc 40 80 40 aef00000000000000000000000000000 30 fd0f0000000000000000000000000000
+ra_test 000005dc 40 c0 40 aef00000000000000000000000000000 30 fd0f0000000000000000000000000000
 
 OVN_CLEANUP([hv1],[hv2])
 AT_CLEANUP