Mailing List Archive

[PATCH v4 3/3] tests: enhance bgpd testing with label value
bgp NLRI has a specific format for label, terminating with bottom
of stack bit. This value is updated in all BGP attribute tests. A
specific test has been added to check for a list of labels contained
in a single NLRI.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
---
tests/bgp_mp_attr_test.c | 87 ++++++++++++++++++++++++++++++--------
tests/bgpd.tests/testbgpmpattr.exp | 2 +
2 files changed, 71 insertions(+), 18 deletions(-)

diff --git a/tests/bgp_mp_attr_test.c b/tests/bgp_mp_attr_test.c
index 3b1bf1452cf8..7d6d8293c298 100644
--- a/tests/bgp_mp_attr_test.c
+++ b/tests/bgp_mp_attr_test.c
@@ -322,13 +322,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 1, 1, /* tag */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 2, 43, 1, /* tag */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -365,13 +365,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 1,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -391,13 +391,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 32,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -417,13 +417,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -444,13 +444,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 2,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -470,13 +470,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0xff, 0, /* Bogus RD */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -496,13 +496,13 @@ static struct test_segment {
/* Nexthop */ 192, 168, 0, 1,
/* SNPA (defunct, MBZ) */ 0x0,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -513,7 +513,59 @@ static struct test_segment {
SHOULD_ERR,
AFI_IP, SAFI_MPLS_LABELED_VPN, VALID_AFI,
},
-
+ { "IPv4-VPNv4-2-label",
+ "IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, 2 label in 1st",
+ {
+ /* AFI / SAFI */ 0x0, AFI_IP, SAFI_MPLS_LABELED_VPN,
+ /* nexthop bytes */ 12,
+ /* RD */ 0, 0, 0, 0, /* RD defined to be 0 */
+ 0, 0, 0, 0,
+ /* Nexthop */ 192, 168, 0, 1,
+ /* SNPA (defunct, MBZ) */ 0x0,
+ /* NLRI tuples */ 104+3*8,
+ 44, 2, 0, /* no BOS bit */
+ 0, 2, 1, /* tag with BOS bit */
+ /* rd, 8 octets */
+ 0, 0, /* RD_TYPE_AS */
+ 0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
+ 10, 1, /* 10.1/16 */
+ 88 + 17,
+ 3, 4, 1, /* tag with BOS bit set */
+ /* rd, 8 octets */
+ 0, 0, /* RD_TYPE_IP */
+ 192, 168, 0, 1, /* IPv4 */
+ 10, 2, 3, /* 10.2.3/17 */
+ },
+ (4 + 12 + 1 + (1+3+3+8+2) + (1+3+8+3)),
+ SHOULD_PARSE,
+ AFI_IP, SAFI_MPLS_LABELED_VPN, VALID_AFI,
+ },
+ { "IPv4-VPNv4-bogus-label",
+ "IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, bad label in 1st (log, but parse)",
+ {
+ /* AFI / SAFI */ 0x0, AFI_IP, SAFI_MPLS_LABELED_VPN,
+ /* nexthop bytes */ 12,
+ /* RD */ 0, 0, 0, 0, /* RD defined to be 0 */
+ 0, 0, 0, 0,
+ /* Nexthop */ 192, 168, 0, 1,
+ /* SNPA (defunct, MBZ) */ 0x0,
+ /* NLRI tuples */ 88 + 16,
+ 44, 2, 0, /* no BOS bit */
+ /* rd, 8 octets */
+ 0, 0, /* RD_TYPE_AS */
+ 0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
+ 10, 1, /* 10.1/16 */
+ 88 + 17,
+ 3, 4, 1, /* tag with BOS bit set */
+ /* rd, 8 octets */
+ 0, 0, /* RD_TYPE_IP */
+ 192, 168, 0, 1, /* IPv4 */
+ 10, 2, 3, /* 10.2.3/17 */
+ },
+ (4 + 12 + 1 + (1+3+8+2) + (1+3+8+3)),
+ SHOULD_PARSE,
+ AFI_IP, SAFI_MPLS_LABELED_VPN, VALID_AFI,
+ },
/* From bug #385 */
{ "IPv6-bug",
"IPv6, global nexthop, 1 default NLRI",
@@ -625,13 +677,13 @@ static struct test_segment mp_unreach_segments [] =
{
/* AFI / SAFI */ 0x0, AFI_IP, SAFI_MPLS_LABELED_VPN,
/* NLRI tuples */ 88 + 16,
- 0, 1, 2, /* tag */
+ 0, 2, 1, /* tag with BOS bit */
/* rd, 8 octets */
0, 0, /* RD_TYPE_AS */
0, 2, 0, 0xff, 3, 4, /* AS(2):val(4) */
10, 1, /* 10.1/16 */
88 + 17,
- 0xff, 0, 0, /* tag */
+ 3, 4, 1, /* tag with BOS bit set */
/* rd, 8 octets */
0, 0, /* RD_TYPE_IP */
192, 168, 0, 1, /* IPv4 */
@@ -718,7 +770,6 @@ parse_test (struct peer *peer, struct test_segment *t, int type)
parse_ret = bgp_mp_reach_parse (&attr_args, &nlri);
else
parse_ret = bgp_mp_unreach_parse (&attr_args, &nlri);
-
if (parse_ret == 0 && t->afi_valid == VALID_AFI)
assert (nlri.afi == t->afi && nlri.safi == t->safi);

diff --git a/tests/bgpd.tests/testbgpmpattr.exp b/tests/bgpd.tests/testbgpmpattr.exp
index e6d7305a688d..f97ba6986341 100644
--- a/tests/bgpd.tests/testbgpmpattr.exp
+++ b/tests/bgpd.tests/testbgpmpattr.exp
@@ -27,6 +27,8 @@ simpletest "IPv4-VPNv4-plenn-long: IPv4/VPNv4 MP Reach, RD, Nexthop, 3 NLRIs, la
simpletest "IPv4-VPNv4-plenn-short: IPv4/VPNv4 MP Reach, RD, Nexthop, 2 NLRIs, last plen short"
simpletest "IPv4-VPNv4-bogus-rd-type: IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, unknown RD in 1st (log, but parse)"
simpletest "IPv4-VPNv4-0-nlri: IPv4/VPNv4 MP Reach, RD, Nexthop, 3 NLRI, 3rd 0 bogus"
+simpletest "IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, 2 label in 1st"
+simpletest "IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, bad label in 1st (log, but parse)"
simpletest "IPv6-bug: IPv6, global nexthop, 1 default NLRI"
simpletest "IPv6-unreach: IPV6 MP Unreach, 1 NLRI"
simpletest "IPv6-unreach2: IPV6 MP Unreach, 2 NLRIs"
--
2.1.4


_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev