[ovs-dev] [PATCH] ovn IPv6 periodic RA : Set Router Lifetime value

Mark Michelson mmichels at redhat.com
Mon Apr 16 18:15:59 UTC 2018


Thanks, Numan!

Acked-by: Mark Michelson <mmichels at redhat.com>

On 04/16/2018 08:56 AM, nusiddiq at redhat.com wrote:
> From: Numan Siddique <nusiddiq at redhat.com>
> 
> ovn-controller when it sends out periodic RA packets, sets '0' in the
> Router lifetime field. As per the RFC 4861,  lifetime of 0 indicates that
> the router is not a default router and SHOULD NOT appear on the default
> router list. Without the default route, a VM will not able to reach to
> other router ports attached to the same router unless a default route
> is added by the user.
> 
> ovn-controller when encoding the 'put_nd_ra_opts' action sets the Router
> Lifetime field to 0xffff. So this patch also sets the same value when
> sending out the periodic RAs.
> 
> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1567735
> CC: Mark Michelson <mmichels at redhat.com>
> Signed-off-by: Numan Siddique <nusiddiq at redhat.com>
> ---
>   ovn/controller/pinctrl.c | 3 ++-
>   tests/ovn.at             | 2 +-
>   2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
> index 2f130994a..6e6aa1caa 100644
> --- a/ovn/controller/pinctrl.c
> +++ b/ovn/controller/pinctrl.c
> @@ -1432,7 +1432,8 @@ ipv6_ra_send(struct ipv6_ra_state *ra)
>       dp_packet_use_stub(&packet, packet_stub, sizeof packet_stub);
>       compose_nd_ra(&packet, ra->config->eth_src, ra->config->eth_dst,
>               &ra->config->ipv6_src, &ra->config->ipv6_dst,
> -            255, ra->config->mo_flags, 0, 0, 0, ra->config->mtu);
> +            255, ra->config->mo_flags, htons(IPV6_ND_RA_LIFETIME), 0, 0,
> +            ra->config->mtu);
>   
>       for (int i = 0; i < ra->config->prefixes.n_ipv6_addrs; i++) {
>           ovs_be128 addr;
> diff --git a/tests/ovn.at b/tests/ovn.at
> index 7ae6640dc..e6c9db60d 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -9377,7 +9377,7 @@ construct_expected_ra() {
>           shift 2
>       done
>   
> -    local ra=ff${ra_mo}00000000000000000000${slla}${mtu_opt}${prefix}
> +    local ra=ff${ra_mo}ffff0000000000000000${slla}${mtu_opt}${prefix}
>       local icmp=8600XXXX${ra}
>   
>       local ip_len=$(expr ${#icmp} / 2)
> 



More information about the dev mailing list