peer = (proto_bfd_peer_t *) c;
- FR_TIME_DELTA_BOUND_CHECK("peer.min_transmit_interval", peer->desired_min_tx_interval, >=, fr_time_delta_from_usec(30));
+ FR_TIME_DELTA_BOUND_CHECK("peer.min_transmit_interval", peer->desired_min_tx_interval, >=, fr_time_delta_from_usec(32));
FR_TIME_DELTA_BOUND_CHECK("peer.min_transmit_interval", peer->desired_min_tx_interval, <=, fr_time_delta_from_sec(2));
- FR_TIME_DELTA_BOUND_CHECK("peer.min_recieve_interval", peer->required_min_rx_interval, >=, fr_time_delta_from_usec(30));
+ FR_TIME_DELTA_BOUND_CHECK("peer.min_recieve_interval", peer->required_min_rx_interval, >=, fr_time_delta_from_usec(32));
FR_TIME_DELTA_BOUND_CHECK("peer.min_received_interval", peer->required_min_rx_interval, <=, fr_time_delta_from_sec(2));
FR_INTEGER_BOUND_CHECK("peer.max_timeouts", peer->detect_multi, >=, 1);
bfd_start_control(session);
}
- if (!state_change) return 0;
-
- // @todo - send the packet through a "recv foo" section?
-
- return 1;
+ return state_change;
}
interval = fr_time_delta_unwrap(session->desired_min_tx_interval);
} else {
interval = fr_time_delta_unwrap(session->remote_min_rx_interval);
+
+ /*
+ * The other end doesn't want to receive control packets. So we stop sending them.
+ */
+ if (!interval) return;
+
}
base = (interval * 3) / 4;
jitter = fr_rand(); /* 32-bit number */
DEBUG("BFD %s State <timeout> -> DOWN (control expired)", session->client.shortname);
session->session_state = BFD_STATE_DOWN;
session->local_diag = BFD_CTRL_EXPIRED;
- bfd_trigger(session);
+ bfd_trigger(session); /* @todo - send timeout state change to unlang */
bfd_set_desired_min_tx_interval(session, fr_time_delta_from_sec(1));
}