blob: cf0b2b1c5a231d2aa68955a297d77ca2581c9d4b [file] [log] [blame]
David Lamparterd78e2b82012-05-01 18:08:43 +02001/* this testcase is currently broken
2 * -- 2012-05-01 David Lamparter <equinox@diac24.net>
3 */
4int main() { return 0; }
5
Paul Jakma1eab26b2008-06-07 20:44:30 +00006#include <zebra.h>
7
8#include "vty.h"
9#include "stream.h"
10#include "privs.h"
11#include "memory.h"
12
13#include "bgpd/bgpd.h"
14#include "bgpd/bgp_attr.h"
15#include "bgpd/bgp_open.h"
16#include "bgpd/bgp_debug.h"
17
18#define VT100_RESET "\x1b[0m"
19#define VT100_RED "\x1b[31m"
20#define VT100_GREEN "\x1b[32m"
21#define VT100_YELLOW "\x1b[33m"
22
23
24#define CAPABILITY 0
25#define DYNCAP 1
26#define OPT_PARAM 2
27
28/* need these to link in libbgp */
29struct zebra_privs_t *bgpd_privs = NULL;
30struct thread_master *master = NULL;
31
David Lamparterd78e2b82012-05-01 18:08:43 +020032#if 0
Paul Jakma1eab26b2008-06-07 20:44:30 +000033static int failed = 0;
34static int tty = 0;
35
36/* test segments to parse and validate, and use for other tests */
37static struct test_segment {
38 const char *name;
39 const char *desc;
40 const u_char data[1024];
41 int len;
42#define SHOULD_PARSE 0
43#define SHOULD_ERR -1
44 int parses; /* whether it should parse or not */
45
46 /* AFI/SAFI validation */
47 afi_t afi;
48 safi_t safi;
49#define VALID_AFI 1
50#define INVALID_AFI 0
51 int afi_valid;
52} mp_reach_segments [] =
53{
54 { "IPv6",
55 "IPV6 MP Reach, global nexthop, 1 NLRI",
56 {
57 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
58 /* nexthop bytes */ 16,
59 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2,
60 0xaa, 0xbb, 0xcc, 0xdd,
61 0x3, 0x4, 0x5, 0x6,
62 0xa1, 0xa2, 0xa3, 0xa4,
63 /* SNPA (defunct, MBZ) */ 0x0,
64 /* NLRI tuples */ 32, 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
65 },
66 (4 + 16 + 1 + 5),
67 SHOULD_PARSE,
68 AFI_IP6, SAFI_UNICAST, VALID_AFI,
69 },
70 { "IPv6-2",
71 "IPV6 MP Reach, global nexthop, 2 NLRIs",
72 {
73 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
74 /* nexthop bytes */ 16,
75 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* ffee:102:... */
76 0xaa, 0xbb, 0xcc, 0xdd,
77 0x3, 0x4, 0x5, 0x6,
78 0xa1, 0xa2, 0xa3, 0xa4,
79 /* SNPA (defunct, MBZ) */ 0x0,
80 /* NLRI tuples */ 32,
81 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
82 64,
83 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
84 0x0, 0x2, 0x0, 0x3,
85 },
86 (4 + 16 + 1 + 5 + 9),
87 SHOULD_PARSE,
88 AFI_IP6, SAFI_UNICAST, VALID_AFI,
89 },
90 { "IPv6-default",
91 "IPV6 MP Reach, global nexthop, 2 NLRIs + default",
92 {
93 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
94 /* nexthop bytes */ 16,
95 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2,
96 0xaa, 0xbb, 0xcc, 0xdd,
97 0x3, 0x4, 0x5, 0x6,
98 0xa1, 0xa2, 0xa3, 0xa4,
99 /* SNPA (defunct, MBZ) */ 0x0,
100 /* NLRI tuples */ 32,
101 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
102 64,
103 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
104 0x0, 0x2, 0x0, 0x3,
105 0x0, /* ::/0 */
106 },
107 (4 + 16 + 1 + 5 + 9 + 1),
108 SHOULD_PARSE,
109 AFI_IP6, SAFI_UNICAST, VALID_AFI,
110 },
111 { "IPv6-lnh",
112 "IPV6 MP Reach, global+local nexthops, 2 NLRIs + default",
113 {
114 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
115 /* nexthop bytes */ 32,
116 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
117 0xaa, 0xbb, 0xcc, 0xdd,
118 0x3, 0x4, 0x5, 0x6,
119 0xa1, 0xa2, 0xa3, 0xa4,
120 /* Nexthop (local) */ 0xfe, 0x80, 0x0, 0x0, /* fe80::210:2ff:.. */
121 0x0, 0x0, 0x0, 0x0,
122 0x2, 0x10, 0x2, 0xff,
123 0x1, 0x2, 0x3, 0x4,
124 /* SNPA (defunct, MBZ) */ 0x0,
125 /* NLRI tuples */ 32,
126 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
127 64,
128 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
129 0x0, 0x2, 0x0, 0x3,
130 0x0, /* ::/0 */
131 },
132 (4 + 32 + 1 + 5 + 9 + 1),
133 SHOULD_PARSE,
134 AFI_IP6, SAFI_UNICAST, VALID_AFI,
135 },
136 { "IPv6-nhlen",
137 "IPV6 MP Reach, inappropriate nexthop length",
138 {
139 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
140 /* nexthop bytes */ 4,
141 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
142 0xaa, 0xbb, 0xcc, 0xdd,
143 0x3, 0x4, 0x5, 0x6,
144 0xa1, 0xa2, 0xa3, 0xa4,
145 /* Nexthop (local) */ 0xfe, 0x80, 0x0, 0x0, /* fe80::210:2ff:.. */
146 0x0, 0x0, 0x0, 0x0,
147 0x2, 0x10, 0x2, 0xff,
148 0x1, 0x2, 0x3, 0x4,
149 /* SNPA (defunct, MBZ) */ 0x0,
150 /* NLRI tuples */ 32,
151 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
152 64,
153 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
154 0x0, 0x2, 0x0, 0x3,
155 0x0, /* ::/0 */
156 },
157 (4 + 32 + 1 + 5 + 9 + 1),
158 SHOULD_ERR,
159 AFI_IP6, SAFI_UNICAST, VALID_AFI,
160 },
161 { "IPv6-nhlen2",
162 "IPV6 MP Reach, invalid nexthop length",
163 {
164 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
165 /* nexthop bytes */ 5,
166 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
167 0xaa, 0xbb, 0xcc, 0xdd,
168 0x3, 0x4, 0x5, 0x6,
169 0xa1, 0xa2, 0xa3, 0xa4,
170 /* Nexthop (local) */ 0xfe, 0x80, 0x0, 0x0, /* fe80::210:2ff:.. */
171 0x0, 0x0, 0x0, 0x0,
172 0x2, 0x10, 0x2, 0xff,
173 0x1, 0x2, 0x3, 0x4,
174 /* SNPA (defunct, MBZ) */ 0x0,
175 /* NLRI tuples */ 32,
176 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
177 64,
178 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
179 0x0, 0x2, 0x0, 0x3,
180 0x0, /* ::/0 */
181 },
182 (4 + 32 + 1 + 5 + 9 + 1),
183 SHOULD_ERR,
184 AFI_IP6, SAFI_UNICAST, VALID_AFI,
185 },
186 { "IPv6-nhlen3",
187 "IPV6 MP Reach, nexthop length overflow",
188 {
189 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
190 /* nexthop bytes */ 32,
191 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
192 0xaa, 0xbb, 0xcc, 0xdd,
193 0x3, 0x4, 0x5, 0x6,
194 0xa1, 0xa2, 0xa3, 0xa4,
195 },
196 (4 + 16),
197 SHOULD_ERR,
198 AFI_IP6, SAFI_UNICAST, VALID_AFI,
199 },
200 { "IPv6-nhlen4",
201 "IPV6 MP Reach, nexthop length short",
202 {
203 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
204 /* nexthop bytes */ 16,
205 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
206 0xaa, 0xbb, 0xcc, 0xdd,
207 0x3, 0x4, 0x5, 0x6,
208 0xa1, 0xa2, 0xa3, 0xa4,
209 /* Nexthop (local) */ 0xfe, 0x80, 0x0, 0x0, /* fe80::210:2ff:.. */
210 0x0, 0x0, 0x0, 0x0,
211 0x2, 0x10, 0x2, 0xff,
212 0x1, 0x2, 0x3, 0x4,
213 /* SNPA (defunct, MBZ) */ 0x0,
214 /* NLRI tuples */ 32,
215 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
216 64,
217 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
218 0x0, 0x2, 0x0, 0x3,
219 0x0, /* ::/0 */
220 },
221 (4 + 32 + 1 + 5 + 9 + 1),
222 SHOULD_ERR,
223 AFI_IP6, SAFI_UNICAST, VALID_AFI,
224 },
225 { "IPv6-nlri",
226 "IPV6 MP Reach, NLRI bitlen overflow",
227 {
228 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
229 /* nexthop bytes */ 32,
230 /* Nexthop (global) */ 0xff, 0xfe, 0x1, 0x2, /* fffe:102:... */
231 0xaa, 0xbb, 0xcc, 0xdd,
232 0x3, 0x4, 0x5, 0x6,
233 0xa1, 0xa2, 0xa3, 0xa4,
234 /* Nexthop (local) */ 0xfe, 0x80, 0x0, 0x0, /* fe80::210:2ff:.. */
235 0x0, 0x0, 0x0, 0x0,
236 0x2, 0x10, 0x2, 0xff,
237 0x1, 0x2, 0x3, 0x4,
238 /* SNPA (defunct, MBZ) */ 0x0,
239 /* NLRI tuples */ 120,
240 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
241 64,
242 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
243 0x0, 0x2, 0x0, 0x3,
244 0, /* ::/0 */
245 },
246 (4 + 32 + 1 + 5 + 9 + 1),
247 SHOULD_ERR,
248 AFI_IP6, SAFI_UNICAST, VALID_AFI,
249 },
250 { "IPv4",
251 "IPv4 MP Reach, 2 NLRIs + default",
252 {
253 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_UNICAST,
254 /* nexthop bytes */ 4,
255 /* Nexthop */ 192, 168, 0, 1,
256 /* SNPA (defunct, MBZ) */ 0x0,
257 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
258 17, 10, 2, 3, /* 10.2.3/17 */
259 0, /* 0/0 */
260 },
261 (4 + 4 + 1 + 3 + 4 + 1),
262 SHOULD_PARSE,
263 AFI_IP, SAFI_UNICAST, VALID_AFI,
264 },
265 { "IPv4-nhlen",
266 "IPv4 MP Reach, nexthop lenth overflow",
267 {
268 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_UNICAST,
269 /* nexthop bytes */ 32,
270 /* Nexthop */ 192, 168, 0, 1,
271 /* SNPA (defunct, MBZ) */ 0x0,
272 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
273 17, 10, 2, 3, /* 10.2.3/17 */
274 0, /* 0/0 */
275 },
276 (4 + 4 + 1 + 3 + 4 + 1),
277 SHOULD_ERR,
278 AFI_IP, SAFI_UNICAST, VALID_AFI,
279 },
280 { "IPv4-nlrilen",
281 "IPv4 MP Reach, nlri lenth overflow",
282 {
283 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_UNICAST,
284 /* nexthop bytes */ 4,
285 /* Nexthop */ 192, 168, 0, 1,
286 /* SNPA (defunct, MBZ) */ 0x0,
287 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
288 30, 10,
289 0, /* 0/0 */
290 },
291 (4 + 4 + 1 + 3 + 2 + 1),
292 SHOULD_ERR,
293 AFI_IP, SAFI_UNICAST, VALID_AFI,
294 },
Denis Ovsienko42e6d742011-07-14 12:36:19 +0400295 { "IPv4-MLVPN",
296 "IPv4/MPLS-labeled VPN MP Reach, RD, Nexthop, 3 NLRIs",
Paul Jakma1eab26b2008-06-07 20:44:30 +0000297 {
Denis Ovsienko42e6d742011-07-14 12:36:19 +0400298 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_MPLS_LABELED_VPN,
Paul Jakma1eab26b2008-06-07 20:44:30 +0000299 /* nexthop bytes */ 12,
300 /* RD */ 0, 0, 1, 2,
301 0, 0xff, 3, 4,
302 /* Nexthop */ 192, 168, 0, 1,
303 /* SNPA (defunct, MBZ) */ 0x0,
304 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
305 17, 10, 2, 3, /* 10.2.3/17 */
306 0, /* 0/0 */
307 },
308 (4 + 12 + 1 + 3 + 4 + 1),
309 SHOULD_PARSE,
310 AFI_IP, SAFI_UNICAST, VALID_AFI,
311 },
312 /* From bug #385 */
313 { "IPv6-bug",
314 "IPv6, global nexthop, 1 default NLRI",
315 {
316 /* AFI / SAFI */ 0x0, 0x2, 0x1,
317 /* nexthop bytes */ 0x20,
318 /* Nexthop (global) */ 0x20, 0x01, 0x04, 0x70,
319 0x00, 0x01, 0x00, 0x06,
320 0x00, 0x00, 0x00, 0x00,
321 0x00, 0x00, 0x00, 0x01,
322 /* Nexthop (local) */ 0xfe, 0x80, 0x00, 0x00,
323 0x00, 0x00, 0x00, 0x00,
324 0x02, 0x0c, 0xdb, 0xff,
325 0xfe, 0xfe, 0xeb, 0x00,
326 /* SNPA (defunct, MBZ) */ 0,
327 /* NLRI tuples */ /* Should have 0 here for ::/0, but dont */
328 },
329 37,
330 SHOULD_ERR,
331 AFI_IP6, SAFI_UNICAST, VALID_AFI,
332 },
333
334 { NULL, NULL, {0}, 0, 0}
335};
336
337/* MP_UNREACH_NLRI tests */
338static struct test_segment mp_unreach_segments [] =
339{
340 { "IPv6-unreach",
341 "IPV6 MP Unreach, 1 NLRI",
342 {
343 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
344 /* NLRI tuples */ 32, 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
345 },
346 (3 + 5),
347 SHOULD_PARSE,
348 AFI_IP6, SAFI_UNICAST, VALID_AFI,
349 },
350 { "IPv6-unreach2",
351 "IPV6 MP Unreach, 2 NLRIs",
352 {
353 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
354 /* NLRI tuples */ 32,
355 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
356 64,
357 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
358 0x0, 0x2, 0x0, 0x3,
359 },
360 (3 + 5 + 9),
361 SHOULD_PARSE,
362 AFI_IP6, SAFI_UNICAST, VALID_AFI,
363 },
364 { "IPv6-unreach-default",
365 "IPV6 MP Unreach, 2 NLRIs + default",
366 {
367 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
368 /* NLRI tuples */ 32,
369 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
370 64,
371 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
372 0x0, 0x2, 0x0, 0x3,
373 0x0, /* ::/0 */
374 },
375 (3 + 5 + 9 + 1),
376 SHOULD_PARSE,
377 AFI_IP6, SAFI_UNICAST, VALID_AFI,
378 },
379 { "IPv6-unreach-nlri",
380 "IPV6 MP Unreach, NLRI bitlen overflow",
381 {
382 /* AFI / SAFI */ 0x0, AFI_IP6, SAFI_UNICAST,
383 /* NLRI tuples */ 120,
384 0xff, 0xfe, 0x1, 0x2, /* fffe:102::/32 */
385 64,
386 0xff, 0xfe, 0x0, 0x1, /* fffe:1:2:3::/64 */
387 0x0, 0x2, 0x0, 0x3,
388 0, /* ::/0 */
389 },
390 (3 + 5 + 9 + 1),
391 SHOULD_ERR,
392 AFI_IP6, SAFI_UNICAST, VALID_AFI,
393 },
394 { "IPv4-unreach",
395 "IPv4 MP Unreach, 2 NLRIs + default",
396 {
397 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_UNICAST,
398 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
399 17, 10, 2, 3, /* 10.2.3/17 */
400 0, /* 0/0 */
401 },
402 (3 + 3 + 4 + 1),
403 SHOULD_PARSE,
404 AFI_IP, SAFI_UNICAST, VALID_AFI,
405 },
406 { "IPv4-unreach-nlrilen",
407 "IPv4 MP Unreach, nlri length overflow",
408 {
409 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_UNICAST,
410 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
411 30, 10,
412 0, /* 0/0 */
413 },
414 (3 + 3 + 2 + 1),
415 SHOULD_ERR,
416 AFI_IP, SAFI_UNICAST, VALID_AFI,
417 },
Denis Ovsienko42e6d742011-07-14 12:36:19 +0400418 { "IPv4-unreach-MLVPN",
419 "IPv4/MPLS-labeled VPN MP Unreach, RD, 3 NLRIs",
Paul Jakma1eab26b2008-06-07 20:44:30 +0000420 {
Denis Ovsienko42e6d742011-07-14 12:36:19 +0400421 /* AFI / SAFI */ 0x0, AFI_IP, SAFI_MPLS_LABELED_VPN,
Paul Jakma1eab26b2008-06-07 20:44:30 +0000422 /* nexthop bytes */ 12,
423 /* RD */ 0, 0, 1, 2,
424 0, 0xff, 3, 4,
425 /* Nexthop */ 192, 168, 0, 1,
426 /* SNPA (defunct, MBZ) */ 0x0,
427 /* NLRI tuples */ 16, 10, 1, /* 10.1/16 */
428 17, 10, 2, 3, /* 10.2.3/17 */
429 0, /* 0/0 */
430 },
431 (3 + 3 + 4 + 1),
432 SHOULD_PARSE,
433 AFI_IP, SAFI_UNICAST, VALID_AFI,
434 },
435 { NULL, NULL, {0}, 0, 0}
436};
437
438
439/* basic parsing test */
440static void
441parse_test (struct peer *peer, struct test_segment *t, int type)
442{
443 int ret;
444 int oldfailed = failed;
445 struct attr attr;
446 struct bgp_nlri nlri;
447#define RANDOM_FUZZ 35
448
449 stream_reset (peer->ibuf);
450 stream_put (peer->ibuf, NULL, RANDOM_FUZZ);
451 stream_set_getp (peer->ibuf, RANDOM_FUZZ);
452
453 stream_write (peer->ibuf, t->data, t->len);
454
455 printf ("%s: %s\n", t->name, t->desc);
456
457 if (type == BGP_ATTR_MP_REACH_NLRI)
Denis Ovsienko565b8282011-10-10 21:08:33 +0400458 ret = bgp_mp_reach_parse (peer, t->len, &attr, BGP_ATTR_FLAG_OPTIONAL, BGP_INPUT_PNT (peer), &nlri);
Paul Jakma1eab26b2008-06-07 20:44:30 +0000459 else
Denis Ovsienko565b8282011-10-10 21:08:33 +0400460 ret = bgp_mp_unreach_parse (peer, t->len, BGP_ATTR_FLAG_OPTIONAL, BGP_INPUT_PNT (peer), &nlri);
Paul Jakma1eab26b2008-06-07 20:44:30 +0000461
462 if (!ret)
463 {
464 safi_t safi = t->safi;
465
466 if (bgp_afi_safi_valid_indices (t->afi, &safi) != t->afi_valid)
467 failed++;
468
469 printf ("MP: %u/%u (%u): recv %u, nego %u\n",
470 t->afi, t->safi, safi,
471 peer->afc_recv[t->afi][safi],
472 peer->afc_nego[t->afi][safi]);
473 }
474
475 printf ("parsed?: %s\n", ret ? "no" : "yes");
476
477 if (ret != t->parses)
478 failed++;
479
480 if (tty)
481 printf ("%s", (failed > oldfailed) ? VT100_RED "failed!" VT100_RESET
482 : VT100_GREEN "OK" VT100_RESET);
483 else
484 printf ("%s", (failed > oldfailed) ? "failed!" : "OK" );
485
486 if (failed)
487 printf (" (%u)", failed);
488
489 printf ("\n\n");
490}
491
492static struct bgp *bgp;
493static as_t asn = 100;
494
495int
496main (void)
497{
498 struct peer *peer;
499 int i, j;
500
501 conf_bgp_debug_fsm = -1UL;
502 conf_bgp_debug_events = -1UL;
503 conf_bgp_debug_packet = -1UL;
504 conf_bgp_debug_normal = -1UL;
505 conf_bgp_debug_as4 = -1UL;
506 term_bgp_debug_fsm = -1UL;
507 term_bgp_debug_events = -1UL;
508 term_bgp_debug_packet = -1UL;
509 term_bgp_debug_normal = -1UL;
510 term_bgp_debug_as4 = -1UL;
511
512 master = thread_master_create ();
513 bgp_master_init ();
514
515 if (fileno (stdout) >= 0)
516 tty = isatty (fileno (stdout));
517
518 if (bgp_get (&bgp, &asn, NULL))
519 return -1;
520
521 peer = peer_create_accept (bgp);
522 peer->host = "foo";
523
524 for (i = AFI_IP; i < AFI_MAX; i++)
525 for (j = SAFI_UNICAST; j < SAFI_MAX; j++)
526 {
527 peer->afc[i][j] = 1;
528 peer->afc_adv[i][j] = 1;
529 }
530
531 i = 0;
532 while (mp_reach_segments[i].name)
533 parse_test (peer, &mp_reach_segments[i++], BGP_ATTR_MP_REACH_NLRI);
534
535 i = 0;
536 while (mp_unreach_segments[i].name)
537 parse_test (peer, &mp_unreach_segments[i++], BGP_ATTR_MP_UNREACH_NLRI);
538
539 printf ("failures: %d\n", failed);
540 return failed;
541}
David Lamparterd78e2b82012-05-01 18:08:43 +0200542#endif /* #if 0 */