diff options
Diffstat (limited to 'bfdd/ptm_adapter.c')
| -rw-r--r-- | bfdd/ptm_adapter.c | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/bfdd/ptm_adapter.c b/bfdd/ptm_adapter.c index f6ebefb7be..74f2d39878 100644 --- a/bfdd/ptm_adapter.c +++ b/bfdd/ptm_adapter.c @@ -70,10 +70,10 @@ static void bfdd_client_deregister(struct stream *msg);  PRINTFRR(2, 3)  static void debug_printbpc(const struct bfd_peer_cfg *bpc, const char *fmt, ...)  { -	char timers[3][128] = {}; +	char timers[3][160] = {};  	char minttl_str[32] = {}; -	char addr[3][128] = {}; -	char profile[128] = {}; +	char addr[3][160] = {}; +	char profile[160] = {};  	char cbit_str[32];  	char msgbuf[512];  	va_list vl; @@ -134,7 +134,9 @@ static void _ptm_bfd_session_del(struct bfd_session *bs, uint8_t diag)  	/* Change state and notify peer. */  	bs->ses_state = PTM_BFD_DOWN;  	bs->local_diag = diag; -	ptm_bfd_snd(bs, 0); + +	if (bs->bfd_mode == BFD_MODE_TYPE_BFD) +		ptm_bfd_snd(bs, 0);  	/* Session reached refcount == 0, lets delete it. */  	if (bs->refcount == 0) { @@ -200,6 +202,8 @@ int ptm_bfd_notify(struct bfd_session *bs, uint8_t notify_state)  	 *     - 16 bytes: ipv6  	 *   - c: prefix length  	 * - c: cbit +	 * - c: bfd name len +	 * - Xbytes: bfd name  	 *  	 * Commands: ZEBRA_BFD_DEST_REPLAY  	 * @@ -238,9 +242,12 @@ int ptm_bfd_notify(struct bfd_session *bs, uint8_t notify_state)  	case PTM_BFD_DOWN:  	case PTM_BFD_INIT: -		stream_putl(msg, BFD_STATUS_DOWN); -		break; +		if (CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN)) +			stream_putl(msg, BFD_STATUS_ADMIN_DOWN); +		else +			stream_putl(msg, BFD_STATUS_DOWN); +		break;  	default:  		stream_putl(msg, BFD_STATUS_UNKNOWN);  		break; @@ -251,6 +258,9 @@ int ptm_bfd_notify(struct bfd_session *bs, uint8_t notify_state)  	stream_putc(msg, bs->remote_cbit); +	stream_putc(msg, strlen(bs->bfd_name)); +	stream_put(msg, bs->bfd_name, strlen(bs->bfd_name)); +  	/* Write packet size. */  	stream_putw_at(msg, 0, stream_get_endp(msg));  | 
