summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNigel Kukard <nkukard@lbsd.net>2017-08-30 05:53:37 +0000
committerNigel Kukard <nkukard@lbsd.net>2017-08-31 23:39:53 +0000
commit79dab4b7f4af46ade2b87fa76c94e34355dcc7cd (patch)
treea6e59e2d5701262b8eaf3167f722526ae6c23326
parent8ea01902d28e107183d10453da809ca502b07a09 (diff)
bgpd: Cleaned up the lcom->size * LCOMMUNITY_SIZE with lcom_length()
Signed-off-by: Nigel Kukard <nkukard@lbsd.net>
-rw-r--r--bgpd/bgp_attr.c17
-rw-r--r--bgpd/bgp_lcommunity.c16
2 files changed, 15 insertions, 18 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index da5d1e8d9c..42cf45c88a 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -3058,20 +3058,20 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
if (CHECK_FLAG(peer->af_flags[afi][safi],
PEER_FLAG_SEND_LARGE_COMMUNITY)
&& (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES))) {
- if (attr->lcommunity->size * LCOMMUNITY_SIZE > 255) {
+ if (lcom_length(attr->lcommunity) > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
- stream_putw(s, attr->lcommunity->size * LCOMMUNITY_SIZE);
+ stream_putw(s, lcom_length(attr->lcommunity));
} else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
- stream_putc(s, attr->lcommunity->size * LCOMMUNITY_SIZE);
+ stream_putc(s, lcom_length(attr->lcommunity));
}
stream_put(s, attr->lcommunity->val,
- attr->lcommunity->size * LCOMMUNITY_SIZE);
+ lcom_length(attr->lcommunity));
}
/* Route Reflector. */
@@ -3422,21 +3422,20 @@ void bgp_dump_routes_attr(struct stream *s, struct attr *attr,
/* Large Community attribute. */
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES)) {
- if (attr->lcommunity->size * LCOMMUNITY_SIZE > 255) {
+ if (lcom_length(attr->lcommunity) > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
- stream_putw(s, attr->lcommunity->size * LCOMMUNITY_SIZE);
+ stream_putw(s, lcom_length(attr->lcommunity));
} else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
- stream_putc(s, attr->lcommunity->size * LCOMMUNITY_SIZE);
+ stream_putc(s, lcom_length(attr->lcommunity));
}
- stream_put(s, attr->lcommunity->val,
- attr->lcommunity->size * LCOMMUNITY_SIZE);
+ stream_put(s, attr->lcommunity->val, lcom_length(attr->lcommunity));
}
/* Add a MP_NLRI attribute to dump the IPv6 next hop */
diff --git a/bgpd/bgp_lcommunity.c b/bgpd/bgp_lcommunity.c
index 344a25dfa6..fd734b2c5b 100644
--- a/bgpd/bgp_lcommunity.c
+++ b/bgpd/bgp_lcommunity.c
@@ -151,9 +151,8 @@ struct lcommunity *lcommunity_dup(struct lcommunity *lcom)
new = XCALLOC(MTYPE_LCOMMUNITY, sizeof(struct lcommunity));
new->size = lcom->size;
if (new->size) {
- new->val = XMALLOC(MTYPE_LCOMMUNITY_VAL,
- lcom->size * LCOMMUNITY_SIZE);
- memcpy(new->val, lcom->val, lcom->size * LCOMMUNITY_SIZE);
+ new->val = XMALLOC(MTYPE_LCOMMUNITY_VAL, lcom_length(lcom));
+ memcpy(new->val, lcom->val, lcom_length(lcom));
} else
new->val = NULL;
return new;
@@ -175,14 +174,13 @@ struct lcommunity *lcommunity_merge(struct lcommunity *lcom1,
if (lcom1->val)
lcom1->val =
XREALLOC(MTYPE_LCOMMUNITY_VAL, lcom1->val,
- (lcom1->size + lcom2->size) * LCOMMUNITY_SIZE);
+ lcom_length(lcom1) + lcom_length(lcom2));
else
lcom1->val =
XMALLOC(MTYPE_LCOMMUNITY_VAL,
- (lcom1->size + lcom2->size) * LCOMMUNITY_SIZE);
+ lcom_length(lcom1) + lcom_length(lcom2));
- memcpy(lcom1->val + (lcom1->size * LCOMMUNITY_SIZE), lcom2->val,
- lcom2->size * LCOMMUNITY_SIZE);
+ memcpy(lcom1->val + lcom_length(lcom1), lcom2->val, lcom_length(lcom2));
lcom1->size += lcom2->size;
return lcom1;
@@ -231,7 +229,7 @@ void lcommunity_unintern(struct lcommunity **lcom)
unsigned int lcommunity_hash_make(void *arg)
{
const struct lcommunity *lcom = arg;
- int size = lcom->size * LCOMMUNITY_SIZE;
+ int size = lcom_length(lcom);
u_int8_t *pnt = lcom->val;
unsigned int key = 0;
int c;
@@ -261,7 +259,7 @@ int lcommunity_cmp(const void *arg1, const void *arg2)
const struct lcommunity *lcom2 = arg2;
return (lcom1->size == lcom2->size
- && memcmp(lcom1->val, lcom2->val, lcom1->size * LCOMMUNITY_SIZE)
+ && memcmp(lcom1->val, lcom2->val, lcom_length(lcom1))
== 0);
}