]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix AS_PATH size calculation for long paths
authorAndreas Jaggi <aj@open.ch>
Fri, 8 Sep 2017 11:46:20 +0000 (07:46 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 1 Oct 2017 22:05:26 +0000 (18:05 -0400)
If you have an AS_PATH with more entries than
what can be written into a single AS_SEGMENT_MAX
it needs to be broken up.  The code that noticed
that the AS_PATH needs to be broken up was not
correctly calculating the size of the resulting
message.  This patch addresses this issue.

This patch was built from an email that Andreas
sent to the dev alias for FRRouting.

Fixes: #1114
Signed-off-by: Andreas Jaggi <aj@open.ch>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_aspath.c

index 89a529d7387376c51407edc61bc7af910bfb0424..240d3794d27d49a847058cc0dfb2f800b7645a82 100644 (file)
@@ -952,7 +952,7 @@ aspath_put (struct stream *s, struct aspath *as, int use32bit )
               assegment_header_put (s, seg->type, AS_SEGMENT_MAX);
               assegment_data_put (s, seg->as, AS_SEGMENT_MAX, use32bit);
               written += AS_SEGMENT_MAX;
-              bytes += ASSEGMENT_SIZE (written, use32bit);
+              bytes += ASSEGMENT_SIZE (AS_SEGMENT_MAX, use32bit);
             }
           
           /* write the final segment, probably is also the first */