version 1.1.1.2, 2013/07/21 23:54:40
|
version 1.1.1.3, 2016/11/02 10:09:12
|
Line 1
|
Line 1
|
|
/* |
|
* Copyright (C) 2005 Sun Microsystems, Inc. |
|
* |
|
* This file is part of Quagga. |
|
* |
|
* Quagga is free software; you can redistribute it and/or modify it |
|
* under the terms of the GNU General Public License as published by the |
|
* Free Software Foundation; either version 2, or (at your option) any |
|
* later version. |
|
* |
|
* Quagga is distributed in the hope that it will be useful, but |
|
* WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
* General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with Quagga; see the file COPYING. If not, write to the Free |
|
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
|
* 02111-1307, USA. |
|
*/ |
|
|
#include <zebra.h> |
#include <zebra.h> |
|
|
#include "vty.h" |
#include "vty.h" |
#include "stream.h" |
#include "stream.h" |
#include "privs.h" |
#include "privs.h" |
|
#include "filter.h" |
|
|
#include "bgpd/bgpd.h" |
#include "bgpd/bgpd.h" |
#include "bgpd/bgp_aspath.h" |
#include "bgpd/bgp_aspath.h" |
Line 432 static struct test_segment {
|
Line 454 static struct test_segment {
|
}, { NULL, NULL, {0}, 0, { NULL, 0, 0 } } |
}, { NULL, NULL, {0}, 0, { NULL, 0, 0 } } |
}; |
}; |
|
|
|
#define COMMON_ATTRS \ |
|
BGP_ATTR_FLAG_TRANS, \ |
|
BGP_ATTR_ORIGIN, \ |
|
1, \ |
|
BGP_ORIGIN_EGP, \ |
|
BGP_ATTR_FLAG_TRANS, \ |
|
BGP_ATTR_NEXT_HOP, \ |
|
4, 192, 0, 2, 0 |
|
#define COMMON_ATTR_SIZE 11 |
|
|
/* */ |
/* */ |
static struct aspath_tests { |
static struct aspath_tests { |
const char *desc; |
const char *desc; |
Line 453 static struct aspath_tests {
|
Line 485 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS2_DATA, 0, |
AS2_DATA, 0, |
0, |
0, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
BGP_ATTR_AS_PATH, | BGP_ATTR_FLAG_TRANS, |
| BGP_ATTR_AS_PATH, |
10, |
10, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 1 */ |
/* 1 */ |
{ |
{ |
Line 466 static struct aspath_tests {
|
Line 499 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS2_DATA, -1, |
AS2_DATA, -1, |
0, |
0, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
8, |
8, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 2 */ |
/* 2 */ |
{ |
{ |
Line 479 static struct aspath_tests {
|
Line 513 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS2_DATA, -1, |
AS2_DATA, -1, |
0, |
0, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
12, |
12, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 3 */ |
/* 3 */ |
{ |
{ |
Line 492 static struct aspath_tests {
|
Line 527 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS2_DATA, -1, |
AS2_DATA, -1, |
0, |
0, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
10, |
10, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 4 */ |
/* 4 */ |
{ |
{ |
Line 505 static struct aspath_tests {
|
Line 541 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS2_DATA, -1, |
AS2_DATA, -1, |
0, |
0, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS4_PATH, |
BGP_ATTR_AS4_PATH, |
10, |
10, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 5 */ |
/* 5 */ |
{ |
{ |
Line 518 static struct aspath_tests {
|
Line 555 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, -1, |
AS4_DATA, -1, |
PEER_CAP_AS4_RCV, |
PEER_CAP_AS4_RCV, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS4_PATH, |
BGP_ATTR_AS4_PATH, |
10, |
10, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 6 */ |
/* 6 */ |
{ |
{ |
Line 531 static struct aspath_tests {
|
Line 569 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, 0, |
AS4_DATA, 0, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
18, |
18, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 7 */ |
/* 7 */ |
{ |
{ |
Line 544 static struct aspath_tests {
|
Line 583 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, -1, |
AS4_DATA, -1, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
16, |
16, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 8 */ |
/* 8 */ |
{ |
{ |
Line 557 static struct aspath_tests {
|
Line 597 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, -1, |
AS4_DATA, -1, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
20, |
20, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 9 */ |
/* 9 */ |
{ |
{ |
Line 570 static struct aspath_tests {
|
Line 611 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, -1, |
AS4_DATA, -1, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
22, |
22, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 10 */ |
/* 10 */ |
{ |
{ |
Line 583 static struct aspath_tests {
|
Line 625 static struct aspath_tests {
|
"8466 3 52737 4096", |
"8466 3 52737 4096", |
AS4_DATA, -1, |
AS4_DATA, -1, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_RCV|PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS_PATH, |
BGP_ATTR_AS_PATH, |
18, |
18, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 11 */ |
/* 11 */ |
{ |
{ |
"4b AS4_PATH w/o AS_PATH", |
"4b AS4_PATH w/o AS_PATH", |
&test_segments[6], |
&test_segments[6], |
NULL, |
NULL, |
AS4_DATA, 0, | AS4_DATA, -1, |
PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS4_PATH, |
BGP_ATTR_AS4_PATH, |
14, |
14, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
}, |
}, |
/* 12 */ |
/* 12 */ |
{ |
{ |
Line 609 static struct aspath_tests {
|
Line 653 static struct aspath_tests {
|
"8466 3 52737 4096 (123 456 789)", |
"8466 3 52737 4096 (123 456 789)", |
AS4_DATA, 0, |
AS4_DATA, 0, |
PEER_CAP_AS4_ADV, |
PEER_CAP_AS4_ADV, |
{ BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, | { COMMON_ATTRS, |
| BGP_ATTR_FLAG_TRANS|BGP_ATTR_FLAG_OPTIONAL, |
BGP_ATTR_AS4_PATH, |
BGP_ATTR_AS4_PATH, |
14, |
14, |
}, |
}, |
3, | COMMON_ATTR_SIZE + 3, |
&test_segments[0], |
&test_segments[0], |
}, |
}, |
{ NULL, NULL, NULL, 0, 0, 0, { 0 }, 0 }, |
{ NULL, NULL, NULL, 0, 0, 0, { 0 }, 0 }, |