- ccm_mpid = ntohs(ccm->mpid);
- ccm_interval = ccm->flags & 0x7;
- ccm_rdi = ccm->flags & CCM_RDI_MASK;
+ uint8_t ccm_interval = ccm->flags & 0x7;
+ bool ccm_rdi = ccm->flags & CCM_RDI_MASK;
+ uint16_t ccm_interval_ms_x = ntohs(ccm->interval_ms_x);
+
+ struct remote_mp *rmp;
+ uint64_t ccm_mpid;
+ bool ccm_opdown;
+
+ if (cfm->extended) {
+ ccm_mpid = ntohll(ccm->mpid64);
+ ccm_opdown = ccm->opdown;
+ } else {
+ ccm_mpid = ntohs(ccm->mpid);
+ ccm_opdown = false;
+ }
+
+ if (ccm_interval != cfm->ccm_interval) {
+ VLOG_WARN_RL(&rl, "%s: received a CCM with an invalid interval"
+ " (%"PRIu8") from RMP %"PRIu64, cfm->name,
+ ccm_interval, ccm_mpid);
+ }
+
+ if (cfm->extended && ccm_interval == 0
+ && ccm_interval_ms_x != cfm->ccm_interval_ms) {
+ VLOG_WARN_RL(&rl, "%s: received a CCM with an invalid extended"
+ " interval (%"PRIu16"ms) from RMP %"PRIu64, cfm->name,
+ ccm_interval_ms_x, ccm_mpid);
+ }