bgpd: Make the private AS number check 4 byte compatible.
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c
index 49b65b6..613aa44 100644
--- a/bgpd/bgp_aspath.c
+++ b/bgpd/bgp_aspath.c
@@ -1281,7 +1281,9 @@
for (i = 0; i < seg->length; i++)
{
if ( (seg->as[i] < BGP_PRIVATE_AS_MIN)
- || (seg->as[i] > BGP_PRIVATE_AS_MAX) )
+ || (seg->as[i] > BGP_PRIVATE_AS_MAX &&
+ seg->as[i] < BGP_PRIVATE_AS4_MIN)
+ || (seg->as[i] > BGP_PRIVATE_AS4_MAX))
return 0;
}
seg = seg->next;
diff --git a/bgpd/bgp_aspath.h b/bgpd/bgp_aspath.h
index 2f0a519..b467ee5 100644
--- a/bgpd/bgp_aspath.h
+++ b/bgpd/bgp_aspath.h
@@ -31,6 +31,10 @@
#define BGP_PRIVATE_AS_MIN 64512U
#define BGP_PRIVATE_AS_MAX 65535U
+/* Private 4 byte AS range defined in RFC6996. */
+#define BGP_PRIVATE_AS4_MIN 4200000000U
+#define BGP_PRIVATE_AS4_MAX 4294967294U
+
/* we leave BGP_AS_MAX as the 16bit AS MAX number. */
#define BGP_AS_MAX 65535U
#define BGP_AS4_MAX 4294967295U