Hey Ethan,

> 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.
>


We do have a similar issue in BFD. I'm not sure if I fully understand your
suggestion. But I have a intuitive fix below:

"""
+++ b/lib/bfd.c
@@ -953,8 +953,10 @@ bfd_set_state(struct bfd *bfd, enum state state, enum
diag diag)
         bfd->diag = diag;

         if (bfd->state <= STATE_DOWN) {
+            if (!bfd->forwarding_if_rx) {
+                bfd->rmt_diag = DIAG_NONE;
+            }
             bfd->rmt_state = STATE_DOWN;
-            bfd->rmt_diag = DIAG_NONE;
             bfd->rmt_min_rx = 1;
             bfd->rmt_flags = 0;
             bfd->rmt_disc = 0;
"""

So, when "bfd->forwarding_if_rx" is enabled, we always retain the
"rmt_diag". And it can only be changed by processing the bfd control
packets received.

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

Reply via email to