On Mon, Jan 8, 2018 at 3:24 AM, Miguel Angel Ajo Pelayo <majop...@redhat.com> wrote: > Awesome!, do you believe it would be possible to have this on the 2.9 > series too? > > Having the periodic router advertisements on the next openstack release was > one of our items > towards parity with the reference solution in the land of IPv6.
The 2.9 branch has not been created yet, so anything in master now will be in 2.9. > > > > On Fri, Jan 5, 2018 at 6:05 PM Ben Pfaff <b...@ovn.org> wrote: > >> On Wed, Nov 29, 2017 at 03:59:48PM -0600, Mark Michelson wrote: >> > This change adds three new options to the Northbound >> > Logical_Router_Port's ipv6_ra_configs option: >> > >> > * send_periodic: If set to "true", then OVN will send periodic router >> > advertisements out of this router port. >> > * max_interval: The maximum amount of time to wait between sending >> > periodic router advertisements. >> > * min_interval: The minimum amount of time to wait between sending >> > periodic router advertisements. >> > >> > When send_periodic is true, then IPv6 RA configs, as well as some layer >> > 2 and layer 3 information about the router port, are copied to the >> > southbound database. From there, ovn-controller can use this information >> > to know when to send periodic RAs and what to send in them. >> > >> > Because periodic RAs originate from each ovn-controller, the new >> > keep-local flag is set on the packet so that ports don't receive an >> > overabundance of RAs. >> > >> > Signed-off-by: Mark Michelson <mmich...@redhat.com> >> >> Thanks a lot for the revised series. >> >> I folded in the following changes and applied this series to master. >> >> diff --git a/lib/packets.h b/lib/packets.h >> index 8819f829970e..395599f08c92 100644 >> --- a/lib/packets.h >> +++ b/lib/packets.h >> @@ -1020,7 +1020,12 @@ BUILD_ASSERT_DECL(RA_MSG_LEN == sizeof(struct >> ovs_ra_msg)); >> * 6.2.1 >> */ >> #define ND_RA_MAX_INTERVAL_DEFAULT 600 >> -#define ND_RA_MIN_INTERVAL_DEFAULT(max) ((max) >= 9 ? (max) / 3 : (max) * >> 3 / 4) >> + >> +static inline int >> +nd_ra_min_interval_default(int max) >> +{ >> + return max >= 9 ? max / 3 : max * 3 / 4; >> +} >> >> /* >> * Use the same struct for MLD and MLD2, naming members as the defined >> fields in >> @@ -1420,7 +1425,7 @@ void compose_nd_ra(struct dp_packet *, >> const struct in6_addr *ipv6_dst, >> uint8_t cur_hop_limit, uint8_t mo_flags, >> ovs_be16 router_lt, ovs_be32 reachable_time, >> - ovs_be32 retrans_timer, ovs_be32 mtu); >> + ovs_be32 retrans_timer, uint32_t mtu); >> void packet_put_ra_prefix_opt(struct dp_packet *, >> uint8_t plen, uint8_t la_flags, >> ovs_be32 valid_lifetime, >> diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c >> index cf414b8f229b..7542db3f4854 100644 >> --- a/ovn/controller/pinctrl.c >> +++ b/ovn/controller/pinctrl.c >> @@ -1167,7 +1167,7 @@ ipv6_ra_update_config(const struct >> sbrec_port_binding *pb) >> config->max_interval = smap_get_int(&pb->options, >> "ipv6_ra_max_interval", >> ND_RA_MAX_INTERVAL_DEFAULT); >> config->min_interval = smap_get_int(&pb->options, >> "ipv6_ra_min_interval", >> - ND_RA_MIN_INTERVAL_DEFAULT(config->max_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; >> >> @@ -1194,7 +1194,7 @@ ipv6_ra_update_config(const struct >> sbrec_port_binding *pb) >> } >> >> /* All nodes multicast addresses */ >> - config->eth_dst = ETH_ADDR_C(33,33,00,00,00,01); >> + config->eth_dst = (struct eth_addr) ETH_ADDR_C(33,33,00,00,00,01); >> ipv6_parse("ff02::1", &config->ipv6_dst); >> >> const char *eth_addr = smap_get(&pb->options, "ipv6_ra_src_eth"); >> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c >> index fc14dc8c38eb..e3ddc1fd9bc1 100644 >> --- a/ovn/northd/ovn-northd.c >> +++ b/ovn/northd/ovn-northd.c >> @@ -4486,7 +4486,7 @@ copy_ra_to_sb(struct ovn_port *op, const char >> *address_mode) >> smap_add_format(&options, "ipv6_ra_max_interval", "%d", max_interval); >> >> int min_interval = smap_get_int(&op->nbrp->ipv6_ra_configs, >> - "min_interval", ND_RA_MIN_INTERVAL_DEFAULT(max_interval)); >> + "min_interval", nd_ra_min_interval_default(max_interval)); >> if (min_interval > ND_RA_MIN_INTERVAL_MAX(max_interval)) { >> min_interval = ND_RA_MIN_INTERVAL_MAX(max_interval); >> } >> _______________________________________________ >> dev mailing list >> d...@openvswitch.org >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev >> > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev -- Russell Bryant _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev