summaryrefslogtreecommitdiff
path: root/bgpd/bgp_community.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_community.c')
-rw-r--r--bgpd/bgp_community.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/bgpd/bgp_community.c b/bgpd/bgp_community.c
index 2ba45f6e..fc1bef88 100644
--- a/bgpd/bgp_community.c
+++ b/bgpd/bgp_community.c
@@ -394,16 +394,19 @@ community_str (struct community *com)
unsigned int
community_hash_make (struct community *com)
{
+ unsigned char *pnt = (unsigned char *)com->val;
+ int size = com->size * 4;
+ unsigned int key = 0;
int c;
- unsigned int key;
- unsigned char *pnt;
- key = 0;
- pnt = (unsigned char *)com->val;
-
- for(c = 0; c < com->size * 4; c++)
- key += pnt[c];
-
+ for (c = 0; c < size; c += 4)
+ {
+ key += pnt[c];
+ key += pnt[c + 1];
+ key += pnt[c + 2];
+ key += pnt[c + 3];
+ }
+
return key;
}