According to the 802.1ag specification, when a CCM is received which advertises a misconfigured transmission interval, a fault should be triggered. This patch goes against the spec by simply warning when this happens. This is done for several reasons.
- Faults can cause controllers to make potentially expensive changes in the network topology. - Faults can be maliciously triggered by crafting invalid CCMs. - Reducing the number of places in the code where rmp->fault and cfm->fault are changed makes the code easier to debug and reason about. --- lib/cfm.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/cfm.c b/lib/cfm.c index a504714..3a053ef 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -391,8 +391,14 @@ cfm_process_heartbeat(struct cfm *cfm, const struct ofpbuf *p) if (rmp) { rmp->recv_time = time_msec(); - rmp->fault = ccm_interval != cfmi->ccm_interval; - cfm->fault = rmp->fault || cfm->fault; + + if (ccm_interval != cfmi->ccm_interval) { + /* According to the spec, this should trigger a fault. For + * simplicity we just warn. */ + VLOG_WARN_RL(&rl, "received a CCM with an invalid interval" + " (%"PRIu8") from RMP %"PRIu16, ccm_interval, + rmp->mpid); + } } else { cfmi->x_recv_time = time_msec(); cfm->fault = true; -- 1.7.4.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev