ldpd: changes for code maintainability

these changes are for improving the code maintainability and readability

Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
This commit is contained in:
sri-mohan1 2023-05-09 18:45:27 +05:30
parent 0352223846
commit badb1dad2e

View file

@ -15,8 +15,7 @@
#include "sockopt.h" #include "sockopt.h"
static struct iface *disc_find_iface(unsigned int, int, static struct iface *disc_find_iface(unsigned int, int, union ldpd_addr *);
union ldpd_addr *);
static void session_read(struct event *thread); static void session_read(struct event *thread);
static void session_write(struct event *thread); static void session_write(struct event *thread);
static ssize_t session_get_pdu(struct ibuf_read *, char **); static ssize_t session_get_pdu(struct ibuf_read *, char **);
@ -144,8 +143,7 @@ void disc_recv_packet(struct event *thread)
if ((r = recvmsg(fd, &m, 0)) == -1) { if ((r = recvmsg(fd, &m, 0)) == -1) {
if (errno != EAGAIN && errno != EINTR) if (errno != EAGAIN && errno != EINTR)
log_debug("%s: read error: %s", __func__, log_debug("%s: read error: %s", __func__, strerror(errno));
strerror(errno));
return; return;
} }
@ -154,10 +152,10 @@ void disc_recv_packet(struct event *thread)
multicast = (m.msg_flags & MSG_MCAST) ? 1 : 0; multicast = (m.msg_flags & MSG_MCAST) ? 1 : 0;
#else #else
multicast = 0; multicast = 0;
for (cmsg = CMSG_FIRSTHDR(&m); cmsg != NULL; for (cmsg = CMSG_FIRSTHDR(&m); cmsg != NULL; cmsg = CMSG_NXTHDR(&m, cmsg)) {
cmsg = CMSG_NXTHDR(&m, cmsg)) {
#if defined(HAVE_IP_PKTINFO) #if defined(HAVE_IP_PKTINFO)
if (af == AF_INET && cmsg->cmsg_level == IPPROTO_IP && if (af == AF_INET &&
cmsg->cmsg_level == IPPROTO_IP &&
cmsg->cmsg_type == IP_PKTINFO) { cmsg->cmsg_type == IP_PKTINFO) {
struct in_pktinfo *pktinfo; struct in_pktinfo *pktinfo;
@ -167,7 +165,8 @@ void disc_recv_packet(struct event *thread)
break; break;
} }
#elif defined(HAVE_IP_RECVDSTADDR) #elif defined(HAVE_IP_RECVDSTADDR)
if (af == AF_INET && cmsg->cmsg_level == IPPROTO_IP && if (af == AF_INET &&
cmsg->cmsg_level == IPPROTO_IP &&
cmsg->cmsg_type == IP_RECVDSTADDR) { cmsg->cmsg_type == IP_RECVDSTADDR) {
struct in_addr *addr; struct in_addr *addr;
@ -179,7 +178,8 @@ void disc_recv_packet(struct event *thread)
#else #else
#error "Unsupported socket API" #error "Unsupported socket API"
#endif #endif
if (af == AF_INET6 && cmsg->cmsg_level == IPPROTO_IPV6 && if (af == AF_INET6 &&
cmsg->cmsg_level == IPPROTO_IPV6 &&
cmsg->cmsg_type == IPV6_PKTINFO) { cmsg->cmsg_type == IPV6_PKTINFO) {
struct in6_pktinfo *pktinfo; struct in6_pktinfo *pktinfo;
@ -191,8 +191,7 @@ void disc_recv_packet(struct event *thread)
} }
#endif /* MSG_MCAST */ #endif /* MSG_MCAST */
if (bad_addr(af, &src)) { if (bad_addr(af, &src)) {
log_debug("%s: invalid source address: %s", __func__, log_debug("%s: invalid source address: %s", __func__, log_addr(af, &src));
log_addr(af, &src));
return; return;
} }
ifindex = getsockopt_ifindex(af, &m); ifindex = getsockopt_ifindex(af, &m);
@ -207,8 +206,7 @@ void disc_recv_packet(struct event *thread)
/* check packet size */ /* check packet size */
len = (uint16_t)r; len = (uint16_t)r;
if (len < (LDP_HDR_SIZE + LDP_MSG_SIZE) || len > LDP_MAX_LEN) { if (len < (LDP_HDR_SIZE + LDP_MSG_SIZE) || len > LDP_MAX_LEN) {
log_debug("%s: bad packet size, source %s", __func__, log_debug("%s: bad packet size, source %s", __func__, log_addr(af, &src));
log_addr(af, &src));
return; return;
} }
@ -309,10 +307,8 @@ void session_accept(struct event *thread)
*/ */
if (errno == ENFILE || errno == EMFILE) { if (errno == ENFILE || errno == EMFILE) {
accept_pause(); accept_pause();
} else if (errno != EWOULDBLOCK && errno != EINTR && } else if (errno != EWOULDBLOCK && errno != EINTR && errno != ECONNABORTED)
errno != ECONNABORTED) log_debug("%s: accept error: %s", __func__, strerror(errno));
log_debug("%s: accept error: %s", __func__,
strerror(errno));
return; return;
} }
sock_set_nonblock(newfd); sock_set_nonblock(newfd);
@ -445,15 +441,13 @@ static void session_read(struct event *thread)
max_pdu_len = nbr->max_pdu_len; max_pdu_len = nbr->max_pdu_len;
else else
max_pdu_len = LDP_MAX_LEN; max_pdu_len = LDP_MAX_LEN;
if (pdu_len < (LDP_HDR_PDU_LEN + LDP_MSG_SIZE) || if (pdu_len < (LDP_HDR_PDU_LEN + LDP_MSG_SIZE) || pdu_len > max_pdu_len) {
pdu_len > max_pdu_len) {
session_shutdown(nbr, S_BAD_PDU_LEN, 0, 0); session_shutdown(nbr, S_BAD_PDU_LEN, 0, 0);
free(buf); free(buf);
return; return;
} }
pdu_len -= LDP_HDR_PDU_LEN; pdu_len -= LDP_HDR_PDU_LEN;
if (ldp_hdr->lsr_id != nbr->id.s_addr || if (ldp_hdr->lsr_id != nbr->id.s_addr || ldp_hdr->lspace_id != 0) {
ldp_hdr->lspace_id != 0) {
session_shutdown(nbr, S_BAD_LDP_ID, 0, 0); session_shutdown(nbr, S_BAD_LDP_ID, 0, 0);
free(buf); free(buf);
return; return;
@ -469,10 +463,8 @@ static void session_read(struct event *thread)
msg = (struct ldp_msg *)pdu; msg = (struct ldp_msg *)pdu;
type = ntohs(msg->type); type = ntohs(msg->type);
msg_len = ntohs(msg->length); msg_len = ntohs(msg->length);
if (msg_len < LDP_MSG_LEN || if (msg_len < LDP_MSG_LEN || (msg_len + LDP_MSG_DEAD_LEN) > pdu_len) {
(msg_len + LDP_MSG_DEAD_LEN) > pdu_len) { session_shutdown(nbr, S_BAD_MSG_LEN, msg->id, msg->type);
session_shutdown(nbr, S_BAD_MSG_LEN, msg->id,
msg->type);
free(buf); free(buf);
return; return;
} }
@ -484,8 +476,7 @@ static void session_read(struct event *thread)
case MSG_TYPE_INIT: case MSG_TYPE_INIT:
if ((nbr->state != NBR_STA_INITIAL) && if ((nbr->state != NBR_STA_INITIAL) &&
(nbr->state != NBR_STA_OPENSENT)) { (nbr->state != NBR_STA_OPENSENT)) {
session_shutdown(nbr, S_SHUTDOWN, session_shutdown(nbr, S_SHUTDOWN, msg->id, msg->type);
msg->id, msg->type);
free(buf); free(buf);
return; return;
} }
@ -493,8 +484,7 @@ static void session_read(struct event *thread)
case MSG_TYPE_KEEPALIVE: case MSG_TYPE_KEEPALIVE:
if ((nbr->state == NBR_STA_INITIAL) || if ((nbr->state == NBR_STA_INITIAL) ||
(nbr->state == NBR_STA_OPENSENT)) { (nbr->state == NBR_STA_OPENSENT)) {
session_shutdown(nbr, S_SHUTDOWN, session_shutdown(nbr, S_SHUTDOWN, msg->id, msg->type);
msg->id, msg->type);
free(buf); free(buf);
return; return;
} }
@ -503,8 +493,7 @@ static void session_read(struct event *thread)
break; break;
default: default:
if (nbr->state != NBR_STA_OPER) { if (nbr->state != NBR_STA_OPER) {
session_shutdown(nbr, S_SHUTDOWN, session_shutdown(nbr, S_SHUTDOWN, msg->id, msg->type);
msg->id, msg->type);
free(buf); free(buf);
return; return;
} }
@ -534,16 +523,14 @@ static void session_read(struct event *thread)
case MSG_TYPE_LABELWITHDRAW: case MSG_TYPE_LABELWITHDRAW:
case MSG_TYPE_LABELRELEASE: case MSG_TYPE_LABELRELEASE:
case MSG_TYPE_LABELABORTREQ: case MSG_TYPE_LABELABORTREQ:
ret = recv_labelmessage(nbr, pdu, msg_size, ret = recv_labelmessage(nbr, pdu, msg_size, type);
type);
break; break;
default: default:
log_debug("%s: unknown LDP message from nbr %pI4", log_debug("%s: unknown LDP message from nbr %pI4",
__func__, &nbr->id); __func__, &nbr->id);
if (!(ntohs(msg->type) & UNKNOWN_FLAG)) { if (!(ntohs(msg->type) & UNKNOWN_FLAG)) {
nbr->stats.unknown_msg++; nbr->stats.unknown_msg++;
send_notification(nbr->tcp, send_notification(nbr->tcp, S_UNKNOWN_MSG, msg->id, msg->type);
S_UNKNOWN_MSG, msg->id, msg->type);
} }
/* ignore the message */ /* ignore the message */
ret = 0; ret = 0;
@ -664,8 +651,7 @@ session_shutdown(struct nbr *nbr, uint32_t status, uint32_t msg_id,
void void
session_close(struct nbr *nbr) session_close(struct nbr *nbr)
{ {
log_debug("%s: closing session with lsr-id %pI4", __func__, log_debug("%s: closing session with lsr-id %pI4", __func__, &nbr->id);
&nbr->id);
ldp_sync_fsm_nbr_event(nbr, LDP_SYNC_EVT_SESSION_CLOSE); ldp_sync_fsm_nbr_event(nbr, LDP_SYNC_EVT_SESSION_CLOSE);
@ -788,8 +774,7 @@ pending_conn_find(int af, union ldpd_addr *addr)
struct pending_conn *pconn; struct pending_conn *pconn;
TAILQ_FOREACH(pconn, &global.pending_conns, entry) TAILQ_FOREACH(pconn, &global.pending_conns, entry)
if (af == pconn->af && if (af == pconn->af && ldp_addrcmp(af, addr, &pconn->addr) == 0)
ldp_addrcmp(af, addr, &pconn->addr) == 0)
return (pconn); return (pconn);
return (NULL); return (NULL);