Skip to content

Commit

Permalink
OVN: Make periodic RAs consistent with RA responder.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
putnopvut authored and blp committed Mar 25, 2019
1 parent 36ffc46 commit c7ea79f
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 6 deletions.
3 changes: 0 additions & 3 deletions lib/packets.h
Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions ovn/controller/pinctrl.c
Expand Up @@ -1927,7 +1927,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) {
Expand All @@ -1936,10 +1936,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;
Expand Down
2 changes: 1 addition & 1 deletion tests/ovn.at
Expand Up @@ -10646,7 +10646,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
Expand Down

0 comments on commit c7ea79f

Please sign in to comment.