+ /** timestamp of last packet received */
+ u64 last_rx_nsec;
+
+ /** transmit interval for echo packets */
+ u64 echo_transmit_interval_nsec;
+
+ /** next time at which to transmit echo packet */
+ u64 echo_tx_timeout_nsec;
+
+ /** timestamp of last echo packet transmitted */
+ u64 echo_last_tx_nsec;
+
+ /** timestamp of last echo packet received */
+ u64 echo_last_rx_nsec;
+
+ /** secret used for calculating/checking checksum of echo packets */
+ u32 echo_secret;
+
+ /** detection time */
+ u64 detection_time_nsec;
+
+ /** state info regarding poll sequence */
+ bfd_poll_state_e poll_state;
+
+ /**
+ * helper for delayed poll sequence - marks either start of running poll
+ * sequence or timeout, after which we can start the next poll sequnce
+ */
+ u64 poll_state_start_or_timeout_nsec;
+
+ /** authentication information */
+ struct
+ {
+ /** current key in use */
+ bfd_auth_key_t *curr_key;
+
+ /**
+ * set to next key to use if delayed switch is enabled - in that case
+ * the key is switched when first incoming packet is signed with next_key
+ */
+ bfd_auth_key_t *next_key;
+
+ /** sequence number incremented occasionally or always (if meticulous) */
+ u32 local_seq_number;
+
+ /** remote sequence number */
+ u32 remote_seq_number;
+
+ /** set to 1 if remote sequence number is known */
+ u8 remote_seq_number_known;
+
+ /** current key ID sent out in bfd packet */
+ u8 curr_bfd_key_id;
+
+ /** key ID to use when switched to next_key */
+ u8 next_bfd_key_id;
+
+ /**
+ * set to 1 if delayed action is pending, which might be activation
+ * of authentication, change of key or deactivation
+ */
+ u8 is_delayed;
+ } auth;
+
+ /** transport type for this session */
+ bfd_transport_e transport;
+
+ /** union of transport-specific data */