summaryrefslogtreecommitdiff
path: root/bfdd/ptm_adapter.c
diff options
context:
space:
mode:
authorwumu.zsl <wumu.zsl@alibaba-inc.com>2025-01-21 07:59:50 +0000
committerwumu.zsl <wumu.zsl@alibaba-inc.com>2025-01-23 02:59:55 +0000
commit0ef6003167473a54bdb6db1ccf29c95babb17752 (patch)
tree572feacb361c6e439c37a47f17b9aad58a3f1798 /bfdd/ptm_adapter.c
parent3548b3004d7f01b7a61926dcee1496a1a5bd9de8 (diff)
bfdd: add bfdname info when notify bfd status to PTM
Signed-off-by: wumu.zsl <wumu.zsl@alibaba-inc.com>
Diffstat (limited to 'bfdd/ptm_adapter.c')
-rw-r--r--bfdd/ptm_adapter.c22
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));