When CFM is first configured, it detects no remote endpoints, and
thus sets RDI on its CCMs. This can cause the receiver of these
CCMs to think there is a problem when really things are simply
initializing. This patch fixes the issue by not setting the RDI
bit in CCMs until at least one fault interval has passed.
Bug #12610.
Reported-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Ethan Jackson <ethan@nicira.com>
uint64_t mpid;
bool extended; /* Extended mode. */
+ bool booted; /* A full fault interval has occured. */
enum cfm_fault_reason fault; /* Connectivity fault status. */
enum cfm_fault_reason recv_fault; /* Bit mask of faults occuring on
receive. */
ds_destroy(&ds);
}
+ cfm->booted = true;
timer_set_duration(&cfm->fault_timer, interval);
VLOG_DBG("%s: new fault interval", cfm->name);
}
ccm->interval_ms_x = htons(0);
}
- if (hmap_is_empty(&cfm->remote_mps)) {
+ if (cfm->booted && hmap_is_empty(&cfm->remote_mps)) {
ccm->flags |= CCM_RDI_MASK;
}