This patch is basically ready, two minor comments and we'll get it merged today.

First the title line should be changed to "bfd: Implement
forwarding_if_rx."  Note the period.

>
> -    return bfd->state == STATE_UP
> -        && bfd->rmt_diag != DIAG_PATH_DOWN
> -        && bfd->rmt_diag != DIAG_CPATH_DOWN
> -        && bfd->rmt_diag != DIAG_RCPATH_DOWN;
> +    return (bfd->forwarding_if_rx
> +               ? bfd->forwarding_if_rx_detect_time > time_msec()
> +               : bfd->state == STATE_UP)
> +           && bfd->rmt_diag != DIAG_PATH_DOWN
> +           && bfd->rmt_diag != DIAG_CPATH_DOWN
> +           && bfd->rmt_diag != DIAG_RCPATH_DOWN;

The indentation here isn't entirely correct.

Also the logic doesn't seem entirely correct.  I think we want
something more like bfd->state == STATE_UP || (bfd->forwarding_if_rx
&& bfd->forwarding_if_rx_detect_time > time_msec()) I.E. if the state
is up, we should be up no matter what forwarding if rx says.

Btw this code reminds me, there's a bug with this logic which Paul
fixed in the CFM code a while back.  We should probably port the fix
to BFD as well (in a separate patch).  Could you have a look at it
after this is merged?

commit 016953a
Author: Paul Ingram <ping...@nicira.com>
Date:   Sat Aug 3 07:12:36 2013 +0000

    cfm: update remote opstate only when a CCM is received.

Basically if the remote endpoint signaled cpath down, and
forwarding_if_rx is enabled, that state should be sticky even if we
lose some of their packets.

Thanks,
Ethan
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to