diff options
| author | sri-mohan1 <sri.mohan@samsung.com> | 2024-02-14 00:00:31 +0530 | 
|---|---|---|
| committer | sri-mohan1 <sri.mohan@samsung.com> | 2024-02-14 00:00:31 +0530 | 
| commit | 21b7f32a2c9bdabcaa9f934aff2b4116398817d1 (patch) | |
| tree | ad75dc66940f8ddcaa3885eb013dadda4e6341f8 /babeld | |
| parent | 9fd7bf4cbb56805219468be77a9d2516d454975a (diff) | |
babeld: changes for code maintainability
these changes are for improving the code maintainability and readability
Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
Diffstat (limited to 'babeld')
| -rw-r--r-- | babeld/message.c | 136 | 
1 files changed, 55 insertions, 81 deletions
diff --git a/babeld/message.c b/babeld/message.c index f8549329c6..1b83eb9ebb 100644 --- a/babeld/message.c +++ b/babeld/message.c @@ -139,7 +139,7 @@ static bool parse_update_subtlv(const unsigned char *a, int alen,  	    return false;  	} -	if (type & SUBTLV_MANDATORY) { +	if (CHECK_FLAG(type, SUBTLV_MANDATORY)) {  		/*  		 * RFC 8966 - 4.4  		 * If the mandatory bit is set, then the whole enclosing @@ -162,8 +162,7 @@ static bool parse_update_subtlv(const unsigned char *a, int alen,  		}  		if (memchr(a + i + 2, 0, len) != NULL) {  			/* 0 is reserved. */ -			flog_err(EC_BABEL_PACKET, -				 "Channel information contains 0!"); +			flog_err(EC_BABEL_PACKET, "Channel information contains 0!");  			return false;  		}  		memset(channels, 0, DIVERSITY_HOPS); @@ -203,7 +202,7 @@ parse_hello_subtlv(const unsigned char *a, int alen,              return -1;          } -	if (type & SUBTLV_MANDATORY) { +	if (CHECK_FLAG(type, SUBTLV_MANDATORY)) {  		/*  		 * RFC 8966 4.4  		 * If the mandatory bit is set, then the whole enclosing @@ -417,7 +416,7 @@ parse_packet(const unsigned char *from, struct interface *ifp,      unsigned int hello_send_us = 0, hello_rtt_receive_time = 0;      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp); -    if(babel_ifp->flags & BABEL_IF_TIMESTAMPS) { +    if (CHECK_FLAG(babel_ifp->flags, BABEL_IF_TIMESTAMPS)) {          /* We want to track exactly when we received this packet. */          gettime(&babel_now);      } @@ -513,8 +512,7 @@ parse_packet(const unsigned char *from, struct interface *ifp,  			schedule_neighbours_check(interval * 15, 0);  		/* Sub-TLV handling. */  		if (len > 8) { -			if (parse_hello_subtlv(message + 8, len - 6, -					       ×tamp) > 0) { +			if (parse_hello_subtlv(message + 8, len - 6, ×tamp) > 0) {  				neigh->hello_send_us = timestamp;  				neigh->hello_rtt_receive_time = babel_now;  				have_hello_rtt = 1; @@ -554,8 +552,7 @@ parse_packet(const unsigned char *from, struct interface *ifp,          } else if(type == MESSAGE_NH) {              unsigned char nh[16];              int rc; -            rc = network_address(message[2], message + 4, len - 2, -                                 nh); +            rc = network_address(message[2], message + 4, len - 2, nh);              if(rc <= 0) {                  have_v4_nh = 0;                  have_v6_nh = 0; @@ -577,9 +574,9 @@ parse_packet(const unsigned char *from, struct interface *ifp,              unsigned char channels[DIVERSITY_HOPS];              unsigned short interval, seqno, metric;              int rc, parsed_len; -	    bool ignore_update = false; +            bool ignore_update = false; -	    DO_NTOHS(interval, message + 6); +            DO_NTOHS(interval, message + 6);              DO_NTOHS(seqno, message + 8);              DO_NTOHS(metric, message + 10);              if(message[5] == 0 || @@ -651,7 +648,7 @@ parse_packet(const unsigned char *from, struct interface *ifp,                      goto done;              } -            if((babel_get_if_nfo(ifp)->flags & BABEL_IF_FARAWAY)) { +            if(CHECK_FLAG(babel_get_if_nfo(ifp)->flags, BABEL_IF_FARAWAY)) {                  channels[0] = 0;              } else {                  /* This will be overwritten by parse_update_subtlv below. */ @@ -665,15 +662,14 @@ parse_packet(const unsigned char *from, struct interface *ifp,                  }                  if(parsed_len < len) -			ignore_update = -				parse_update_subtlv(message + 2 + parsed_len, -						    len - parsed_len, channels); +					ignore_update = +						parse_update_subtlv(message + 2 + parsed_len, +						len - parsed_len, channels);  	    }  	    if (!ignore_update)  		    update_route(router_id, prefix, plen, seqno, metric, -				 interval, neigh, nh, channels, -				 channels_len(channels)); +				 interval, neigh, nh, channels, channels_len(channels));  	} else if(type == MESSAGE_REQUEST) {              unsigned char prefix[16], src_prefix[16], plen, src_plen;              int rc, is_ss; @@ -738,8 +734,7 @@ parse_packet(const unsigned char *from, struct interface *ifp,                     format_prefix(prefix, plen),                     format_address(from), ifp->name,                     format_eui64(message + 8), seqno); -            handle_request(neigh, prefix, plen, message[6], -                           seqno, message + 8); +            handle_request(neigh, prefix, plen, message[6], seqno, message + 8);          } else {              debugf(BABEL_DEBUG_COMMON,"Received unknown packet type %d from %s on %s.",                     type, format_address(from), ifp->name); @@ -821,11 +816,10 @@ check_bucket(struct interface *ifp)      }  } -static int -fill_rtt_message(struct interface *ifp) +static int fill_rtt_message(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp); -    if((babel_ifp->flags & BABEL_IF_TIMESTAMPS) && +    if(CHECK_FLAG(babel_ifp->flags, BABEL_IF_TIMESTAMPS) &&         (babel_ifp->buffered_hello >= 0)) {          if(babel_ifp->sendbuf[babel_ifp->buffered_hello + 8] == SUBTLV_PADN &&             babel_ifp->sendbuf[babel_ifp->buffered_hello + 9] == 4) { @@ -845,8 +839,7 @@ fill_rtt_message(struct interface *ifp)      return 0;  } -void -flushbuf(struct interface *ifp) +void flushbuf(struct interface *ifp)  {      int rc;      struct sockaddr_in6 sin6; @@ -888,8 +881,7 @@ flushbuf(struct interface *ifp)      babel_ifp->flush_timeout.tv_usec = 0;  } -static void -schedule_flush(struct interface *ifp) +static void schedule_flush(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      unsigned msecs = jitter(babel_ifp, 0); @@ -899,8 +891,7 @@ schedule_flush(struct interface *ifp)      set_timeout(&babel_ifp->flush_timeout, msecs);  } -static void -schedule_flush_now(struct interface *ifp) +static void schedule_flush_now(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      /* Almost now */ @@ -911,8 +902,7 @@ schedule_flush_now(struct interface *ifp)      set_timeout(&babel_ifp->flush_timeout, msecs);  } -static void -schedule_unicast_flush(unsigned msecs) +static void schedule_unicast_flush(unsigned msecs)  {      if(!unicast_neighbour)          return; @@ -924,16 +914,14 @@ schedule_unicast_flush(unsigned msecs)          babel_now.tv_sec + (babel_now.tv_usec / 1000 + msecs) / 1000;  } -static void -ensure_space(struct interface *ifp, int space) +static void ensure_space(struct interface *ifp, int space)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      if(babel_ifp->bufsize - babel_ifp->buffered < space)          flushbuf(ifp);  } -static void -start_message(struct interface *ifp, int type, int len) +static void start_message(struct interface *ifp, int type, int len)  {    babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      if(babel_ifp->bufsize - babel_ifp->buffered < len + 2) @@ -942,8 +930,7 @@ start_message(struct interface *ifp, int type, int len)      babel_ifp->sendbuf[babel_ifp->buffered++] = len;  } -static void -end_message(struct interface *ifp, int type, int bytes) +static void end_message(struct interface *ifp, int type, int bytes)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      assert(babel_ifp->buffered >= bytes + 2 && @@ -952,23 +939,20 @@ end_message(struct interface *ifp, int type, int bytes)      schedule_flush(ifp);  } -static void -accumulate_byte(struct interface *ifp, unsigned char value) +static void accumulate_byte(struct interface *ifp, unsigned char value)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      babel_ifp->sendbuf[babel_ifp->buffered++] = value;  } -static void -accumulate_short(struct interface *ifp, unsigned short value) +static void accumulate_short(struct interface *ifp, unsigned short value)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      DO_HTONS(babel_ifp->sendbuf + babel_ifp->buffered, value);      babel_ifp->buffered += 2;  } -static void -accumulate_int(struct interface *ifp, unsigned int value) +static void accumulate_int(struct interface *ifp, unsigned int value)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      DO_HTONL(babel_ifp->sendbuf + babel_ifp->buffered, value); @@ -984,8 +968,7 @@ accumulate_bytes(struct interface *ifp,      babel_ifp->buffered += len;  } -static int -start_unicast_message(struct neighbour *neigh, int type, int len) +static int start_unicast_message(struct neighbour *neigh, int type, int len)  {      if(unicast_neighbour) {          if(neigh != unicast_neighbour || @@ -1008,8 +991,7 @@ start_unicast_message(struct neighbour *neigh, int type, int len)      return 1;  } -static void -end_unicast_message(struct neighbour *neigh, int type, int bytes) +static void end_unicast_message(struct neighbour *neigh, int type, int bytes)  {      assert(unicast_neighbour == neigh && unicast_buffered >= bytes + 2 &&             unicast_buffer[unicast_buffered - bytes - 2] == type && @@ -1030,8 +1012,7 @@ accumulate_unicast_short(struct neighbour *neigh, unsigned short value)      unicast_buffered += 2;  } -static void -accumulate_unicast_int(struct neighbour *neigh, unsigned int value) +static void accumulate_unicast_int(struct neighbour *neigh, unsigned int value)  {      DO_HTONL(unicast_buffer + unicast_buffered, value);      unicast_buffered += 4; @@ -1051,15 +1032,16 @@ send_ack(struct neighbour *neigh, unsigned short nonce, unsigned short interval)      int rc;      debugf(BABEL_DEBUG_COMMON,"Sending ack (%04x) to %s on %s.",             nonce, format_address(neigh->address), neigh->ifp->name); -    rc = start_unicast_message(neigh, MESSAGE_ACK, 2); if(rc < 0) return; +    rc = start_unicast_message(neigh, MESSAGE_ACK, 2); +    if(rc < 0) +        return;      accumulate_unicast_short(neigh, nonce);      end_unicast_message(neigh, MESSAGE_ACK, 2);      /* Roughly yields a value no larger than 3/2, so this meets the deadline */      schedule_unicast_flush(roughly(interval * 6));  } -void -send_hello_noupdate(struct interface *ifp, unsigned interval) +void send_hello_noupdate(struct interface *ifp, unsigned interval)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      /* This avoids sending multiple hellos in a single packet, which breaks @@ -1082,7 +1064,7 @@ send_hello_noupdate(struct interface *ifp, unsigned interval)      accumulate_short(ifp, 0);      accumulate_short(ifp, babel_ifp->hello_seqno);      accumulate_short(ifp, interval > 0xFFFF ? 0xFFFF : interval); -    if(babel_ifp->flags & BABEL_IF_TIMESTAMPS) { +    if (CHECK_FLAG(babel_ifp->flags, BABEL_IF_TIMESTAMPS)) {          /* Sub-TLV containing the local time of emission. We use a             Pad4 sub-TLV, which we'll fill just before sending. */          accumulate_byte(ifp, SUBTLV_PADN); @@ -1090,11 +1072,10 @@ send_hello_noupdate(struct interface *ifp, unsigned interval)          accumulate_int(ifp, 0);      }      end_message(ifp, MESSAGE_HELLO, -                (babel_ifp->flags & BABEL_IF_TIMESTAMPS) ? 12 : 6); +                CHECK_FLAG(babel_ifp->flags, BABEL_IF_TIMESTAMPS) ? 12 : 6);  } -void -send_hello(struct interface *ifp) +void send_hello(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      send_hello_noupdate(ifp, (babel_ifp->hello_interval + 9) / 10); @@ -1105,8 +1086,7 @@ send_hello(struct interface *ifp)          send_marginal_ihu(ifp);  } -void -flush_unicast(int dofree) +void flush_unicast(int dofree)  {      struct sockaddr_in6 sin6;      int rc; @@ -1183,7 +1163,7 @@ really_send_update(struct interface *ifp,      /* Worst case */      ensure_space(ifp, 20 + 12 + 28); -    v4 = plen >= 96 && v4mapped(prefix); +    v4 = (plen >= 96) && v4mapped(prefix);      if(v4) {          if(!babel_ifp->ipv4) @@ -1208,7 +1188,7 @@ really_send_update(struct interface *ifp,                  omit++;          }          if(!babel_ifp->have_buffered_prefix || plen >= 48) -            flags |= 0x80; +            SET_FLAG(flags, 0x80);          real_prefix = prefix;          real_plen = plen;      } @@ -1216,7 +1196,7 @@ really_send_update(struct interface *ifp,      if(!babel_ifp->have_buffered_id         || memcmp(id, babel_ifp->buffered_id, 8) != 0) {          if(real_plen == 128 && memcmp(real_prefix + 8, id, 8) == 0) { -            flags |= 0x40; +            SET_FLAG(flags, 0x40);          } else {              start_message(ifp, MESSAGE_ROUTER_ID, 10);              accumulate_short(ifp, 0); @@ -1248,14 +1228,13 @@ really_send_update(struct interface *ifp,      end_message(ifp, MESSAGE_UPDATE, 10 + (real_plen + 7) / 8 - omit +                  channels_size); -    if(flags & 0x80) { +    if (CHECK_FLAG(flags, 0x80)) {          memcpy(babel_ifp->buffered_prefix, prefix, 16);          babel_ifp->have_buffered_prefix = 1;      }  } -static int -compare_buffered_updates(const void *av, const void *bv) +static int compare_buffered_updates(const void *av, const void *bv)  {      const struct buffered_update *a = av, *b = bv;      int rc, v4a, v4b, ma, mb; @@ -1288,8 +1267,7 @@ compare_buffered_updates(const void *av, const void *bv)      return memcmp(a->prefix, b->prefix, 16);  } -void -flushupdates(struct interface *ifp) +void flushupdates(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = NULL;      struct xroute *xroute; @@ -1299,7 +1277,7 @@ flushupdates(struct interface *ifp)      int i;      if(ifp == NULL) { -	struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT); +		struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);          struct interface *ifp_aux;          FOR_ALL_INTERFACES(vrf, ifp_aux)              flushupdates(ifp_aux); @@ -1372,7 +1350,7 @@ flushupdates(struct interface *ifp)                  if(metric < INFINITY)                      satisfy_request(route->src->prefix, route->src->plen,                                      seqno, route->src->id, ifp); -                if((babel_ifp->flags & BABEL_IF_SPLIT_HORIZON) && +                if(CHECK_FLAG(babel_ifp->flags, BABEL_IF_SPLIT_HORIZON) &&                     route->neigh->ifp == ifp)                      continue; @@ -1414,11 +1392,11 @@ flushupdates(struct interface *ifp)      babel_ifp->update_flush_timeout.tv_usec = 0;  } -static void -schedule_update_flush(struct interface *ifp, int urgent) +static void schedule_update_flush(struct interface *ifp, int urgent)  {      babel_interface_nfo *babel_ifp = babel_get_if_nfo(ifp);      unsigned msecs; +      msecs = update_jitter(babel_ifp, urgent);      if(babel_ifp->update_flush_timeout.tv_sec != 0 &&         timeval_minus_msec(&babel_ifp->update_flush_timeout, &babel_now) < msecs) @@ -1528,10 +1506,10 @@ send_update_resend(struct interface *ifp,      record_resend(RESEND_UPDATE, prefix, plen, 0, NULL, NULL, resend_delay);  } -void -send_wildcard_retraction(struct interface *ifp) +void send_wildcard_retraction(struct interface *ifp)  {      babel_interface_nfo *babel_ifp = NULL; +      if(ifp == NULL) {  	struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);          struct interface *ifp_aux; @@ -1557,14 +1535,12 @@ send_wildcard_retraction(struct interface *ifp)      babel_ifp->have_buffered_id = 0;  } -void -update_myseqno(void) +void update_myseqno(void)  {      myseqno = seqno_plus(myseqno, 1);  } -void -send_self_update(struct interface *ifp) +void send_self_update(struct interface *ifp)  {      struct xroute_stream *xroutes;      if(ifp == NULL) { @@ -1592,8 +1568,7 @@ send_self_update(struct interface *ifp)      }  } -void -send_ihu(struct neighbour *neigh, struct interface *ifp) +void send_ihu(struct neighbour *neigh, struct interface *ifp)  {      babel_interface_nfo *babel_ifp = NULL;      int rxcost, interval; @@ -1645,7 +1620,7 @@ send_ihu(struct neighbour *neigh, struct interface *ifp)      ll = linklocal(neigh->address); -    if((babel_ifp->flags & BABEL_IF_TIMESTAMPS) && neigh->hello_send_us +    if(CHECK_FLAG(babel_ifp->flags, BABEL_IF_TIMESTAMPS) && neigh->hello_send_us         /* Checks whether the RTT data is not too old to be sent. */         && timeval_minus_msec(&babel_now,                               &neigh->hello_rtt_receive_time) < 1000000) { @@ -1700,14 +1675,13 @@ send_ihu(struct neighbour *neigh, struct interface *ifp)  }  /* Send IHUs to all marginal neighbours */ -void -send_marginal_ihu(struct interface *ifp) +void send_marginal_ihu(struct interface *ifp)  {      struct neighbour *neigh;      FOR_ALL_NEIGHBOURS(neigh) {          if(ifp && neigh->ifp != ifp)              continue; -        if(neigh->txcost >= 384 || (neigh->reach & 0xF000) != 0xF000) +        if(neigh->txcost >= 384 || CHECK_FLAG(neigh->reach, 0xF000) != 0xF000)              send_ihu(neigh, ifp);      }  }  | 
