Merge pull request #13689 from sri-mohan1/srib-ldpd1

ldpd: changes for code maintainability
This commit is contained in:
Donatas Abraitis 2023-06-06 08:43:36 +03:00 committed by GitHub
commit d827795153
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -31,13 +31,13 @@ send_init(struct nbr *nbr)
if ((buf = ibuf_open(size)) == NULL) if ((buf = ibuf_open(size)) == NULL)
fatal(__func__); fatal(__func__);
err |= gen_ldp_hdr(buf, size); SET_FLAG(err, gen_ldp_hdr(buf, size));
size -= LDP_HDR_SIZE; size -= LDP_HDR_SIZE;
err |= gen_msg_hdr(buf, MSG_TYPE_INIT, size); SET_FLAG(err, gen_msg_hdr(buf, MSG_TYPE_INIT, size));
err |= gen_init_prms_tlv(buf, nbr); SET_FLAG(err, gen_init_prms_tlv(buf, nbr));
err |= gen_cap_dynamic_tlv(buf); SET_FLAG(err, gen_cap_dynamic_tlv(buf));
err |= gen_cap_twcard_tlv(buf, 1); SET_FLAG(err, gen_cap_twcard_tlv(buf, 1));
err |= gen_cap_unotif_tlv(buf, 1); SET_FLAG(err, gen_cap_unotif_tlv(buf, 1));
if (err) { if (err) {
ibuf_free(buf); ibuf_free(buf);
return; return;
@ -121,62 +121,56 @@ recv_init(struct nbr *nbr, char *buf, uint16_t len)
return (-1); return (-1);
case TLV_TYPE_DYNAMIC_CAP: case TLV_TYPE_DYNAMIC_CAP:
if (tlv_len != CAP_TLV_DYNAMIC_LEN) { if (tlv_len != CAP_TLV_DYNAMIC_LEN) {
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
if (caps_rcvd & F_CAP_TLV_RCVD_DYNAMIC) { if (CHECK_FLAG(caps_rcvd, F_CAP_TLV_RCVD_DYNAMIC)) {
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
caps_rcvd |= F_CAP_TLV_RCVD_DYNAMIC; SET_FLAG(caps_rcvd, F_CAP_TLV_RCVD_DYNAMIC);
nbr->flags |= F_NBR_CAP_DYNAMIC; SET_FLAG(nbr->flags, F_NBR_CAP_DYNAMIC);
log_debug("%s: lsr-id %pI4 announced the Dynamic Capability Announcement capability", __func__, log_debug("%s: lsr-id %pI4 announced the Dynamic Capability Announcement capability", __func__,
&nbr->id); &nbr->id);
break; break;
case TLV_TYPE_TWCARD_CAP: case TLV_TYPE_TWCARD_CAP:
if (tlv_len != CAP_TLV_TWCARD_LEN) { if (tlv_len != CAP_TLV_TWCARD_LEN) {
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
if (caps_rcvd & F_CAP_TLV_RCVD_TWCARD) { if (CHECK_FLAG(caps_rcvd, F_CAP_TLV_RCVD_TWCARD)) {
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
caps_rcvd |= F_CAP_TLV_RCVD_TWCARD; SET_FLAG(caps_rcvd, F_CAP_TLV_RCVD_TWCARD);
nbr->flags |= F_NBR_CAP_TWCARD; SET_FLAG(nbr->flags, F_NBR_CAP_TWCARD);
log_debug("%s: lsr-id %pI4 announced the Typed Wildcard FEC capability", __func__, &nbr->id); log_debug("%s: lsr-id %pI4 announced the Typed Wildcard FEC capability", __func__, &nbr->id);
break; break;
case TLV_TYPE_UNOTIF_CAP: case TLV_TYPE_UNOTIF_CAP:
if (tlv_len != CAP_TLV_UNOTIF_LEN) { if (tlv_len != CAP_TLV_UNOTIF_LEN) {
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
if (caps_rcvd & F_CAP_TLV_RCVD_UNOTIF) { if (CHECK_FLAG(caps_rcvd, F_CAP_TLV_RCVD_UNOTIF)) {
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
caps_rcvd |= F_CAP_TLV_RCVD_UNOTIF; SET_FLAG(caps_rcvd, F_CAP_TLV_RCVD_UNOTIF);
nbr->flags |= F_NBR_CAP_UNOTIF; SET_FLAG(nbr->flags, F_NBR_CAP_UNOTIF);
log_debug("%s: lsr-id %pI4 announced the Unrecognized Notification capability", __func__, log_debug("%s: lsr-id %pI4 announced the Unrecognized Notification capability", __func__,
&nbr->id); &nbr->id);
break; break;
default: default:
if (!(ntohs(tlv.type) & UNKNOWN_FLAG)) if (!CHECK_FLAG(ntohs(tlv.type), UNKNOWN_FLAG))
send_notification_rtlvs(nbr, S_UNSSUPORTDCAP, send_notification_rtlvs(nbr, S_UNSSUPORTDCAP,
msg.id, msg.type, tlv_type, tlv_len, buf); msg.id, msg.type, tlv_type, tlv_len, buf);
/* ignore unknown tlv */ /* ignore unknown tlv */
@ -217,16 +211,16 @@ send_capability(struct nbr *nbr, uint16_t capability, int enable)
if ((buf = ibuf_open(size)) == NULL) if ((buf = ibuf_open(size)) == NULL)
fatal(__func__); fatal(__func__);
err |= gen_ldp_hdr(buf, size); SET_FLAG(err, gen_ldp_hdr(buf, size));
size -= LDP_HDR_SIZE; size -= LDP_HDR_SIZE;
err |= gen_msg_hdr(buf, MSG_TYPE_CAPABILITY, size); SET_FLAG(err, gen_msg_hdr(buf, MSG_TYPE_CAPABILITY, size));
switch (capability) { switch (capability) {
case TLV_TYPE_TWCARD_CAP: case TLV_TYPE_TWCARD_CAP:
err |= gen_cap_twcard_tlv(buf, enable); SET_FLAG(err, gen_cap_twcard_tlv(buf, enable));
break; break;
case TLV_TYPE_UNOTIF_CAP: case TLV_TYPE_UNOTIF_CAP:
err |= gen_cap_unotif_tlv(buf, enable); SET_FLAG(err, gen_cap_unotif_tlv(buf, enable));
break; break;
case TLV_TYPE_DYNAMIC_CAP: case TLV_TYPE_DYNAMIC_CAP:
/* /*
@ -288,52 +282,47 @@ recv_capability(struct nbr *nbr, char *buf, uint16_t len)
switch (tlv_type) { switch (tlv_type) {
case TLV_TYPE_TWCARD_CAP: case TLV_TYPE_TWCARD_CAP:
if (tlv_len != CAP_TLV_TWCARD_LEN) { if (tlv_len != CAP_TLV_TWCARD_LEN) {
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
if (caps_rcvd & F_CAP_TLV_RCVD_TWCARD) { if (CHECK_FLAG(caps_rcvd, F_CAP_TLV_RCVD_TWCARD)) {
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
caps_rcvd |= F_CAP_TLV_RCVD_TWCARD; SET_FLAG(caps_rcvd, F_CAP_TLV_RCVD_TWCARD);
memcpy(&reserved, buf, sizeof(reserved)); memcpy(&reserved, buf, sizeof(reserved));
enable = reserved & STATE_BIT; enable = reserved & STATE_BIT;
if (enable) if (enable)
nbr->flags |= F_NBR_CAP_TWCARD; SET_FLAG(nbr->flags, F_NBR_CAP_TWCARD);
else else
nbr->flags &= ~F_NBR_CAP_TWCARD; UNSET_FLAG(nbr->flags, F_NBR_CAP_TWCARD);
log_debug("%s: lsr-id %pI4 %s the Typed Wildcard FEC capability", __func__, &nbr->id, log_debug("%s: lsr-id %pI4 %s the Typed Wildcard FEC capability", __func__, &nbr->id,
(enable) ? "announced" : "withdrew"); (enable) ? "announced" : "withdrew");
break; break;
case TLV_TYPE_UNOTIF_CAP: case TLV_TYPE_UNOTIF_CAP:
if (tlv_len != CAP_TLV_UNOTIF_LEN) { if (tlv_len != CAP_TLV_UNOTIF_LEN) {
session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, session_shutdown(nbr, S_BAD_TLV_LEN, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
if (caps_rcvd & F_CAP_TLV_RCVD_UNOTIF) { if (CHECK_FLAG(caps_rcvd, F_CAP_TLV_RCVD_UNOTIF)) {
session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, session_shutdown(nbr, S_BAD_TLV_VAL, msg.id, msg.type);
msg.type);
return (-1); return (-1);
} }
caps_rcvd |= F_CAP_TLV_RCVD_UNOTIF; SET_FLAG(caps_rcvd, F_CAP_TLV_RCVD_UNOTIF);
memcpy(&reserved, buf, sizeof(reserved)); memcpy(&reserved, buf, sizeof(reserved));
enable = reserved & STATE_BIT; enable = reserved & STATE_BIT;
if (enable) if (enable)
nbr->flags |= F_NBR_CAP_UNOTIF; SET_FLAG(nbr->flags, F_NBR_CAP_UNOTIF);
else else
nbr->flags &= ~F_NBR_CAP_UNOTIF; UNSET_FLAG(nbr->flags, F_NBR_CAP_UNOTIF);
log_debug("%s: lsr-id %pI4 %s the Unrecognized Notification capability", __func__, log_debug("%s: lsr-id %pI4 %s the Unrecognized Notification capability", __func__,
&nbr->id, (enable) ? "announced" : &nbr->id, (enable) ? "announced" : "withdrew");
"withdrew");
break; break;
case TLV_TYPE_DYNAMIC_CAP: case TLV_TYPE_DYNAMIC_CAP:
/* /*
@ -346,7 +335,7 @@ recv_capability(struct nbr *nbr, char *buf, uint16_t len)
*/ */
/* FALLTHROUGH */ /* FALLTHROUGH */
default: default:
if (!(ntohs(tlv.type) & UNKNOWN_FLAG)) if (!CHECK_FLAG(ntohs(tlv.type), UNKNOWN_FLAG))
send_notification_rtlvs(nbr, S_UNSSUPORTDCAP, send_notification_rtlvs(nbr, S_UNSSUPORTDCAP,
msg.id, msg.type, tlv_type, tlv_len, buf); msg.id, msg.type, tlv_type, tlv_len, buf);
/* ignore unknown tlv */ /* ignore unknown tlv */