Integration of each interface' status as confirmed by BFD into the
FastFailover Group table. When BFD is configured and function
bfd_forwarding() reports false, odp_port_is_alive also reports false in
order to have a watched interface report false and omit to another
backup.
Test-suite has been succesfully run, as well as testing with ICMP echo
requests and replies that traffic was succesfully rerouted over the
backup path. More extensive load-consumption tests with a function that
only checked whether (bfd->state == STATE_UP) have been succesfully
performed, but was later changed to use the larger function
bfd_forwarding() as it captures all possible exceptions and is properly
mutually excluded.
Signed-off-by: Niels van Adrichem <n.l.m.vanadrichem@tudelft.nl>
Signed-off-by: Ben Pfaff <blp@nicira.com>
odp_port_is_alive(const struct xlate_ctx *ctx, ofp_port_t ofp_port)
{
struct xport *xport;
+ struct bfd *bfd;
xport = get_ofp_port(ctx->xbridge, ofp_port);
if (!xport || xport->config & OFPUTIL_PC_PORT_DOWN ||
return false;
}
+ bfd = xport->bfd;
+ if (bfd && !bfd_forwarding(bfd)) {
+ return false;
+ }
+
return true;
}