1: /* BGP VTY interface.
2: Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
3:
4: This file is part of GNU Zebra.
5:
6: GNU Zebra is free software; you can redistribute it and/or modify it
7: under the terms of the GNU General Public License as published by the
8: Free Software Foundation; either version 2, or (at your option) any
9: later version.
10:
11: GNU Zebra is distributed in the hope that it will be useful, but
12: WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with GNU Zebra; see the file COPYING. If not, write to the Free
18: Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19: 02111-1307, USA. */
20:
21: #include <zebra.h>
22:
23: #include "command.h"
24: #include "prefix.h"
25: #include "plist.h"
26: #include "buffer.h"
27: #include "linklist.h"
28: #include "stream.h"
29: #include "thread.h"
30: #include "log.h"
31: #include "memory.h"
32: #include "hash.h"
33: #include "filter.h"
34:
35: #include "bgpd/bgpd.h"
36: #include "bgpd/bgp_advertise.h"
37: #include "bgpd/bgp_attr.h"
38: #include "bgpd/bgp_aspath.h"
39: #include "bgpd/bgp_community.h"
40: #include "bgpd/bgp_ecommunity.h"
41: #include "bgpd/bgp_damp.h"
42: #include "bgpd/bgp_debug.h"
43: #include "bgpd/bgp_fsm.h"
44: #include "bgpd/bgp_mplsvpn.h"
45: #include "bgpd/bgp_nexthop.h"
46: #include "bgpd/bgp_open.h"
47: #include "bgpd/bgp_regex.h"
48: #include "bgpd/bgp_route.h"
49: #include "bgpd/bgp_zebra.h"
50: #include "bgpd/bgp_table.h"
51: #include "bgpd/bgp_vty.h"
52: #include "bgpd/bgp_mpath.h"
53:
54: extern struct in_addr router_id_zebra;
55:
56: /* Utility function to get address family from current node. */
57: afi_t
58: bgp_node_afi (struct vty *vty)
59: {
60: afi_t afi;
61: switch (vty->node)
62: {
63: case BGP_IPV6_NODE:
64: case BGP_IPV6M_NODE:
65: case BGP_VPNV6_NODE:
66: case BGP_ENCAPV6_NODE:
67: afi = AFI_IP6;
68: break;
69: default:
70: afi = AFI_IP;
71: break;
72: }
73: return afi;
74: }
75:
76: /* Utility function to get subsequent address family from current
77: node. */
78: safi_t
79: bgp_node_safi (struct vty *vty)
80: {
81: safi_t safi;
82: switch (vty->node)
83: {
84: case BGP_ENCAP_NODE:
85: case BGP_ENCAPV6_NODE:
86: safi = SAFI_ENCAP;
87: break;
88: case BGP_VPNV4_NODE:
89: case BGP_VPNV6_NODE:
90: safi = SAFI_MPLS_VPN;
91: break;
92: case BGP_IPV4M_NODE:
93: case BGP_IPV6M_NODE:
94: safi = SAFI_MULTICAST;
95: break;
96: default:
97: safi = SAFI_UNICAST;
98: break;
99: }
100: return safi;
101: }
102:
103: int
104: bgp_parse_afi(const char *str, afi_t *afi)
105: {
106: if (!strcmp(str, "ipv4")) {
107: *afi = AFI_IP;
108: return 0;
109: }
110: if (!strcmp(str, "ipv6")) {
111: *afi = AFI_IP6;
112: return 0;
113: }
114: return -1;
115: }
116:
117: int
118: bgp_parse_safi(const char *str, safi_t *safi)
119: {
120: if (!strcmp(str, "encap")) {
121: *safi = SAFI_ENCAP;
122: return 0;
123: }
124: if (!strcmp(str, "multicast")) {
125: *safi = SAFI_MULTICAST;
126: return 0;
127: }
128: if (!strcmp(str, "unicast")) {
129: *safi = SAFI_UNICAST;
130: return 0;
131: }
132: if (!strcmp(str, "vpn")) {
133: *safi = SAFI_MPLS_VPN;
134: return 0;
135: }
136: return -1;
137: }
138:
139: static int
140: peer_address_self_check (union sockunion *su)
141: {
142: struct interface *ifp = NULL;
143:
144: if (su->sa.sa_family == AF_INET)
145: ifp = if_lookup_by_ipv4_exact (&su->sin.sin_addr);
146: else if (su->sa.sa_family == AF_INET6)
147: ifp = if_lookup_by_ipv6_exact (&su->sin6.sin6_addr);
148:
149: if (ifp)
150: return 1;
151:
152: return 0;
153: }
154:
155: /* Utility function for looking up peer from VTY. */
156: static struct peer *
157: peer_lookup_vty (struct vty *vty, const char *ip_str)
158: {
159: int ret;
160: struct bgp *bgp;
161: union sockunion su;
162: struct peer *peer;
163:
164: bgp = vty->index;
165:
166: ret = str2sockunion (ip_str, &su);
167: if (ret < 0)
168: {
169: vty_out (vty, "%% Malformed address: %s%s", ip_str, VTY_NEWLINE);
170: return NULL;
171: }
172:
173: peer = peer_lookup (bgp, &su);
174: if (! peer)
175: {
176: vty_out (vty, "%% Specify remote-as or peer-group commands first%s", VTY_NEWLINE);
177: return NULL;
178: }
179: return peer;
180: }
181:
182: /* Utility function for looking up peer or peer group. */
183: static struct peer *
184: peer_and_group_lookup_vty (struct vty *vty, const char *peer_str)
185: {
186: int ret;
187: struct bgp *bgp;
188: union sockunion su;
189: struct peer *peer;
190: struct peer_group *group;
191:
192: bgp = vty->index;
193:
194: ret = str2sockunion (peer_str, &su);
195: if (ret == 0)
196: {
197: peer = peer_lookup (bgp, &su);
198: if (peer)
199: return peer;
200: }
201: else
202: {
203: group = peer_group_lookup (bgp, peer_str);
204: if (group)
205: return group->conf;
206: }
207:
208: vty_out (vty, "%% Specify remote-as or peer-group commands first%s",
209: VTY_NEWLINE);
210:
211: return NULL;
212: }
213:
214: static int
215: bgp_vty_return (struct vty *vty, int ret)
216: {
217: const char *str = NULL;
218:
219: switch (ret)
220: {
221: case BGP_ERR_INVALID_VALUE:
222: str = "Invalid value";
223: break;
224: case BGP_ERR_INVALID_FLAG:
225: str = "Invalid flag";
226: break;
227: case BGP_ERR_PEER_INACTIVE:
228: str = "Activate the neighbor for the address family first";
229: break;
230: case BGP_ERR_INVALID_FOR_PEER_GROUP_MEMBER:
231: str = "Invalid command for a peer-group member";
232: break;
233: case BGP_ERR_PEER_GROUP_SHUTDOWN:
234: str = "Peer-group has been shutdown. Activate the peer-group first";
235: break;
236: case BGP_ERR_PEER_GROUP_HAS_THE_FLAG:
237: str = "This peer is a peer-group member. Please change peer-group configuration";
238: break;
239: case BGP_ERR_PEER_FLAG_CONFLICT:
240: str = "Can't set override-capability and strict-capability-match at the same time";
241: break;
242: case BGP_ERR_PEER_GROUP_MEMBER_EXISTS:
243: str = "No activate for peergroup can be given only if peer-group has no members";
244: break;
245: case BGP_ERR_PEER_BELONGS_TO_GROUP:
246: str = "No activate for an individual peer-group member is invalid";
247: break;
248: case BGP_ERR_PEER_GROUP_AF_UNCONFIGURED:
249: str = "Activate the peer-group for the address family first";
250: break;
251: case BGP_ERR_PEER_GROUP_NO_REMOTE_AS:
252: str = "Specify remote-as or peer-group remote AS first";
253: break;
254: case BGP_ERR_PEER_GROUP_CANT_CHANGE:
255: str = "Cannot change the peer-group. Deconfigure first";
256: break;
257: case BGP_ERR_PEER_GROUP_MISMATCH:
258: str = "Cannot have different peer-group for the neighbor";
259: break;
260: case BGP_ERR_PEER_FILTER_CONFLICT:
261: str = "Prefix/distribute list can not co-exist";
262: break;
263: case BGP_ERR_NOT_INTERNAL_PEER:
264: str = "Invalid command. Not an internal neighbor";
265: break;
266: case BGP_ERR_REMOVE_PRIVATE_AS:
267: str = "Private AS cannot be removed for IBGP peers";
268: break;
269: case BGP_ERR_LOCAL_AS_ALLOWED_ONLY_FOR_EBGP:
270: str = "Local-AS allowed only for EBGP peers";
271: break;
272: case BGP_ERR_CANNOT_HAVE_LOCAL_AS_SAME_AS:
273: str = "Cannot have local-as same as BGP AS number";
274: break;
275: case BGP_ERR_TCPSIG_FAILED:
276: str = "Error while applying TCP-Sig to session(s)";
277: break;
278: case BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK:
279: str = "ebgp-multihop and ttl-security cannot be configured together";
280: break;
281: case BGP_ERR_NO_IBGP_WITH_TTLHACK:
282: str = "ttl-security only allowed for EBGP peers";
283: break;
284: }
285: if (str)
286: {
287: vty_out (vty, "%% %s%s", str, VTY_NEWLINE);
288: return CMD_WARNING;
289: }
290: return CMD_SUCCESS;
291: }
292:
293: /* BGP global configuration. */
294:
295: DEFUN (bgp_multiple_instance_func,
296: bgp_multiple_instance_cmd,
297: "bgp multiple-instance",
298: BGP_STR
299: "Enable bgp multiple instance\n")
300: {
301: bgp_option_set (BGP_OPT_MULTIPLE_INSTANCE);
302: return CMD_SUCCESS;
303: }
304:
305: DEFUN (no_bgp_multiple_instance,
306: no_bgp_multiple_instance_cmd,
307: "no bgp multiple-instance",
308: NO_STR
309: BGP_STR
310: "BGP multiple instance\n")
311: {
312: int ret;
313:
314: ret = bgp_option_unset (BGP_OPT_MULTIPLE_INSTANCE);
315: if (ret < 0)
316: {
317: vty_out (vty, "%% There are more than two BGP instances%s", VTY_NEWLINE);
318: return CMD_WARNING;
319: }
320: return CMD_SUCCESS;
321: }
322:
323: DEFUN (bgp_config_type,
324: bgp_config_type_cmd,
325: "bgp config-type (cisco|zebra)",
326: BGP_STR
327: "Configuration type\n"
328: "cisco\n"
329: "zebra\n")
330: {
331: if (strncmp (argv[0], "c", 1) == 0)
332: bgp_option_set (BGP_OPT_CONFIG_CISCO);
333: else
334: bgp_option_unset (BGP_OPT_CONFIG_CISCO);
335:
336: return CMD_SUCCESS;
337: }
338:
339: DEFUN (no_bgp_config_type,
340: no_bgp_config_type_cmd,
341: "no bgp config-type",
342: NO_STR
343: BGP_STR
344: "Display configuration type\n")
345: {
346: bgp_option_unset (BGP_OPT_CONFIG_CISCO);
347: return CMD_SUCCESS;
348: }
349:
350: DEFUN (no_synchronization,
351: no_synchronization_cmd,
352: "no synchronization",
353: NO_STR
354: "Perform IGP synchronization\n")
355: {
356: return CMD_SUCCESS;
357: }
358:
359: DEFUN (no_auto_summary,
360: no_auto_summary_cmd,
361: "no auto-summary",
362: NO_STR
363: "Enable automatic network number summarization\n")
364: {
365: return CMD_SUCCESS;
366: }
367:
368: DEFUN_DEPRECATED (neighbor_version,
369: neighbor_version_cmd,
370: NEIGHBOR_CMD "version (4|4-)",
371: NEIGHBOR_STR
372: NEIGHBOR_ADDR_STR
373: "Set the BGP version to match a neighbor\n"
374: "Neighbor's BGP version\n")
375: {
376: return CMD_SUCCESS;
377: }
378:
379: /* "router bgp" commands. */
380: DEFUN (router_bgp,
381: router_bgp_cmd,
382: "router bgp " CMD_AS_RANGE,
383: ROUTER_STR
384: BGP_STR
385: AS_STR)
386: {
387: int ret;
388: as_t as;
389: struct bgp *bgp;
390: const char *name = NULL;
391:
392: VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, BGP_AS4_MAX);
393:
394: if (argc == 2)
395: name = argv[1];
396:
397: ret = bgp_get (&bgp, &as, name);
398: switch (ret)
399: {
400: case BGP_ERR_MULTIPLE_INSTANCE_NOT_SET:
401: vty_out (vty, "Please specify 'bgp multiple-instance' first%s",
402: VTY_NEWLINE);
403: return CMD_WARNING;
404: case BGP_ERR_AS_MISMATCH:
405: vty_out (vty, "BGP is already running; AS is %u%s", as, VTY_NEWLINE);
406: return CMD_WARNING;
407: case BGP_ERR_INSTANCE_MISMATCH:
408: vty_out (vty, "BGP view name and AS number mismatch%s", VTY_NEWLINE);
409: vty_out (vty, "BGP instance is already running; AS is %u%s",
410: as, VTY_NEWLINE);
411: return CMD_WARNING;
412: }
413:
414: vty->node = BGP_NODE;
415: vty->index = bgp;
416:
417: return CMD_SUCCESS;
418: }
419:
420: ALIAS (router_bgp,
421: router_bgp_view_cmd,
422: "router bgp " CMD_AS_RANGE " view WORD",
423: ROUTER_STR
424: BGP_STR
425: AS_STR
426: "BGP view\n"
427: "view name\n")
428:
429: /* "no router bgp" commands. */
430: DEFUN (no_router_bgp,
431: no_router_bgp_cmd,
432: "no router bgp " CMD_AS_RANGE,
433: NO_STR
434: ROUTER_STR
435: BGP_STR
436: AS_STR)
437: {
438: as_t as;
439: struct bgp *bgp;
440: const char *name = NULL;
441:
442: VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, BGP_AS4_MAX);
443:
444: if (argc == 2)
445: name = argv[1];
446:
447: /* Lookup bgp structure. */
448: bgp = bgp_lookup (as, name);
449: if (! bgp)
450: {
451: vty_out (vty, "%% Can't find BGP instance%s", VTY_NEWLINE);
452: return CMD_WARNING;
453: }
454:
455: bgp_delete (bgp);
456:
457: return CMD_SUCCESS;
458: }
459:
460: ALIAS (no_router_bgp,
461: no_router_bgp_view_cmd,
462: "no router bgp " CMD_AS_RANGE " view WORD",
463: NO_STR
464: ROUTER_STR
465: BGP_STR
466: AS_STR
467: "BGP view\n"
468: "view name\n")
469:
470: /* BGP router-id. */
471:
472: DEFUN (bgp_router_id,
473: bgp_router_id_cmd,
474: "bgp router-id A.B.C.D",
475: BGP_STR
476: "Override configured router identifier\n"
477: "Manually configured router identifier\n")
478: {
479: int ret;
480: struct in_addr id;
481: struct bgp *bgp;
482:
483: bgp = vty->index;
484:
485: ret = inet_aton (argv[0], &id);
486: if (! ret)
487: {
488: vty_out (vty, "%% Malformed bgp router identifier%s", VTY_NEWLINE);
489: return CMD_WARNING;
490: }
491:
492: bgp->router_id_static = id;
493: bgp_router_id_set (bgp, &id);
494:
495: return CMD_SUCCESS;
496: }
497:
498: DEFUN (no_bgp_router_id,
499: no_bgp_router_id_cmd,
500: "no bgp router-id",
501: NO_STR
502: BGP_STR
503: "Override configured router identifier\n")
504: {
505: int ret;
506: struct in_addr id;
507: struct bgp *bgp;
508:
509: bgp = vty->index;
510:
511: if (argc == 1)
512: {
513: ret = inet_aton (argv[0], &id);
514: if (! ret)
515: {
516: vty_out (vty, "%% Malformed BGP router identifier%s", VTY_NEWLINE);
517: return CMD_WARNING;
518: }
519:
520: if (! IPV4_ADDR_SAME (&bgp->router_id_static, &id))
521: {
522: vty_out (vty, "%% BGP router-id doesn't match%s", VTY_NEWLINE);
523: return CMD_WARNING;
524: }
525: }
526:
527: bgp->router_id_static.s_addr = 0;
528: bgp_router_id_set (bgp, &router_id_zebra);
529:
530: return CMD_SUCCESS;
531: }
532:
533: ALIAS (no_bgp_router_id,
534: no_bgp_router_id_val_cmd,
535: "no bgp router-id A.B.C.D",
536: NO_STR
537: BGP_STR
538: "Override configured router identifier\n"
539: "Manually configured router identifier\n")
540:
541: /* BGP Cluster ID. */
542:
543: DEFUN (bgp_cluster_id,
544: bgp_cluster_id_cmd,
545: "bgp cluster-id A.B.C.D",
546: BGP_STR
547: "Configure Route-Reflector Cluster-id\n"
548: "Route-Reflector Cluster-id in IP address format\n")
549: {
550: int ret;
551: struct bgp *bgp;
552: struct in_addr cluster;
553:
554: bgp = vty->index;
555:
556: ret = inet_aton (argv[0], &cluster);
557: if (! ret)
558: {
559: vty_out (vty, "%% Malformed bgp cluster identifier%s", VTY_NEWLINE);
560: return CMD_WARNING;
561: }
562:
563: bgp_cluster_id_set (bgp, &cluster);
564:
565: return CMD_SUCCESS;
566: }
567:
568: ALIAS (bgp_cluster_id,
569: bgp_cluster_id32_cmd,
570: "bgp cluster-id <1-4294967295>",
571: BGP_STR
572: "Configure Route-Reflector Cluster-id\n"
573: "Route-Reflector Cluster-id as 32 bit quantity\n")
574:
575: DEFUN (no_bgp_cluster_id,
576: no_bgp_cluster_id_cmd,
577: "no bgp cluster-id",
578: NO_STR
579: BGP_STR
580: "Configure Route-Reflector Cluster-id\n")
581: {
582: int ret;
583: struct bgp *bgp;
584: struct in_addr cluster;
585:
586: bgp = vty->index;
587:
588: if (argc == 1)
589: {
590: ret = inet_aton (argv[0], &cluster);
591: if (! ret)
592: {
593: vty_out (vty, "%% Malformed bgp cluster identifier%s", VTY_NEWLINE);
594: return CMD_WARNING;
595: }
596: }
597:
598: bgp_cluster_id_unset (bgp);
599:
600: return CMD_SUCCESS;
601: }
602:
603: ALIAS (no_bgp_cluster_id,
604: no_bgp_cluster_id_arg_cmd,
605: "no bgp cluster-id A.B.C.D",
606: NO_STR
607: BGP_STR
608: "Configure Route-Reflector Cluster-id\n"
609: "Route-Reflector Cluster-id in IP address format\n")
610:
611: DEFUN (bgp_confederation_identifier,
612: bgp_confederation_identifier_cmd,
613: "bgp confederation identifier " CMD_AS_RANGE,
614: "BGP specific commands\n"
615: "AS confederation parameters\n"
616: "AS number\n"
617: "Set routing domain confederation AS\n")
618: {
619: struct bgp *bgp;
620: as_t as;
621:
622: bgp = vty->index;
623:
624: VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, BGP_AS4_MAX);
625:
626: bgp_confederation_id_set (bgp, as);
627:
628: return CMD_SUCCESS;
629: }
630:
631: DEFUN (no_bgp_confederation_identifier,
632: no_bgp_confederation_identifier_cmd,
633: "no bgp confederation identifier",
634: NO_STR
635: "BGP specific commands\n"
636: "AS confederation parameters\n"
637: "AS number\n")
638: {
639: struct bgp *bgp;
640: as_t as __attribute__((unused)); /* Dummy for VTY_GET_INTEGER_RANGE */
641:
642: bgp = vty->index;
643:
644: if (argc == 1)
645: VTY_GET_INTEGER_RANGE ("AS", as, argv[0], 1, BGP_AS4_MAX);
646:
647: bgp_confederation_id_unset (bgp);
648:
649: return CMD_SUCCESS;
650: }
651:
652: ALIAS (no_bgp_confederation_identifier,
653: no_bgp_confederation_identifier_arg_cmd,
654: "no bgp confederation identifier " CMD_AS_RANGE,
655: NO_STR
656: "BGP specific commands\n"
657: "AS confederation parameters\n"
658: "AS number\n"
659: "Set routing domain confederation AS\n")
660:
661: DEFUN (bgp_confederation_peers,
662: bgp_confederation_peers_cmd,
663: "bgp confederation peers ." CMD_AS_RANGE,
664: "BGP specific commands\n"
665: "AS confederation parameters\n"
666: "Peer ASs in BGP confederation\n"
667: AS_STR)
668: {
669: struct bgp *bgp;
670: as_t as;
671: int i;
672:
673: bgp = vty->index;
674:
675: for (i = 0; i < argc; i++)
676: {
677: VTY_GET_INTEGER_RANGE ("AS", as, argv[i], 1, BGP_AS4_MAX);
678:
679: if (bgp->as == as)
680: {
681: vty_out (vty, "%% Local member-AS not allowed in confed peer list%s",
682: VTY_NEWLINE);
683: continue;
684: }
685:
686: bgp_confederation_peers_add (bgp, as);
687: }
688: return CMD_SUCCESS;
689: }
690:
691: DEFUN (no_bgp_confederation_peers,
692: no_bgp_confederation_peers_cmd,
693: "no bgp confederation peers ." CMD_AS_RANGE,
694: NO_STR
695: "BGP specific commands\n"
696: "AS confederation parameters\n"
697: "Peer ASs in BGP confederation\n"
698: AS_STR)
699: {
700: struct bgp *bgp;
701: as_t as;
702: int i;
703:
704: bgp = vty->index;
705:
706: for (i = 0; i < argc; i++)
707: {
708: VTY_GET_INTEGER_RANGE ("AS", as, argv[i], 1, BGP_AS4_MAX);
709:
710: bgp_confederation_peers_remove (bgp, as);
711: }
712: return CMD_SUCCESS;
713: }
714:
715: /* Maximum-paths configuration */
716: DEFUN (bgp_maxpaths,
717: bgp_maxpaths_cmd,
718: "maximum-paths " CMD_RANGE_STR(1, MULTIPATH_NUM),
719: "Forward packets over multiple paths\n"
720: "Number of paths\n")
721: {
722: struct bgp *bgp;
723: u_int16_t maxpaths;
724: int ret;
725:
726: bgp = vty->index;
727:
728: VTY_GET_INTEGER_RANGE ("maximum-paths", maxpaths, argv[0], 1, 255);
729:
730: ret = bgp_maximum_paths_set (bgp, bgp_node_afi (vty), bgp_node_safi(vty),
731: BGP_PEER_EBGP, maxpaths);
732: if (ret < 0)
733: {
734: vty_out (vty,
735: "%% Failed to set maximum-paths %u for afi %u, safi %u%s",
736: maxpaths, bgp_node_afi (vty), bgp_node_safi(vty), VTY_NEWLINE);
737: return CMD_WARNING;
738: }
739:
740: return CMD_SUCCESS;
741: }
742:
743: DEFUN (bgp_maxpaths_ibgp,
744: bgp_maxpaths_ibgp_cmd,
745: "maximum-paths ibgp " CMD_RANGE_STR(1, MULTIPATH_NUM),
746: "Forward packets over multiple paths\n"
747: "iBGP-multipath\n"
748: "Number of paths\n")
749: {
750: struct bgp *bgp;
751: u_int16_t maxpaths;
752: int ret;
753:
754: bgp = vty->index;
755:
756: VTY_GET_INTEGER_RANGE ("maximum-paths", maxpaths, argv[0], 1, 255);
757:
758: ret = bgp_maximum_paths_set (bgp, bgp_node_afi (vty), bgp_node_safi(vty),
759: BGP_PEER_IBGP, maxpaths);
760: if (ret < 0)
761: {
762: vty_out (vty,
763: "%% Failed to set maximum-paths ibgp %u for afi %u, safi %u%s",
764: maxpaths, bgp_node_afi (vty), bgp_node_safi(vty), VTY_NEWLINE);
765: return CMD_WARNING;
766: }
767:
768: return CMD_SUCCESS;
769: }
770:
771: DEFUN (no_bgp_maxpaths,
772: no_bgp_maxpaths_cmd,
773: "no maximum-paths",
774: NO_STR
775: "Forward packets over multiple paths\n"
776: "Number of paths\n")
777: {
778: struct bgp *bgp;
779: int ret;
780:
781: bgp = vty->index;
782:
783: ret = bgp_maximum_paths_unset (bgp, bgp_node_afi (vty), bgp_node_safi(vty),
784: BGP_PEER_EBGP);
785: if (ret < 0)
786: {
787: vty_out (vty,
788: "%% Failed to unset maximum-paths for afi %u, safi %u%s",
789: bgp_node_afi (vty), bgp_node_safi(vty), VTY_NEWLINE);
790: return CMD_WARNING;
791: }
792:
793: return CMD_SUCCESS;
794: }
795:
796: ALIAS (no_bgp_maxpaths,
797: no_bgp_maxpaths_arg_cmd,
798: "no maximum-paths " CMD_RANGE_STR(1, MULTIPATH_NUM),
799: NO_STR
800: "Forward packets over multiple paths\n"
801: "Number of paths\n")
802:
803: DEFUN (no_bgp_maxpaths_ibgp,
804: no_bgp_maxpaths_ibgp_cmd,
805: "no maximum-paths ibgp",
806: NO_STR
807: "Forward packets over multiple paths\n"
808: "iBGP-multipath\n"
809: "Number of paths\n")
810: {
811: struct bgp *bgp;
812: int ret;
813:
814: bgp = vty->index;
815:
816: ret = bgp_maximum_paths_unset (bgp, bgp_node_afi (vty), bgp_node_safi(vty),
817: BGP_PEER_IBGP);
818: if (ret < 0)
819: {
820: vty_out (vty,
821: "%% Failed to unset maximum-paths ibgp for afi %u, safi %u%s",
822: bgp_node_afi (vty), bgp_node_safi(vty), VTY_NEWLINE);
823: return CMD_WARNING;
824: }
825:
826: return CMD_SUCCESS;
827: }
828:
829: ALIAS (no_bgp_maxpaths_ibgp,
830: no_bgp_maxpaths_ibgp_arg_cmd,
831: "no maximum-paths ibgp " CMD_RANGE_STR(1, MULTIPATH_NUM),
832: NO_STR
833: "Forward packets over multiple paths\n"
834: "iBGP-multipath\n"
835: "Number of paths\n")
836:
837: int
838: bgp_config_write_maxpaths (struct vty *vty, struct bgp *bgp, afi_t afi,
839: safi_t safi, int *write)
840: {
841: if (bgp->maxpaths[afi][safi].maxpaths_ebgp != BGP_DEFAULT_MAXPATHS)
842: {
843: bgp_config_write_family_header (vty, afi, safi, write);
844: vty_out (vty, " maximum-paths %d%s",
845: bgp->maxpaths[afi][safi].maxpaths_ebgp, VTY_NEWLINE);
846: }
847:
848: if (bgp->maxpaths[afi][safi].maxpaths_ibgp != BGP_DEFAULT_MAXPATHS)
849: {
850: bgp_config_write_family_header (vty, afi, safi, write);
851: vty_out (vty, " maximum-paths ibgp %d%s",
852: bgp->maxpaths[afi][safi].maxpaths_ibgp, VTY_NEWLINE);
853: }
854:
855: return 0;
856: }
857:
858: /* BGP timers. */
859:
860: DEFUN (bgp_timers,
861: bgp_timers_cmd,
862: "timers bgp <0-65535> <0-65535>",
863: "Adjust routing timers\n"
864: "BGP timers\n"
865: "Keepalive interval\n"
866: "Holdtime\n")
867: {
868: struct bgp *bgp;
869: unsigned long keepalive = 0;
870: unsigned long holdtime = 0;
871:
872: bgp = vty->index;
873:
874: VTY_GET_INTEGER ("keepalive", keepalive, argv[0]);
875: VTY_GET_INTEGER ("holdtime", holdtime, argv[1]);
876:
877: /* Holdtime value check. */
878: if (holdtime < 3 && holdtime != 0)
879: {
880: vty_out (vty, "%% hold time value must be either 0 or greater than 3%s",
881: VTY_NEWLINE);
882: return CMD_WARNING;
883: }
884:
885: bgp_timers_set (bgp, keepalive, holdtime);
886:
887: return CMD_SUCCESS;
888: }
889:
890: DEFUN (no_bgp_timers,
891: no_bgp_timers_cmd,
892: "no timers bgp",
893: NO_STR
894: "Adjust routing timers\n"
895: "BGP timers\n")
896: {
897: struct bgp *bgp;
898:
899: bgp = vty->index;
900: bgp_timers_unset (bgp);
901:
902: return CMD_SUCCESS;
903: }
904:
905: ALIAS (no_bgp_timers,
906: no_bgp_timers_arg_cmd,
907: "no timers bgp <0-65535> <0-65535>",
908: NO_STR
909: "Adjust routing timers\n"
910: "BGP timers\n"
911: "Keepalive interval\n"
912: "Holdtime\n")
913:
914: DEFUN (bgp_client_to_client_reflection,
915: bgp_client_to_client_reflection_cmd,
916: "bgp client-to-client reflection",
917: "BGP specific commands\n"
918: "Configure client to client route reflection\n"
919: "reflection of routes allowed\n")
920: {
921: struct bgp *bgp;
922:
923: bgp = vty->index;
924: bgp_flag_unset (bgp, BGP_FLAG_NO_CLIENT_TO_CLIENT);
925: return CMD_SUCCESS;
926: }
927:
928: DEFUN (no_bgp_client_to_client_reflection,
929: no_bgp_client_to_client_reflection_cmd,
930: "no bgp client-to-client reflection",
931: NO_STR
932: "BGP specific commands\n"
933: "Configure client to client route reflection\n"
934: "reflection of routes allowed\n")
935: {
936: struct bgp *bgp;
937:
938: bgp = vty->index;
939: bgp_flag_set (bgp, BGP_FLAG_NO_CLIENT_TO_CLIENT);
940: return CMD_SUCCESS;
941: }
942:
943: /* "bgp always-compare-med" configuration. */
944: DEFUN (bgp_always_compare_med,
945: bgp_always_compare_med_cmd,
946: "bgp always-compare-med",
947: "BGP specific commands\n"
948: "Allow comparing MED from different neighbors\n")
949: {
950: struct bgp *bgp;
951:
952: bgp = vty->index;
953: bgp_flag_set (bgp, BGP_FLAG_ALWAYS_COMPARE_MED);
954: return CMD_SUCCESS;
955: }
956:
957: DEFUN (no_bgp_always_compare_med,
958: no_bgp_always_compare_med_cmd,
959: "no bgp always-compare-med",
960: NO_STR
961: "BGP specific commands\n"
962: "Allow comparing MED from different neighbors\n")
963: {
964: struct bgp *bgp;
965:
966: bgp = vty->index;
967: bgp_flag_unset (bgp, BGP_FLAG_ALWAYS_COMPARE_MED);
968: return CMD_SUCCESS;
969: }
970:
971: /* "bgp deterministic-med" configuration. */
972: DEFUN (bgp_deterministic_med,
973: bgp_deterministic_med_cmd,
974: "bgp deterministic-med",
975: "BGP specific commands\n"
976: "Pick the best-MED path among paths advertised from the neighboring AS\n")
977: {
978: struct bgp *bgp;
979:
980: bgp = vty->index;
981: bgp_flag_set (bgp, BGP_FLAG_DETERMINISTIC_MED);
982: return CMD_SUCCESS;
983: }
984:
985: DEFUN (no_bgp_deterministic_med,
986: no_bgp_deterministic_med_cmd,
987: "no bgp deterministic-med",
988: NO_STR
989: "BGP specific commands\n"
990: "Pick the best-MED path among paths advertised from the neighboring AS\n")
991: {
992: struct bgp *bgp;
993:
994: bgp = vty->index;
995: bgp_flag_unset (bgp, BGP_FLAG_DETERMINISTIC_MED);
996: return CMD_SUCCESS;
997: }
998:
999: /* "bgp graceful-restart" configuration. */
1000: DEFUN (bgp_graceful_restart,
1001: bgp_graceful_restart_cmd,
1002: "bgp graceful-restart",
1003: "BGP specific commands\n"
1004: "Graceful restart capability parameters\n")
1005: {
1006: struct bgp *bgp;
1007:
1008: bgp = vty->index;
1009: bgp_flag_set (bgp, BGP_FLAG_GRACEFUL_RESTART);
1010: return CMD_SUCCESS;
1011: }
1012:
1013: DEFUN (no_bgp_graceful_restart,
1014: no_bgp_graceful_restart_cmd,
1015: "no bgp graceful-restart",
1016: NO_STR
1017: "BGP specific commands\n"
1018: "Graceful restart capability parameters\n")
1019: {
1020: struct bgp *bgp;
1021:
1022: bgp = vty->index;
1023: bgp_flag_unset (bgp, BGP_FLAG_GRACEFUL_RESTART);
1024: return CMD_SUCCESS;
1025: }
1026:
1027: DEFUN (bgp_graceful_restart_stalepath_time,
1028: bgp_graceful_restart_stalepath_time_cmd,
1029: "bgp graceful-restart stalepath-time <1-3600>",
1030: "BGP specific commands\n"
1031: "Graceful restart capability parameters\n"
1032: "Set the max time to hold onto restarting peer's stale paths\n"
1033: "Delay value (seconds)\n")
1034: {
1035: struct bgp *bgp;
1036: u_int32_t stalepath;
1037:
1038: bgp = vty->index;
1039: if (! bgp)
1040: return CMD_WARNING;
1041:
1042: VTY_GET_INTEGER_RANGE ("stalepath-time", stalepath, argv[0], 1, 3600);
1043: bgp->stalepath_time = stalepath;
1044: return CMD_SUCCESS;
1045: }
1046:
1047: DEFUN (no_bgp_graceful_restart_stalepath_time,
1048: no_bgp_graceful_restart_stalepath_time_cmd,
1049: "no bgp graceful-restart stalepath-time",
1050: NO_STR
1051: "BGP specific commands\n"
1052: "Graceful restart capability parameters\n"
1053: "Set the max time to hold onto restarting peer's stale paths\n")
1054: {
1055: struct bgp *bgp;
1056:
1057: bgp = vty->index;
1058: if (! bgp)
1059: return CMD_WARNING;
1060:
1061: bgp->stalepath_time = BGP_DEFAULT_STALEPATH_TIME;
1062: return CMD_SUCCESS;
1063: }
1064:
1065: ALIAS (no_bgp_graceful_restart_stalepath_time,
1066: no_bgp_graceful_restart_stalepath_time_val_cmd,
1067: "no bgp graceful-restart stalepath-time <1-3600>",
1068: NO_STR
1069: "BGP specific commands\n"
1070: "Graceful restart capability parameters\n"
1071: "Set the max time to hold onto restarting peer's stale paths\n"
1072: "Delay value (seconds)\n")
1073:
1074: /* "bgp fast-external-failover" configuration. */
1075: DEFUN (bgp_fast_external_failover,
1076: bgp_fast_external_failover_cmd,
1077: "bgp fast-external-failover",
1078: BGP_STR
1079: "Immediately reset session if a link to a directly connected external peer goes down\n")
1080: {
1081: struct bgp *bgp;
1082:
1083: bgp = vty->index;
1084: bgp_flag_unset (bgp, BGP_FLAG_NO_FAST_EXT_FAILOVER);
1085: return CMD_SUCCESS;
1086: }
1087:
1088: DEFUN (no_bgp_fast_external_failover,
1089: no_bgp_fast_external_failover_cmd,
1090: "no bgp fast-external-failover",
1091: NO_STR
1092: BGP_STR
1093: "Immediately reset session if a link to a directly connected external peer goes down\n")
1094: {
1095: struct bgp *bgp;
1096:
1097: bgp = vty->index;
1098: bgp_flag_set (bgp, BGP_FLAG_NO_FAST_EXT_FAILOVER);
1099: return CMD_SUCCESS;
1100: }
1101:
1102: /* "bgp enforce-first-as" configuration. */
1103: DEFUN (bgp_enforce_first_as,
1104: bgp_enforce_first_as_cmd,
1105: "bgp enforce-first-as",
1106: BGP_STR
1107: "Enforce the first AS for EBGP routes\n")
1108: {
1109: struct bgp *bgp;
1110:
1111: bgp = vty->index;
1112: bgp_flag_set (bgp, BGP_FLAG_ENFORCE_FIRST_AS);
1113: return CMD_SUCCESS;
1114: }
1115:
1116: DEFUN (no_bgp_enforce_first_as,
1117: no_bgp_enforce_first_as_cmd,
1118: "no bgp enforce-first-as",
1119: NO_STR
1120: BGP_STR
1121: "Enforce the first AS for EBGP routes\n")
1122: {
1123: struct bgp *bgp;
1124:
1125: bgp = vty->index;
1126: bgp_flag_unset (bgp, BGP_FLAG_ENFORCE_FIRST_AS);
1127: return CMD_SUCCESS;
1128: }
1129:
1130: /* "bgp bestpath compare-routerid" configuration. */
1131: DEFUN (bgp_bestpath_compare_router_id,
1132: bgp_bestpath_compare_router_id_cmd,
1133: "bgp bestpath compare-routerid",
1134: "BGP specific commands\n"
1135: "Change the default bestpath selection\n"
1136: "Compare router-id for identical EBGP paths\n")
1137: {
1138: struct bgp *bgp;
1139:
1140: bgp = vty->index;
1141: bgp_flag_set (bgp, BGP_FLAG_COMPARE_ROUTER_ID);
1142: return CMD_SUCCESS;
1143: }
1144:
1145: DEFUN (no_bgp_bestpath_compare_router_id,
1146: no_bgp_bestpath_compare_router_id_cmd,
1147: "no bgp bestpath compare-routerid",
1148: NO_STR
1149: "BGP specific commands\n"
1150: "Change the default bestpath selection\n"
1151: "Compare router-id for identical EBGP paths\n")
1152: {
1153: struct bgp *bgp;
1154:
1155: bgp = vty->index;
1156: bgp_flag_unset (bgp, BGP_FLAG_COMPARE_ROUTER_ID);
1157: return CMD_SUCCESS;
1158: }
1159:
1160: /* "bgp bestpath as-path ignore" configuration. */
1161: DEFUN (bgp_bestpath_aspath_ignore,
1162: bgp_bestpath_aspath_ignore_cmd,
1163: "bgp bestpath as-path ignore",
1164: "BGP specific commands\n"
1165: "Change the default bestpath selection\n"
1166: "AS-path attribute\n"
1167: "Ignore as-path length in selecting a route\n")
1168: {
1169: struct bgp *bgp;
1170:
1171: bgp = vty->index;
1172: bgp_flag_set (bgp, BGP_FLAG_ASPATH_IGNORE);
1173: return CMD_SUCCESS;
1174: }
1175:
1176: DEFUN (no_bgp_bestpath_aspath_ignore,
1177: no_bgp_bestpath_aspath_ignore_cmd,
1178: "no bgp bestpath as-path ignore",
1179: NO_STR
1180: "BGP specific commands\n"
1181: "Change the default bestpath selection\n"
1182: "AS-path attribute\n"
1183: "Ignore as-path length in selecting a route\n")
1184: {
1185: struct bgp *bgp;
1186:
1187: bgp = vty->index;
1188: bgp_flag_unset (bgp, BGP_FLAG_ASPATH_IGNORE);
1189: return CMD_SUCCESS;
1190: }
1191:
1192: /* "bgp bestpath as-path confed" configuration. */
1193: DEFUN (bgp_bestpath_aspath_confed,
1194: bgp_bestpath_aspath_confed_cmd,
1195: "bgp bestpath as-path confed",
1196: "BGP specific commands\n"
1197: "Change the default bestpath selection\n"
1198: "AS-path attribute\n"
1199: "Compare path lengths including confederation sets & sequences in selecting a route\n")
1200: {
1201: struct bgp *bgp;
1202:
1203: bgp = vty->index;
1204: bgp_flag_set (bgp, BGP_FLAG_ASPATH_CONFED);
1205: return CMD_SUCCESS;
1206: }
1207:
1208: DEFUN (no_bgp_bestpath_aspath_confed,
1209: no_bgp_bestpath_aspath_confed_cmd,
1210: "no bgp bestpath as-path confed",
1211: NO_STR
1212: "BGP specific commands\n"
1213: "Change the default bestpath selection\n"
1214: "AS-path attribute\n"
1215: "Compare path lengths including confederation sets & sequences in selecting a route\n")
1216: {
1217: struct bgp *bgp;
1218:
1219: bgp = vty->index;
1220: bgp_flag_unset (bgp, BGP_FLAG_ASPATH_CONFED);
1221: return CMD_SUCCESS;
1222: }
1223:
1224: /* "bgp bestpath as-path multipath-relax" configuration. */
1225: DEFUN (bgp_bestpath_aspath_multipath_relax,
1226: bgp_bestpath_aspath_multipath_relax_cmd,
1227: "bgp bestpath as-path multipath-relax",
1228: "BGP specific commands\n"
1229: "Change the default bestpath selection\n"
1230: "AS-path attribute\n"
1231: "Allow load sharing across routes that have different AS paths (but same length)\n")
1232: {
1233: struct bgp *bgp;
1234:
1235: bgp = vty->index;
1236: bgp_flag_set (bgp, BGP_FLAG_ASPATH_MULTIPATH_RELAX);
1237: return CMD_SUCCESS;
1238: }
1239:
1240: DEFUN (no_bgp_bestpath_aspath_multipath_relax,
1241: no_bgp_bestpath_aspath_multipath_relax_cmd,
1242: "no bgp bestpath as-path multipath-relax",
1243: NO_STR
1244: "BGP specific commands\n"
1245: "Change the default bestpath selection\n"
1246: "AS-path attribute\n"
1247: "Allow load sharing across routes that have different AS paths (but same length)\n")
1248: {
1249: struct bgp *bgp;
1250:
1251: bgp = vty->index;
1252: bgp_flag_unset (bgp, BGP_FLAG_ASPATH_MULTIPATH_RELAX);
1253: return CMD_SUCCESS;
1254: }
1255:
1256: /* "bgp log-neighbor-changes" configuration. */
1257: DEFUN (bgp_log_neighbor_changes,
1258: bgp_log_neighbor_changes_cmd,
1259: "bgp log-neighbor-changes",
1260: "BGP specific commands\n"
1261: "Log neighbor up/down and reset reason\n")
1262: {
1263: struct bgp *bgp;
1264:
1265: bgp = vty->index;
1266: bgp_flag_set (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES);
1267: return CMD_SUCCESS;
1268: }
1269:
1270: DEFUN (no_bgp_log_neighbor_changes,
1271: no_bgp_log_neighbor_changes_cmd,
1272: "no bgp log-neighbor-changes",
1273: NO_STR
1274: "BGP specific commands\n"
1275: "Log neighbor up/down and reset reason\n")
1276: {
1277: struct bgp *bgp;
1278:
1279: bgp = vty->index;
1280: bgp_flag_unset (bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES);
1281: return CMD_SUCCESS;
1282: }
1283:
1284: /* "bgp bestpath med" configuration. */
1285: DEFUN (bgp_bestpath_med,
1286: bgp_bestpath_med_cmd,
1287: "bgp bestpath med (confed|missing-as-worst)",
1288: "BGP specific commands\n"
1289: "Change the default bestpath selection\n"
1290: "MED attribute\n"
1291: "Compare MED among confederation paths\n"
1292: "Treat missing MED as the least preferred one\n")
1293: {
1294: struct bgp *bgp;
1295:
1296: bgp = vty->index;
1297:
1298: if (strncmp (argv[0], "confed", 1) == 0)
1299: bgp_flag_set (bgp, BGP_FLAG_MED_CONFED);
1300: else
1301: bgp_flag_set (bgp, BGP_FLAG_MED_MISSING_AS_WORST);
1302:
1303: return CMD_SUCCESS;
1304: }
1305:
1306: DEFUN (bgp_bestpath_med2,
1307: bgp_bestpath_med2_cmd,
1308: "bgp bestpath med confed missing-as-worst",
1309: "BGP specific commands\n"
1310: "Change the default bestpath selection\n"
1311: "MED attribute\n"
1312: "Compare MED among confederation paths\n"
1313: "Treat missing MED as the least preferred one\n")
1314: {
1315: struct bgp *bgp;
1316:
1317: bgp = vty->index;
1318: bgp_flag_set (bgp, BGP_FLAG_MED_CONFED);
1319: bgp_flag_set (bgp, BGP_FLAG_MED_MISSING_AS_WORST);
1320: return CMD_SUCCESS;
1321: }
1322:
1323: ALIAS (bgp_bestpath_med2,
1324: bgp_bestpath_med3_cmd,
1325: "bgp bestpath med missing-as-worst confed",
1326: "BGP specific commands\n"
1327: "Change the default bestpath selection\n"
1328: "MED attribute\n"
1329: "Treat missing MED as the least preferred one\n"
1330: "Compare MED among confederation paths\n")
1331:
1332: DEFUN (no_bgp_bestpath_med,
1333: no_bgp_bestpath_med_cmd,
1334: "no bgp bestpath med (confed|missing-as-worst)",
1335: NO_STR
1336: "BGP specific commands\n"
1337: "Change the default bestpath selection\n"
1338: "MED attribute\n"
1339: "Compare MED among confederation paths\n"
1340: "Treat missing MED as the least preferred one\n")
1341: {
1342: struct bgp *bgp;
1343:
1344: bgp = vty->index;
1345:
1346: if (strncmp (argv[0], "confed", 1) == 0)
1347: bgp_flag_unset (bgp, BGP_FLAG_MED_CONFED);
1348: else
1349: bgp_flag_unset (bgp, BGP_FLAG_MED_MISSING_AS_WORST);
1350:
1351: return CMD_SUCCESS;
1352: }
1353:
1354: DEFUN (no_bgp_bestpath_med2,
1355: no_bgp_bestpath_med2_cmd,
1356: "no bgp bestpath med confed missing-as-worst",
1357: NO_STR
1358: "BGP specific commands\n"
1359: "Change the default bestpath selection\n"
1360: "MED attribute\n"
1361: "Compare MED among confederation paths\n"
1362: "Treat missing MED as the least preferred one\n")
1363: {
1364: struct bgp *bgp;
1365:
1366: bgp = vty->index;
1367: bgp_flag_unset (bgp, BGP_FLAG_MED_CONFED);
1368: bgp_flag_unset (bgp, BGP_FLAG_MED_MISSING_AS_WORST);
1369: return CMD_SUCCESS;
1370: }
1371:
1372: ALIAS (no_bgp_bestpath_med2,
1373: no_bgp_bestpath_med3_cmd,
1374: "no bgp bestpath med missing-as-worst confed",
1375: NO_STR
1376: "BGP specific commands\n"
1377: "Change the default bestpath selection\n"
1378: "MED attribute\n"
1379: "Treat missing MED as the least preferred one\n"
1380: "Compare MED among confederation paths\n")
1381:
1382: /* "no bgp default ipv4-unicast". */
1383: DEFUN (no_bgp_default_ipv4_unicast,
1384: no_bgp_default_ipv4_unicast_cmd,
1385: "no bgp default ipv4-unicast",
1386: NO_STR
1387: "BGP specific commands\n"
1388: "Configure BGP defaults\n"
1389: "Activate ipv4-unicast for a peer by default\n")
1390: {
1391: struct bgp *bgp;
1392:
1393: bgp = vty->index;
1394: bgp_flag_set (bgp, BGP_FLAG_NO_DEFAULT_IPV4);
1395: return CMD_SUCCESS;
1396: }
1397:
1398: DEFUN (bgp_default_ipv4_unicast,
1399: bgp_default_ipv4_unicast_cmd,
1400: "bgp default ipv4-unicast",
1401: "BGP specific commands\n"
1402: "Configure BGP defaults\n"
1403: "Activate ipv4-unicast for a peer by default\n")
1404: {
1405: struct bgp *bgp;
1406:
1407: bgp = vty->index;
1408: bgp_flag_unset (bgp, BGP_FLAG_NO_DEFAULT_IPV4);
1409: return CMD_SUCCESS;
1410: }
1411:
1412: /* "bgp import-check" configuration. */
1413: DEFUN (bgp_network_import_check,
1414: bgp_network_import_check_cmd,
1415: "bgp network import-check",
1416: "BGP specific commands\n"
1417: "BGP network command\n"
1418: "Check BGP network route exists in IGP\n")
1419: {
1420: struct bgp *bgp;
1421:
1422: bgp = vty->index;
1423: bgp_flag_set (bgp, BGP_FLAG_IMPORT_CHECK);
1424: return CMD_SUCCESS;
1425: }
1426:
1427: DEFUN (no_bgp_network_import_check,
1428: no_bgp_network_import_check_cmd,
1429: "no bgp network import-check",
1430: NO_STR
1431: "BGP specific commands\n"
1432: "BGP network command\n"
1433: "Check BGP network route exists in IGP\n")
1434: {
1435: struct bgp *bgp;
1436:
1437: bgp = vty->index;
1438: bgp_flag_unset (bgp, BGP_FLAG_IMPORT_CHECK);
1439: return CMD_SUCCESS;
1440: }
1441:
1442: DEFUN (bgp_default_local_preference,
1443: bgp_default_local_preference_cmd,
1444: "bgp default local-preference <0-4294967295>",
1445: "BGP specific commands\n"
1446: "Configure BGP defaults\n"
1447: "local preference (higher=more preferred)\n"
1448: "Configure default local preference value\n")
1449: {
1450: struct bgp *bgp;
1451: u_int32_t local_pref;
1452:
1453: bgp = vty->index;
1454:
1455: VTY_GET_INTEGER ("local preference", local_pref, argv[0]);
1456:
1457: bgp_default_local_preference_set (bgp, local_pref);
1458:
1459: return CMD_SUCCESS;
1460: }
1461:
1462: DEFUN (no_bgp_default_local_preference,
1463: no_bgp_default_local_preference_cmd,
1464: "no bgp default local-preference",
1465: NO_STR
1466: "BGP specific commands\n"
1467: "Configure BGP defaults\n"
1468: "local preference (higher=more preferred)\n")
1469: {
1470: struct bgp *bgp;
1471:
1472: bgp = vty->index;
1473: bgp_default_local_preference_unset (bgp);
1474: return CMD_SUCCESS;
1475: }
1476:
1477: ALIAS (no_bgp_default_local_preference,
1478: no_bgp_default_local_preference_val_cmd,
1479: "no bgp default local-preference <0-4294967295>",
1480: NO_STR
1481: "BGP specific commands\n"
1482: "Configure BGP defaults\n"
1483: "local preference (higher=more preferred)\n"
1484: "Configure default local preference value\n")
1485:
1486: static int
1487: peer_remote_as_vty (struct vty *vty, const char *peer_str,
1488: const char *as_str, afi_t afi, safi_t safi)
1489: {
1490: int ret;
1491: struct bgp *bgp;
1492: as_t as;
1493: union sockunion su;
1494:
1495: bgp = vty->index;
1496:
1497: /* Get AS number. */
1498: VTY_GET_INTEGER_RANGE ("AS", as, as_str, 1, BGP_AS4_MAX);
1499:
1500: /* If peer is peer group, call proper function. */
1501: ret = str2sockunion (peer_str, &su);
1502: if (ret < 0)
1503: {
1504: ret = peer_group_remote_as (bgp, peer_str, &as);
1505: if (ret < 0)
1506: {
1507: vty_out (vty, "%% Create the peer-group first%s", VTY_NEWLINE);
1508: return CMD_WARNING;
1509: }
1510: return CMD_SUCCESS;
1511: }
1512:
1513: if (peer_address_self_check (&su))
1514: {
1515: vty_out (vty, "%% Can not configure the local system as neighbor%s",
1516: VTY_NEWLINE);
1517: return CMD_WARNING;
1518: }
1519:
1520: ret = peer_remote_as (bgp, &su, &as, afi, safi);
1521:
1522: /* This peer belongs to peer group. */
1523: switch (ret)
1524: {
1525: case BGP_ERR_PEER_GROUP_MEMBER:
1526: vty_out (vty, "%% Peer-group AS %u. Cannot configure remote-as for member%s", as, VTY_NEWLINE);
1527: return CMD_WARNING;
1528: case BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT:
1529: vty_out (vty, "%% The AS# can not be changed from %u to %s, peer-group members must be all internal or all external%s", as, as_str, VTY_NEWLINE);
1530: return CMD_WARNING;
1531: }
1532: return bgp_vty_return (vty, ret);
1533: }
1534:
1535: DEFUN (neighbor_remote_as,
1536: neighbor_remote_as_cmd,
1537: NEIGHBOR_CMD2 "remote-as " CMD_AS_RANGE,
1538: NEIGHBOR_STR
1539: NEIGHBOR_ADDR_STR2
1540: "Specify a BGP neighbor\n"
1541: AS_STR)
1542: {
1543: return peer_remote_as_vty (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST);
1544: }
1545:
1546: DEFUN (neighbor_peer_group,
1547: neighbor_peer_group_cmd,
1548: "neighbor WORD peer-group",
1549: NEIGHBOR_STR
1550: "Neighbor tag\n"
1551: "Configure peer-group\n")
1552: {
1553: struct bgp *bgp;
1554: struct peer_group *group;
1555:
1556: bgp = vty->index;
1557:
1558: group = peer_group_get (bgp, argv[0]);
1559: if (! group)
1560: return CMD_WARNING;
1561:
1562: return CMD_SUCCESS;
1563: }
1564:
1565: DEFUN (no_neighbor,
1566: no_neighbor_cmd,
1567: NO_NEIGHBOR_CMD2,
1568: NO_STR
1569: NEIGHBOR_STR
1570: NEIGHBOR_ADDR_STR2)
1571: {
1572: int ret;
1573: union sockunion su;
1574: struct peer_group *group;
1575: struct peer *peer;
1576:
1577: ret = str2sockunion (argv[0], &su);
1578: if (ret < 0)
1579: {
1580: group = peer_group_lookup (vty->index, argv[0]);
1581: if (group)
1582: peer_group_delete (group);
1583: else
1584: {
1585: vty_out (vty, "%% Create the peer-group first%s", VTY_NEWLINE);
1586: return CMD_WARNING;
1587: }
1588: }
1589: else
1590: {
1591: peer = peer_lookup (vty->index, &su);
1592: if (peer)
1593: peer_delete (peer);
1594: }
1595:
1596: return CMD_SUCCESS;
1597: }
1598:
1599: ALIAS (no_neighbor,
1600: no_neighbor_remote_as_cmd,
1601: NO_NEIGHBOR_CMD "remote-as " CMD_AS_RANGE,
1602: NO_STR
1603: NEIGHBOR_STR
1604: NEIGHBOR_ADDR_STR
1605: "Specify a BGP neighbor\n"
1606: AS_STR)
1607:
1608: DEFUN (no_neighbor_peer_group,
1609: no_neighbor_peer_group_cmd,
1610: "no neighbor WORD peer-group",
1611: NO_STR
1612: NEIGHBOR_STR
1613: "Neighbor tag\n"
1614: "Configure peer-group\n")
1615: {
1616: struct peer_group *group;
1617:
1618: group = peer_group_lookup (vty->index, argv[0]);
1619: if (group)
1620: peer_group_delete (group);
1621: else
1622: {
1623: vty_out (vty, "%% Create the peer-group first%s", VTY_NEWLINE);
1624: return CMD_WARNING;
1625: }
1626: return CMD_SUCCESS;
1627: }
1628:
1629: DEFUN (no_neighbor_peer_group_remote_as,
1630: no_neighbor_peer_group_remote_as_cmd,
1631: "no neighbor WORD remote-as " CMD_AS_RANGE,
1632: NO_STR
1633: NEIGHBOR_STR
1634: "Neighbor tag\n"
1635: "Specify a BGP neighbor\n"
1636: AS_STR)
1637: {
1638: struct peer_group *group;
1639:
1640: group = peer_group_lookup (vty->index, argv[0]);
1641: if (group)
1642: peer_group_remote_as_delete (group);
1643: else
1644: {
1645: vty_out (vty, "%% Create the peer-group first%s", VTY_NEWLINE);
1646: return CMD_WARNING;
1647: }
1648: return CMD_SUCCESS;
1649: }
1650:
1651: DEFUN (neighbor_local_as,
1652: neighbor_local_as_cmd,
1653: NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE,
1654: NEIGHBOR_STR
1655: NEIGHBOR_ADDR_STR2
1656: "Specify a local-as number\n"
1657: "AS number used as local AS\n")
1658: {
1659: struct peer *peer;
1660: int ret;
1661:
1662: peer = peer_and_group_lookup_vty (vty, argv[0]);
1663: if (! peer)
1664: return CMD_WARNING;
1665:
1666: ret = peer_local_as_set (peer, atoi (argv[1]), 0, 0);
1667: return bgp_vty_return (vty, ret);
1668: }
1669:
1670: DEFUN (neighbor_local_as_no_prepend,
1671: neighbor_local_as_no_prepend_cmd,
1672: NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE " no-prepend",
1673: NEIGHBOR_STR
1674: NEIGHBOR_ADDR_STR2
1675: "Specify a local-as number\n"
1676: "AS number used as local AS\n"
1677: "Do not prepend local-as to updates from ebgp peers\n")
1678: {
1679: struct peer *peer;
1680: int ret;
1681:
1682: peer = peer_and_group_lookup_vty (vty, argv[0]);
1683: if (! peer)
1684: return CMD_WARNING;
1685:
1686: ret = peer_local_as_set (peer, atoi (argv[1]), 1, 0);
1687: return bgp_vty_return (vty, ret);
1688: }
1689:
1690: DEFUN (neighbor_local_as_no_prepend_replace_as,
1691: neighbor_local_as_no_prepend_replace_as_cmd,
1692: NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE " no-prepend replace-as",
1693: NEIGHBOR_STR
1694: NEIGHBOR_ADDR_STR2
1695: "Specify a local-as number\n"
1696: "AS number used as local AS\n"
1697: "Do not prepend local-as to updates from ebgp peers\n"
1698: "Do not prepend local-as to updates from ibgp peers\n")
1699: {
1700: struct peer *peer;
1701: int ret;
1702:
1703: peer = peer_and_group_lookup_vty (vty, argv[0]);
1704: if (! peer)
1705: return CMD_WARNING;
1706:
1707: ret = peer_local_as_set (peer, atoi (argv[1]), 1, 1);
1708: return bgp_vty_return (vty, ret);
1709: }
1710:
1711:
1712: DEFUN (no_neighbor_local_as,
1713: no_neighbor_local_as_cmd,
1714: NO_NEIGHBOR_CMD2 "local-as",
1715: NO_STR
1716: NEIGHBOR_STR
1717: NEIGHBOR_ADDR_STR2
1718: "Specify a local-as number\n")
1719: {
1720: struct peer *peer;
1721: int ret;
1722:
1723: peer = peer_and_group_lookup_vty (vty, argv[0]);
1724: if (! peer)
1725: return CMD_WARNING;
1726:
1727: ret = peer_local_as_unset (peer);
1728: return bgp_vty_return (vty, ret);
1729: }
1730:
1731: ALIAS (no_neighbor_local_as,
1732: no_neighbor_local_as_val_cmd,
1733: NO_NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE,
1734: NO_STR
1735: NEIGHBOR_STR
1736: NEIGHBOR_ADDR_STR2
1737: "Specify a local-as number\n"
1738: "AS number used as local AS\n")
1739:
1740: ALIAS (no_neighbor_local_as,
1741: no_neighbor_local_as_val2_cmd,
1742: NO_NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE " no-prepend",
1743: NO_STR
1744: NEIGHBOR_STR
1745: NEIGHBOR_ADDR_STR2
1746: "Specify a local-as number\n"
1747: "AS number used as local AS\n"
1748: "Do not prepend local-as to updates from ebgp peers\n")
1749:
1750: ALIAS (no_neighbor_local_as,
1751: no_neighbor_local_as_val3_cmd,
1752: NO_NEIGHBOR_CMD2 "local-as " CMD_AS_RANGE " no-prepend replace-as",
1753: NO_STR
1754: NEIGHBOR_STR
1755: NEIGHBOR_ADDR_STR2
1756: "Specify a local-as number\n"
1757: "AS number used as local AS\n"
1758: "Do not prepend local-as to updates from ebgp peers\n"
1759: "Do not prepend local-as to updates from ibgp peers\n")
1760:
1761: DEFUN (neighbor_password,
1762: neighbor_password_cmd,
1763: NEIGHBOR_CMD2 "password LINE",
1764: NEIGHBOR_STR
1765: NEIGHBOR_ADDR_STR2
1766: "Set a password\n"
1767: "The password\n")
1768: {
1769: struct peer *peer;
1770: int ret;
1771:
1772: peer = peer_and_group_lookup_vty (vty, argv[0]);
1773: if (! peer)
1774: return CMD_WARNING;
1775:
1776: ret = peer_password_set (peer, argv[1]);
1777: return bgp_vty_return (vty, ret);
1778: }
1779:
1780: DEFUN (no_neighbor_password,
1781: no_neighbor_password_cmd,
1782: NO_NEIGHBOR_CMD2 "password",
1783: NO_STR
1784: NEIGHBOR_STR
1785: NEIGHBOR_ADDR_STR2
1786: "Set a password\n")
1787: {
1788: struct peer *peer;
1789: int ret;
1790:
1791: peer = peer_and_group_lookup_vty (vty, argv[0]);
1792: if (! peer)
1793: return CMD_WARNING;
1794:
1795: ret = peer_password_unset (peer);
1796: return bgp_vty_return (vty, ret);
1797: }
1798:
1799: DEFUN (neighbor_activate,
1800: neighbor_activate_cmd,
1801: NEIGHBOR_CMD2 "activate",
1802: NEIGHBOR_STR
1803: NEIGHBOR_ADDR_STR2
1804: "Enable the Address Family for this Neighbor\n")
1805: {
1806: struct peer *peer;
1807:
1808: peer = peer_and_group_lookup_vty (vty, argv[0]);
1809: if (! peer)
1810: return CMD_WARNING;
1811:
1812: peer_activate (peer, bgp_node_afi (vty), bgp_node_safi (vty));
1813:
1814: return CMD_SUCCESS;
1815: }
1816:
1817: DEFUN (no_neighbor_activate,
1818: no_neighbor_activate_cmd,
1819: NO_NEIGHBOR_CMD2 "activate",
1820: NO_STR
1821: NEIGHBOR_STR
1822: NEIGHBOR_ADDR_STR2
1823: "Enable the Address Family for this Neighbor\n")
1824: {
1825: int ret;
1826: struct peer *peer;
1827:
1828: /* Lookup peer. */
1829: peer = peer_and_group_lookup_vty (vty, argv[0]);
1830: if (! peer)
1831: return CMD_WARNING;
1832:
1833: ret = peer_deactivate (peer, bgp_node_afi (vty), bgp_node_safi (vty));
1834:
1835: return bgp_vty_return (vty, ret);
1836: }
1837:
1838: DEFUN (neighbor_set_peer_group,
1839: neighbor_set_peer_group_cmd,
1840: NEIGHBOR_CMD "peer-group WORD",
1841: NEIGHBOR_STR
1842: NEIGHBOR_ADDR_STR
1843: "Member of the peer-group\n"
1844: "peer-group name\n")
1845: {
1846: int ret;
1847: as_t as;
1848: union sockunion su;
1849: struct bgp *bgp;
1850: struct peer_group *group;
1851:
1852: bgp = vty->index;
1853:
1854: ret = str2sockunion (argv[0], &su);
1855: if (ret < 0)
1856: {
1857: vty_out (vty, "%% Malformed address: %s%s", argv[0], VTY_NEWLINE);
1858: return CMD_WARNING;
1859: }
1860:
1861: group = peer_group_lookup (bgp, argv[1]);
1862: if (! group)
1863: {
1864: vty_out (vty, "%% Configure the peer-group first%s", VTY_NEWLINE);
1865: return CMD_WARNING;
1866: }
1867:
1868: if (peer_address_self_check (&su))
1869: {
1870: vty_out (vty, "%% Can not configure the local system as neighbor%s",
1871: VTY_NEWLINE);
1872: return CMD_WARNING;
1873: }
1874:
1875: ret = peer_group_bind (bgp, &su, group, bgp_node_afi (vty),
1876: bgp_node_safi (vty), &as);
1877:
1878: if (ret == BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT)
1879: {
1880: vty_out (vty, "%% Peer with AS %u cannot be in this peer-group, members must be all internal or all external%s", as, VTY_NEWLINE);
1881: return CMD_WARNING;
1882: }
1883:
1884: return bgp_vty_return (vty, ret);
1885: }
1886:
1887: DEFUN (no_neighbor_set_peer_group,
1888: no_neighbor_set_peer_group_cmd,
1889: NO_NEIGHBOR_CMD "peer-group WORD",
1890: NO_STR
1891: NEIGHBOR_STR
1892: NEIGHBOR_ADDR_STR
1893: "Member of the peer-group\n"
1894: "peer-group name\n")
1895: {
1896: int ret;
1897: struct bgp *bgp;
1898: struct peer *peer;
1899: struct peer_group *group;
1900:
1901: bgp = vty->index;
1902:
1903: peer = peer_lookup_vty (vty, argv[0]);
1904: if (! peer)
1905: return CMD_WARNING;
1906:
1907: group = peer_group_lookup (bgp, argv[1]);
1908: if (! group)
1909: {
1910: vty_out (vty, "%% Configure the peer-group first%s", VTY_NEWLINE);
1911: return CMD_WARNING;
1912: }
1913:
1914: ret = peer_group_unbind (bgp, peer, group, bgp_node_afi (vty),
1915: bgp_node_safi (vty));
1916:
1917: return bgp_vty_return (vty, ret);
1918: }
1919:
1920: static int
1921: peer_flag_modify_vty (struct vty *vty, const char *ip_str,
1922: u_int16_t flag, int set)
1923: {
1924: int ret;
1925: struct peer *peer;
1926:
1927: peer = peer_and_group_lookup_vty (vty, ip_str);
1928: if (! peer)
1929: return CMD_WARNING;
1930:
1931: if (set)
1932: ret = peer_flag_set (peer, flag);
1933: else
1934: ret = peer_flag_unset (peer, flag);
1935:
1936: return bgp_vty_return (vty, ret);
1937: }
1938:
1939: static int
1940: peer_flag_set_vty (struct vty *vty, const char *ip_str, u_int16_t flag)
1941: {
1942: return peer_flag_modify_vty (vty, ip_str, flag, 1);
1943: }
1944:
1945: static int
1946: peer_flag_unset_vty (struct vty *vty, const char *ip_str, u_int16_t flag)
1947: {
1948: return peer_flag_modify_vty (vty, ip_str, flag, 0);
1949: }
1950:
1951: /* neighbor passive. */
1952: DEFUN (neighbor_passive,
1953: neighbor_passive_cmd,
1954: NEIGHBOR_CMD2 "passive",
1955: NEIGHBOR_STR
1956: NEIGHBOR_ADDR_STR2
1957: "Don't send open messages to this neighbor\n")
1958: {
1959: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_PASSIVE);
1960: }
1961:
1962: DEFUN (no_neighbor_passive,
1963: no_neighbor_passive_cmd,
1964: NO_NEIGHBOR_CMD2 "passive",
1965: NO_STR
1966: NEIGHBOR_STR
1967: NEIGHBOR_ADDR_STR2
1968: "Don't send open messages to this neighbor\n")
1969: {
1970: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_PASSIVE);
1971: }
1972:
1973: /* neighbor shutdown. */
1974: DEFUN (neighbor_shutdown,
1975: neighbor_shutdown_cmd,
1976: NEIGHBOR_CMD2 "shutdown",
1977: NEIGHBOR_STR
1978: NEIGHBOR_ADDR_STR2
1979: "Administratively shut down this neighbor\n")
1980: {
1981: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_SHUTDOWN);
1982: }
1983:
1984: DEFUN (no_neighbor_shutdown,
1985: no_neighbor_shutdown_cmd,
1986: NO_NEIGHBOR_CMD2 "shutdown",
1987: NO_STR
1988: NEIGHBOR_STR
1989: NEIGHBOR_ADDR_STR2
1990: "Administratively shut down this neighbor\n")
1991: {
1992: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_SHUTDOWN);
1993: }
1994:
1995: /* Deprecated neighbor capability route-refresh. */
1996: DEFUN_DEPRECATED (neighbor_capability_route_refresh,
1997: neighbor_capability_route_refresh_cmd,
1998: NEIGHBOR_CMD2 "capability route-refresh",
1999: NEIGHBOR_STR
2000: NEIGHBOR_ADDR_STR2
2001: "Advertise capability to the peer\n"
2002: "Advertise route-refresh capability to this neighbor\n")
2003: {
2004: return CMD_SUCCESS;
2005: }
2006:
2007: DEFUN_DEPRECATED (no_neighbor_capability_route_refresh,
2008: no_neighbor_capability_route_refresh_cmd,
2009: NO_NEIGHBOR_CMD2 "capability route-refresh",
2010: NO_STR
2011: NEIGHBOR_STR
2012: NEIGHBOR_ADDR_STR2
2013: "Advertise capability to the peer\n"
2014: "Advertise route-refresh capability to this neighbor\n")
2015: {
2016: return CMD_SUCCESS;
2017: }
2018:
2019: /* neighbor capability dynamic. */
2020: DEFUN (neighbor_capability_dynamic,
2021: neighbor_capability_dynamic_cmd,
2022: NEIGHBOR_CMD2 "capability dynamic",
2023: NEIGHBOR_STR
2024: NEIGHBOR_ADDR_STR2
2025: "Advertise capability to the peer\n"
2026: "Advertise dynamic capability to this neighbor\n")
2027: {
2028: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_DYNAMIC_CAPABILITY);
2029: }
2030:
2031: DEFUN (no_neighbor_capability_dynamic,
2032: no_neighbor_capability_dynamic_cmd,
2033: NO_NEIGHBOR_CMD2 "capability dynamic",
2034: NO_STR
2035: NEIGHBOR_STR
2036: NEIGHBOR_ADDR_STR2
2037: "Advertise capability to the peer\n"
2038: "Advertise dynamic capability to this neighbor\n")
2039: {
2040: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_DYNAMIC_CAPABILITY);
2041: }
2042:
2043: /* neighbor dont-capability-negotiate */
2044: DEFUN (neighbor_dont_capability_negotiate,
2045: neighbor_dont_capability_negotiate_cmd,
2046: NEIGHBOR_CMD2 "dont-capability-negotiate",
2047: NEIGHBOR_STR
2048: NEIGHBOR_ADDR_STR2
2049: "Do not perform capability negotiation\n")
2050: {
2051: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_DONT_CAPABILITY);
2052: }
2053:
2054: DEFUN (no_neighbor_dont_capability_negotiate,
2055: no_neighbor_dont_capability_negotiate_cmd,
2056: NO_NEIGHBOR_CMD2 "dont-capability-negotiate",
2057: NO_STR
2058: NEIGHBOR_STR
2059: NEIGHBOR_ADDR_STR2
2060: "Do not perform capability negotiation\n")
2061: {
2062: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_DONT_CAPABILITY);
2063: }
2064:
2065: static int
2066: peer_af_flag_modify_vty (struct vty *vty, const char *peer_str, afi_t afi,
2067: safi_t safi, u_int32_t flag, int set)
2068: {
2069: int ret;
2070: struct peer *peer;
2071:
2072: peer = peer_and_group_lookup_vty (vty, peer_str);
2073: if (! peer)
2074: return CMD_WARNING;
2075:
2076: if (set)
2077: ret = peer_af_flag_set (peer, afi, safi, flag);
2078: else
2079: ret = peer_af_flag_unset (peer, afi, safi, flag);
2080:
2081: return bgp_vty_return (vty, ret);
2082: }
2083:
2084: static int
2085: peer_af_flag_set_vty (struct vty *vty, const char *peer_str, afi_t afi,
2086: safi_t safi, u_int32_t flag)
2087: {
2088: return peer_af_flag_modify_vty (vty, peer_str, afi, safi, flag, 1);
2089: }
2090:
2091: static int
2092: peer_af_flag_unset_vty (struct vty *vty, const char *peer_str, afi_t afi,
2093: safi_t safi, u_int32_t flag)
2094: {
2095: return peer_af_flag_modify_vty (vty, peer_str, afi, safi, flag, 0);
2096: }
2097:
2098: /* neighbor capability orf prefix-list. */
2099: DEFUN (neighbor_capability_orf_prefix,
2100: neighbor_capability_orf_prefix_cmd,
2101: NEIGHBOR_CMD2 "capability orf prefix-list (both|send|receive)",
2102: NEIGHBOR_STR
2103: NEIGHBOR_ADDR_STR2
2104: "Advertise capability to the peer\n"
2105: "Advertise ORF capability to the peer\n"
2106: "Advertise prefixlist ORF capability to this neighbor\n"
2107: "Capability to SEND and RECEIVE the ORF to/from this neighbor\n"
2108: "Capability to RECEIVE the ORF from this neighbor\n"
2109: "Capability to SEND the ORF to this neighbor\n")
2110: {
2111: u_int16_t flag = 0;
2112:
2113: if (strncmp (argv[1], "s", 1) == 0)
2114: flag = PEER_FLAG_ORF_PREFIX_SM;
2115: else if (strncmp (argv[1], "r", 1) == 0)
2116: flag = PEER_FLAG_ORF_PREFIX_RM;
2117: else if (strncmp (argv[1], "b", 1) == 0)
2118: flag = PEER_FLAG_ORF_PREFIX_SM|PEER_FLAG_ORF_PREFIX_RM;
2119: else
2120: return CMD_WARNING;
2121:
2122: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2123: bgp_node_safi (vty), flag);
2124: }
2125:
2126: DEFUN (no_neighbor_capability_orf_prefix,
2127: no_neighbor_capability_orf_prefix_cmd,
2128: NO_NEIGHBOR_CMD2 "capability orf prefix-list (both|send|receive)",
2129: NO_STR
2130: NEIGHBOR_STR
2131: NEIGHBOR_ADDR_STR2
2132: "Advertise capability to the peer\n"
2133: "Advertise ORF capability to the peer\n"
2134: "Advertise prefixlist ORF capability to this neighbor\n"
2135: "Capability to SEND and RECEIVE the ORF to/from this neighbor\n"
2136: "Capability to RECEIVE the ORF from this neighbor\n"
2137: "Capability to SEND the ORF to this neighbor\n")
2138: {
2139: u_int16_t flag = 0;
2140:
2141: if (strncmp (argv[1], "s", 1) == 0)
2142: flag = PEER_FLAG_ORF_PREFIX_SM;
2143: else if (strncmp (argv[1], "r", 1) == 0)
2144: flag = PEER_FLAG_ORF_PREFIX_RM;
2145: else if (strncmp (argv[1], "b", 1) == 0)
2146: flag = PEER_FLAG_ORF_PREFIX_SM|PEER_FLAG_ORF_PREFIX_RM;
2147: else
2148: return CMD_WARNING;
2149:
2150: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2151: bgp_node_safi (vty), flag);
2152: }
2153:
2154: /* neighbor next-hop-self. */
2155: DEFUN (neighbor_nexthop_self,
2156: neighbor_nexthop_self_cmd,
2157: NEIGHBOR_CMD2 "next-hop-self {all}",
2158: NEIGHBOR_STR
2159: NEIGHBOR_ADDR_STR2
2160: "Disable the next hop calculation for this neighbor\n"
2161: "Apply also to ibgp-learned routes when acting as a route reflector\n")
2162: {
2163: u_int32_t flags = PEER_FLAG_NEXTHOP_SELF, unset = 0;
2164: int rc;
2165:
2166: /* Check if "all" is specified */
2167: if (argv[1] != NULL)
2168: flags |= PEER_FLAG_NEXTHOP_SELF_ALL;
2169: else
2170: unset |= PEER_FLAG_NEXTHOP_SELF_ALL;
2171:
2172: rc = peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2173: bgp_node_safi (vty), flags);
2174: if ( rc == CMD_SUCCESS && unset )
2175: rc = peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2176: bgp_node_safi (vty), unset);
2177: return rc;
2178: }
2179:
2180: DEFUN (no_neighbor_nexthop_self,
2181: no_neighbor_nexthop_self_cmd,
2182: NO_NEIGHBOR_CMD2 "next-hop-self {all}",
2183: NO_STR
2184: NEIGHBOR_STR
2185: NEIGHBOR_ADDR_STR2
2186: "Disable the next hop calculation for this neighbor\n"
2187: "Apply also to ibgp-learned routes when acting as a route reflector\n")
2188: {
2189: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2190: bgp_node_safi (vty),
2191: PEER_FLAG_NEXTHOP_SELF|PEER_FLAG_NEXTHOP_SELF_ALL);
2192: }
2193:
2194: /* neighbor remove-private-AS. */
2195: DEFUN (neighbor_remove_private_as,
2196: neighbor_remove_private_as_cmd,
2197: NEIGHBOR_CMD2 "remove-private-AS",
2198: NEIGHBOR_STR
2199: NEIGHBOR_ADDR_STR2
2200: "Remove private AS number from outbound updates\n")
2201: {
2202: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2203: bgp_node_safi (vty),
2204: PEER_FLAG_REMOVE_PRIVATE_AS);
2205: }
2206:
2207: DEFUN (no_neighbor_remove_private_as,
2208: no_neighbor_remove_private_as_cmd,
2209: NO_NEIGHBOR_CMD2 "remove-private-AS",
2210: NO_STR
2211: NEIGHBOR_STR
2212: NEIGHBOR_ADDR_STR2
2213: "Remove private AS number from outbound updates\n")
2214: {
2215: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2216: bgp_node_safi (vty),
2217: PEER_FLAG_REMOVE_PRIVATE_AS);
2218: }
2219:
2220: /* neighbor send-community. */
2221: DEFUN (neighbor_send_community,
2222: neighbor_send_community_cmd,
2223: NEIGHBOR_CMD2 "send-community",
2224: NEIGHBOR_STR
2225: NEIGHBOR_ADDR_STR2
2226: "Send Community attribute to this neighbor\n")
2227: {
2228: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2229: bgp_node_safi (vty),
2230: PEER_FLAG_SEND_COMMUNITY);
2231: }
2232:
2233: DEFUN (no_neighbor_send_community,
2234: no_neighbor_send_community_cmd,
2235: NO_NEIGHBOR_CMD2 "send-community",
2236: NO_STR
2237: NEIGHBOR_STR
2238: NEIGHBOR_ADDR_STR2
2239: "Send Community attribute to this neighbor\n")
2240: {
2241: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2242: bgp_node_safi (vty),
2243: PEER_FLAG_SEND_COMMUNITY);
2244: }
2245:
2246: /* neighbor send-community extended. */
2247: DEFUN (neighbor_send_community_type,
2248: neighbor_send_community_type_cmd,
2249: NEIGHBOR_CMD2 "send-community (both|extended|standard)",
2250: NEIGHBOR_STR
2251: NEIGHBOR_ADDR_STR2
2252: "Send Community attribute to this neighbor\n"
2253: "Send Standard and Extended Community attributes\n"
2254: "Send Extended Community attributes\n"
2255: "Send Standard Community attributes\n")
2256: {
2257: if (strncmp (argv[1], "s", 1) == 0)
2258: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2259: bgp_node_safi (vty),
2260: PEER_FLAG_SEND_COMMUNITY);
2261: if (strncmp (argv[1], "e", 1) == 0)
2262: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2263: bgp_node_safi (vty),
2264: PEER_FLAG_SEND_EXT_COMMUNITY);
2265:
2266: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2267: bgp_node_safi (vty),
2268: (PEER_FLAG_SEND_COMMUNITY|
2269: PEER_FLAG_SEND_EXT_COMMUNITY));
2270: }
2271:
2272: DEFUN (no_neighbor_send_community_type,
2273: no_neighbor_send_community_type_cmd,
2274: NO_NEIGHBOR_CMD2 "send-community (both|extended|standard)",
2275: NO_STR
2276: NEIGHBOR_STR
2277: NEIGHBOR_ADDR_STR2
2278: "Send Community attribute to this neighbor\n"
2279: "Send Standard and Extended Community attributes\n"
2280: "Send Extended Community attributes\n"
2281: "Send Standard Community attributes\n")
2282: {
2283: if (strncmp (argv[1], "s", 1) == 0)
2284: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2285: bgp_node_safi (vty),
2286: PEER_FLAG_SEND_COMMUNITY);
2287: if (strncmp (argv[1], "e", 1) == 0)
2288: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2289: bgp_node_safi (vty),
2290: PEER_FLAG_SEND_EXT_COMMUNITY);
2291:
2292: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2293: bgp_node_safi (vty),
2294: (PEER_FLAG_SEND_COMMUNITY |
2295: PEER_FLAG_SEND_EXT_COMMUNITY));
2296: }
2297:
2298: /* neighbor soft-reconfig. */
2299: DEFUN (neighbor_soft_reconfiguration,
2300: neighbor_soft_reconfiguration_cmd,
2301: NEIGHBOR_CMD2 "soft-reconfiguration inbound",
2302: NEIGHBOR_STR
2303: NEIGHBOR_ADDR_STR2
2304: "Per neighbor soft reconfiguration\n"
2305: "Allow inbound soft reconfiguration for this neighbor\n")
2306: {
2307: return peer_af_flag_set_vty (vty, argv[0],
2308: bgp_node_afi (vty), bgp_node_safi (vty),
2309: PEER_FLAG_SOFT_RECONFIG);
2310: }
2311:
2312: DEFUN (no_neighbor_soft_reconfiguration,
2313: no_neighbor_soft_reconfiguration_cmd,
2314: NO_NEIGHBOR_CMD2 "soft-reconfiguration inbound",
2315: NO_STR
2316: NEIGHBOR_STR
2317: NEIGHBOR_ADDR_STR2
2318: "Per neighbor soft reconfiguration\n"
2319: "Allow inbound soft reconfiguration for this neighbor\n")
2320: {
2321: return peer_af_flag_unset_vty (vty, argv[0],
2322: bgp_node_afi (vty), bgp_node_safi (vty),
2323: PEER_FLAG_SOFT_RECONFIG);
2324: }
2325:
2326: DEFUN (neighbor_route_reflector_client,
2327: neighbor_route_reflector_client_cmd,
2328: NEIGHBOR_CMD2 "route-reflector-client",
2329: NEIGHBOR_STR
2330: NEIGHBOR_ADDR_STR2
2331: "Configure a neighbor as Route Reflector client\n")
2332: {
2333: struct peer *peer;
2334:
2335:
2336: peer = peer_and_group_lookup_vty (vty, argv[0]);
2337: if (! peer)
2338: return CMD_WARNING;
2339:
2340: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2341: bgp_node_safi (vty),
2342: PEER_FLAG_REFLECTOR_CLIENT);
2343: }
2344:
2345: DEFUN (no_neighbor_route_reflector_client,
2346: no_neighbor_route_reflector_client_cmd,
2347: NO_NEIGHBOR_CMD2 "route-reflector-client",
2348: NO_STR
2349: NEIGHBOR_STR
2350: NEIGHBOR_ADDR_STR2
2351: "Configure a neighbor as Route Reflector client\n")
2352: {
2353: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2354: bgp_node_safi (vty),
2355: PEER_FLAG_REFLECTOR_CLIENT);
2356: }
2357:
2358: static int
2359: peer_rsclient_set_vty (struct vty *vty, const char *peer_str,
2360: int afi, int safi)
2361: {
2362: int ret;
2363: struct bgp *bgp;
2364: struct peer *peer;
2365: struct peer_group *group;
2366: struct listnode *node, *nnode;
2367: struct bgp_filter *pfilter;
2368: struct bgp_filter *gfilter;
2369: int locked_and_added = 0;
2370:
2371: bgp = vty->index;
2372:
2373: peer = peer_and_group_lookup_vty (vty, peer_str);
2374: if ( ! peer )
2375: return CMD_WARNING;
2376:
2377: /* If it is already a RS-Client, don't do anything. */
2378: if ( CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT) )
2379: return CMD_SUCCESS;
2380:
2381: if ( ! peer_rsclient_active (peer) )
2382: {
2383: peer = peer_lock (peer); /* rsclient peer list reference */
2384: listnode_add_sort (bgp->rsclient, peer);
2385: locked_and_added = 1;
2386: }
2387:
2388: ret = peer_af_flag_set (peer, afi, safi, PEER_FLAG_RSERVER_CLIENT);
2389: if (ret < 0)
2390: {
2391: if (locked_and_added)
2392: {
2393: listnode_delete (bgp->rsclient, peer);
2394: peer_unlock (peer); /* rsclient peer list reference */
2395: }
2396:
2397: return bgp_vty_return (vty, ret);
2398: }
2399:
2400: peer->rib[afi][safi] = bgp_table_init (afi, safi);
2401: peer->rib[afi][safi]->type = BGP_TABLE_RSCLIENT;
2402: /* RIB peer reference. Released when table is free'd in bgp_table_free. */
2403: peer->rib[afi][safi]->owner = peer_lock (peer);
2404:
2405: /* Check for existing 'network' and 'redistribute' routes. */
2406: bgp_check_local_routes_rsclient (peer, afi, safi);
2407:
2408: /* Check for routes for peers configured with 'soft-reconfiguration'. */
2409: bgp_soft_reconfig_rsclient (peer, afi, safi);
2410:
2411: if (CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
2412: {
2413: group = peer->group;
2414: gfilter = &peer->filter[afi][safi];
2415:
2416: for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
2417: {
2418: pfilter = &peer->filter[afi][safi];
2419:
2420: /* Members of a non-RS-Client group should not be RS-Clients, as that
2421: is checked when the become part of the peer-group */
2422: ret = peer_af_flag_set (peer, afi, safi, PEER_FLAG_RSERVER_CLIENT);
2423: if (ret < 0)
2424: return bgp_vty_return (vty, ret);
2425:
2426: /* Make peer's RIB point to group's RIB. */
2427: peer->rib[afi][safi] = group->conf->rib[afi][safi];
2428:
2429: /* Import policy. */
2430: if (pfilter->map[RMAP_IMPORT].name)
2431: free (pfilter->map[RMAP_IMPORT].name);
2432: if (gfilter->map[RMAP_IMPORT].name)
2433: {
2434: pfilter->map[RMAP_IMPORT].name = strdup (gfilter->map[RMAP_IMPORT].name);
2435: pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
2436: }
2437: else
2438: {
2439: pfilter->map[RMAP_IMPORT].name = NULL;
2440: pfilter->map[RMAP_IMPORT].map =NULL;
2441: }
2442:
2443: /* Export policy. */
2444: if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
2445: {
2446: pfilter->map[RMAP_EXPORT].name = strdup (gfilter->map[RMAP_EXPORT].name);
2447: pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
2448: }
2449: }
2450: }
2451: return CMD_SUCCESS;
2452: }
2453:
2454: static int
2455: peer_rsclient_unset_vty (struct vty *vty, const char *peer_str,
2456: int afi, int safi)
2457: {
2458: int ret;
2459: struct bgp *bgp;
2460: struct peer *peer;
2461: struct peer_group *group;
2462: struct listnode *node, *nnode;
2463:
2464: bgp = vty->index;
2465:
2466: peer = peer_and_group_lookup_vty (vty, peer_str);
2467: if ( ! peer )
2468: return CMD_WARNING;
2469:
2470: /* If it is not a RS-Client, don't do anything. */
2471: if ( ! CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT) )
2472: return CMD_SUCCESS;
2473:
2474: if (CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP))
2475: {
2476: group = peer->group;
2477:
2478: for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
2479: {
2480: ret = peer_af_flag_unset (peer, afi, safi, PEER_FLAG_RSERVER_CLIENT);
2481: if (ret < 0)
2482: return bgp_vty_return (vty, ret);
2483:
2484: peer->rib[afi][safi] = NULL;
2485: }
2486:
2487: peer = group->conf;
2488: }
2489:
2490: ret = peer_af_flag_unset (peer, afi, safi, PEER_FLAG_RSERVER_CLIENT);
2491: if (ret < 0)
2492: return bgp_vty_return (vty, ret);
2493:
2494: if ( ! peer_rsclient_active (peer) )
2495: {
2496: bgp_clear_route (peer, afi, safi, BGP_CLEAR_ROUTE_MY_RSCLIENT);
2497: listnode_delete (bgp->rsclient, peer);
2498: peer_unlock (peer); /* peer bgp rsclient reference */
2499: }
2500:
2501: bgp_table_finish (&peer->rib[bgp_node_afi(vty)][bgp_node_safi(vty)]);
2502:
2503: return CMD_SUCCESS;
2504: }
2505:
2506: /* neighbor route-server-client. */
2507: DEFUN (neighbor_route_server_client,
2508: neighbor_route_server_client_cmd,
2509: NEIGHBOR_CMD2 "route-server-client",
2510: NEIGHBOR_STR
2511: NEIGHBOR_ADDR_STR2
2512: "Configure a neighbor as Route Server client\n")
2513: {
2514: return peer_rsclient_set_vty (vty, argv[0], bgp_node_afi(vty),
2515: bgp_node_safi(vty));
2516: }
2517:
2518: DEFUN (no_neighbor_route_server_client,
2519: no_neighbor_route_server_client_cmd,
2520: NO_NEIGHBOR_CMD2 "route-server-client",
2521: NO_STR
2522: NEIGHBOR_STR
2523: NEIGHBOR_ADDR_STR2
2524: "Configure a neighbor as Route Server client\n")
2525: {
2526: return peer_rsclient_unset_vty (vty, argv[0], bgp_node_afi(vty),
2527: bgp_node_safi(vty));
2528: }
2529:
2530: DEFUN (neighbor_nexthop_local_unchanged,
2531: neighbor_nexthop_local_unchanged_cmd,
2532: NEIGHBOR_CMD2 "nexthop-local unchanged",
2533: NEIGHBOR_STR
2534: NEIGHBOR_ADDR_STR2
2535: "Configure treatment of outgoing link-local nexthop attribute\n"
2536: "Leave link-local nexthop unchanged for this peer\n")
2537: {
2538: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2539: bgp_node_safi (vty),
2540: PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED );
2541: }
2542:
2543: DEFUN (no_neighbor_nexthop_local_unchanged,
2544: no_neighbor_nexthop_local_unchanged_cmd,
2545: NO_NEIGHBOR_CMD2 "nexthop-local unchanged",
2546: NO_STR
2547: NEIGHBOR_STR
2548: NEIGHBOR_ADDR_STR2
2549: "Configure treatment of outgoing link-local-nexthop attribute\n"
2550: "Leave link-local nexthop unchanged for this peer\n")
2551: {
2552: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2553: bgp_node_safi (vty),
2554: PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED );
2555: }
2556:
2557: DEFUN (neighbor_attr_unchanged,
2558: neighbor_attr_unchanged_cmd,
2559: NEIGHBOR_CMD2 "attribute-unchanged",
2560: NEIGHBOR_STR
2561: NEIGHBOR_ADDR_STR2
2562: "BGP attribute is propagated unchanged to this neighbor\n")
2563: {
2564: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2565: bgp_node_safi (vty),
2566: (PEER_FLAG_AS_PATH_UNCHANGED |
2567: PEER_FLAG_NEXTHOP_UNCHANGED |
2568: PEER_FLAG_MED_UNCHANGED));
2569: }
2570:
2571: DEFUN (neighbor_attr_unchanged1,
2572: neighbor_attr_unchanged1_cmd,
2573: NEIGHBOR_CMD2 "attribute-unchanged (as-path|next-hop|med)",
2574: NEIGHBOR_STR
2575: NEIGHBOR_ADDR_STR2
2576: "BGP attribute is propagated unchanged to this neighbor\n"
2577: "As-path attribute\n"
2578: "Nexthop attribute\n"
2579: "Med attribute\n")
2580: {
2581: u_int16_t flags = 0;
2582:
2583: if (strncmp (argv[1], "as-path", 1) == 0)
2584: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2585: else if (strncmp (argv[1], "next-hop", 1) == 0)
2586: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2587: else if (strncmp (argv[1], "med", 1) == 0)
2588: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2589:
2590: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2591: bgp_node_safi (vty), flags);
2592: }
2593:
2594: DEFUN (neighbor_attr_unchanged2,
2595: neighbor_attr_unchanged2_cmd,
2596: NEIGHBOR_CMD2 "attribute-unchanged as-path (next-hop|med)",
2597: NEIGHBOR_STR
2598: NEIGHBOR_ADDR_STR2
2599: "BGP attribute is propagated unchanged to this neighbor\n"
2600: "As-path attribute\n"
2601: "Nexthop attribute\n"
2602: "Med attribute\n")
2603: {
2604: u_int16_t flags = PEER_FLAG_AS_PATH_UNCHANGED;
2605:
2606: if (strncmp (argv[1], "next-hop", 1) == 0)
2607: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2608: else if (strncmp (argv[1], "med", 1) == 0)
2609: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2610:
2611: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2612: bgp_node_safi (vty), flags);
2613:
2614: }
2615:
2616: DEFUN (neighbor_attr_unchanged3,
2617: neighbor_attr_unchanged3_cmd,
2618: NEIGHBOR_CMD2 "attribute-unchanged next-hop (as-path|med)",
2619: NEIGHBOR_STR
2620: NEIGHBOR_ADDR_STR2
2621: "BGP attribute is propagated unchanged to this neighbor\n"
2622: "Nexthop attribute\n"
2623: "As-path attribute\n"
2624: "Med attribute\n")
2625: {
2626: u_int16_t flags = PEER_FLAG_NEXTHOP_UNCHANGED;
2627:
2628: if (strncmp (argv[1], "as-path", 1) == 0)
2629: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2630: else if (strncmp (argv[1], "med", 1) == 0)
2631: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2632:
2633: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2634: bgp_node_safi (vty), flags);
2635: }
2636:
2637: DEFUN (neighbor_attr_unchanged4,
2638: neighbor_attr_unchanged4_cmd,
2639: NEIGHBOR_CMD2 "attribute-unchanged med (as-path|next-hop)",
2640: NEIGHBOR_STR
2641: NEIGHBOR_ADDR_STR2
2642: "BGP attribute is propagated unchanged to this neighbor\n"
2643: "Med attribute\n"
2644: "As-path attribute\n"
2645: "Nexthop attribute\n")
2646: {
2647: u_int16_t flags = PEER_FLAG_MED_UNCHANGED;
2648:
2649: if (strncmp (argv[1], "as-path", 1) == 0)
2650: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2651: else if (strncmp (argv[1], "next-hop", 1) == 0)
2652: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2653:
2654: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2655: bgp_node_safi (vty), flags);
2656: }
2657:
2658: ALIAS (neighbor_attr_unchanged,
2659: neighbor_attr_unchanged5_cmd,
2660: NEIGHBOR_CMD2 "attribute-unchanged as-path next-hop med",
2661: NEIGHBOR_STR
2662: NEIGHBOR_ADDR_STR2
2663: "BGP attribute is propagated unchanged to this neighbor\n"
2664: "As-path attribute\n"
2665: "Nexthop attribute\n"
2666: "Med attribute\n")
2667:
2668: ALIAS (neighbor_attr_unchanged,
2669: neighbor_attr_unchanged6_cmd,
2670: NEIGHBOR_CMD2 "attribute-unchanged as-path med next-hop",
2671: NEIGHBOR_STR
2672: NEIGHBOR_ADDR_STR2
2673: "BGP attribute is propagated unchanged to this neighbor\n"
2674: "As-path attribute\n"
2675: "Med attribute\n"
2676: "Nexthop attribute\n")
2677:
2678: ALIAS (neighbor_attr_unchanged,
2679: neighbor_attr_unchanged7_cmd,
2680: NEIGHBOR_CMD2 "attribute-unchanged next-hop med as-path",
2681: NEIGHBOR_STR
2682: NEIGHBOR_ADDR_STR2
2683: "BGP attribute is propagated unchanged to this neighbor\n"
2684: "Nexthop attribute\n"
2685: "Med attribute\n"
2686: "As-path attribute\n")
2687:
2688: ALIAS (neighbor_attr_unchanged,
2689: neighbor_attr_unchanged8_cmd,
2690: NEIGHBOR_CMD2 "attribute-unchanged next-hop as-path med",
2691: NEIGHBOR_STR
2692: NEIGHBOR_ADDR_STR2
2693: "BGP attribute is propagated unchanged to this neighbor\n"
2694: "Nexthop attribute\n"
2695: "As-path attribute\n"
2696: "Med attribute\n")
2697:
2698: ALIAS (neighbor_attr_unchanged,
2699: neighbor_attr_unchanged9_cmd,
2700: NEIGHBOR_CMD2 "attribute-unchanged med next-hop as-path",
2701: NEIGHBOR_STR
2702: NEIGHBOR_ADDR_STR2
2703: "BGP attribute is propagated unchanged to this neighbor\n"
2704: "Med attribute\n"
2705: "Nexthop attribute\n"
2706: "As-path attribute\n")
2707:
2708: ALIAS (neighbor_attr_unchanged,
2709: neighbor_attr_unchanged10_cmd,
2710: NEIGHBOR_CMD2 "attribute-unchanged med as-path next-hop",
2711: NEIGHBOR_STR
2712: NEIGHBOR_ADDR_STR2
2713: "BGP attribute is propagated unchanged to this neighbor\n"
2714: "Med attribute\n"
2715: "As-path attribute\n"
2716: "Nexthop attribute\n")
2717:
2718: DEFUN (no_neighbor_attr_unchanged,
2719: no_neighbor_attr_unchanged_cmd,
2720: NO_NEIGHBOR_CMD2 "attribute-unchanged",
2721: NO_STR
2722: NEIGHBOR_STR
2723: NEIGHBOR_ADDR_STR2
2724: "BGP attribute is propagated unchanged to this neighbor\n")
2725: {
2726: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2727: bgp_node_safi (vty),
2728: (PEER_FLAG_AS_PATH_UNCHANGED |
2729: PEER_FLAG_NEXTHOP_UNCHANGED |
2730: PEER_FLAG_MED_UNCHANGED));
2731: }
2732:
2733: DEFUN (no_neighbor_attr_unchanged1,
2734: no_neighbor_attr_unchanged1_cmd,
2735: NO_NEIGHBOR_CMD2 "attribute-unchanged (as-path|next-hop|med)",
2736: NO_STR
2737: NEIGHBOR_STR
2738: NEIGHBOR_ADDR_STR2
2739: "BGP attribute is propagated unchanged to this neighbor\n"
2740: "As-path attribute\n"
2741: "Nexthop attribute\n"
2742: "Med attribute\n")
2743: {
2744: u_int16_t flags = 0;
2745:
2746: if (strncmp (argv[1], "as-path", 1) == 0)
2747: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2748: else if (strncmp (argv[1], "next-hop", 1) == 0)
2749: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2750: else if (strncmp (argv[1], "med", 1) == 0)
2751: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2752:
2753: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2754: bgp_node_safi (vty), flags);
2755: }
2756:
2757: DEFUN (no_neighbor_attr_unchanged2,
2758: no_neighbor_attr_unchanged2_cmd,
2759: NO_NEIGHBOR_CMD2 "attribute-unchanged as-path (next-hop|med)",
2760: NO_STR
2761: NEIGHBOR_STR
2762: NEIGHBOR_ADDR_STR2
2763: "BGP attribute is propagated unchanged to this neighbor\n"
2764: "As-path attribute\n"
2765: "Nexthop attribute\n"
2766: "Med attribute\n")
2767: {
2768: u_int16_t flags = PEER_FLAG_AS_PATH_UNCHANGED;
2769:
2770: if (strncmp (argv[1], "next-hop", 1) == 0)
2771: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2772: else if (strncmp (argv[1], "med", 1) == 0)
2773: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2774:
2775: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2776: bgp_node_safi (vty), flags);
2777: }
2778:
2779: DEFUN (no_neighbor_attr_unchanged3,
2780: no_neighbor_attr_unchanged3_cmd,
2781: NO_NEIGHBOR_CMD2 "attribute-unchanged next-hop (as-path|med)",
2782: NO_STR
2783: NEIGHBOR_STR
2784: NEIGHBOR_ADDR_STR2
2785: "BGP attribute is propagated unchanged to this neighbor\n"
2786: "Nexthop attribute\n"
2787: "As-path attribute\n"
2788: "Med attribute\n")
2789: {
2790: u_int16_t flags = PEER_FLAG_NEXTHOP_UNCHANGED;
2791:
2792: if (strncmp (argv[1], "as-path", 1) == 0)
2793: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2794: else if (strncmp (argv[1], "med", 1) == 0)
2795: SET_FLAG (flags, PEER_FLAG_MED_UNCHANGED);
2796:
2797: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2798: bgp_node_safi (vty), flags);
2799: }
2800:
2801: DEFUN (no_neighbor_attr_unchanged4,
2802: no_neighbor_attr_unchanged4_cmd,
2803: NO_NEIGHBOR_CMD2 "attribute-unchanged med (as-path|next-hop)",
2804: NO_STR
2805: NEIGHBOR_STR
2806: NEIGHBOR_ADDR_STR2
2807: "BGP attribute is propagated unchanged to this neighbor\n"
2808: "Med attribute\n"
2809: "As-path attribute\n"
2810: "Nexthop attribute\n")
2811: {
2812: u_int16_t flags = PEER_FLAG_MED_UNCHANGED;
2813:
2814: if (strncmp (argv[1], "as-path", 1) == 0)
2815: SET_FLAG (flags, PEER_FLAG_AS_PATH_UNCHANGED);
2816: else if (strncmp (argv[1], "next-hop", 1) == 0)
2817: SET_FLAG (flags, PEER_FLAG_NEXTHOP_UNCHANGED);
2818:
2819: return peer_af_flag_unset_vty (vty, argv[0], bgp_node_afi (vty),
2820: bgp_node_safi (vty), flags);
2821: }
2822:
2823: ALIAS (no_neighbor_attr_unchanged,
2824: no_neighbor_attr_unchanged5_cmd,
2825: NO_NEIGHBOR_CMD2 "attribute-unchanged as-path next-hop med",
2826: NO_STR
2827: NEIGHBOR_STR
2828: NEIGHBOR_ADDR_STR2
2829: "BGP attribute is propagated unchanged to this neighbor\n"
2830: "As-path attribute\n"
2831: "Nexthop attribute\n"
2832: "Med attribute\n")
2833:
2834: ALIAS (no_neighbor_attr_unchanged,
2835: no_neighbor_attr_unchanged6_cmd,
2836: NO_NEIGHBOR_CMD2 "attribute-unchanged as-path med next-hop",
2837: NO_STR
2838: NEIGHBOR_STR
2839: NEIGHBOR_ADDR_STR2
2840: "BGP attribute is propagated unchanged to this neighbor\n"
2841: "As-path attribute\n"
2842: "Med attribute\n"
2843: "Nexthop attribute\n")
2844:
2845: ALIAS (no_neighbor_attr_unchanged,
2846: no_neighbor_attr_unchanged7_cmd,
2847: NO_NEIGHBOR_CMD2 "attribute-unchanged next-hop med as-path",
2848: NO_STR
2849: NEIGHBOR_STR
2850: NEIGHBOR_ADDR_STR2
2851: "BGP attribute is propagated unchanged to this neighbor\n"
2852: "Nexthop attribute\n"
2853: "Med attribute\n"
2854: "As-path attribute\n")
2855:
2856: ALIAS (no_neighbor_attr_unchanged,
2857: no_neighbor_attr_unchanged8_cmd,
2858: NO_NEIGHBOR_CMD2 "attribute-unchanged next-hop as-path med",
2859: NO_STR
2860: NEIGHBOR_STR
2861: NEIGHBOR_ADDR_STR2
2862: "BGP attribute is propagated unchanged to this neighbor\n"
2863: "Nexthop attribute\n"
2864: "As-path attribute\n"
2865: "Med attribute\n")
2866:
2867: ALIAS (no_neighbor_attr_unchanged,
2868: no_neighbor_attr_unchanged9_cmd,
2869: NO_NEIGHBOR_CMD2 "attribute-unchanged med next-hop as-path",
2870: NO_STR
2871: NEIGHBOR_STR
2872: NEIGHBOR_ADDR_STR2
2873: "BGP attribute is propagated unchanged to this neighbor\n"
2874: "Med attribute\n"
2875: "Nexthop attribute\n"
2876: "As-path attribute\n")
2877:
2878: ALIAS (no_neighbor_attr_unchanged,
2879: no_neighbor_attr_unchanged10_cmd,
2880: NO_NEIGHBOR_CMD2 "attribute-unchanged med as-path next-hop",
2881: NO_STR
2882: NEIGHBOR_STR
2883: NEIGHBOR_ADDR_STR2
2884: "BGP attribute is propagated unchanged to this neighbor\n"
2885: "Med attribute\n"
2886: "As-path attribute\n"
2887: "Nexthop attribute\n")
2888:
2889: /* For old version Zebra compatibility. */
2890: DEFUN_DEPRECATED (neighbor_transparent_as,
2891: neighbor_transparent_as_cmd,
2892: NEIGHBOR_CMD "transparent-as",
2893: NEIGHBOR_STR
2894: NEIGHBOR_ADDR_STR
2895: "Do not append my AS number even peer is EBGP peer\n")
2896: {
2897: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2898: bgp_node_safi (vty),
2899: PEER_FLAG_AS_PATH_UNCHANGED);
2900: }
2901:
2902: DEFUN_DEPRECATED (neighbor_transparent_nexthop,
2903: neighbor_transparent_nexthop_cmd,
2904: NEIGHBOR_CMD "transparent-nexthop",
2905: NEIGHBOR_STR
2906: NEIGHBOR_ADDR_STR
2907: "Do not change nexthop even peer is EBGP peer\n")
2908: {
2909: return peer_af_flag_set_vty (vty, argv[0], bgp_node_afi (vty),
2910: bgp_node_safi (vty),
2911: PEER_FLAG_NEXTHOP_UNCHANGED);
2912: }
2913:
2914: /* EBGP multihop configuration. */
2915: static int
2916: peer_ebgp_multihop_set_vty (struct vty *vty, const char *ip_str,
2917: const char *ttl_str)
2918: {
2919: struct peer *peer;
2920: unsigned int ttl;
2921:
2922: peer = peer_and_group_lookup_vty (vty, ip_str);
2923: if (! peer)
2924: return CMD_WARNING;
2925:
2926: if (! ttl_str)
2927: ttl = TTL_MAX;
2928: else
2929: VTY_GET_INTEGER_RANGE ("TTL", ttl, ttl_str, 1, 255);
2930:
2931: return bgp_vty_return (vty, peer_ebgp_multihop_set (peer, ttl));
2932: }
2933:
2934: static int
2935: peer_ebgp_multihop_unset_vty (struct vty *vty, const char *ip_str)
2936: {
2937: struct peer *peer;
2938:
2939: peer = peer_and_group_lookup_vty (vty, ip_str);
2940: if (! peer)
2941: return CMD_WARNING;
2942:
2943: return bgp_vty_return (vty, peer_ebgp_multihop_unset (peer));
2944: }
2945:
2946: /* neighbor ebgp-multihop. */
2947: DEFUN (neighbor_ebgp_multihop,
2948: neighbor_ebgp_multihop_cmd,
2949: NEIGHBOR_CMD2 "ebgp-multihop",
2950: NEIGHBOR_STR
2951: NEIGHBOR_ADDR_STR2
2952: "Allow EBGP neighbors not on directly connected networks\n")
2953: {
2954: return peer_ebgp_multihop_set_vty (vty, argv[0], NULL);
2955: }
2956:
2957: DEFUN (neighbor_ebgp_multihop_ttl,
2958: neighbor_ebgp_multihop_ttl_cmd,
2959: NEIGHBOR_CMD2 "ebgp-multihop <1-255>",
2960: NEIGHBOR_STR
2961: NEIGHBOR_ADDR_STR2
2962: "Allow EBGP neighbors not on directly connected networks\n"
2963: "maximum hop count\n")
2964: {
2965: return peer_ebgp_multihop_set_vty (vty, argv[0], argv[1]);
2966: }
2967:
2968: DEFUN (no_neighbor_ebgp_multihop,
2969: no_neighbor_ebgp_multihop_cmd,
2970: NO_NEIGHBOR_CMD2 "ebgp-multihop",
2971: NO_STR
2972: NEIGHBOR_STR
2973: NEIGHBOR_ADDR_STR2
2974: "Allow EBGP neighbors not on directly connected networks\n")
2975: {
2976: return peer_ebgp_multihop_unset_vty (vty, argv[0]);
2977: }
2978:
2979: ALIAS (no_neighbor_ebgp_multihop,
2980: no_neighbor_ebgp_multihop_ttl_cmd,
2981: NO_NEIGHBOR_CMD2 "ebgp-multihop <1-255>",
2982: NO_STR
2983: NEIGHBOR_STR
2984: NEIGHBOR_ADDR_STR2
2985: "Allow EBGP neighbors not on directly connected networks\n"
2986: "maximum hop count\n")
2987:
2988: /* disable-connected-check */
2989: DEFUN (neighbor_disable_connected_check,
2990: neighbor_disable_connected_check_cmd,
2991: NEIGHBOR_CMD2 "disable-connected-check",
2992: NEIGHBOR_STR
2993: NEIGHBOR_ADDR_STR2
2994: "one-hop away EBGP peer using loopback address\n")
2995: {
2996: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_DISABLE_CONNECTED_CHECK);
2997: }
2998:
2999: DEFUN (no_neighbor_disable_connected_check,
3000: no_neighbor_disable_connected_check_cmd,
3001: NO_NEIGHBOR_CMD2 "disable-connected-check",
3002: NO_STR
3003: NEIGHBOR_STR
3004: NEIGHBOR_ADDR_STR2
3005: "one-hop away EBGP peer using loopback address\n")
3006: {
3007: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_DISABLE_CONNECTED_CHECK);
3008: }
3009:
3010: /* Enforce multihop. */
3011: ALIAS (neighbor_disable_connected_check,
3012: neighbor_enforce_multihop_cmd,
3013: NEIGHBOR_CMD2 "enforce-multihop",
3014: NEIGHBOR_STR
3015: NEIGHBOR_ADDR_STR2
3016: "Enforce EBGP neighbors perform multihop\n")
3017:
3018: /* Enforce multihop. */
3019: ALIAS (no_neighbor_disable_connected_check,
3020: no_neighbor_enforce_multihop_cmd,
3021: NO_NEIGHBOR_CMD2 "enforce-multihop",
3022: NO_STR
3023: NEIGHBOR_STR
3024: NEIGHBOR_ADDR_STR2
3025: "Enforce EBGP neighbors perform multihop\n")
3026:
3027: DEFUN (neighbor_description,
3028: neighbor_description_cmd,
3029: NEIGHBOR_CMD2 "description .LINE",
3030: NEIGHBOR_STR
3031: NEIGHBOR_ADDR_STR2
3032: "Neighbor specific description\n"
3033: "Up to 80 characters describing this neighbor\n")
3034: {
3035: struct peer *peer;
3036: char *str;
3037:
3038: peer = peer_and_group_lookup_vty (vty, argv[0]);
3039: if (! peer)
3040: return CMD_WARNING;
3041:
3042: if (argc == 1)
3043: return CMD_SUCCESS;
3044:
3045: str = argv_concat(argv, argc, 1);
3046:
3047: peer_description_set (peer, str);
3048:
3049: XFREE (MTYPE_TMP, str);
3050:
3051: return CMD_SUCCESS;
3052: }
3053:
3054: DEFUN (no_neighbor_description,
3055: no_neighbor_description_cmd,
3056: NO_NEIGHBOR_CMD2 "description",
3057: NO_STR
3058: NEIGHBOR_STR
3059: NEIGHBOR_ADDR_STR2
3060: "Neighbor specific description\n")
3061: {
3062: struct peer *peer;
3063:
3064: peer = peer_and_group_lookup_vty (vty, argv[0]);
3065: if (! peer)
3066: return CMD_WARNING;
3067:
3068: peer_description_unset (peer);
3069:
3070: return CMD_SUCCESS;
3071: }
3072:
3073: ALIAS (no_neighbor_description,
3074: no_neighbor_description_val_cmd,
3075: NO_NEIGHBOR_CMD2 "description .LINE",
3076: NO_STR
3077: NEIGHBOR_STR
3078: NEIGHBOR_ADDR_STR2
3079: "Neighbor specific description\n"
3080: "Up to 80 characters describing this neighbor\n")
3081:
3082: /* Neighbor update-source. */
3083: static int
3084: peer_update_source_vty (struct vty *vty, const char *peer_str,
3085: const char *source_str)
3086: {
3087: struct peer *peer;
3088:
3089: peer = peer_and_group_lookup_vty (vty, peer_str);
3090: if (! peer)
3091: return CMD_WARNING;
3092:
3093: if (source_str)
3094: {
3095: union sockunion su;
3096: int ret = str2sockunion (source_str, &su);
3097:
3098: if (ret == 0)
3099: peer_update_source_addr_set (peer, &su);
3100: else
3101: peer_update_source_if_set (peer, source_str);
3102: }
3103: else
3104: peer_update_source_unset (peer);
3105:
3106: return CMD_SUCCESS;
3107: }
3108:
3109: #define BGP_UPDATE_SOURCE_STR "(A.B.C.D|X:X::X:X|WORD)"
3110: #define BGP_UPDATE_SOURCE_HELP_STR \
3111: "IPv4 address\n" \
3112: "IPv6 address\n" \
3113: "Interface name (requires zebra to be running)\n"
3114:
3115: DEFUN (neighbor_update_source,
3116: neighbor_update_source_cmd,
3117: NEIGHBOR_CMD2 "update-source " BGP_UPDATE_SOURCE_STR,
3118: NEIGHBOR_STR
3119: NEIGHBOR_ADDR_STR2
3120: "Source of routing updates\n"
3121: BGP_UPDATE_SOURCE_HELP_STR)
3122: {
3123: return peer_update_source_vty (vty, argv[0], argv[1]);
3124: }
3125:
3126: DEFUN (no_neighbor_update_source,
3127: no_neighbor_update_source_cmd,
3128: NO_NEIGHBOR_CMD2 "update-source",
3129: NO_STR
3130: NEIGHBOR_STR
3131: NEIGHBOR_ADDR_STR2
3132: "Source of routing updates\n")
3133: {
3134: return peer_update_source_vty (vty, argv[0], NULL);
3135: }
3136:
3137: static int
3138: peer_default_originate_set_vty (struct vty *vty, const char *peer_str,
3139: afi_t afi, safi_t safi,
3140: const char *rmap, int set)
3141: {
3142: int ret;
3143: struct peer *peer;
3144:
3145: peer = peer_and_group_lookup_vty (vty, peer_str);
3146: if (! peer)
3147: return CMD_WARNING;
3148:
3149: if (set)
3150: ret = peer_default_originate_set (peer, afi, safi, rmap);
3151: else
3152: ret = peer_default_originate_unset (peer, afi, safi);
3153:
3154: return bgp_vty_return (vty, ret);
3155: }
3156:
3157: /* neighbor default-originate. */
3158: DEFUN (neighbor_default_originate,
3159: neighbor_default_originate_cmd,
3160: NEIGHBOR_CMD2 "default-originate",
3161: NEIGHBOR_STR
3162: NEIGHBOR_ADDR_STR2
3163: "Originate default route to this neighbor\n")
3164: {
3165: return peer_default_originate_set_vty (vty, argv[0], bgp_node_afi (vty),
3166: bgp_node_safi (vty), NULL, 1);
3167: }
3168:
3169: DEFUN (neighbor_default_originate_rmap,
3170: neighbor_default_originate_rmap_cmd,
3171: NEIGHBOR_CMD2 "default-originate route-map WORD",
3172: NEIGHBOR_STR
3173: NEIGHBOR_ADDR_STR2
3174: "Originate default route to this neighbor\n"
3175: "Route-map to specify criteria to originate default\n"
3176: "route-map name\n")
3177: {
3178: return peer_default_originate_set_vty (vty, argv[0], bgp_node_afi (vty),
3179: bgp_node_safi (vty), argv[1], 1);
3180: }
3181:
3182: DEFUN (no_neighbor_default_originate,
3183: no_neighbor_default_originate_cmd,
3184: NO_NEIGHBOR_CMD2 "default-originate",
3185: NO_STR
3186: NEIGHBOR_STR
3187: NEIGHBOR_ADDR_STR2
3188: "Originate default route to this neighbor\n")
3189: {
3190: return peer_default_originate_set_vty (vty, argv[0], bgp_node_afi (vty),
3191: bgp_node_safi (vty), NULL, 0);
3192: }
3193:
3194: ALIAS (no_neighbor_default_originate,
3195: no_neighbor_default_originate_rmap_cmd,
3196: NO_NEIGHBOR_CMD2 "default-originate route-map WORD",
3197: NO_STR
3198: NEIGHBOR_STR
3199: NEIGHBOR_ADDR_STR2
3200: "Originate default route to this neighbor\n"
3201: "Route-map to specify criteria to originate default\n"
3202: "route-map name\n")
3203:
3204: /* Set neighbor's BGP port. */
3205: static int
3206: peer_port_vty (struct vty *vty, const char *ip_str, int afi,
3207: const char *port_str)
3208: {
3209: struct peer *peer;
3210: u_int16_t port;
3211: struct servent *sp;
3212:
3213: peer = peer_lookup_vty (vty, ip_str);
3214: if (! peer)
3215: return CMD_WARNING;
3216:
3217: if (! port_str)
3218: {
3219: sp = getservbyname ("bgp", "tcp");
3220: port = (sp == NULL) ? BGP_PORT_DEFAULT : ntohs (sp->s_port);
3221: }
3222: else
3223: {
3224: VTY_GET_INTEGER("port", port, port_str);
3225: }
3226:
3227: peer_port_set (peer, port);
3228:
3229: return CMD_SUCCESS;
3230: }
3231:
3232: /* Set specified peer's BGP port. */
3233: DEFUN (neighbor_port,
3234: neighbor_port_cmd,
3235: NEIGHBOR_CMD "port <0-65535>",
3236: NEIGHBOR_STR
3237: NEIGHBOR_ADDR_STR
3238: "Neighbor's BGP port\n"
3239: "TCP port number\n")
3240: {
3241: return peer_port_vty (vty, argv[0], AFI_IP, argv[1]);
3242: }
3243:
3244: DEFUN (no_neighbor_port,
3245: no_neighbor_port_cmd,
3246: NO_NEIGHBOR_CMD "port",
3247: NO_STR
3248: NEIGHBOR_STR
3249: NEIGHBOR_ADDR_STR
3250: "Neighbor's BGP port\n")
3251: {
3252: return peer_port_vty (vty, argv[0], AFI_IP, NULL);
3253: }
3254:
3255: ALIAS (no_neighbor_port,
3256: no_neighbor_port_val_cmd,
3257: NO_NEIGHBOR_CMD "port <0-65535>",
3258: NO_STR
3259: NEIGHBOR_STR
3260: NEIGHBOR_ADDR_STR
3261: "Neighbor's BGP port\n"
3262: "TCP port number\n")
3263:
3264: /* neighbor weight. */
3265: static int
3266: peer_weight_set_vty (struct vty *vty, const char *ip_str,
3267: const char *weight_str)
3268: {
3269: struct peer *peer;
3270: unsigned long weight;
3271:
3272: peer = peer_and_group_lookup_vty (vty, ip_str);
3273: if (! peer)
3274: return CMD_WARNING;
3275:
3276: VTY_GET_INTEGER_RANGE("weight", weight, weight_str, 0, 65535);
3277:
3278: return bgp_vty_return (vty, peer_weight_set (peer, weight));
3279: }
3280:
3281: static int
3282: peer_weight_unset_vty (struct vty *vty, const char *ip_str)
3283: {
3284: struct peer *peer;
3285:
3286: peer = peer_and_group_lookup_vty (vty, ip_str);
3287: if (! peer)
3288: return CMD_WARNING;
3289:
3290: return bgp_vty_return (vty, peer_weight_unset (peer));
3291: }
3292:
3293: DEFUN (neighbor_weight,
3294: neighbor_weight_cmd,
3295: NEIGHBOR_CMD2 "weight <0-65535>",
3296: NEIGHBOR_STR
3297: NEIGHBOR_ADDR_STR2
3298: "Set default weight for routes from this neighbor\n"
3299: "default weight\n")
3300: {
3301: return peer_weight_set_vty (vty, argv[0], argv[1]);
3302: }
3303:
3304: DEFUN (no_neighbor_weight,
3305: no_neighbor_weight_cmd,
3306: NO_NEIGHBOR_CMD2 "weight",
3307: NO_STR
3308: NEIGHBOR_STR
3309: NEIGHBOR_ADDR_STR2
3310: "Set default weight for routes from this neighbor\n")
3311: {
3312: return peer_weight_unset_vty (vty, argv[0]);
3313: }
3314:
3315: ALIAS (no_neighbor_weight,
3316: no_neighbor_weight_val_cmd,
3317: NO_NEIGHBOR_CMD2 "weight <0-65535>",
3318: NO_STR
3319: NEIGHBOR_STR
3320: NEIGHBOR_ADDR_STR2
3321: "Set default weight for routes from this neighbor\n"
3322: "default weight\n")
3323:
3324: /* Override capability negotiation. */
3325: DEFUN (neighbor_override_capability,
3326: neighbor_override_capability_cmd,
3327: NEIGHBOR_CMD2 "override-capability",
3328: NEIGHBOR_STR
3329: NEIGHBOR_ADDR_STR2
3330: "Override capability negotiation result\n")
3331: {
3332: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_OVERRIDE_CAPABILITY);
3333: }
3334:
3335: DEFUN (no_neighbor_override_capability,
3336: no_neighbor_override_capability_cmd,
3337: NO_NEIGHBOR_CMD2 "override-capability",
3338: NO_STR
3339: NEIGHBOR_STR
3340: NEIGHBOR_ADDR_STR2
3341: "Override capability negotiation result\n")
3342: {
3343: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_OVERRIDE_CAPABILITY);
3344: }
3345:
3346: DEFUN (neighbor_strict_capability,
3347: neighbor_strict_capability_cmd,
3348: NEIGHBOR_CMD "strict-capability-match",
3349: NEIGHBOR_STR
3350: NEIGHBOR_ADDR_STR
3351: "Strict capability negotiation match\n")
3352: {
3353: return peer_flag_set_vty (vty, argv[0], PEER_FLAG_STRICT_CAP_MATCH);
3354: }
3355:
3356: DEFUN (no_neighbor_strict_capability,
3357: no_neighbor_strict_capability_cmd,
3358: NO_NEIGHBOR_CMD "strict-capability-match",
3359: NO_STR
3360: NEIGHBOR_STR
3361: NEIGHBOR_ADDR_STR
3362: "Strict capability negotiation match\n")
3363: {
3364: return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_STRICT_CAP_MATCH);
3365: }
3366:
3367: static int
3368: peer_timers_set_vty (struct vty *vty, const char *ip_str,
3369: const char *keep_str, const char *hold_str)
3370: {
3371: int ret;
3372: struct peer *peer;
3373: u_int32_t keepalive;
3374: u_int32_t holdtime;
3375:
3376: peer = peer_and_group_lookup_vty (vty, ip_str);
3377: if (! peer)
3378: return CMD_WARNING;
3379:
3380: VTY_GET_INTEGER_RANGE ("Keepalive", keepalive, keep_str, 0, 65535);
3381: VTY_GET_INTEGER_RANGE ("Holdtime", holdtime, hold_str, 0, 65535);
3382:
3383: ret = peer_timers_set (peer, keepalive, holdtime);
3384:
3385: return bgp_vty_return (vty, ret);
3386: }
3387:
3388: static int
3389: peer_timers_unset_vty (struct vty *vty, const char *ip_str)
3390: {
3391: int ret;
3392: struct peer *peer;
3393:
3394: peer = peer_lookup_vty (vty, ip_str);
3395: if (! peer)
3396: return CMD_WARNING;
3397:
3398: ret = peer_timers_unset (peer);
3399:
3400: return bgp_vty_return (vty, ret);
3401: }
3402:
3403: DEFUN (neighbor_timers,
3404: neighbor_timers_cmd,
3405: NEIGHBOR_CMD2 "timers <0-65535> <0-65535>",
3406: NEIGHBOR_STR
3407: NEIGHBOR_ADDR_STR2
3408: "BGP per neighbor timers\n"
3409: "Keepalive interval\n"
3410: "Holdtime\n")
3411: {
3412: return peer_timers_set_vty (vty, argv[0], argv[1], argv[2]);
3413: }
3414:
3415: DEFUN (no_neighbor_timers,
3416: no_neighbor_timers_cmd,
3417: NO_NEIGHBOR_CMD2 "timers",
3418: NO_STR
3419: NEIGHBOR_STR
3420: NEIGHBOR_ADDR_STR2
3421: "BGP per neighbor timers\n")
3422: {
3423: return peer_timers_unset_vty (vty, argv[0]);
3424: }
3425:
3426: static int
3427: peer_timers_connect_set_vty (struct vty *vty, const char *ip_str,
3428: const char *time_str)
3429: {
3430: struct peer *peer;
3431: u_int32_t connect;
3432:
3433: peer = peer_and_group_lookup_vty (vty, ip_str);
3434: if (! peer)
3435: return CMD_WARNING;
3436:
3437: VTY_GET_INTEGER_RANGE ("Connect time", connect, time_str, 0, 65535);
3438:
3439: return bgp_vty_return (vty, peer_timers_connect_set (peer, connect));
3440: }
3441:
3442: static int
3443: peer_timers_connect_unset_vty (struct vty *vty, const char *ip_str)
3444: {
3445: struct peer *peer;
3446:
3447: peer = peer_and_group_lookup_vty (vty, ip_str);
3448: if (! peer)
3449: return CMD_WARNING;
3450:
3451: return bgp_vty_return (vty, peer_timers_connect_unset (peer));
3452: }
3453:
3454: DEFUN (neighbor_timers_connect,
3455: neighbor_timers_connect_cmd,
3456: NEIGHBOR_CMD2 "timers connect <1-65535>",
3457: NEIGHBOR_STR
3458: NEIGHBOR_ADDR_STR2
3459: "BGP per neighbor timers\n"
3460: "BGP connect timer\n"
3461: "Connect timer\n")
3462: {
3463: return peer_timers_connect_set_vty (vty, argv[0], argv[1]);
3464: }
3465:
3466: DEFUN (no_neighbor_timers_connect,
3467: no_neighbor_timers_connect_cmd,
3468: NO_NEIGHBOR_CMD2 "timers connect",
3469: NO_STR
3470: NEIGHBOR_STR
3471: NEIGHBOR_ADDR_STR2
3472: "BGP per neighbor timers\n"
3473: "BGP connect timer\n")
3474: {
3475: return peer_timers_connect_unset_vty (vty, argv[0]);
3476: }
3477:
3478: ALIAS (no_neighbor_timers_connect,
3479: no_neighbor_timers_connect_val_cmd,
3480: NO_NEIGHBOR_CMD2 "timers connect <1-65535>",
3481: NO_STR
3482: NEIGHBOR_STR
3483: NEIGHBOR_ADDR_STR2
3484: "BGP per neighbor timers\n"
3485: "BGP connect timer\n"
3486: "Connect timer\n")
3487:
3488: static int
3489: peer_advertise_interval_vty (struct vty *vty, const char *ip_str,
3490: const char *time_str, int set)
3491: {
3492: int ret;
3493: struct peer *peer;
3494: u_int32_t routeadv = 0;
3495:
3496: peer = peer_and_group_lookup_vty (vty, ip_str);
3497: if (! peer)
3498: return CMD_WARNING;
3499:
3500: if (time_str)
3501: VTY_GET_INTEGER_RANGE ("advertise interval", routeadv, time_str, 0, 600);
3502:
3503: if (set)
3504: ret = peer_advertise_interval_set (peer, routeadv);
3505: else
3506: ret = peer_advertise_interval_unset (peer);
3507:
3508: return bgp_vty_return (vty, ret);
3509: }
3510:
3511: DEFUN (neighbor_advertise_interval,
3512: neighbor_advertise_interval_cmd,
3513: NEIGHBOR_CMD2 "advertisement-interval <0-600>",
3514: NEIGHBOR_STR
3515: NEIGHBOR_ADDR_STR2
3516: "Minimum interval between sending BGP routing updates\n"
3517: "time in seconds\n")
3518: {
3519: return peer_advertise_interval_vty (vty, argv[0], argv[1], 1);
3520: }
3521:
3522: DEFUN (no_neighbor_advertise_interval,
3523: no_neighbor_advertise_interval_cmd,
3524: NO_NEIGHBOR_CMD2 "advertisement-interval",
3525: NO_STR
3526: NEIGHBOR_STR
3527: NEIGHBOR_ADDR_STR2
3528: "Minimum interval between sending BGP routing updates\n")
3529: {
3530: return peer_advertise_interval_vty (vty, argv[0], NULL, 0);
3531: }
3532:
3533: ALIAS (no_neighbor_advertise_interval,
3534: no_neighbor_advertise_interval_val_cmd,
3535: NO_NEIGHBOR_CMD2 "advertisement-interval <0-600>",
3536: NO_STR
3537: NEIGHBOR_STR
3538: NEIGHBOR_ADDR_STR2
3539: "Minimum interval between sending BGP routing updates\n"
3540: "time in seconds\n")
3541:
3542: /* neighbor interface */
3543: static int
3544: peer_interface_vty (struct vty *vty, const char *ip_str, const char *str)
3545: {
3546: int ret;
3547: struct peer *peer;
3548:
3549: peer = peer_lookup_vty (vty, ip_str);
3550: if (! peer)
3551: return CMD_WARNING;
3552:
3553: if (str)
3554: ret = peer_interface_set (peer, str);
3555: else
3556: ret = peer_interface_unset (peer);
3557:
3558: return bgp_vty_return (vty, ret);
3559: }
3560:
3561: DEFUN (neighbor_interface,
3562: neighbor_interface_cmd,
3563: NEIGHBOR_CMD "interface WORD",
3564: NEIGHBOR_STR
3565: NEIGHBOR_ADDR_STR
3566: "Interface\n"
3567: "Interface name\n")
3568: {
3569: return peer_interface_vty (vty, argv[0], argv[1]);
3570: }
3571:
3572: DEFUN (no_neighbor_interface,
3573: no_neighbor_interface_cmd,
3574: NO_NEIGHBOR_CMD "interface WORD",
3575: NO_STR
3576: NEIGHBOR_STR
3577: NEIGHBOR_ADDR_STR
3578: "Interface\n"
3579: "Interface name\n")
3580: {
3581: return peer_interface_vty (vty, argv[0], NULL);
3582: }
3583:
3584: /* Set distribute list to the peer. */
3585: static int
3586: peer_distribute_set_vty (struct vty *vty, const char *ip_str,
3587: afi_t afi, safi_t safi,
3588: const char *name_str, const char *direct_str)
3589: {
3590: int ret;
3591: struct peer *peer;
3592: int direct = FILTER_IN;
3593:
3594: peer = peer_and_group_lookup_vty (vty, ip_str);
3595: if (! peer)
3596: return CMD_WARNING;
3597:
3598: /* Check filter direction. */
3599: if (strncmp (direct_str, "i", 1) == 0)
3600: direct = FILTER_IN;
3601: else if (strncmp (direct_str, "o", 1) == 0)
3602: direct = FILTER_OUT;
3603:
3604: ret = peer_distribute_set (peer, afi, safi, direct, name_str);
3605:
3606: return bgp_vty_return (vty, ret);
3607: }
3608:
3609: static int
3610: peer_distribute_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
3611: safi_t safi, const char *direct_str)
3612: {
3613: int ret;
3614: struct peer *peer;
3615: int direct = FILTER_IN;
3616:
3617: peer = peer_and_group_lookup_vty (vty, ip_str);
3618: if (! peer)
3619: return CMD_WARNING;
3620:
3621: /* Check filter direction. */
3622: if (strncmp (direct_str, "i", 1) == 0)
3623: direct = FILTER_IN;
3624: else if (strncmp (direct_str, "o", 1) == 0)
3625: direct = FILTER_OUT;
3626:
3627: ret = peer_distribute_unset (peer, afi, safi, direct);
3628:
3629: return bgp_vty_return (vty, ret);
3630: }
3631:
3632: DEFUN (neighbor_distribute_list,
3633: neighbor_distribute_list_cmd,
3634: NEIGHBOR_CMD2 "distribute-list (<1-199>|<1300-2699>|WORD) (in|out)",
3635: NEIGHBOR_STR
3636: NEIGHBOR_ADDR_STR2
3637: "Filter updates to/from this neighbor\n"
3638: "IP access-list number\n"
3639: "IP access-list number (expanded range)\n"
3640: "IP Access-list name\n"
3641: "Filter incoming updates\n"
3642: "Filter outgoing updates\n")
3643: {
3644: return peer_distribute_set_vty (vty, argv[0], bgp_node_afi (vty),
3645: bgp_node_safi (vty), argv[1], argv[2]);
3646: }
3647:
3648: DEFUN (no_neighbor_distribute_list,
3649: no_neighbor_distribute_list_cmd,
3650: NO_NEIGHBOR_CMD2 "distribute-list (<1-199>|<1300-2699>|WORD) (in|out)",
3651: NO_STR
3652: NEIGHBOR_STR
3653: NEIGHBOR_ADDR_STR2
3654: "Filter updates to/from this neighbor\n"
3655: "IP access-list number\n"
3656: "IP access-list number (expanded range)\n"
3657: "IP Access-list name\n"
3658: "Filter incoming updates\n"
3659: "Filter outgoing updates\n")
3660: {
3661: return peer_distribute_unset_vty (vty, argv[0], bgp_node_afi (vty),
3662: bgp_node_safi (vty), argv[2]);
3663: }
3664:
3665: /* Set prefix list to the peer. */
3666: static int
3667: peer_prefix_list_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
3668: safi_t safi, const char *name_str,
3669: const char *direct_str)
3670: {
3671: int ret;
3672: struct peer *peer;
3673: int direct = FILTER_IN;
3674:
3675: peer = peer_and_group_lookup_vty (vty, ip_str);
3676: if (! peer)
3677: return CMD_WARNING;
3678:
3679: /* Check filter direction. */
3680: if (strncmp (direct_str, "i", 1) == 0)
3681: direct = FILTER_IN;
3682: else if (strncmp (direct_str, "o", 1) == 0)
3683: direct = FILTER_OUT;
3684:
3685: ret = peer_prefix_list_set (peer, afi, safi, direct, name_str);
3686:
3687: return bgp_vty_return (vty, ret);
3688: }
3689:
3690: static int
3691: peer_prefix_list_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
3692: safi_t safi, const char *direct_str)
3693: {
3694: int ret;
3695: struct peer *peer;
3696: int direct = FILTER_IN;
3697:
3698: peer = peer_and_group_lookup_vty (vty, ip_str);
3699: if (! peer)
3700: return CMD_WARNING;
3701:
3702: /* Check filter direction. */
3703: if (strncmp (direct_str, "i", 1) == 0)
3704: direct = FILTER_IN;
3705: else if (strncmp (direct_str, "o", 1) == 0)
3706: direct = FILTER_OUT;
3707:
3708: ret = peer_prefix_list_unset (peer, afi, safi, direct);
3709:
3710: return bgp_vty_return (vty, ret);
3711: }
3712:
3713: DEFUN (neighbor_prefix_list,
3714: neighbor_prefix_list_cmd,
3715: NEIGHBOR_CMD2 "prefix-list WORD (in|out)",
3716: NEIGHBOR_STR
3717: NEIGHBOR_ADDR_STR2
3718: "Filter updates to/from this neighbor\n"
3719: "Name of a prefix list\n"
3720: "Filter incoming updates\n"
3721: "Filter outgoing updates\n")
3722: {
3723: return peer_prefix_list_set_vty (vty, argv[0], bgp_node_afi (vty),
3724: bgp_node_safi (vty), argv[1], argv[2]);
3725: }
3726:
3727: DEFUN (no_neighbor_prefix_list,
3728: no_neighbor_prefix_list_cmd,
3729: NO_NEIGHBOR_CMD2 "prefix-list WORD (in|out)",
3730: NO_STR
3731: NEIGHBOR_STR
3732: NEIGHBOR_ADDR_STR2
3733: "Filter updates to/from this neighbor\n"
3734: "Name of a prefix list\n"
3735: "Filter incoming updates\n"
3736: "Filter outgoing updates\n")
3737: {
3738: return peer_prefix_list_unset_vty (vty, argv[0], bgp_node_afi (vty),
3739: bgp_node_safi (vty), argv[2]);
3740: }
3741:
3742: static int
3743: peer_aslist_set_vty (struct vty *vty, const char *ip_str,
3744: afi_t afi, safi_t safi,
3745: const char *name_str, const char *direct_str)
3746: {
3747: int ret;
3748: struct peer *peer;
3749: int direct = FILTER_IN;
3750:
3751: peer = peer_and_group_lookup_vty (vty, ip_str);
3752: if (! peer)
3753: return CMD_WARNING;
3754:
3755: /* Check filter direction. */
3756: if (strncmp (direct_str, "i", 1) == 0)
3757: direct = FILTER_IN;
3758: else if (strncmp (direct_str, "o", 1) == 0)
3759: direct = FILTER_OUT;
3760:
3761: ret = peer_aslist_set (peer, afi, safi, direct, name_str);
3762:
3763: return bgp_vty_return (vty, ret);
3764: }
3765:
3766: static int
3767: peer_aslist_unset_vty (struct vty *vty, const char *ip_str,
3768: afi_t afi, safi_t safi,
3769: const char *direct_str)
3770: {
3771: int ret;
3772: struct peer *peer;
3773: int direct = FILTER_IN;
3774:
3775: peer = peer_and_group_lookup_vty (vty, ip_str);
3776: if (! peer)
3777: return CMD_WARNING;
3778:
3779: /* Check filter direction. */
3780: if (strncmp (direct_str, "i", 1) == 0)
3781: direct = FILTER_IN;
3782: else if (strncmp (direct_str, "o", 1) == 0)
3783: direct = FILTER_OUT;
3784:
3785: ret = peer_aslist_unset (peer, afi, safi, direct);
3786:
3787: return bgp_vty_return (vty, ret);
3788: }
3789:
3790: DEFUN (neighbor_filter_list,
3791: neighbor_filter_list_cmd,
3792: NEIGHBOR_CMD2 "filter-list WORD (in|out)",
3793: NEIGHBOR_STR
3794: NEIGHBOR_ADDR_STR2
3795: "Establish BGP filters\n"
3796: "AS path access-list name\n"
3797: "Filter incoming routes\n"
3798: "Filter outgoing routes\n")
3799: {
3800: return peer_aslist_set_vty (vty, argv[0], bgp_node_afi (vty),
3801: bgp_node_safi (vty), argv[1], argv[2]);
3802: }
3803:
3804: DEFUN (no_neighbor_filter_list,
3805: no_neighbor_filter_list_cmd,
3806: NO_NEIGHBOR_CMD2 "filter-list WORD (in|out)",
3807: NO_STR
3808: NEIGHBOR_STR
3809: NEIGHBOR_ADDR_STR2
3810: "Establish BGP filters\n"
3811: "AS path access-list name\n"
3812: "Filter incoming routes\n"
3813: "Filter outgoing routes\n")
3814: {
3815: return peer_aslist_unset_vty (vty, argv[0], bgp_node_afi (vty),
3816: bgp_node_safi (vty), argv[2]);
3817: }
3818:
3819: /* Set route-map to the peer. */
3820: static int
3821: peer_route_map_set_vty (struct vty *vty, const char *ip_str,
3822: afi_t afi, safi_t safi,
3823: const char *name_str, const char *direct_str)
3824: {
3825: int ret;
3826: struct peer *peer;
3827: int direct = RMAP_IN;
3828:
3829: peer = peer_and_group_lookup_vty (vty, ip_str);
3830: if (! peer)
3831: return CMD_WARNING;
3832:
3833: /* Check filter direction. */
3834: if (strncmp (direct_str, "in", 2) == 0)
3835: direct = RMAP_IN;
3836: else if (strncmp (direct_str, "o", 1) == 0)
3837: direct = RMAP_OUT;
3838: else if (strncmp (direct_str, "im", 2) == 0)
3839: direct = RMAP_IMPORT;
3840: else if (strncmp (direct_str, "e", 1) == 0)
3841: direct = RMAP_EXPORT;
3842:
3843: ret = peer_route_map_set (peer, afi, safi, direct, name_str);
3844:
3845: return bgp_vty_return (vty, ret);
3846: }
3847:
3848: static int
3849: peer_route_map_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
3850: safi_t safi, const char *direct_str)
3851: {
3852: int ret;
3853: struct peer *peer;
3854: int direct = RMAP_IN;
3855:
3856: peer = peer_and_group_lookup_vty (vty, ip_str);
3857: if (! peer)
3858: return CMD_WARNING;
3859:
3860: /* Check filter direction. */
3861: if (strncmp (direct_str, "in", 2) == 0)
3862: direct = RMAP_IN;
3863: else if (strncmp (direct_str, "o", 1) == 0)
3864: direct = RMAP_OUT;
3865: else if (strncmp (direct_str, "im", 2) == 0)
3866: direct = RMAP_IMPORT;
3867: else if (strncmp (direct_str, "e", 1) == 0)
3868: direct = RMAP_EXPORT;
3869:
3870: ret = peer_route_map_unset (peer, afi, safi, direct);
3871:
3872: return bgp_vty_return (vty, ret);
3873: }
3874:
3875: DEFUN (neighbor_route_map,
3876: neighbor_route_map_cmd,
3877: NEIGHBOR_CMD2 "route-map WORD (in|out|import|export)",
3878: NEIGHBOR_STR
3879: NEIGHBOR_ADDR_STR2
3880: "Apply route map to neighbor\n"
3881: "Name of route map\n"
3882: "Apply map to incoming routes\n"
3883: "Apply map to outbound routes\n"
3884: "Apply map to routes going into a Route-Server client's table\n"
3885: "Apply map to routes coming from a Route-Server client")
3886: {
3887: return peer_route_map_set_vty (vty, argv[0], bgp_node_afi (vty),
3888: bgp_node_safi (vty), argv[1], argv[2]);
3889: }
3890:
3891: DEFUN (no_neighbor_route_map,
3892: no_neighbor_route_map_cmd,
3893: NO_NEIGHBOR_CMD2 "route-map WORD (in|out|import|export)",
3894: NO_STR
3895: NEIGHBOR_STR
3896: NEIGHBOR_ADDR_STR2
3897: "Apply route map to neighbor\n"
3898: "Name of route map\n"
3899: "Apply map to incoming routes\n"
3900: "Apply map to outbound routes\n"
3901: "Apply map to routes going into a Route-Server client's table\n"
3902: "Apply map to routes coming from a Route-Server client")
3903: {
3904: return peer_route_map_unset_vty (vty, argv[0], bgp_node_afi (vty),
3905: bgp_node_safi (vty), argv[2]);
3906: }
3907:
3908: /* Set unsuppress-map to the peer. */
3909: static int
3910: peer_unsuppress_map_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
3911: safi_t safi, const char *name_str)
3912: {
3913: int ret;
3914: struct peer *peer;
3915:
3916: peer = peer_and_group_lookup_vty (vty, ip_str);
3917: if (! peer)
3918: return CMD_WARNING;
3919:
3920: ret = peer_unsuppress_map_set (peer, afi, safi, name_str);
3921:
3922: return bgp_vty_return (vty, ret);
3923: }
3924:
3925: /* Unset route-map from the peer. */
3926: static int
3927: peer_unsuppress_map_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
3928: safi_t safi)
3929: {
3930: int ret;
3931: struct peer *peer;
3932:
3933: peer = peer_and_group_lookup_vty (vty, ip_str);
3934: if (! peer)
3935: return CMD_WARNING;
3936:
3937: ret = peer_unsuppress_map_unset (peer, afi, safi);
3938:
3939: return bgp_vty_return (vty, ret);
3940: }
3941:
3942: DEFUN (neighbor_unsuppress_map,
3943: neighbor_unsuppress_map_cmd,
3944: NEIGHBOR_CMD2 "unsuppress-map WORD",
3945: NEIGHBOR_STR
3946: NEIGHBOR_ADDR_STR2
3947: "Route-map to selectively unsuppress suppressed routes\n"
3948: "Name of route map\n")
3949: {
3950: return peer_unsuppress_map_set_vty (vty, argv[0], bgp_node_afi (vty),
3951: bgp_node_safi (vty), argv[1]);
3952: }
3953:
3954: DEFUN (no_neighbor_unsuppress_map,
3955: no_neighbor_unsuppress_map_cmd,
3956: NO_NEIGHBOR_CMD2 "unsuppress-map WORD",
3957: NO_STR
3958: NEIGHBOR_STR
3959: NEIGHBOR_ADDR_STR2
3960: "Route-map to selectively unsuppress suppressed routes\n"
3961: "Name of route map\n")
3962: {
3963: return peer_unsuppress_map_unset_vty (vty, argv[0], bgp_node_afi (vty),
3964: bgp_node_safi (vty));
3965: }
3966:
3967: static int
3968: peer_maximum_prefix_set_vty (struct vty *vty, const char *ip_str, afi_t afi,
3969: safi_t safi, const char *num_str,
3970: const char *threshold_str, int warning,
3971: const char *restart_str)
3972: {
3973: int ret;
3974: struct peer *peer;
3975: u_int32_t max;
3976: u_char threshold;
3977: u_int16_t restart;
3978:
3979: peer = peer_and_group_lookup_vty (vty, ip_str);
3980: if (! peer)
3981: return CMD_WARNING;
3982:
3983: VTY_GET_INTEGER ("maximum number", max, num_str);
3984: if (threshold_str)
3985: threshold = atoi (threshold_str);
3986: else
3987: threshold = MAXIMUM_PREFIX_THRESHOLD_DEFAULT;
3988:
3989: if (restart_str)
3990: restart = atoi (restart_str);
3991: else
3992: restart = 0;
3993:
3994: ret = peer_maximum_prefix_set (peer, afi, safi, max, threshold, warning, restart);
3995:
3996: return bgp_vty_return (vty, ret);
3997: }
3998:
3999: static int
4000: peer_maximum_prefix_unset_vty (struct vty *vty, const char *ip_str, afi_t afi,
4001: safi_t safi)
4002: {
4003: int ret;
4004: struct peer *peer;
4005:
4006: peer = peer_and_group_lookup_vty (vty, ip_str);
4007: if (! peer)
4008: return CMD_WARNING;
4009:
4010: ret = peer_maximum_prefix_unset (peer, afi, safi);
4011:
4012: return bgp_vty_return (vty, ret);
4013: }
4014:
4015: /* Maximum number of prefix configuration. prefix count is different
4016: for each peer configuration. So this configuration can be set for
4017: each peer configuration. */
4018: DEFUN (neighbor_maximum_prefix,
4019: neighbor_maximum_prefix_cmd,
4020: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295>",
4021: NEIGHBOR_STR
4022: NEIGHBOR_ADDR_STR2
4023: "Maximum number of prefix accept from this peer\n"
4024: "maximum no. of prefix limit\n")
4025: {
4026: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4027: bgp_node_safi (vty), argv[1], NULL, 0,
4028: NULL);
4029: }
4030:
4031: DEFUN (neighbor_maximum_prefix_threshold,
4032: neighbor_maximum_prefix_threshold_cmd,
4033: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100>",
4034: NEIGHBOR_STR
4035: NEIGHBOR_ADDR_STR2
4036: "Maximum number of prefix accept from this peer\n"
4037: "maximum no. of prefix limit\n"
4038: "Threshold value (%) at which to generate a warning msg\n")
4039: {
4040: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4041: bgp_node_safi (vty), argv[1], argv[2], 0,
4042: NULL);
4043: }
4044:
4045: DEFUN (neighbor_maximum_prefix_warning,
4046: neighbor_maximum_prefix_warning_cmd,
4047: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
4048: NEIGHBOR_STR
4049: NEIGHBOR_ADDR_STR2
4050: "Maximum number of prefix accept from this peer\n"
4051: "maximum no. of prefix limit\n"
4052: "Only give warning message when limit is exceeded\n")
4053: {
4054: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4055: bgp_node_safi (vty), argv[1], NULL, 1,
4056: NULL);
4057: }
4058:
4059: DEFUN (neighbor_maximum_prefix_threshold_warning,
4060: neighbor_maximum_prefix_threshold_warning_cmd,
4061: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> warning-only",
4062: NEIGHBOR_STR
4063: NEIGHBOR_ADDR_STR2
4064: "Maximum number of prefix accept from this peer\n"
4065: "maximum no. of prefix limit\n"
4066: "Threshold value (%) at which to generate a warning msg\n"
4067: "Only give warning message when limit is exceeded\n")
4068: {
4069: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4070: bgp_node_safi (vty), argv[1], argv[2], 1, NULL);
4071: }
4072:
4073: DEFUN (neighbor_maximum_prefix_restart,
4074: neighbor_maximum_prefix_restart_cmd,
4075: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> restart <1-65535>",
4076: NEIGHBOR_STR
4077: NEIGHBOR_ADDR_STR2
4078: "Maximum number of prefix accept from this peer\n"
4079: "maximum no. of prefix limit\n"
4080: "Restart bgp connection after limit is exceeded\n"
4081: "Restart interval in minutes")
4082: {
4083: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4084: bgp_node_safi (vty), argv[1], NULL, 0, argv[2]);
4085: }
4086:
4087: DEFUN (neighbor_maximum_prefix_threshold_restart,
4088: neighbor_maximum_prefix_threshold_restart_cmd,
4089: NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> restart <1-65535>",
4090: NEIGHBOR_STR
4091: NEIGHBOR_ADDR_STR2
4092: "Maximum number of prefix accept from this peer\n"
4093: "maximum no. of prefix limit\n"
4094: "Threshold value (%) at which to generate a warning msg\n"
4095: "Restart bgp connection after limit is exceeded\n"
4096: "Restart interval in minutes")
4097: {
4098: return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
4099: bgp_node_safi (vty), argv[1], argv[2], 0, argv[3]);
4100: }
4101:
4102: DEFUN (no_neighbor_maximum_prefix,
4103: no_neighbor_maximum_prefix_cmd,
4104: NO_NEIGHBOR_CMD2 "maximum-prefix",
4105: NO_STR
4106: NEIGHBOR_STR
4107: NEIGHBOR_ADDR_STR2
4108: "Maximum number of prefix accept from this peer\n")
4109: {
4110: return peer_maximum_prefix_unset_vty (vty, argv[0], bgp_node_afi (vty),
4111: bgp_node_safi (vty));
4112: }
4113:
4114: ALIAS (no_neighbor_maximum_prefix,
4115: no_neighbor_maximum_prefix_val_cmd,
4116: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295>",
4117: NO_STR
4118: NEIGHBOR_STR
4119: NEIGHBOR_ADDR_STR2
4120: "Maximum number of prefix accept from this peer\n"
4121: "maximum no. of prefix limit\n")
4122:
4123: ALIAS (no_neighbor_maximum_prefix,
4124: no_neighbor_maximum_prefix_threshold_cmd,
4125: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
4126: NO_STR
4127: NEIGHBOR_STR
4128: NEIGHBOR_ADDR_STR2
4129: "Maximum number of prefix accept from this peer\n"
4130: "maximum no. of prefix limit\n"
4131: "Threshold value (%) at which to generate a warning msg\n")
4132:
4133: ALIAS (no_neighbor_maximum_prefix,
4134: no_neighbor_maximum_prefix_warning_cmd,
4135: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
4136: NO_STR
4137: NEIGHBOR_STR
4138: NEIGHBOR_ADDR_STR2
4139: "Maximum number of prefix accept from this peer\n"
4140: "maximum no. of prefix limit\n"
4141: "Only give warning message when limit is exceeded\n")
4142:
4143: ALIAS (no_neighbor_maximum_prefix,
4144: no_neighbor_maximum_prefix_threshold_warning_cmd,
4145: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> warning-only",
4146: NO_STR
4147: NEIGHBOR_STR
4148: NEIGHBOR_ADDR_STR2
4149: "Maximum number of prefix accept from this peer\n"
4150: "maximum no. of prefix limit\n"
4151: "Threshold value (%) at which to generate a warning msg\n"
4152: "Only give warning message when limit is exceeded\n")
4153:
4154: ALIAS (no_neighbor_maximum_prefix,
4155: no_neighbor_maximum_prefix_restart_cmd,
4156: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> restart <1-65535>",
4157: NO_STR
4158: NEIGHBOR_STR
4159: NEIGHBOR_ADDR_STR2
4160: "Maximum number of prefix accept from this peer\n"
4161: "maximum no. of prefix limit\n"
4162: "Restart bgp connection after limit is exceeded\n"
4163: "Restart interval in minutes")
4164:
4165: ALIAS (no_neighbor_maximum_prefix,
4166: no_neighbor_maximum_prefix_threshold_restart_cmd,
4167: NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> restart <1-65535>",
4168: NO_STR
4169: NEIGHBOR_STR
4170: NEIGHBOR_ADDR_STR2
4171: "Maximum number of prefix accept from this peer\n"
4172: "maximum no. of prefix limit\n"
4173: "Threshold value (%) at which to generate a warning msg\n"
4174: "Restart bgp connection after limit is exceeded\n"
4175: "Restart interval in minutes")
4176:
4177: /* "neighbor allowas-in" */
4178: DEFUN (neighbor_allowas_in,
4179: neighbor_allowas_in_cmd,
4180: NEIGHBOR_CMD2 "allowas-in",
4181: NEIGHBOR_STR
4182: NEIGHBOR_ADDR_STR2
4183: "Accept as-path with my AS present in it\n")
4184: {
4185: int ret;
4186: struct peer *peer;
4187: unsigned int allow_num;
4188:
4189: peer = peer_and_group_lookup_vty (vty, argv[0]);
4190: if (! peer)
4191: return CMD_WARNING;
4192:
4193: if (argc == 1)
4194: allow_num = 3;
4195: else
4196: VTY_GET_INTEGER_RANGE ("AS number", allow_num, argv[1], 1, 10);
4197:
4198: ret = peer_allowas_in_set (peer, bgp_node_afi (vty), bgp_node_safi (vty),
4199: allow_num);
4200:
4201: return bgp_vty_return (vty, ret);
4202: }
4203:
4204: ALIAS (neighbor_allowas_in,
4205: neighbor_allowas_in_arg_cmd,
4206: NEIGHBOR_CMD2 "allowas-in <1-10>",
4207: NEIGHBOR_STR
4208: NEIGHBOR_ADDR_STR2
4209: "Accept as-path with my AS present in it\n"
4210: "Number of occurances of AS number\n")
4211:
4212: DEFUN (no_neighbor_allowas_in,
4213: no_neighbor_allowas_in_cmd,
4214: NO_NEIGHBOR_CMD2 "allowas-in",
4215: NO_STR
4216: NEIGHBOR_STR
4217: NEIGHBOR_ADDR_STR2
4218: "allow local ASN appears in aspath attribute\n")
4219: {
4220: int ret;
4221: struct peer *peer;
4222:
4223: peer = peer_and_group_lookup_vty (vty, argv[0]);
4224: if (! peer)
4225: return CMD_WARNING;
4226:
4227: ret = peer_allowas_in_unset (peer, bgp_node_afi (vty), bgp_node_safi (vty));
4228:
4229: return bgp_vty_return (vty, ret);
4230: }
4231:
4232: DEFUN (neighbor_ttl_security,
4233: neighbor_ttl_security_cmd,
4234: NEIGHBOR_CMD2 "ttl-security hops <1-254>",
4235: NEIGHBOR_STR
4236: NEIGHBOR_ADDR_STR2
4237: "Specify the maximum number of hops to the BGP peer\n")
4238: {
4239: struct peer *peer;
4240: int gtsm_hops;
4241:
4242: peer = peer_and_group_lookup_vty (vty, argv[0]);
4243: if (! peer)
4244: return CMD_WARNING;
4245:
4246: VTY_GET_INTEGER_RANGE ("", gtsm_hops, argv[1], 1, 254);
4247:
4248: return bgp_vty_return (vty, peer_ttl_security_hops_set (peer, gtsm_hops));
4249: }
4250:
4251: DEFUN (no_neighbor_ttl_security,
4252: no_neighbor_ttl_security_cmd,
4253: NO_NEIGHBOR_CMD2 "ttl-security hops <1-254>",
4254: NO_STR
4255: NEIGHBOR_STR
4256: NEIGHBOR_ADDR_STR2
4257: "Specify the maximum number of hops to the BGP peer\n")
4258: {
4259: struct peer *peer;
4260:
4261: peer = peer_and_group_lookup_vty (vty, argv[0]);
4262: if (! peer)
4263: return CMD_WARNING;
4264:
4265: return bgp_vty_return (vty, peer_ttl_security_hops_unset (peer));
4266: }
4267:
4268: /* Address family configuration. */
4269: DEFUN (address_family_ipv4,
4270: address_family_ipv4_cmd,
4271: "address-family ipv4",
4272: "Enter Address Family command mode\n"
4273: "Address family\n")
4274: {
4275: vty->node = BGP_IPV4_NODE;
4276: return CMD_SUCCESS;
4277: }
4278:
4279: DEFUN (address_family_ipv4_safi,
4280: address_family_ipv4_safi_cmd,
4281: "address-family ipv4 (unicast|multicast)",
4282: "Enter Address Family command mode\n"
4283: "Address family\n"
4284: "Address Family modifier\n"
4285: "Address Family modifier\n")
4286: {
4287: if (strncmp (argv[0], "m", 1) == 0)
4288: vty->node = BGP_IPV4M_NODE;
4289: else
4290: vty->node = BGP_IPV4_NODE;
4291:
4292: return CMD_SUCCESS;
4293: }
4294:
4295: DEFUN (address_family_ipv6,
4296: address_family_ipv6_cmd,
4297: "address-family ipv6",
4298: "Enter Address Family command mode\n"
4299: "Address family\n")
4300: {
4301: vty->node = BGP_IPV6_NODE;
4302: return CMD_SUCCESS;
4303: }
4304:
4305: DEFUN (address_family_ipv6_safi,
4306: address_family_ipv6_safi_cmd,
4307: "address-family ipv6 (unicast|multicast)",
4308: "Enter Address Family command mode\n"
4309: "Address family\n"
4310: "Address Family modifier\n"
4311: "Address Family modifier\n")
4312: {
4313: if (strncmp (argv[0], "m", 1) == 0)
4314: vty->node = BGP_IPV6M_NODE;
4315: else
4316: vty->node = BGP_IPV6_NODE;
4317:
4318: return CMD_SUCCESS;
4319: }
4320:
4321: DEFUN (address_family_vpnv4,
4322: address_family_vpnv4_cmd,
4323: "address-family vpnv4",
4324: "Enter Address Family command mode\n"
4325: "Address family\n")
4326: {
4327: vty->node = BGP_VPNV4_NODE;
4328: return CMD_SUCCESS;
4329: }
4330:
4331: ALIAS (address_family_vpnv4,
4332: address_family_vpnv4_unicast_cmd,
4333: "address-family vpnv4 unicast",
4334: "Enter Address Family command mode\n"
4335: "Address family\n"
4336: "Address Family Modifier\n")
4337:
4338: DEFUN (address_family_vpnv6,
4339: address_family_vpnv6_cmd,
4340: "address-family vpnv6",
4341: "Enter Address Family command mode\n"
4342: "Address family\n")
4343: {
4344: vty->node = BGP_VPNV6_NODE;
4345: return CMD_SUCCESS;
4346: }
4347:
4348: ALIAS (address_family_vpnv6,
4349: address_family_vpnv6_unicast_cmd,
4350: "address-family vpnv6 unicast",
4351: "Enter Address Family command mode\n"
4352: "Address family\n"
4353: "Address Family Modifier\n")
4354:
4355: DEFUN (address_family_encap,
4356: address_family_encap_cmd,
4357: "address-family encap",
4358: "Enter Address Family command mode\n"
4359: "Address family\n")
4360: {
4361: vty->node = BGP_ENCAP_NODE;
4362: return CMD_SUCCESS;
4363: }
4364:
4365: ALIAS (address_family_encap,
4366: address_family_encapv4_cmd,
4367: "address-family encapv4",
4368: "Enter Address Family command mode\n"
4369: "Address family\n")
4370:
4371: DEFUN (address_family_encapv6,
4372: address_family_encapv6_cmd,
4373: "address-family encapv6",
4374: "Enter Address Family command mode\n"
4375: "Address family\n")
4376: {
4377: vty->node = BGP_ENCAPV6_NODE;
4378: return CMD_SUCCESS;
4379: }
4380:
4381: DEFUN (exit_address_family,
4382: exit_address_family_cmd,
4383: "exit-address-family",
4384: "Exit from Address Family configuration mode\n")
4385: {
4386: /* should match list in command.c:config_exit */
4387: if (vty->node == BGP_IPV4_NODE
4388: || vty->node == BGP_ENCAP_NODE
4389: || vty->node == BGP_ENCAPV6_NODE
4390: || vty->node == BGP_IPV4M_NODE
4391: || vty->node == BGP_VPNV4_NODE
4392: || vty->node == BGP_VPNV6_NODE
4393: || vty->node == BGP_IPV6_NODE
4394: || vty->node == BGP_IPV6M_NODE)
4395: vty->node = BGP_NODE;
4396: return CMD_SUCCESS;
4397: }
4398:
4399: /* BGP clear sort. */
4400: enum clear_sort
4401: {
4402: clear_all,
4403: clear_peer,
4404: clear_group,
4405: clear_external,
4406: clear_as
4407: };
4408:
4409: static void
4410: bgp_clear_vty_error (struct vty *vty, struct peer *peer, afi_t afi,
4411: safi_t safi, int error)
4412: {
4413: switch (error)
4414: {
4415: case BGP_ERR_AF_UNCONFIGURED:
4416: vty_out (vty,
4417: "%%BGP: Enable %s %s address family for the neighbor %s%s",
4418: afi == AFI_IP6 ? "IPv6" : safi == SAFI_MPLS_VPN ? "VPNv4" : "IPv4",
4419: safi == SAFI_MULTICAST ? "Multicast" : "Unicast",
4420: peer->host, VTY_NEWLINE);
4421: break;
4422: case BGP_ERR_SOFT_RECONFIG_UNCONFIGURED:
4423: vty_out (vty, "%%BGP: Inbound soft reconfig for %s not possible as it%s has neither refresh capability, nor inbound soft reconfig%s", peer->host, VTY_NEWLINE, VTY_NEWLINE);
4424: break;
4425: default:
4426: break;
4427: }
4428: }
4429:
4430: /* `clear ip bgp' functions. */
4431: static int
4432: bgp_clear (struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi,
4433: enum clear_sort sort,enum bgp_clear_type stype, const char *arg)
4434: {
4435: int ret;
4436: struct peer *peer;
4437: struct listnode *node, *nnode;
4438:
4439: /* Clear all neighbors. */
4440: if (sort == clear_all)
4441: {
4442: for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
4443: {
4444: if (stype == BGP_CLEAR_SOFT_NONE)
4445: ret = peer_clear (peer);
4446: else
4447: ret = peer_clear_soft (peer, afi, safi, stype);
4448:
4449: if (ret < 0)
4450: bgp_clear_vty_error (vty, peer, afi, safi, ret);
4451: }
4452: return CMD_SUCCESS;
4453: }
4454:
4455: /* Clear specified neighbors. */
4456: if (sort == clear_peer)
4457: {
4458: union sockunion su;
4459: int ret;
4460:
4461: /* Make sockunion for lookup. */
4462: ret = str2sockunion (arg, &su);
4463: if (ret < 0)
4464: {
4465: vty_out (vty, "Malformed address: %s%s", arg, VTY_NEWLINE);
4466: return CMD_WARNING;
4467: }
4468: peer = peer_lookup (bgp, &su);
4469: if (! peer)
4470: {
4471: vty_out (vty, "%%BGP: Unknown neighbor - \"%s\"%s", arg, VTY_NEWLINE);
4472: return CMD_WARNING;
4473: }
4474:
4475: if (stype == BGP_CLEAR_SOFT_NONE)
4476: ret = peer_clear (peer);
4477: else
4478: ret = peer_clear_soft (peer, afi, safi, stype);
4479:
4480: if (ret < 0)
4481: bgp_clear_vty_error (vty, peer, afi, safi, ret);
4482:
4483: return CMD_SUCCESS;
4484: }
4485:
4486: /* Clear all peer-group members. */
4487: if (sort == clear_group)
4488: {
4489: struct peer_group *group;
4490:
4491: group = peer_group_lookup (bgp, arg);
4492: if (! group)
4493: {
4494: vty_out (vty, "%%BGP: No such peer-group %s%s", arg, VTY_NEWLINE);
4495: return CMD_WARNING;
4496: }
4497:
4498: for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
4499: {
4500: if (stype == BGP_CLEAR_SOFT_NONE)
4501: {
4502: ret = peer_clear (peer);
4503: continue;
4504: }
4505:
4506: if (! peer->af_group[afi][safi])
4507: continue;
4508:
4509: ret = peer_clear_soft (peer, afi, safi, stype);
4510:
4511: if (ret < 0)
4512: bgp_clear_vty_error (vty, peer, afi, safi, ret);
4513: }
4514: return CMD_SUCCESS;
4515: }
4516:
4517: if (sort == clear_external)
4518: {
4519: for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
4520: {
4521: if (peer->sort == BGP_PEER_IBGP)
4522: continue;
4523:
4524: if (stype == BGP_CLEAR_SOFT_NONE)
4525: ret = peer_clear (peer);
4526: else
4527: ret = peer_clear_soft (peer, afi, safi, stype);
4528:
4529: if (ret < 0)
4530: bgp_clear_vty_error (vty, peer, afi, safi, ret);
4531: }
4532: return CMD_SUCCESS;
4533: }
4534:
4535: if (sort == clear_as)
4536: {
4537: as_t as;
4538: int find = 0;
4539:
4540: VTY_GET_INTEGER_RANGE ("AS", as, arg, 1, BGP_AS4_MAX);
4541:
4542: for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
4543: {
4544: if (peer->as != as)
4545: continue;
4546:
4547: find = 1;
4548: if (stype == BGP_CLEAR_SOFT_NONE)
4549: ret = peer_clear (peer);
4550: else
4551: ret = peer_clear_soft (peer, afi, safi, stype);
4552:
4553: if (ret < 0)
4554: bgp_clear_vty_error (vty, peer, afi, safi, ret);
4555: }
4556: if (! find)
4557: vty_out (vty, "%%BGP: No peer is configured with AS %s%s", arg,
4558: VTY_NEWLINE);
4559: return CMD_SUCCESS;
4560: }
4561:
4562: return CMD_SUCCESS;
4563: }
4564:
4565: static int
4566: bgp_clear_vty (struct vty *vty, const char *name, afi_t afi, safi_t safi,
4567: enum clear_sort sort, enum bgp_clear_type stype,
4568: const char *arg)
4569: {
4570: struct bgp *bgp;
4571:
4572: /* BGP structure lookup. */
4573: if (name)
4574: {
4575: bgp = bgp_lookup_by_name (name);
4576: if (bgp == NULL)
4577: {
4578: vty_out (vty, "Can't find BGP view %s%s", name, VTY_NEWLINE);
4579: return CMD_WARNING;
4580: }
4581: }
4582: else
4583: {
4584: bgp = bgp_get_default ();
4585: if (bgp == NULL)
4586: {
4587: vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
4588: return CMD_WARNING;
4589: }
4590: }
4591:
4592: return bgp_clear (vty, bgp, afi, safi, sort, stype, arg);
4593: }
4594:
4595: DEFUN (clear_ip_bgp_all,
4596: clear_ip_bgp_all_cmd,
4597: "clear ip bgp *",
4598: CLEAR_STR
4599: IP_STR
4600: BGP_STR
4601: "Clear all peers\n")
4602: {
4603: if (argc == 1)
4604: return bgp_clear_vty (vty, argv[0], 0, 0, clear_all, BGP_CLEAR_SOFT_NONE, NULL);
4605:
4606: return bgp_clear_vty (vty, NULL, 0, 0, clear_all, BGP_CLEAR_SOFT_NONE, NULL);
4607: }
4608:
4609: ALIAS (clear_ip_bgp_all,
4610: clear_bgp_all_cmd,
4611: "clear bgp *",
4612: CLEAR_STR
4613: BGP_STR
4614: "Clear all peers\n")
4615:
4616: ALIAS (clear_ip_bgp_all,
4617: clear_bgp_ipv6_all_cmd,
4618: "clear bgp ipv6 *",
4619: CLEAR_STR
4620: BGP_STR
4621: "Address family\n"
4622: "Clear all peers\n")
4623:
4624: ALIAS (clear_ip_bgp_all,
4625: clear_ip_bgp_instance_all_cmd,
4626: "clear ip bgp view WORD *",
4627: CLEAR_STR
4628: IP_STR
4629: BGP_STR
4630: "BGP view\n"
4631: "view name\n"
4632: "Clear all peers\n")
4633:
4634: ALIAS (clear_ip_bgp_all,
4635: clear_bgp_instance_all_cmd,
4636: "clear bgp view WORD *",
4637: CLEAR_STR
4638: BGP_STR
4639: "BGP view\n"
4640: "view name\n"
4641: "Clear all peers\n")
4642:
4643: DEFUN (clear_ip_bgp_peer,
4644: clear_ip_bgp_peer_cmd,
4645: "clear ip bgp (A.B.C.D|X:X::X:X)",
4646: CLEAR_STR
4647: IP_STR
4648: BGP_STR
4649: "BGP neighbor IP address to clear\n"
4650: "BGP IPv6 neighbor to clear\n")
4651: {
4652: return bgp_clear_vty (vty, NULL, 0, 0, clear_peer, BGP_CLEAR_SOFT_NONE, argv[0]);
4653: }
4654:
4655: ALIAS (clear_ip_bgp_peer,
4656: clear_bgp_peer_cmd,
4657: "clear bgp (A.B.C.D|X:X::X:X)",
4658: CLEAR_STR
4659: BGP_STR
4660: "BGP neighbor address to clear\n"
4661: "BGP IPv6 neighbor to clear\n")
4662:
4663: ALIAS (clear_ip_bgp_peer,
4664: clear_bgp_ipv6_peer_cmd,
4665: "clear bgp ipv6 (A.B.C.D|X:X::X:X)",
4666: CLEAR_STR
4667: BGP_STR
4668: "Address family\n"
4669: "BGP neighbor address to clear\n"
4670: "BGP IPv6 neighbor to clear\n")
4671:
4672: DEFUN (clear_ip_bgp_peer_group,
4673: clear_ip_bgp_peer_group_cmd,
4674: "clear ip bgp peer-group WORD",
4675: CLEAR_STR
4676: IP_STR
4677: BGP_STR
4678: "Clear all members of peer-group\n"
4679: "BGP peer-group name\n")
4680: {
4681: return bgp_clear_vty (vty, NULL, 0, 0, clear_group, BGP_CLEAR_SOFT_NONE, argv[0]);
4682: }
4683:
4684: ALIAS (clear_ip_bgp_peer_group,
4685: clear_bgp_peer_group_cmd,
4686: "clear bgp peer-group WORD",
4687: CLEAR_STR
4688: BGP_STR
4689: "Clear all members of peer-group\n"
4690: "BGP peer-group name\n")
4691:
4692: ALIAS (clear_ip_bgp_peer_group,
4693: clear_bgp_ipv6_peer_group_cmd,
4694: "clear bgp ipv6 peer-group WORD",
4695: CLEAR_STR
4696: BGP_STR
4697: "Address family\n"
4698: "Clear all members of peer-group\n"
4699: "BGP peer-group name\n")
4700:
4701: DEFUN (clear_ip_bgp_external,
4702: clear_ip_bgp_external_cmd,
4703: "clear ip bgp external",
4704: CLEAR_STR
4705: IP_STR
4706: BGP_STR
4707: "Clear all external peers\n")
4708: {
4709: return bgp_clear_vty (vty, NULL, 0, 0, clear_external, BGP_CLEAR_SOFT_NONE, NULL);
4710: }
4711:
4712: ALIAS (clear_ip_bgp_external,
4713: clear_bgp_external_cmd,
4714: "clear bgp external",
4715: CLEAR_STR
4716: BGP_STR
4717: "Clear all external peers\n")
4718:
4719: ALIAS (clear_ip_bgp_external,
4720: clear_bgp_ipv6_external_cmd,
4721: "clear bgp ipv6 external",
4722: CLEAR_STR
4723: BGP_STR
4724: "Address family\n"
4725: "Clear all external peers\n")
4726:
4727: DEFUN (clear_ip_bgp_as,
4728: clear_ip_bgp_as_cmd,
4729: "clear ip bgp " CMD_AS_RANGE,
4730: CLEAR_STR
4731: IP_STR
4732: BGP_STR
4733: "Clear peers with the AS number\n")
4734: {
4735: return bgp_clear_vty (vty, NULL, 0, 0, clear_as, BGP_CLEAR_SOFT_NONE, argv[0]);
4736: }
4737:
4738: ALIAS (clear_ip_bgp_as,
4739: clear_bgp_as_cmd,
4740: "clear bgp " CMD_AS_RANGE,
4741: CLEAR_STR
4742: BGP_STR
4743: "Clear peers with the AS number\n")
4744:
4745: ALIAS (clear_ip_bgp_as,
4746: clear_bgp_ipv6_as_cmd,
4747: "clear bgp ipv6 " CMD_AS_RANGE,
4748: CLEAR_STR
4749: BGP_STR
4750: "Address family\n"
4751: "Clear peers with the AS number\n")
4752:
4753: /* Outbound soft-reconfiguration */
4754: DEFUN (clear_ip_bgp_all_soft_out,
4755: clear_ip_bgp_all_soft_out_cmd,
4756: "clear ip bgp * soft out",
4757: CLEAR_STR
4758: IP_STR
4759: BGP_STR
4760: "Clear all peers\n"
4761: "Soft reconfig\n"
4762: "Soft reconfig outbound update\n")
4763: {
4764: if (argc == 1)
4765: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
4766: BGP_CLEAR_SOFT_OUT, NULL);
4767:
4768: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
4769: BGP_CLEAR_SOFT_OUT, NULL);
4770: }
4771:
4772: ALIAS (clear_ip_bgp_all_soft_out,
4773: clear_ip_bgp_all_out_cmd,
4774: "clear ip bgp * out",
4775: CLEAR_STR
4776: IP_STR
4777: BGP_STR
4778: "Clear all peers\n"
4779: "Soft reconfig outbound update\n")
4780:
4781: ALIAS (clear_ip_bgp_all_soft_out,
4782: clear_ip_bgp_instance_all_soft_out_cmd,
4783: "clear ip bgp view WORD * soft out",
4784: CLEAR_STR
4785: IP_STR
4786: BGP_STR
4787: "BGP view\n"
4788: "view name\n"
4789: "Clear all peers\n"
4790: "Soft reconfig\n"
4791: "Soft reconfig outbound update\n")
4792:
4793: DEFUN (clear_ip_bgp_all_ipv4_soft_out,
4794: clear_ip_bgp_all_ipv4_soft_out_cmd,
4795: "clear ip bgp * ipv4 (unicast|multicast) soft out",
4796: CLEAR_STR
4797: IP_STR
4798: BGP_STR
4799: "Clear all peers\n"
4800: "Address family\n"
4801: "Address Family modifier\n"
4802: "Address Family modifier\n"
4803: "Soft reconfig\n"
4804: "Soft reconfig outbound update\n")
4805: {
4806: if (strncmp (argv[0], "m", 1) == 0)
4807: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
4808: BGP_CLEAR_SOFT_OUT, NULL);
4809:
4810: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
4811: BGP_CLEAR_SOFT_OUT, NULL);
4812: }
4813:
4814: ALIAS (clear_ip_bgp_all_ipv4_soft_out,
4815: clear_ip_bgp_all_ipv4_out_cmd,
4816: "clear ip bgp * ipv4 (unicast|multicast) out",
4817: CLEAR_STR
4818: IP_STR
4819: BGP_STR
4820: "Clear all peers\n"
4821: "Address family\n"
4822: "Address Family modifier\n"
4823: "Address Family modifier\n"
4824: "Soft reconfig outbound update\n")
4825:
4826: DEFUN (clear_ip_bgp_instance_all_ipv4_soft_out,
4827: clear_ip_bgp_instance_all_ipv4_soft_out_cmd,
4828: "clear ip bgp view WORD * ipv4 (unicast|multicast) soft out",
4829: CLEAR_STR
4830: IP_STR
4831: BGP_STR
4832: "BGP view\n"
4833: "view name\n"
4834: "Clear all peers\n"
4835: "Address family\n"
4836: "Address Family modifier\n"
4837: "Address Family modifier\n"
4838: "Soft reconfig outbound update\n")
4839: {
4840: if (strncmp (argv[1], "m", 1) == 0)
4841: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
4842: BGP_CLEAR_SOFT_OUT, NULL);
4843:
4844: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
4845: BGP_CLEAR_SOFT_OUT, NULL);
4846: }
4847:
4848: DEFUN (clear_ip_bgp_all_vpnv4_soft_out,
4849: clear_ip_bgp_all_vpnv4_soft_out_cmd,
4850: "clear ip bgp * vpnv4 unicast soft out",
4851: CLEAR_STR
4852: IP_STR
4853: BGP_STR
4854: "Clear all peers\n"
4855: "Address family\n"
4856: "Address Family Modifier\n"
4857: "Soft reconfig\n"
4858: "Soft reconfig outbound update\n")
4859: {
4860: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
4861: BGP_CLEAR_SOFT_OUT, NULL);
4862: }
4863:
4864: ALIAS (clear_ip_bgp_all_vpnv4_soft_out,
4865: clear_ip_bgp_all_vpnv4_out_cmd,
4866: "clear ip bgp * vpnv4 unicast out",
4867: CLEAR_STR
4868: IP_STR
4869: BGP_STR
4870: "Clear all peers\n"
4871: "Address family\n"
4872: "Address Family Modifier\n"
4873: "Soft reconfig outbound update\n")
4874:
4875: DEFUN (clear_ip_bgp_all_encap_soft_out,
4876: clear_ip_bgp_all_encap_soft_out_cmd,
4877: "clear ip bgp * encap unicast soft out",
4878: CLEAR_STR
4879: IP_STR
4880: BGP_STR
4881: "Clear all peers\n"
4882: "Address family\n"
4883: "Address Family Modifier\n"
4884: "Soft reconfig\n"
4885: "Soft reconfig outbound update\n")
4886: {
4887: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all,
4888: BGP_CLEAR_SOFT_OUT, NULL);
4889: }
4890:
4891: ALIAS (clear_ip_bgp_all_encap_soft_out,
4892: clear_ip_bgp_all_encap_out_cmd,
4893: "clear ip bgp * encap unicast out",
4894: CLEAR_STR
4895: IP_STR
4896: BGP_STR
4897: "Clear all peers\n"
4898: "Address family\n"
4899: "Address Family Modifier\n"
4900: "Soft reconfig outbound update\n")
4901:
4902: DEFUN (clear_bgp_all_soft_out,
4903: clear_bgp_all_soft_out_cmd,
4904: "clear bgp * soft out",
4905: CLEAR_STR
4906: BGP_STR
4907: "Clear all peers\n"
4908: "Soft reconfig\n"
4909: "Soft reconfig outbound update\n")
4910: {
4911: if (argc == 1)
4912: return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
4913: BGP_CLEAR_SOFT_OUT, NULL);
4914:
4915: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
4916: BGP_CLEAR_SOFT_OUT, NULL);
4917: }
4918:
4919: ALIAS (clear_bgp_all_soft_out,
4920: clear_bgp_instance_all_soft_out_cmd,
4921: "clear bgp view WORD * soft out",
4922: CLEAR_STR
4923: BGP_STR
4924: "BGP view\n"
4925: "view name\n"
4926: "Clear all peers\n"
4927: "Soft reconfig\n"
4928: "Soft reconfig outbound update\n")
4929:
4930: ALIAS (clear_bgp_all_soft_out,
4931: clear_bgp_all_out_cmd,
4932: "clear bgp * out",
4933: CLEAR_STR
4934: BGP_STR
4935: "Clear all peers\n"
4936: "Soft reconfig outbound update\n")
4937:
4938: ALIAS (clear_bgp_all_soft_out,
4939: clear_bgp_ipv6_all_soft_out_cmd,
4940: "clear bgp ipv6 * soft out",
4941: CLEAR_STR
4942: BGP_STR
4943: "Address family\n"
4944: "Clear all peers\n"
4945: "Soft reconfig\n"
4946: "Soft reconfig outbound update\n")
4947:
4948: ALIAS (clear_bgp_all_soft_out,
4949: clear_bgp_ipv6_all_out_cmd,
4950: "clear bgp ipv6 * out",
4951: CLEAR_STR
4952: BGP_STR
4953: "Address family\n"
4954: "Clear all peers\n"
4955: "Soft reconfig outbound update\n")
4956:
4957: DEFUN (clear_ip_bgp_peer_soft_out,
4958: clear_ip_bgp_peer_soft_out_cmd,
4959: "clear ip bgp A.B.C.D soft out",
4960: CLEAR_STR
4961: IP_STR
4962: BGP_STR
4963: "BGP neighbor address to clear\n"
4964: "Soft reconfig\n"
4965: "Soft reconfig outbound update\n")
4966: {
4967: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
4968: BGP_CLEAR_SOFT_OUT, argv[0]);
4969: }
4970:
4971: ALIAS (clear_ip_bgp_peer_soft_out,
4972: clear_ip_bgp_peer_out_cmd,
4973: "clear ip bgp A.B.C.D out",
4974: CLEAR_STR
4975: IP_STR
4976: BGP_STR
4977: "BGP neighbor address to clear\n"
4978: "Soft reconfig outbound update\n")
4979:
4980: DEFUN (clear_ip_bgp_peer_ipv4_soft_out,
4981: clear_ip_bgp_peer_ipv4_soft_out_cmd,
4982: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft out",
4983: CLEAR_STR
4984: IP_STR
4985: BGP_STR
4986: "BGP neighbor address to clear\n"
4987: "Address family\n"
4988: "Address Family modifier\n"
4989: "Address Family modifier\n"
4990: "Soft reconfig\n"
4991: "Soft reconfig outbound update\n")
4992: {
4993: if (strncmp (argv[1], "m", 1) == 0)
4994: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
4995: BGP_CLEAR_SOFT_OUT, argv[0]);
4996:
4997: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
4998: BGP_CLEAR_SOFT_OUT, argv[0]);
4999: }
5000:
5001: ALIAS (clear_ip_bgp_peer_ipv4_soft_out,
5002: clear_ip_bgp_peer_ipv4_out_cmd,
5003: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) out",
5004: CLEAR_STR
5005: IP_STR
5006: BGP_STR
5007: "BGP neighbor address to clear\n"
5008: "Address family\n"
5009: "Address Family modifier\n"
5010: "Address Family modifier\n"
5011: "Soft reconfig outbound update\n")
5012:
5013: DEFUN (clear_ip_bgp_peer_vpnv4_soft_out,
5014: clear_ip_bgp_peer_vpnv4_soft_out_cmd,
5015: "clear ip bgp A.B.C.D vpnv4 unicast soft out",
5016: CLEAR_STR
5017: IP_STR
5018: BGP_STR
5019: "BGP neighbor address to clear\n"
5020: "Address family\n"
5021: "Address Family Modifier\n"
5022: "Soft reconfig\n"
5023: "Soft reconfig outbound update\n")
5024: {
5025: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
5026: BGP_CLEAR_SOFT_OUT, argv[0]);
5027: }
5028:
5029: ALIAS (clear_ip_bgp_peer_vpnv4_soft_out,
5030: clear_ip_bgp_peer_vpnv4_out_cmd,
5031: "clear ip bgp A.B.C.D vpnv4 unicast out",
5032: CLEAR_STR
5033: IP_STR
5034: BGP_STR
5035: "BGP neighbor address to clear\n"
5036: "Address family\n"
5037: "Address Family Modifier\n"
5038: "Soft reconfig outbound update\n")
5039:
5040: DEFUN (clear_ip_bgp_peer_encap_soft_out,
5041: clear_ip_bgp_peer_encap_soft_out_cmd,
5042: "clear ip bgp A.B.C.D encap unicast soft out",
5043: CLEAR_STR
5044: IP_STR
5045: BGP_STR
5046: "BGP neighbor address to clear\n"
5047: "Address family\n"
5048: "Address Family Modifier\n"
5049: "Soft reconfig\n"
5050: "Soft reconfig outbound update\n")
5051: {
5052: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer,
5053: BGP_CLEAR_SOFT_OUT, argv[0]);
5054: }
5055:
5056: ALIAS (clear_ip_bgp_peer_encap_soft_out,
5057: clear_ip_bgp_peer_encap_out_cmd,
5058: "clear ip bgp A.B.C.D encap unicast out",
5059: CLEAR_STR
5060: IP_STR
5061: BGP_STR
5062: "BGP neighbor address to clear\n"
5063: "Address family\n"
5064: "Address Family Modifier\n"
5065: "Soft reconfig outbound update\n")
5066:
5067: DEFUN (clear_bgp_peer_soft_out,
5068: clear_bgp_peer_soft_out_cmd,
5069: "clear bgp (A.B.C.D|X:X::X:X) soft out",
5070: CLEAR_STR
5071: BGP_STR
5072: "BGP neighbor address to clear\n"
5073: "BGP IPv6 neighbor to clear\n"
5074: "Soft reconfig\n"
5075: "Soft reconfig outbound update\n")
5076: {
5077: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
5078: BGP_CLEAR_SOFT_OUT, argv[0]);
5079: }
5080:
5081: ALIAS (clear_bgp_peer_soft_out,
5082: clear_bgp_ipv6_peer_soft_out_cmd,
5083: "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft out",
5084: CLEAR_STR
5085: BGP_STR
5086: "Address family\n"
5087: "BGP neighbor address to clear\n"
5088: "BGP IPv6 neighbor to clear\n"
5089: "Soft reconfig\n"
5090: "Soft reconfig outbound update\n")
5091:
5092: ALIAS (clear_bgp_peer_soft_out,
5093: clear_bgp_peer_out_cmd,
5094: "clear bgp (A.B.C.D|X:X::X:X) out",
5095: CLEAR_STR
5096: BGP_STR
5097: "BGP neighbor address to clear\n"
5098: "BGP IPv6 neighbor to clear\n"
5099: "Soft reconfig outbound update\n")
5100:
5101: ALIAS (clear_bgp_peer_soft_out,
5102: clear_bgp_ipv6_peer_out_cmd,
5103: "clear bgp ipv6 (A.B.C.D|X:X::X:X) out",
5104: CLEAR_STR
5105: BGP_STR
5106: "Address family\n"
5107: "BGP neighbor address to clear\n"
5108: "BGP IPv6 neighbor to clear\n"
5109: "Soft reconfig outbound update\n")
5110:
5111: DEFUN (clear_ip_bgp_peer_group_soft_out,
5112: clear_ip_bgp_peer_group_soft_out_cmd,
5113: "clear ip bgp peer-group WORD soft out",
5114: CLEAR_STR
5115: IP_STR
5116: BGP_STR
5117: "Clear all members of peer-group\n"
5118: "BGP peer-group name\n"
5119: "Soft reconfig\n"
5120: "Soft reconfig outbound update\n")
5121: {
5122: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
5123: BGP_CLEAR_SOFT_OUT, argv[0]);
5124: }
5125:
5126: ALIAS (clear_ip_bgp_peer_group_soft_out,
5127: clear_ip_bgp_peer_group_out_cmd,
5128: "clear ip bgp peer-group WORD out",
5129: CLEAR_STR
5130: IP_STR
5131: BGP_STR
5132: "Clear all members of peer-group\n"
5133: "BGP peer-group name\n"
5134: "Soft reconfig outbound update\n")
5135:
5136: DEFUN (clear_ip_bgp_peer_group_ipv4_soft_out,
5137: clear_ip_bgp_peer_group_ipv4_soft_out_cmd,
5138: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft out",
5139: CLEAR_STR
5140: IP_STR
5141: BGP_STR
5142: "Clear all members of peer-group\n"
5143: "BGP peer-group name\n"
5144: "Address family\n"
5145: "Address Family modifier\n"
5146: "Address Family modifier\n"
5147: "Soft reconfig\n"
5148: "Soft reconfig outbound update\n")
5149: {
5150: if (strncmp (argv[1], "m", 1) == 0)
5151: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
5152: BGP_CLEAR_SOFT_OUT, argv[0]);
5153:
5154: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
5155: BGP_CLEAR_SOFT_OUT, argv[0]);
5156: }
5157:
5158: ALIAS (clear_ip_bgp_peer_group_ipv4_soft_out,
5159: clear_ip_bgp_peer_group_ipv4_out_cmd,
5160: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) out",
5161: CLEAR_STR
5162: IP_STR
5163: BGP_STR
5164: "Clear all members of peer-group\n"
5165: "BGP peer-group name\n"
5166: "Address family\n"
5167: "Address Family modifier\n"
5168: "Address Family modifier\n"
5169: "Soft reconfig outbound update\n")
5170:
5171: DEFUN (clear_bgp_peer_group_soft_out,
5172: clear_bgp_peer_group_soft_out_cmd,
5173: "clear bgp peer-group WORD soft out",
5174: CLEAR_STR
5175: BGP_STR
5176: "Clear all members of peer-group\n"
5177: "BGP peer-group name\n"
5178: "Soft reconfig\n"
5179: "Soft reconfig outbound update\n")
5180: {
5181: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
5182: BGP_CLEAR_SOFT_OUT, argv[0]);
5183: }
5184:
5185: ALIAS (clear_bgp_peer_group_soft_out,
5186: clear_bgp_ipv6_peer_group_soft_out_cmd,
5187: "clear bgp ipv6 peer-group WORD soft out",
5188: CLEAR_STR
5189: BGP_STR
5190: "Address family\n"
5191: "Clear all members of peer-group\n"
5192: "BGP peer-group name\n"
5193: "Soft reconfig\n"
5194: "Soft reconfig outbound update\n")
5195:
5196: ALIAS (clear_bgp_peer_group_soft_out,
5197: clear_bgp_peer_group_out_cmd,
5198: "clear bgp peer-group WORD out",
5199: CLEAR_STR
5200: BGP_STR
5201: "Clear all members of peer-group\n"
5202: "BGP peer-group name\n"
5203: "Soft reconfig outbound update\n")
5204:
5205: ALIAS (clear_bgp_peer_group_soft_out,
5206: clear_bgp_ipv6_peer_group_out_cmd,
5207: "clear bgp ipv6 peer-group WORD out",
5208: CLEAR_STR
5209: BGP_STR
5210: "Address family\n"
5211: "Clear all members of peer-group\n"
5212: "BGP peer-group name\n"
5213: "Soft reconfig outbound update\n")
5214:
5215: DEFUN (clear_ip_bgp_external_soft_out,
5216: clear_ip_bgp_external_soft_out_cmd,
5217: "clear ip bgp external soft out",
5218: CLEAR_STR
5219: IP_STR
5220: BGP_STR
5221: "Clear all external peers\n"
5222: "Soft reconfig\n"
5223: "Soft reconfig outbound update\n")
5224: {
5225: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
5226: BGP_CLEAR_SOFT_OUT, NULL);
5227: }
5228:
5229: ALIAS (clear_ip_bgp_external_soft_out,
5230: clear_ip_bgp_external_out_cmd,
5231: "clear ip bgp external out",
5232: CLEAR_STR
5233: IP_STR
5234: BGP_STR
5235: "Clear all external peers\n"
5236: "Soft reconfig outbound update\n")
5237:
5238: DEFUN (clear_ip_bgp_external_ipv4_soft_out,
5239: clear_ip_bgp_external_ipv4_soft_out_cmd,
5240: "clear ip bgp external ipv4 (unicast|multicast) soft out",
5241: CLEAR_STR
5242: IP_STR
5243: BGP_STR
5244: "Clear all external peers\n"
5245: "Address family\n"
5246: "Address Family modifier\n"
5247: "Address Family modifier\n"
5248: "Soft reconfig\n"
5249: "Soft reconfig outbound update\n")
5250: {
5251: if (strncmp (argv[0], "m", 1) == 0)
5252: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
5253: BGP_CLEAR_SOFT_OUT, NULL);
5254:
5255: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
5256: BGP_CLEAR_SOFT_OUT, NULL);
5257: }
5258:
5259: ALIAS (clear_ip_bgp_external_ipv4_soft_out,
5260: clear_ip_bgp_external_ipv4_out_cmd,
5261: "clear ip bgp external ipv4 (unicast|multicast) out",
5262: CLEAR_STR
5263: IP_STR
5264: BGP_STR
5265: "Clear all external peers\n"
5266: "Address family\n"
5267: "Address Family modifier\n"
5268: "Address Family modifier\n"
5269: "Soft reconfig outbound update\n")
5270:
5271: DEFUN (clear_bgp_external_soft_out,
5272: clear_bgp_external_soft_out_cmd,
5273: "clear bgp external soft out",
5274: CLEAR_STR
5275: BGP_STR
5276: "Clear all external peers\n"
5277: "Soft reconfig\n"
5278: "Soft reconfig outbound update\n")
5279: {
5280: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
5281: BGP_CLEAR_SOFT_OUT, NULL);
5282: }
5283:
5284: ALIAS (clear_bgp_external_soft_out,
5285: clear_bgp_ipv6_external_soft_out_cmd,
5286: "clear bgp ipv6 external soft out",
5287: CLEAR_STR
5288: BGP_STR
5289: "Address family\n"
5290: "Clear all external peers\n"
5291: "Soft reconfig\n"
5292: "Soft reconfig outbound update\n")
5293:
5294: ALIAS (clear_bgp_external_soft_out,
5295: clear_bgp_external_out_cmd,
5296: "clear bgp external out",
5297: CLEAR_STR
5298: BGP_STR
5299: "Clear all external peers\n"
5300: "Soft reconfig outbound update\n")
5301:
5302: ALIAS (clear_bgp_external_soft_out,
5303: clear_bgp_ipv6_external_out_cmd,
5304: "clear bgp ipv6 external WORD out",
5305: CLEAR_STR
5306: BGP_STR
5307: "Address family\n"
5308: "Clear all external peers\n"
5309: "Soft reconfig outbound update\n")
5310:
5311: DEFUN (clear_ip_bgp_as_soft_out,
5312: clear_ip_bgp_as_soft_out_cmd,
5313: "clear ip bgp " CMD_AS_RANGE " soft out",
5314: CLEAR_STR
5315: IP_STR
5316: BGP_STR
5317: "Clear peers with the AS number\n"
5318: "Soft reconfig\n"
5319: "Soft reconfig outbound update\n")
5320: {
5321: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
5322: BGP_CLEAR_SOFT_OUT, argv[0]);
5323: }
5324:
5325: ALIAS (clear_ip_bgp_as_soft_out,
5326: clear_ip_bgp_as_out_cmd,
5327: "clear ip bgp " CMD_AS_RANGE " out",
5328: CLEAR_STR
5329: IP_STR
5330: BGP_STR
5331: "Clear peers with the AS number\n"
5332: "Soft reconfig outbound update\n")
5333:
5334: DEFUN (clear_ip_bgp_as_ipv4_soft_out,
5335: clear_ip_bgp_as_ipv4_soft_out_cmd,
5336: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) soft out",
5337: CLEAR_STR
5338: IP_STR
5339: BGP_STR
5340: "Clear peers with the AS number\n"
5341: "Address family\n"
5342: "Address Family modifier\n"
5343: "Address Family modifier\n"
5344: "Soft reconfig\n"
5345: "Soft reconfig outbound update\n")
5346: {
5347: if (strncmp (argv[1], "m", 1) == 0)
5348: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
5349: BGP_CLEAR_SOFT_OUT, argv[0]);
5350:
5351: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
5352: BGP_CLEAR_SOFT_OUT, argv[0]);
5353: }
5354:
5355: ALIAS (clear_ip_bgp_as_ipv4_soft_out,
5356: clear_ip_bgp_as_ipv4_out_cmd,
5357: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) out",
5358: CLEAR_STR
5359: IP_STR
5360: BGP_STR
5361: "Clear peers with the AS number\n"
5362: "Address family\n"
5363: "Address Family modifier\n"
5364: "Address Family modifier\n"
5365: "Soft reconfig outbound update\n")
5366:
5367: DEFUN (clear_ip_bgp_as_vpnv4_soft_out,
5368: clear_ip_bgp_as_vpnv4_soft_out_cmd,
5369: "clear ip bgp " CMD_AS_RANGE " vpnv4 unicast soft out",
5370: CLEAR_STR
5371: IP_STR
5372: BGP_STR
5373: "Clear peers with the AS number\n"
5374: "Address family\n"
5375: "Address Family modifier\n"
5376: "Soft reconfig\n"
5377: "Soft reconfig outbound update\n")
5378: {
5379: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
5380: BGP_CLEAR_SOFT_OUT, argv[0]);
5381: }
5382:
5383: ALIAS (clear_ip_bgp_as_vpnv4_soft_out,
5384: clear_ip_bgp_as_vpnv4_out_cmd,
5385: "clear ip bgp " CMD_AS_RANGE " vpnv4 unicast out",
5386: CLEAR_STR
5387: IP_STR
5388: BGP_STR
5389: "Clear peers with the AS number\n"
5390: "Address family\n"
5391: "Address Family modifier\n"
5392: "Soft reconfig outbound update\n")
5393:
5394: DEFUN (clear_ip_bgp_as_encap_soft_out,
5395: clear_ip_bgp_as_encap_soft_out_cmd,
5396: "clear ip bgp " CMD_AS_RANGE " encap unicast soft out",
5397: CLEAR_STR
5398: IP_STR
5399: BGP_STR
5400: "Clear peers with the AS number\n"
5401: "Address family\n"
5402: "Address Family modifier\n"
5403: "Soft reconfig\n"
5404: "Soft reconfig outbound update\n")
5405: {
5406: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as,
5407: BGP_CLEAR_SOFT_OUT, argv[0]);
5408: }
5409:
5410: ALIAS (clear_ip_bgp_as_encap_soft_out,
5411: clear_ip_bgp_as_encap_out_cmd,
5412: "clear ip bgp " CMD_AS_RANGE " encap unicast out",
5413: CLEAR_STR
5414: IP_STR
5415: BGP_STR
5416: "Clear peers with the AS number\n"
5417: "Address family\n"
5418: "Address Family modifier\n"
5419: "Soft reconfig outbound update\n")
5420:
5421: DEFUN (clear_bgp_as_soft_out,
5422: clear_bgp_as_soft_out_cmd,
5423: "clear bgp " CMD_AS_RANGE " soft out",
5424: CLEAR_STR
5425: BGP_STR
5426: "Clear peers with the AS number\n"
5427: "Soft reconfig\n"
5428: "Soft reconfig outbound update\n")
5429: {
5430: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
5431: BGP_CLEAR_SOFT_OUT, argv[0]);
5432: }
5433:
5434: ALIAS (clear_bgp_as_soft_out,
5435: clear_bgp_ipv6_as_soft_out_cmd,
5436: "clear bgp ipv6 " CMD_AS_RANGE " soft out",
5437: CLEAR_STR
5438: BGP_STR
5439: "Address family\n"
5440: "Clear peers with the AS number\n"
5441: "Soft reconfig\n"
5442: "Soft reconfig outbound update\n")
5443:
5444: ALIAS (clear_bgp_as_soft_out,
5445: clear_bgp_as_out_cmd,
5446: "clear bgp " CMD_AS_RANGE " out",
5447: CLEAR_STR
5448: BGP_STR
5449: "Clear peers with the AS number\n"
5450: "Soft reconfig outbound update\n")
5451:
5452: ALIAS (clear_bgp_as_soft_out,
5453: clear_bgp_ipv6_as_out_cmd,
5454: "clear bgp ipv6 " CMD_AS_RANGE " out",
5455: CLEAR_STR
5456: BGP_STR
5457: "Address family\n"
5458: "Clear peers with the AS number\n"
5459: "Soft reconfig outbound update\n")
5460:
5461: /* Inbound soft-reconfiguration */
5462: DEFUN (clear_ip_bgp_all_soft_in,
5463: clear_ip_bgp_all_soft_in_cmd,
5464: "clear ip bgp * soft in",
5465: CLEAR_STR
5466: IP_STR
5467: BGP_STR
5468: "Clear all peers\n"
5469: "Soft reconfig\n"
5470: "Soft reconfig inbound update\n")
5471: {
5472: if (argc == 1)
5473: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
5474: BGP_CLEAR_SOFT_IN, NULL);
5475:
5476: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
5477: BGP_CLEAR_SOFT_IN, NULL);
5478: }
5479:
5480: ALIAS (clear_ip_bgp_all_soft_in,
5481: clear_ip_bgp_instance_all_soft_in_cmd,
5482: "clear ip bgp view WORD * soft in",
5483: CLEAR_STR
5484: IP_STR
5485: BGP_STR
5486: "BGP view\n"
5487: "view name\n"
5488: "Clear all peers\n"
5489: "Soft reconfig\n"
5490: "Soft reconfig inbound update\n")
5491:
5492: ALIAS (clear_ip_bgp_all_soft_in,
5493: clear_ip_bgp_all_in_cmd,
5494: "clear ip bgp * in",
5495: CLEAR_STR
5496: IP_STR
5497: BGP_STR
5498: "Clear all peers\n"
5499: "Soft reconfig inbound update\n")
5500:
5501: DEFUN (clear_ip_bgp_all_in_prefix_filter,
5502: clear_ip_bgp_all_in_prefix_filter_cmd,
5503: "clear ip bgp * in prefix-filter",
5504: CLEAR_STR
5505: IP_STR
5506: BGP_STR
5507: "Clear all peers\n"
5508: "Soft reconfig inbound update\n"
5509: "Push out prefix-list ORF and do inbound soft reconfig\n")
5510: {
5511: if (argc== 1)
5512: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
5513: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5514:
5515: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
5516: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5517: }
5518:
5519: ALIAS (clear_ip_bgp_all_in_prefix_filter,
5520: clear_ip_bgp_instance_all_in_prefix_filter_cmd,
5521: "clear ip bgp view WORD * in prefix-filter",
5522: CLEAR_STR
5523: IP_STR
5524: BGP_STR
5525: "BGP view\n"
5526: "view name\n"
5527: "Clear all peers\n"
5528: "Soft reconfig inbound update\n"
5529: "Push out prefix-list ORF and do inbound soft reconfig\n")
5530:
5531:
5532: DEFUN (clear_ip_bgp_all_ipv4_soft_in,
5533: clear_ip_bgp_all_ipv4_soft_in_cmd,
5534: "clear ip bgp * ipv4 (unicast|multicast) soft in",
5535: CLEAR_STR
5536: IP_STR
5537: BGP_STR
5538: "Clear all peers\n"
5539: "Address family\n"
5540: "Address Family modifier\n"
5541: "Address Family modifier\n"
5542: "Soft reconfig\n"
5543: "Soft reconfig inbound update\n")
5544: {
5545: if (strncmp (argv[0], "m", 1) == 0)
5546: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
5547: BGP_CLEAR_SOFT_IN, NULL);
5548:
5549: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
5550: BGP_CLEAR_SOFT_IN, NULL);
5551: }
5552:
5553: ALIAS (clear_ip_bgp_all_ipv4_soft_in,
5554: clear_ip_bgp_all_ipv4_in_cmd,
5555: "clear ip bgp * ipv4 (unicast|multicast) in",
5556: CLEAR_STR
5557: IP_STR
5558: BGP_STR
5559: "Clear all peers\n"
5560: "Address family\n"
5561: "Address Family modifier\n"
5562: "Address Family modifier\n"
5563: "Soft reconfig inbound update\n")
5564:
5565: DEFUN (clear_ip_bgp_instance_all_ipv4_soft_in,
5566: clear_ip_bgp_instance_all_ipv4_soft_in_cmd,
5567: "clear ip bgp view WORD * ipv4 (unicast|multicast) soft in",
5568: CLEAR_STR
5569: IP_STR
5570: BGP_STR
5571: "BGP view\n"
5572: "view name\n"
5573: "Clear all peers\n"
5574: "Address family\n"
5575: "Address Family modifier\n"
5576: "Address Family modifier\n"
5577: "Soft reconfig\n"
5578: "Soft reconfig inbound update\n")
5579: {
5580: if (strncmp (argv[1], "m", 1) == 0)
5581: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
5582: BGP_CLEAR_SOFT_IN, NULL);
5583:
5584: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
5585: BGP_CLEAR_SOFT_IN, NULL);
5586: }
5587:
5588: DEFUN (clear_ip_bgp_all_ipv4_in_prefix_filter,
5589: clear_ip_bgp_all_ipv4_in_prefix_filter_cmd,
5590: "clear ip bgp * ipv4 (unicast|multicast) in prefix-filter",
5591: CLEAR_STR
5592: IP_STR
5593: BGP_STR
5594: "Clear all peers\n"
5595: "Address family\n"
5596: "Address Family modifier\n"
5597: "Address Family modifier\n"
5598: "Soft reconfig inbound update\n"
5599: "Push out prefix-list ORF and do inbound soft reconfig\n")
5600: {
5601: if (strncmp (argv[0], "m", 1) == 0)
5602: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
5603: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5604:
5605: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
5606: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5607: }
5608:
5609: DEFUN (clear_ip_bgp_instance_all_ipv4_in_prefix_filter,
5610: clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd,
5611: "clear ip bgp view WORD * ipv4 (unicast|multicast) in prefix-filter",
5612: CLEAR_STR
5613: IP_STR
5614: BGP_STR
5615: "Clear all peers\n"
5616: "Address family\n"
5617: "Address Family modifier\n"
5618: "Address Family modifier\n"
5619: "Soft reconfig inbound update\n"
5620: "Push out prefix-list ORF and do inbound soft reconfig\n")
5621: {
5622: if (strncmp (argv[1], "m", 1) == 0)
5623: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
5624: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5625:
5626: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
5627: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5628: }
5629:
5630: DEFUN (clear_ip_bgp_all_vpnv4_soft_in,
5631: clear_ip_bgp_all_vpnv4_soft_in_cmd,
5632: "clear ip bgp * vpnv4 unicast soft in",
5633: CLEAR_STR
5634: IP_STR
5635: BGP_STR
5636: "Clear all peers\n"
5637: "Address family\n"
5638: "Address Family Modifier\n"
5639: "Soft reconfig\n"
5640: "Soft reconfig inbound update\n")
5641: {
5642: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
5643: BGP_CLEAR_SOFT_IN, NULL);
5644: }
5645:
5646: ALIAS (clear_ip_bgp_all_vpnv4_soft_in,
5647: clear_ip_bgp_all_vpnv4_in_cmd,
5648: "clear ip bgp * vpnv4 unicast in",
5649: CLEAR_STR
5650: IP_STR
5651: BGP_STR
5652: "Clear all peers\n"
5653: "Address family\n"
5654: "Address Family Modifier\n"
5655: "Soft reconfig inbound update\n")
5656:
5657: DEFUN (clear_ip_bgp_all_encap_soft_in,
5658: clear_ip_bgp_all_encap_soft_in_cmd,
5659: "clear ip bgp * encap unicast soft in",
5660: CLEAR_STR
5661: IP_STR
5662: BGP_STR
5663: "Clear all peers\n"
5664: "Address family\n"
5665: "Address Family Modifier\n"
5666: "Soft reconfig\n"
5667: "Soft reconfig inbound update\n")
5668: {
5669: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all,
5670: BGP_CLEAR_SOFT_IN, NULL);
5671: }
5672:
5673: ALIAS (clear_ip_bgp_all_encap_soft_in,
5674: clear_ip_bgp_all_encap_in_cmd,
5675: "clear ip bgp * encap unicast in",
5676: CLEAR_STR
5677: IP_STR
5678: BGP_STR
5679: "Clear all peers\n"
5680: "Address family\n"
5681: "Address Family Modifier\n"
5682: "Soft reconfig inbound update\n")
5683:
5684: DEFUN (clear_bgp_all_soft_in,
5685: clear_bgp_all_soft_in_cmd,
5686: "clear bgp * soft in",
5687: CLEAR_STR
5688: BGP_STR
5689: "Clear all peers\n"
5690: "Soft reconfig\n"
5691: "Soft reconfig inbound update\n")
5692: {
5693: if (argc == 1)
5694: return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
5695: BGP_CLEAR_SOFT_IN, NULL);
5696:
5697: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
5698: BGP_CLEAR_SOFT_IN, NULL);
5699: }
5700:
5701: ALIAS (clear_bgp_all_soft_in,
5702: clear_bgp_instance_all_soft_in_cmd,
5703: "clear bgp view WORD * soft in",
5704: CLEAR_STR
5705: BGP_STR
5706: "BGP view\n"
5707: "view name\n"
5708: "Clear all peers\n"
5709: "Soft reconfig\n"
5710: "Soft reconfig inbound update\n")
5711:
5712: ALIAS (clear_bgp_all_soft_in,
5713: clear_bgp_ipv6_all_soft_in_cmd,
5714: "clear bgp ipv6 * soft in",
5715: CLEAR_STR
5716: BGP_STR
5717: "Address family\n"
5718: "Clear all peers\n"
5719: "Soft reconfig\n"
5720: "Soft reconfig inbound update\n")
5721:
5722: ALIAS (clear_bgp_all_soft_in,
5723: clear_bgp_all_in_cmd,
5724: "clear bgp * in",
5725: CLEAR_STR
5726: BGP_STR
5727: "Clear all peers\n"
5728: "Soft reconfig inbound update\n")
5729:
5730: ALIAS (clear_bgp_all_soft_in,
5731: clear_bgp_ipv6_all_in_cmd,
5732: "clear bgp ipv6 * in",
5733: CLEAR_STR
5734: BGP_STR
5735: "Address family\n"
5736: "Clear all peers\n"
5737: "Soft reconfig inbound update\n")
5738:
5739: DEFUN (clear_bgp_all_in_prefix_filter,
5740: clear_bgp_all_in_prefix_filter_cmd,
5741: "clear bgp * in prefix-filter",
5742: CLEAR_STR
5743: BGP_STR
5744: "Clear all peers\n"
5745: "Soft reconfig inbound update\n"
5746: "Push out prefix-list ORF and do inbound soft reconfig\n")
5747: {
5748: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
5749: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
5750: }
5751:
5752: ALIAS (clear_bgp_all_in_prefix_filter,
5753: clear_bgp_ipv6_all_in_prefix_filter_cmd,
5754: "clear bgp ipv6 * in prefix-filter",
5755: CLEAR_STR
5756: BGP_STR
5757: "Address family\n"
5758: "Clear all peers\n"
5759: "Soft reconfig inbound update\n"
5760: "Push out prefix-list ORF and do inbound soft reconfig\n")
5761:
5762: DEFUN (clear_ip_bgp_peer_soft_in,
5763: clear_ip_bgp_peer_soft_in_cmd,
5764: "clear ip bgp A.B.C.D soft in",
5765: CLEAR_STR
5766: IP_STR
5767: BGP_STR
5768: "BGP neighbor address to clear\n"
5769: "Soft reconfig\n"
5770: "Soft reconfig inbound update\n")
5771: {
5772: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
5773: BGP_CLEAR_SOFT_IN, argv[0]);
5774: }
5775:
5776: ALIAS (clear_ip_bgp_peer_soft_in,
5777: clear_ip_bgp_peer_in_cmd,
5778: "clear ip bgp A.B.C.D in",
5779: CLEAR_STR
5780: IP_STR
5781: BGP_STR
5782: "BGP neighbor address to clear\n"
5783: "Soft reconfig inbound update\n")
5784:
5785: DEFUN (clear_ip_bgp_peer_in_prefix_filter,
5786: clear_ip_bgp_peer_in_prefix_filter_cmd,
5787: "clear ip bgp A.B.C.D in prefix-filter",
5788: CLEAR_STR
5789: IP_STR
5790: BGP_STR
5791: "BGP neighbor address to clear\n"
5792: "Soft reconfig inbound update\n"
5793: "Push out the existing ORF prefix-list\n")
5794: {
5795: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
5796: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
5797: }
5798:
5799: DEFUN (clear_ip_bgp_peer_ipv4_soft_in,
5800: clear_ip_bgp_peer_ipv4_soft_in_cmd,
5801: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft in",
5802: CLEAR_STR
5803: IP_STR
5804: BGP_STR
5805: "BGP neighbor address to clear\n"
5806: "Address family\n"
5807: "Address Family modifier\n"
5808: "Address Family modifier\n"
5809: "Soft reconfig\n"
5810: "Soft reconfig inbound update\n")
5811: {
5812: if (strncmp (argv[1], "m", 1) == 0)
5813: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
5814: BGP_CLEAR_SOFT_IN, argv[0]);
5815:
5816: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
5817: BGP_CLEAR_SOFT_IN, argv[0]);
5818: }
5819:
5820: ALIAS (clear_ip_bgp_peer_ipv4_soft_in,
5821: clear_ip_bgp_peer_ipv4_in_cmd,
5822: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in",
5823: CLEAR_STR
5824: IP_STR
5825: BGP_STR
5826: "BGP neighbor address to clear\n"
5827: "Address family\n"
5828: "Address Family modifier\n"
5829: "Address Family modifier\n"
5830: "Soft reconfig inbound update\n")
5831:
5832: DEFUN (clear_ip_bgp_peer_ipv4_in_prefix_filter,
5833: clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd,
5834: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in prefix-filter",
5835: CLEAR_STR
5836: IP_STR
5837: BGP_STR
5838: "BGP neighbor address to clear\n"
5839: "Address family\n"
5840: "Address Family modifier\n"
5841: "Address Family modifier\n"
5842: "Soft reconfig inbound update\n"
5843: "Push out the existing ORF prefix-list\n")
5844: {
5845: if (strncmp (argv[1], "m", 1) == 0)
5846: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
5847: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
5848:
5849: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
5850: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
5851: }
5852:
5853: DEFUN (clear_ip_bgp_peer_vpnv4_soft_in,
5854: clear_ip_bgp_peer_vpnv4_soft_in_cmd,
5855: "clear ip bgp A.B.C.D vpnv4 unicast soft in",
5856: CLEAR_STR
5857: IP_STR
5858: BGP_STR
5859: "BGP neighbor address to clear\n"
5860: "Address family\n"
5861: "Address Family Modifier\n"
5862: "Soft reconfig\n"
5863: "Soft reconfig inbound update\n")
5864: {
5865: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
5866: BGP_CLEAR_SOFT_IN, argv[0]);
5867: }
5868:
5869: ALIAS (clear_ip_bgp_peer_vpnv4_soft_in,
5870: clear_ip_bgp_peer_vpnv4_in_cmd,
5871: "clear ip bgp A.B.C.D vpnv4 unicast in",
5872: CLEAR_STR
5873: IP_STR
5874: BGP_STR
5875: "BGP neighbor address to clear\n"
5876: "Address family\n"
5877: "Address Family Modifier\n"
5878: "Soft reconfig inbound update\n")
5879:
5880: DEFUN (clear_ip_bgp_peer_encap_soft_in,
5881: clear_ip_bgp_peer_encap_soft_in_cmd,
5882: "clear ip bgp A.B.C.D encap unicast soft in",
5883: CLEAR_STR
5884: IP_STR
5885: BGP_STR
5886: "BGP neighbor address to clear\n"
5887: "Address family\n"
5888: "Address Family Modifier\n"
5889: "Soft reconfig\n"
5890: "Soft reconfig inbound update\n")
5891: {
5892: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer,
5893: BGP_CLEAR_SOFT_IN, argv[0]);
5894: }
5895:
5896: ALIAS (clear_ip_bgp_peer_encap_soft_in,
5897: clear_ip_bgp_peer_encap_in_cmd,
5898: "clear ip bgp A.B.C.D encap unicast in",
5899: CLEAR_STR
5900: IP_STR
5901: BGP_STR
5902: "BGP neighbor address to clear\n"
5903: "Address family\n"
5904: "Address Family Modifier\n"
5905: "Soft reconfig inbound update\n")
5906:
5907: DEFUN (clear_bgp_peer_soft_in,
5908: clear_bgp_peer_soft_in_cmd,
5909: "clear bgp (A.B.C.D|X:X::X:X) soft in",
5910: CLEAR_STR
5911: BGP_STR
5912: "BGP neighbor address to clear\n"
5913: "BGP IPv6 neighbor to clear\n"
5914: "Soft reconfig\n"
5915: "Soft reconfig inbound update\n")
5916: {
5917: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
5918: BGP_CLEAR_SOFT_IN, argv[0]);
5919: }
5920:
5921: ALIAS (clear_bgp_peer_soft_in,
5922: clear_bgp_ipv6_peer_soft_in_cmd,
5923: "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft in",
5924: CLEAR_STR
5925: BGP_STR
5926: "Address family\n"
5927: "BGP neighbor address to clear\n"
5928: "BGP IPv6 neighbor to clear\n"
5929: "Soft reconfig\n"
5930: "Soft reconfig inbound update\n")
5931:
5932: ALIAS (clear_bgp_peer_soft_in,
5933: clear_bgp_peer_in_cmd,
5934: "clear bgp (A.B.C.D|X:X::X:X) in",
5935: CLEAR_STR
5936: BGP_STR
5937: "BGP neighbor address to clear\n"
5938: "BGP IPv6 neighbor to clear\n"
5939: "Soft reconfig inbound update\n")
5940:
5941: ALIAS (clear_bgp_peer_soft_in,
5942: clear_bgp_ipv6_peer_in_cmd,
5943: "clear bgp ipv6 (A.B.C.D|X:X::X:X) in",
5944: CLEAR_STR
5945: BGP_STR
5946: "Address family\n"
5947: "BGP neighbor address to clear\n"
5948: "BGP IPv6 neighbor to clear\n"
5949: "Soft reconfig inbound update\n")
5950:
5951: DEFUN (clear_bgp_peer_in_prefix_filter,
5952: clear_bgp_peer_in_prefix_filter_cmd,
5953: "clear bgp (A.B.C.D|X:X::X:X) in prefix-filter",
5954: CLEAR_STR
5955: BGP_STR
5956: "BGP neighbor address to clear\n"
5957: "BGP IPv6 neighbor to clear\n"
5958: "Soft reconfig inbound update\n"
5959: "Push out the existing ORF prefix-list\n")
5960: {
5961: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
5962: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
5963: }
5964:
5965: ALIAS (clear_bgp_peer_in_prefix_filter,
5966: clear_bgp_ipv6_peer_in_prefix_filter_cmd,
5967: "clear bgp ipv6 (A.B.C.D|X:X::X:X) in prefix-filter",
5968: CLEAR_STR
5969: BGP_STR
5970: "Address family\n"
5971: "BGP neighbor address to clear\n"
5972: "BGP IPv6 neighbor to clear\n"
5973: "Soft reconfig inbound update\n"
5974: "Push out the existing ORF prefix-list\n")
5975:
5976: DEFUN (clear_ip_bgp_peer_group_soft_in,
5977: clear_ip_bgp_peer_group_soft_in_cmd,
5978: "clear ip bgp peer-group WORD soft in",
5979: CLEAR_STR
5980: IP_STR
5981: BGP_STR
5982: "Clear all members of peer-group\n"
5983: "BGP peer-group name\n"
5984: "Soft reconfig\n"
5985: "Soft reconfig inbound update\n")
5986: {
5987: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
5988: BGP_CLEAR_SOFT_IN, argv[0]);
5989: }
5990:
5991: ALIAS (clear_ip_bgp_peer_group_soft_in,
5992: clear_ip_bgp_peer_group_in_cmd,
5993: "clear ip bgp peer-group WORD in",
5994: CLEAR_STR
5995: IP_STR
5996: BGP_STR
5997: "Clear all members of peer-group\n"
5998: "BGP peer-group name\n"
5999: "Soft reconfig inbound update\n")
6000:
6001: DEFUN (clear_ip_bgp_peer_group_in_prefix_filter,
6002: clear_ip_bgp_peer_group_in_prefix_filter_cmd,
6003: "clear ip bgp peer-group WORD in prefix-filter",
6004: CLEAR_STR
6005: IP_STR
6006: BGP_STR
6007: "Clear all members of peer-group\n"
6008: "BGP peer-group name\n"
6009: "Soft reconfig inbound update\n"
6010: "Push out prefix-list ORF and do inbound soft reconfig\n")
6011: {
6012: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
6013: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6014: }
6015:
6016: DEFUN (clear_ip_bgp_peer_group_ipv4_soft_in,
6017: clear_ip_bgp_peer_group_ipv4_soft_in_cmd,
6018: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft in",
6019: CLEAR_STR
6020: IP_STR
6021: BGP_STR
6022: "Clear all members of peer-group\n"
6023: "BGP peer-group name\n"
6024: "Address family\n"
6025: "Address Family modifier\n"
6026: "Address Family modifier\n"
6027: "Soft reconfig\n"
6028: "Soft reconfig inbound update\n")
6029: {
6030: if (strncmp (argv[1], "m", 1) == 0)
6031: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
6032: BGP_CLEAR_SOFT_IN, argv[0]);
6033:
6034: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
6035: BGP_CLEAR_SOFT_IN, argv[0]);
6036: }
6037:
6038: ALIAS (clear_ip_bgp_peer_group_ipv4_soft_in,
6039: clear_ip_bgp_peer_group_ipv4_in_cmd,
6040: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in",
6041: CLEAR_STR
6042: IP_STR
6043: BGP_STR
6044: "Clear all members of peer-group\n"
6045: "BGP peer-group name\n"
6046: "Address family\n"
6047: "Address Family modifier\n"
6048: "Address Family modifier\n"
6049: "Soft reconfig inbound update\n")
6050:
6051: DEFUN (clear_ip_bgp_peer_group_ipv4_in_prefix_filter,
6052: clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd,
6053: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in prefix-filter",
6054: CLEAR_STR
6055: IP_STR
6056: BGP_STR
6057: "Clear all members of peer-group\n"
6058: "BGP peer-group name\n"
6059: "Address family\n"
6060: "Address Family modifier\n"
6061: "Address Family modifier\n"
6062: "Soft reconfig inbound update\n"
6063: "Push out prefix-list ORF and do inbound soft reconfig\n")
6064: {
6065: if (strncmp (argv[1], "m", 1) == 0)
6066: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
6067: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6068:
6069: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
6070: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6071: }
6072:
6073: DEFUN (clear_bgp_peer_group_soft_in,
6074: clear_bgp_peer_group_soft_in_cmd,
6075: "clear bgp peer-group WORD soft in",
6076: CLEAR_STR
6077: BGP_STR
6078: "Clear all members of peer-group\n"
6079: "BGP peer-group name\n"
6080: "Soft reconfig\n"
6081: "Soft reconfig inbound update\n")
6082: {
6083: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
6084: BGP_CLEAR_SOFT_IN, argv[0]);
6085: }
6086:
6087: ALIAS (clear_bgp_peer_group_soft_in,
6088: clear_bgp_ipv6_peer_group_soft_in_cmd,
6089: "clear bgp ipv6 peer-group WORD soft in",
6090: CLEAR_STR
6091: BGP_STR
6092: "Address family\n"
6093: "Clear all members of peer-group\n"
6094: "BGP peer-group name\n"
6095: "Soft reconfig\n"
6096: "Soft reconfig inbound update\n")
6097:
6098: ALIAS (clear_bgp_peer_group_soft_in,
6099: clear_bgp_peer_group_in_cmd,
6100: "clear bgp peer-group WORD in",
6101: CLEAR_STR
6102: BGP_STR
6103: "Clear all members of peer-group\n"
6104: "BGP peer-group name\n"
6105: "Soft reconfig inbound update\n")
6106:
6107: ALIAS (clear_bgp_peer_group_soft_in,
6108: clear_bgp_ipv6_peer_group_in_cmd,
6109: "clear bgp ipv6 peer-group WORD in",
6110: CLEAR_STR
6111: BGP_STR
6112: "Address family\n"
6113: "Clear all members of peer-group\n"
6114: "BGP peer-group name\n"
6115: "Soft reconfig inbound update\n")
6116:
6117: DEFUN (clear_bgp_peer_group_in_prefix_filter,
6118: clear_bgp_peer_group_in_prefix_filter_cmd,
6119: "clear bgp peer-group WORD in prefix-filter",
6120: CLEAR_STR
6121: BGP_STR
6122: "Clear all members of peer-group\n"
6123: "BGP peer-group name\n"
6124: "Soft reconfig inbound update\n"
6125: "Push out prefix-list ORF and do inbound soft reconfig\n")
6126: {
6127: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
6128: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6129: }
6130:
6131: ALIAS (clear_bgp_peer_group_in_prefix_filter,
6132: clear_bgp_ipv6_peer_group_in_prefix_filter_cmd,
6133: "clear bgp ipv6 peer-group WORD in prefix-filter",
6134: CLEAR_STR
6135: BGP_STR
6136: "Address family\n"
6137: "Clear all members of peer-group\n"
6138: "BGP peer-group name\n"
6139: "Soft reconfig inbound update\n"
6140: "Push out prefix-list ORF and do inbound soft reconfig\n")
6141:
6142: DEFUN (clear_ip_bgp_external_soft_in,
6143: clear_ip_bgp_external_soft_in_cmd,
6144: "clear ip bgp external soft in",
6145: CLEAR_STR
6146: IP_STR
6147: BGP_STR
6148: "Clear all external peers\n"
6149: "Soft reconfig\n"
6150: "Soft reconfig inbound update\n")
6151: {
6152: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6153: BGP_CLEAR_SOFT_IN, NULL);
6154: }
6155:
6156: ALIAS (clear_ip_bgp_external_soft_in,
6157: clear_ip_bgp_external_in_cmd,
6158: "clear ip bgp external in",
6159: CLEAR_STR
6160: IP_STR
6161: BGP_STR
6162: "Clear all external peers\n"
6163: "Soft reconfig inbound update\n")
6164:
6165: DEFUN (clear_ip_bgp_external_in_prefix_filter,
6166: clear_ip_bgp_external_in_prefix_filter_cmd,
6167: "clear ip bgp external in prefix-filter",
6168: CLEAR_STR
6169: IP_STR
6170: BGP_STR
6171: "Clear all external peers\n"
6172: "Soft reconfig inbound update\n"
6173: "Push out prefix-list ORF and do inbound soft reconfig\n")
6174: {
6175: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6176: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
6177: }
6178:
6179: DEFUN (clear_ip_bgp_external_ipv4_soft_in,
6180: clear_ip_bgp_external_ipv4_soft_in_cmd,
6181: "clear ip bgp external ipv4 (unicast|multicast) soft in",
6182: CLEAR_STR
6183: IP_STR
6184: BGP_STR
6185: "Clear all external peers\n"
6186: "Address family\n"
6187: "Address Family modifier\n"
6188: "Address Family modifier\n"
6189: "Soft reconfig\n"
6190: "Soft reconfig inbound update\n")
6191: {
6192: if (strncmp (argv[0], "m", 1) == 0)
6193: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
6194: BGP_CLEAR_SOFT_IN, NULL);
6195:
6196: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6197: BGP_CLEAR_SOFT_IN, NULL);
6198: }
6199:
6200: ALIAS (clear_ip_bgp_external_ipv4_soft_in,
6201: clear_ip_bgp_external_ipv4_in_cmd,
6202: "clear ip bgp external ipv4 (unicast|multicast) in",
6203: CLEAR_STR
6204: IP_STR
6205: BGP_STR
6206: "Clear all external peers\n"
6207: "Address family\n"
6208: "Address Family modifier\n"
6209: "Address Family modifier\n"
6210: "Soft reconfig inbound update\n")
6211:
6212: DEFUN (clear_ip_bgp_external_ipv4_in_prefix_filter,
6213: clear_ip_bgp_external_ipv4_in_prefix_filter_cmd,
6214: "clear ip bgp external ipv4 (unicast|multicast) in prefix-filter",
6215: CLEAR_STR
6216: IP_STR
6217: BGP_STR
6218: "Clear all external peers\n"
6219: "Address family\n"
6220: "Address Family modifier\n"
6221: "Address Family modifier\n"
6222: "Soft reconfig inbound update\n"
6223: "Push out prefix-list ORF and do inbound soft reconfig\n")
6224: {
6225: if (strncmp (argv[0], "m", 1) == 0)
6226: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
6227: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
6228:
6229: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6230: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
6231: }
6232:
6233: DEFUN (clear_bgp_external_soft_in,
6234: clear_bgp_external_soft_in_cmd,
6235: "clear bgp external soft in",
6236: CLEAR_STR
6237: BGP_STR
6238: "Clear all external peers\n"
6239: "Soft reconfig\n"
6240: "Soft reconfig inbound update\n")
6241: {
6242: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
6243: BGP_CLEAR_SOFT_IN, NULL);
6244: }
6245:
6246: ALIAS (clear_bgp_external_soft_in,
6247: clear_bgp_ipv6_external_soft_in_cmd,
6248: "clear bgp ipv6 external soft in",
6249: CLEAR_STR
6250: BGP_STR
6251: "Address family\n"
6252: "Clear all external peers\n"
6253: "Soft reconfig\n"
6254: "Soft reconfig inbound update\n")
6255:
6256: ALIAS (clear_bgp_external_soft_in,
6257: clear_bgp_external_in_cmd,
6258: "clear bgp external in",
6259: CLEAR_STR
6260: BGP_STR
6261: "Clear all external peers\n"
6262: "Soft reconfig inbound update\n")
6263:
6264: ALIAS (clear_bgp_external_soft_in,
6265: clear_bgp_ipv6_external_in_cmd,
6266: "clear bgp ipv6 external WORD in",
6267: CLEAR_STR
6268: BGP_STR
6269: "Address family\n"
6270: "Clear all external peers\n"
6271: "Soft reconfig inbound update\n")
6272:
6273: DEFUN (clear_bgp_external_in_prefix_filter,
6274: clear_bgp_external_in_prefix_filter_cmd,
6275: "clear bgp external in prefix-filter",
6276: CLEAR_STR
6277: BGP_STR
6278: "Clear all external peers\n"
6279: "Soft reconfig inbound update\n"
6280: "Push out prefix-list ORF and do inbound soft reconfig\n")
6281: {
6282: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
6283: BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
6284: }
6285:
6286: ALIAS (clear_bgp_external_in_prefix_filter,
6287: clear_bgp_ipv6_external_in_prefix_filter_cmd,
6288: "clear bgp ipv6 external in prefix-filter",
6289: CLEAR_STR
6290: BGP_STR
6291: "Address family\n"
6292: "Clear all external peers\n"
6293: "Soft reconfig inbound update\n"
6294: "Push out prefix-list ORF and do inbound soft reconfig\n")
6295:
6296: DEFUN (clear_ip_bgp_as_soft_in,
6297: clear_ip_bgp_as_soft_in_cmd,
6298: "clear ip bgp " CMD_AS_RANGE " soft in",
6299: CLEAR_STR
6300: IP_STR
6301: BGP_STR
6302: "Clear peers with the AS number\n"
6303: "Soft reconfig\n"
6304: "Soft reconfig inbound update\n")
6305: {
6306: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
6307: BGP_CLEAR_SOFT_IN, argv[0]);
6308: }
6309:
6310: ALIAS (clear_ip_bgp_as_soft_in,
6311: clear_ip_bgp_as_in_cmd,
6312: "clear ip bgp " CMD_AS_RANGE " in",
6313: CLEAR_STR
6314: IP_STR
6315: BGP_STR
6316: "Clear peers with the AS number\n"
6317: "Soft reconfig inbound update\n")
6318:
6319: DEFUN (clear_ip_bgp_as_in_prefix_filter,
6320: clear_ip_bgp_as_in_prefix_filter_cmd,
6321: "clear ip bgp " CMD_AS_RANGE " in prefix-filter",
6322: CLEAR_STR
6323: IP_STR
6324: BGP_STR
6325: "Clear peers with the AS number\n"
6326: "Soft reconfig inbound update\n"
6327: "Push out prefix-list ORF and do inbound soft reconfig\n")
6328: {
6329: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
6330: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6331: }
6332:
6333: DEFUN (clear_ip_bgp_as_ipv4_soft_in,
6334: clear_ip_bgp_as_ipv4_soft_in_cmd,
6335: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) soft in",
6336: CLEAR_STR
6337: IP_STR
6338: BGP_STR
6339: "Clear peers with the AS number\n"
6340: "Address family\n"
6341: "Address Family modifier\n"
6342: "Address Family modifier\n"
6343: "Soft reconfig\n"
6344: "Soft reconfig inbound update\n")
6345: {
6346: if (strncmp (argv[1], "m", 1) == 0)
6347: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
6348: BGP_CLEAR_SOFT_IN, argv[0]);
6349:
6350: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
6351: BGP_CLEAR_SOFT_IN, argv[0]);
6352: }
6353:
6354: ALIAS (clear_ip_bgp_as_ipv4_soft_in,
6355: clear_ip_bgp_as_ipv4_in_cmd,
6356: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) in",
6357: CLEAR_STR
6358: IP_STR
6359: BGP_STR
6360: "Clear peers with the AS number\n"
6361: "Address family\n"
6362: "Address Family modifier\n"
6363: "Address Family modifier\n"
6364: "Soft reconfig inbound update\n")
6365:
6366: DEFUN (clear_ip_bgp_as_ipv4_in_prefix_filter,
6367: clear_ip_bgp_as_ipv4_in_prefix_filter_cmd,
6368: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) in prefix-filter",
6369: CLEAR_STR
6370: IP_STR
6371: BGP_STR
6372: "Clear peers with the AS number\n"
6373: "Address family\n"
6374: "Address Family modifier\n"
6375: "Address Family modifier\n"
6376: "Soft reconfig inbound update\n"
6377: "Push out prefix-list ORF and do inbound soft reconfig\n")
6378: {
6379: if (strncmp (argv[1], "m", 1) == 0)
6380: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
6381: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6382:
6383: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
6384: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6385: }
6386:
6387: DEFUN (clear_ip_bgp_as_vpnv4_soft_in,
6388: clear_ip_bgp_as_vpnv4_soft_in_cmd,
6389: "clear ip bgp " CMD_AS_RANGE " vpnv4 unicast soft in",
6390: CLEAR_STR
6391: IP_STR
6392: BGP_STR
6393: "Clear peers with the AS number\n"
6394: "Address family\n"
6395: "Address Family modifier\n"
6396: "Soft reconfig\n"
6397: "Soft reconfig inbound update\n")
6398: {
6399: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
6400: BGP_CLEAR_SOFT_IN, argv[0]);
6401: }
6402:
6403: ALIAS (clear_ip_bgp_as_vpnv4_soft_in,
6404: clear_ip_bgp_as_vpnv4_in_cmd,
6405: "clear ip bgp " CMD_AS_RANGE " vpnv4 unicast in",
6406: CLEAR_STR
6407: IP_STR
6408: BGP_STR
6409: "Clear peers with the AS number\n"
6410: "Address family\n"
6411: "Address Family modifier\n"
6412: "Soft reconfig inbound update\n")
6413:
6414: DEFUN (clear_ip_bgp_as_encap_soft_in,
6415: clear_ip_bgp_as_encap_soft_in_cmd,
6416: "clear ip bgp " CMD_AS_RANGE " encap unicast soft in",
6417: CLEAR_STR
6418: IP_STR
6419: BGP_STR
6420: "Clear peers with the AS number\n"
6421: "Address family\n"
6422: "Address Family modifier\n"
6423: "Soft reconfig\n"
6424: "Soft reconfig inbound update\n")
6425: {
6426: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as,
6427: BGP_CLEAR_SOFT_IN, argv[0]);
6428: }
6429:
6430: ALIAS (clear_ip_bgp_as_encap_soft_in,
6431: clear_ip_bgp_as_encap_in_cmd,
6432: "clear ip bgp " CMD_AS_RANGE " encap unicast in",
6433: CLEAR_STR
6434: IP_STR
6435: BGP_STR
6436: "Clear peers with the AS number\n"
6437: "Address family\n"
6438: "Address Family modifier\n"
6439: "Soft reconfig inbound update\n")
6440:
6441: DEFUN (clear_bgp_as_soft_in,
6442: clear_bgp_as_soft_in_cmd,
6443: "clear bgp " CMD_AS_RANGE " soft in",
6444: CLEAR_STR
6445: BGP_STR
6446: "Clear peers with the AS number\n"
6447: "Soft reconfig\n"
6448: "Soft reconfig inbound update\n")
6449: {
6450: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
6451: BGP_CLEAR_SOFT_IN, argv[0]);
6452: }
6453:
6454: ALIAS (clear_bgp_as_soft_in,
6455: clear_bgp_ipv6_as_soft_in_cmd,
6456: "clear bgp ipv6 " CMD_AS_RANGE " soft in",
6457: CLEAR_STR
6458: BGP_STR
6459: "Address family\n"
6460: "Clear peers with the AS number\n"
6461: "Soft reconfig\n"
6462: "Soft reconfig inbound update\n")
6463:
6464: ALIAS (clear_bgp_as_soft_in,
6465: clear_bgp_as_in_cmd,
6466: "clear bgp " CMD_AS_RANGE " in",
6467: CLEAR_STR
6468: BGP_STR
6469: "Clear peers with the AS number\n"
6470: "Soft reconfig inbound update\n")
6471:
6472: ALIAS (clear_bgp_as_soft_in,
6473: clear_bgp_ipv6_as_in_cmd,
6474: "clear bgp ipv6 " CMD_AS_RANGE " in",
6475: CLEAR_STR
6476: BGP_STR
6477: "Address family\n"
6478: "Clear peers with the AS number\n"
6479: "Soft reconfig inbound update\n")
6480:
6481: DEFUN (clear_bgp_as_in_prefix_filter,
6482: clear_bgp_as_in_prefix_filter_cmd,
6483: "clear bgp " CMD_AS_RANGE " in prefix-filter",
6484: CLEAR_STR
6485: BGP_STR
6486: "Clear peers with the AS number\n"
6487: "Soft reconfig inbound update\n"
6488: "Push out prefix-list ORF and do inbound soft reconfig\n")
6489: {
6490: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
6491: BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
6492: }
6493:
6494: ALIAS (clear_bgp_as_in_prefix_filter,
6495: clear_bgp_ipv6_as_in_prefix_filter_cmd,
6496: "clear bgp ipv6 " CMD_AS_RANGE " in prefix-filter",
6497: CLEAR_STR
6498: BGP_STR
6499: "Address family\n"
6500: "Clear peers with the AS number\n"
6501: "Soft reconfig inbound update\n"
6502: "Push out prefix-list ORF and do inbound soft reconfig\n")
6503:
6504: /* Both soft-reconfiguration */
6505: DEFUN (clear_ip_bgp_all_soft,
6506: clear_ip_bgp_all_soft_cmd,
6507: "clear ip bgp * soft",
6508: CLEAR_STR
6509: IP_STR
6510: BGP_STR
6511: "Clear all peers\n"
6512: "Soft reconfig\n")
6513: {
6514: if (argc == 1)
6515: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
6516: BGP_CLEAR_SOFT_BOTH, NULL);
6517:
6518: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
6519: BGP_CLEAR_SOFT_BOTH, NULL);
6520: }
6521:
6522: ALIAS (clear_ip_bgp_all_soft,
6523: clear_ip_bgp_instance_all_soft_cmd,
6524: "clear ip bgp view WORD * soft",
6525: CLEAR_STR
6526: IP_STR
6527: BGP_STR
6528: "BGP view\n"
6529: "view name\n"
6530: "Clear all peers\n"
6531: "Soft reconfig\n")
6532:
6533:
6534: DEFUN (clear_ip_bgp_all_ipv4_soft,
6535: clear_ip_bgp_all_ipv4_soft_cmd,
6536: "clear ip bgp * ipv4 (unicast|multicast) soft",
6537: CLEAR_STR
6538: IP_STR
6539: BGP_STR
6540: "Clear all peers\n"
6541: "Address family\n"
6542: "Address Family Modifier\n"
6543: "Address Family Modifier\n"
6544: "Soft reconfig\n")
6545: {
6546: if (strncmp (argv[0], "m", 1) == 0)
6547: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
6548: BGP_CLEAR_SOFT_BOTH, NULL);
6549:
6550: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
6551: BGP_CLEAR_SOFT_BOTH, NULL);
6552: }
6553:
6554: DEFUN (clear_ip_bgp_instance_all_ipv4_soft,
6555: clear_ip_bgp_instance_all_ipv4_soft_cmd,
6556: "clear ip bgp view WORD * ipv4 (unicast|multicast) soft",
6557: CLEAR_STR
6558: IP_STR
6559: BGP_STR
6560: "BGP view\n"
6561: "view name\n"
6562: "Clear all peers\n"
6563: "Address family\n"
6564: "Address Family Modifier\n"
6565: "Address Family Modifier\n"
6566: "Soft reconfig\n")
6567: {
6568: if (strncmp (argv[1], "m", 1) == 0)
6569: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
6570: BGP_CLEAR_SOFT_BOTH, NULL);
6571:
6572: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
6573: BGP_CLEAR_SOFT_BOTH, NULL);
6574: }
6575:
6576: DEFUN (clear_ip_bgp_all_vpnv4_soft,
6577: clear_ip_bgp_all_vpnv4_soft_cmd,
6578: "clear ip bgp * vpnv4 unicast soft",
6579: CLEAR_STR
6580: IP_STR
6581: BGP_STR
6582: "Clear all peers\n"
6583: "Address family\n"
6584: "Address Family Modifier\n"
6585: "Soft reconfig\n")
6586: {
6587: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
6588: BGP_CLEAR_SOFT_BOTH, argv[0]);
6589: }
6590:
6591: DEFUN (clear_ip_bgp_all_encap_soft,
6592: clear_ip_bgp_all_encap_soft_cmd,
6593: "clear ip bgp * encap unicast soft",
6594: CLEAR_STR
6595: IP_STR
6596: BGP_STR
6597: "Clear all peers\n"
6598: "Address family\n"
6599: "Address Family Modifier\n"
6600: "Soft reconfig\n")
6601: {
6602: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all,
6603: BGP_CLEAR_SOFT_BOTH, argv[0]);
6604: }
6605:
6606: DEFUN (clear_bgp_all_soft,
6607: clear_bgp_all_soft_cmd,
6608: "clear bgp * soft",
6609: CLEAR_STR
6610: BGP_STR
6611: "Clear all peers\n"
6612: "Soft reconfig\n")
6613: {
6614: if (argc == 1)
6615: return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
6616: BGP_CLEAR_SOFT_BOTH, argv[0]);
6617:
6618: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
6619: BGP_CLEAR_SOFT_BOTH, argv[0]);
6620: }
6621:
6622: ALIAS (clear_bgp_all_soft,
6623: clear_bgp_instance_all_soft_cmd,
6624: "clear bgp view WORD * soft",
6625: CLEAR_STR
6626: BGP_STR
6627: "BGP view\n"
6628: "view name\n"
6629: "Clear all peers\n"
6630: "Soft reconfig\n")
6631:
6632: ALIAS (clear_bgp_all_soft,
6633: clear_bgp_ipv6_all_soft_cmd,
6634: "clear bgp ipv6 * soft",
6635: CLEAR_STR
6636: BGP_STR
6637: "Address family\n"
6638: "Clear all peers\n"
6639: "Soft reconfig\n")
6640:
6641: DEFUN (clear_ip_bgp_peer_soft,
6642: clear_ip_bgp_peer_soft_cmd,
6643: "clear ip bgp A.B.C.D soft",
6644: CLEAR_STR
6645: IP_STR
6646: BGP_STR
6647: "BGP neighbor address to clear\n"
6648: "Soft reconfig\n")
6649: {
6650: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
6651: BGP_CLEAR_SOFT_BOTH, argv[0]);
6652: }
6653:
6654: DEFUN (clear_ip_bgp_peer_ipv4_soft,
6655: clear_ip_bgp_peer_ipv4_soft_cmd,
6656: "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft",
6657: CLEAR_STR
6658: IP_STR
6659: BGP_STR
6660: "BGP neighbor address to clear\n"
6661: "Address family\n"
6662: "Address Family Modifier\n"
6663: "Address Family Modifier\n"
6664: "Soft reconfig\n")
6665: {
6666: if (strncmp (argv[1], "m", 1) == 0)
6667: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
6668: BGP_CLEAR_SOFT_BOTH, argv[0]);
6669:
6670: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
6671: BGP_CLEAR_SOFT_BOTH, argv[0]);
6672: }
6673:
6674: DEFUN (clear_ip_bgp_peer_vpnv4_soft,
6675: clear_ip_bgp_peer_vpnv4_soft_cmd,
6676: "clear ip bgp A.B.C.D vpnv4 unicast soft",
6677: CLEAR_STR
6678: IP_STR
6679: BGP_STR
6680: "BGP neighbor address to clear\n"
6681: "Address family\n"
6682: "Address Family Modifier\n"
6683: "Soft reconfig\n")
6684: {
6685: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
6686: BGP_CLEAR_SOFT_BOTH, argv[0]);
6687: }
6688:
6689: DEFUN (clear_ip_bgp_peer_encap_soft,
6690: clear_ip_bgp_peer_encap_soft_cmd,
6691: "clear ip bgp A.B.C.D encap unicast soft",
6692: CLEAR_STR
6693: IP_STR
6694: BGP_STR
6695: "BGP neighbor address to clear\n"
6696: "Address family\n"
6697: "Address Family Modifier\n"
6698: "Soft reconfig\n")
6699: {
6700: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer,
6701: BGP_CLEAR_SOFT_BOTH, argv[0]);
6702: }
6703:
6704: DEFUN (clear_bgp_peer_soft,
6705: clear_bgp_peer_soft_cmd,
6706: "clear bgp (A.B.C.D|X:X::X:X) soft",
6707: CLEAR_STR
6708: BGP_STR
6709: "BGP neighbor address to clear\n"
6710: "BGP IPv6 neighbor to clear\n"
6711: "Soft reconfig\n")
6712: {
6713: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
6714: BGP_CLEAR_SOFT_BOTH, argv[0]);
6715: }
6716:
6717: ALIAS (clear_bgp_peer_soft,
6718: clear_bgp_ipv6_peer_soft_cmd,
6719: "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft",
6720: CLEAR_STR
6721: BGP_STR
6722: "Address family\n"
6723: "BGP neighbor address to clear\n"
6724: "BGP IPv6 neighbor to clear\n"
6725: "Soft reconfig\n")
6726:
6727: DEFUN (clear_ip_bgp_peer_group_soft,
6728: clear_ip_bgp_peer_group_soft_cmd,
6729: "clear ip bgp peer-group WORD soft",
6730: CLEAR_STR
6731: IP_STR
6732: BGP_STR
6733: "Clear all members of peer-group\n"
6734: "BGP peer-group name\n"
6735: "Soft reconfig\n")
6736: {
6737: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
6738: BGP_CLEAR_SOFT_BOTH, argv[0]);
6739: }
6740:
6741: DEFUN (clear_ip_bgp_peer_group_ipv4_soft,
6742: clear_ip_bgp_peer_group_ipv4_soft_cmd,
6743: "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft",
6744: CLEAR_STR
6745: IP_STR
6746: BGP_STR
6747: "Clear all members of peer-group\n"
6748: "BGP peer-group name\n"
6749: "Address family\n"
6750: "Address Family modifier\n"
6751: "Address Family modifier\n"
6752: "Soft reconfig\n")
6753: {
6754: if (strncmp (argv[1], "m", 1) == 0)
6755: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
6756: BGP_CLEAR_SOFT_BOTH, argv[0]);
6757:
6758: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
6759: BGP_CLEAR_SOFT_BOTH, argv[0]);
6760: }
6761:
6762: DEFUN (clear_bgp_peer_group_soft,
6763: clear_bgp_peer_group_soft_cmd,
6764: "clear bgp peer-group WORD soft",
6765: CLEAR_STR
6766: BGP_STR
6767: "Clear all members of peer-group\n"
6768: "BGP peer-group name\n"
6769: "Soft reconfig\n")
6770: {
6771: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
6772: BGP_CLEAR_SOFT_BOTH, argv[0]);
6773: }
6774:
6775: ALIAS (clear_bgp_peer_group_soft,
6776: clear_bgp_ipv6_peer_group_soft_cmd,
6777: "clear bgp ipv6 peer-group WORD soft",
6778: CLEAR_STR
6779: BGP_STR
6780: "Address family\n"
6781: "Clear all members of peer-group\n"
6782: "BGP peer-group name\n"
6783: "Soft reconfig\n")
6784:
6785: DEFUN (clear_ip_bgp_external_soft,
6786: clear_ip_bgp_external_soft_cmd,
6787: "clear ip bgp external soft",
6788: CLEAR_STR
6789: IP_STR
6790: BGP_STR
6791: "Clear all external peers\n"
6792: "Soft reconfig\n")
6793: {
6794: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6795: BGP_CLEAR_SOFT_BOTH, NULL);
6796: }
6797:
6798: DEFUN (clear_ip_bgp_external_ipv4_soft,
6799: clear_ip_bgp_external_ipv4_soft_cmd,
6800: "clear ip bgp external ipv4 (unicast|multicast) soft",
6801: CLEAR_STR
6802: IP_STR
6803: BGP_STR
6804: "Clear all external peers\n"
6805: "Address family\n"
6806: "Address Family modifier\n"
6807: "Address Family modifier\n"
6808: "Soft reconfig\n")
6809: {
6810: if (strncmp (argv[0], "m", 1) == 0)
6811: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
6812: BGP_CLEAR_SOFT_BOTH, NULL);
6813:
6814: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
6815: BGP_CLEAR_SOFT_BOTH, NULL);
6816: }
6817:
6818: DEFUN (clear_bgp_external_soft,
6819: clear_bgp_external_soft_cmd,
6820: "clear bgp external soft",
6821: CLEAR_STR
6822: BGP_STR
6823: "Clear all external peers\n"
6824: "Soft reconfig\n")
6825: {
6826: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
6827: BGP_CLEAR_SOFT_BOTH, NULL);
6828: }
6829:
6830: ALIAS (clear_bgp_external_soft,
6831: clear_bgp_ipv6_external_soft_cmd,
6832: "clear bgp ipv6 external soft",
6833: CLEAR_STR
6834: BGP_STR
6835: "Address family\n"
6836: "Clear all external peers\n"
6837: "Soft reconfig\n")
6838:
6839: DEFUN (clear_ip_bgp_as_soft,
6840: clear_ip_bgp_as_soft_cmd,
6841: "clear ip bgp " CMD_AS_RANGE " soft",
6842: CLEAR_STR
6843: IP_STR
6844: BGP_STR
6845: "Clear peers with the AS number\n"
6846: "Soft reconfig\n")
6847: {
6848: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
6849: BGP_CLEAR_SOFT_BOTH, argv[0]);
6850: }
6851:
6852: DEFUN (clear_ip_bgp_as_ipv4_soft,
6853: clear_ip_bgp_as_ipv4_soft_cmd,
6854: "clear ip bgp " CMD_AS_RANGE " ipv4 (unicast|multicast) soft",
6855: CLEAR_STR
6856: IP_STR
6857: BGP_STR
6858: "Clear peers with the AS number\n"
6859: "Address family\n"
6860: "Address Family Modifier\n"
6861: "Address Family Modifier\n"
6862: "Soft reconfig\n")
6863: {
6864: if (strncmp (argv[1], "m", 1) == 0)
6865: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
6866: BGP_CLEAR_SOFT_BOTH, argv[0]);
6867:
6868: return bgp_clear_vty (vty, NULL,AFI_IP, SAFI_UNICAST, clear_as,
6869: BGP_CLEAR_SOFT_BOTH, argv[0]);
6870: }
6871:
6872: DEFUN (clear_ip_bgp_as_vpnv4_soft,
6873: clear_ip_bgp_as_vpnv4_soft_cmd,
6874: "clear ip bgp " CMD_AS_RANGE " vpnv4 unicast soft",
6875: CLEAR_STR
6876: IP_STR
6877: BGP_STR
6878: "Clear peers with the AS number\n"
6879: "Address family\n"
6880: "Address Family Modifier\n"
6881: "Soft reconfig\n")
6882: {
6883: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
6884: BGP_CLEAR_SOFT_BOTH, argv[0]);
6885: }
6886:
6887: DEFUN (clear_ip_bgp_as_encap_soft,
6888: clear_ip_bgp_as_encap_soft_cmd,
6889: "clear ip bgp " CMD_AS_RANGE " encap unicast soft",
6890: CLEAR_STR
6891: IP_STR
6892: BGP_STR
6893: "Clear peers with the AS number\n"
6894: "Address family\n"
6895: "Address Family Modifier\n"
6896: "Soft reconfig\n")
6897: {
6898: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as,
6899: BGP_CLEAR_SOFT_BOTH, argv[0]);
6900: }
6901:
6902: DEFUN (clear_bgp_as_soft,
6903: clear_bgp_as_soft_cmd,
6904: "clear bgp " CMD_AS_RANGE " soft",
6905: CLEAR_STR
6906: BGP_STR
6907: "Clear peers with the AS number\n"
6908: "Soft reconfig\n")
6909: {
6910: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
6911: BGP_CLEAR_SOFT_BOTH, argv[0]);
6912: }
6913:
6914: ALIAS (clear_bgp_as_soft,
6915: clear_bgp_ipv6_as_soft_cmd,
6916: "clear bgp ipv6 " CMD_AS_RANGE " soft",
6917: CLEAR_STR
6918: BGP_STR
6919: "Address family\n"
6920: "Clear peers with the AS number\n"
6921: "Soft reconfig\n")
6922:
6923: /* RS-client soft reconfiguration. */
6924: DEFUN (clear_bgp_all_rsclient,
6925: clear_bgp_all_rsclient_cmd,
6926: "clear bgp * rsclient",
6927: CLEAR_STR
6928: BGP_STR
6929: "Clear all peers\n"
6930: "Soft reconfig for rsclient RIB\n")
6931: {
6932: if (argc == 1)
6933: return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
6934: BGP_CLEAR_SOFT_RSCLIENT, NULL);
6935:
6936: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
6937: BGP_CLEAR_SOFT_RSCLIENT, NULL);
6938: }
6939:
6940: ALIAS (clear_bgp_all_rsclient,
6941: clear_bgp_ipv6_all_rsclient_cmd,
6942: "clear bgp ipv6 * rsclient",
6943: CLEAR_STR
6944: BGP_STR
6945: "Address family\n"
6946: "Clear all peers\n"
6947: "Soft reconfig for rsclient RIB\n")
6948:
6949: ALIAS (clear_bgp_all_rsclient,
6950: clear_bgp_instance_all_rsclient_cmd,
6951: "clear bgp view WORD * rsclient",
6952: CLEAR_STR
6953: BGP_STR
6954: "BGP view\n"
6955: "view name\n"
6956: "Clear all peers\n"
6957: "Soft reconfig for rsclient RIB\n")
6958:
6959: ALIAS (clear_bgp_all_rsclient,
6960: clear_bgp_ipv6_instance_all_rsclient_cmd,
6961: "clear bgp ipv6 view WORD * rsclient",
6962: CLEAR_STR
6963: BGP_STR
6964: "Address family\n"
6965: "BGP view\n"
6966: "view name\n"
6967: "Clear all peers\n"
6968: "Soft reconfig for rsclient RIB\n")
6969:
6970: DEFUN (clear_ip_bgp_all_rsclient,
6971: clear_ip_bgp_all_rsclient_cmd,
6972: "clear ip bgp * rsclient",
6973: CLEAR_STR
6974: IP_STR
6975: BGP_STR
6976: "Clear all peers\n"
6977: "Soft reconfig for rsclient RIB\n")
6978: {
6979: if (argc == 1)
6980: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
6981: BGP_CLEAR_SOFT_RSCLIENT, NULL);
6982:
6983: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
6984: BGP_CLEAR_SOFT_RSCLIENT, NULL);
6985: }
6986:
6987: ALIAS (clear_ip_bgp_all_rsclient,
6988: clear_ip_bgp_instance_all_rsclient_cmd,
6989: "clear ip bgp view WORD * rsclient",
6990: CLEAR_STR
6991: IP_STR
6992: BGP_STR
6993: "BGP view\n"
6994: "view name\n"
6995: "Clear all peers\n"
6996: "Soft reconfig for rsclient RIB\n")
6997:
6998: DEFUN (clear_bgp_peer_rsclient,
6999: clear_bgp_peer_rsclient_cmd,
7000: "clear bgp (A.B.C.D|X:X::X:X) rsclient",
7001: CLEAR_STR
7002: BGP_STR
7003: "BGP neighbor IP address to clear\n"
7004: "BGP IPv6 neighbor to clear\n"
7005: "Soft reconfig for rsclient RIB\n")
7006: {
7007: if (argc == 2)
7008: return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_peer,
7009: BGP_CLEAR_SOFT_RSCLIENT, argv[1]);
7010:
7011: return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
7012: BGP_CLEAR_SOFT_RSCLIENT, argv[0]);
7013: }
7014:
7015: ALIAS (clear_bgp_peer_rsclient,
7016: clear_bgp_ipv6_peer_rsclient_cmd,
7017: "clear bgp ipv6 (A.B.C.D|X:X::X:X) rsclient",
7018: CLEAR_STR
7019: BGP_STR
7020: "Address family\n"
7021: "BGP neighbor IP address to clear\n"
7022: "BGP IPv6 neighbor to clear\n"
7023: "Soft reconfig for rsclient RIB\n")
7024:
7025: ALIAS (clear_bgp_peer_rsclient,
7026: clear_bgp_instance_peer_rsclient_cmd,
7027: "clear bgp view WORD (A.B.C.D|X:X::X:X) rsclient",
7028: CLEAR_STR
7029: BGP_STR
7030: "BGP view\n"
7031: "view name\n"
7032: "BGP neighbor IP address to clear\n"
7033: "BGP IPv6 neighbor to clear\n"
7034: "Soft reconfig for rsclient RIB\n")
7035:
7036: ALIAS (clear_bgp_peer_rsclient,
7037: clear_bgp_ipv6_instance_peer_rsclient_cmd,
7038: "clear bgp ipv6 view WORD (A.B.C.D|X:X::X:X) rsclient",
7039: CLEAR_STR
7040: BGP_STR
7041: "Address family\n"
7042: "BGP view\n"
7043: "view name\n"
7044: "BGP neighbor IP address to clear\n"
7045: "BGP IPv6 neighbor to clear\n"
7046: "Soft reconfig for rsclient RIB\n")
7047:
7048: DEFUN (clear_ip_bgp_peer_rsclient,
7049: clear_ip_bgp_peer_rsclient_cmd,
7050: "clear ip bgp (A.B.C.D|X:X::X:X) rsclient",
7051: CLEAR_STR
7052: IP_STR
7053: BGP_STR
7054: "BGP neighbor IP address to clear\n"
7055: "BGP IPv6 neighbor to clear\n"
7056: "Soft reconfig for rsclient RIB\n")
7057: {
7058: if (argc == 2)
7059: return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_peer,
7060: BGP_CLEAR_SOFT_RSCLIENT, argv[1]);
7061:
7062: return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
7063: BGP_CLEAR_SOFT_RSCLIENT, argv[0]);
7064: }
7065:
7066: ALIAS (clear_ip_bgp_peer_rsclient,
7067: clear_ip_bgp_instance_peer_rsclient_cmd,
7068: "clear ip bgp view WORD (A.B.C.D|X:X::X:X) rsclient",
7069: CLEAR_STR
7070: IP_STR
7071: BGP_STR
7072: "BGP view\n"
7073: "view name\n"
7074: "BGP neighbor IP address to clear\n"
7075: "BGP IPv6 neighbor to clear\n"
7076: "Soft reconfig for rsclient RIB\n")
7077:
7078: DEFUN (show_bgp_views,
7079: show_bgp_views_cmd,
7080: "show bgp views",
7081: SHOW_STR
7082: BGP_STR
7083: "Show the defined BGP views\n")
7084: {
7085: struct list *inst = bm->bgp;
7086: struct listnode *node;
7087: struct bgp *bgp;
7088:
7089: if (!bgp_option_check (BGP_OPT_MULTIPLE_INSTANCE))
7090: {
7091: vty_out (vty, "Multiple BGP views are not defined%s", VTY_NEWLINE);
7092: return CMD_WARNING;
7093: }
7094:
7095: vty_out (vty, "Defined BGP views:%s", VTY_NEWLINE);
7096: for (ALL_LIST_ELEMENTS_RO(inst, node, bgp))
7097: vty_out (vty, "\t%s (AS%u)%s",
7098: bgp->name ? bgp->name : "(null)",
7099: bgp->as, VTY_NEWLINE);
7100:
7101: return CMD_SUCCESS;
7102: }
7103:
7104: DEFUN (show_bgp_memory,
7105: show_bgp_memory_cmd,
7106: "show bgp memory",
7107: SHOW_STR
7108: BGP_STR
7109: "Global BGP memory statistics\n")
7110: {
7111: char memstrbuf[MTYPE_MEMSTR_LEN];
7112: unsigned long count;
7113:
7114: /* RIB related usage stats */
7115: count = mtype_stats_alloc (MTYPE_BGP_NODE);
7116: vty_out (vty, "%ld RIB nodes, using %s of memory%s", count,
7117: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7118: count * sizeof (struct bgp_node)),
7119: VTY_NEWLINE);
7120:
7121: count = mtype_stats_alloc (MTYPE_BGP_ROUTE);
7122: vty_out (vty, "%ld BGP routes, using %s of memory%s", count,
7123: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7124: count * sizeof (struct bgp_info)),
7125: VTY_NEWLINE);
7126: if ((count = mtype_stats_alloc (MTYPE_BGP_ROUTE_EXTRA)))
7127: vty_out (vty, "%ld BGP route ancillaries, using %s of memory%s", count,
7128: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7129: count * sizeof (struct bgp_info_extra)),
7130: VTY_NEWLINE);
7131:
7132: if ((count = mtype_stats_alloc (MTYPE_BGP_STATIC)))
7133: vty_out (vty, "%ld Static routes, using %s of memory%s", count,
7134: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7135: count * sizeof (struct bgp_static)),
7136: VTY_NEWLINE);
7137:
7138: /* Adj-In/Out */
7139: if ((count = mtype_stats_alloc (MTYPE_BGP_ADJ_IN)))
7140: vty_out (vty, "%ld Adj-In entries, using %s of memory%s", count,
7141: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7142: count * sizeof (struct bgp_adj_in)),
7143: VTY_NEWLINE);
7144: if ((count = mtype_stats_alloc (MTYPE_BGP_ADJ_OUT)))
7145: vty_out (vty, "%ld Adj-Out entries, using %s of memory%s", count,
7146: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7147: count * sizeof (struct bgp_adj_out)),
7148: VTY_NEWLINE);
7149:
7150: if ((count = mtype_stats_alloc (MTYPE_BGP_NEXTHOP_CACHE)))
7151: vty_out (vty, "%ld Nexthop cache entries, using %s of memory%s", count,
7152: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7153: count * sizeof (struct bgp_nexthop_cache)),
7154: VTY_NEWLINE);
7155:
7156: if ((count = mtype_stats_alloc (MTYPE_BGP_DAMP_INFO)))
7157: vty_out (vty, "%ld Dampening entries, using %s of memory%s", count,
7158: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7159: count * sizeof (struct bgp_damp_info)),
7160: VTY_NEWLINE);
7161:
7162: /* Attributes */
7163: count = attr_count();
7164: vty_out (vty, "%ld BGP attributes, using %s of memory%s", count,
7165: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7166: count * sizeof(struct attr)),
7167: VTY_NEWLINE);
7168: if ((count = mtype_stats_alloc (MTYPE_ATTR_EXTRA)))
7169: vty_out (vty, "%ld BGP extra attributes, using %s of memory%s", count,
7170: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7171: count * sizeof(struct attr_extra)),
7172: VTY_NEWLINE);
7173:
7174: if ((count = attr_unknown_count()))
7175: vty_out (vty, "%ld unknown attributes%s", count, VTY_NEWLINE);
7176:
7177: /* AS_PATH attributes */
7178: count = aspath_count ();
7179: vty_out (vty, "%ld BGP AS-PATH entries, using %s of memory%s", count,
7180: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7181: count * sizeof (struct aspath)),
7182: VTY_NEWLINE);
7183:
7184: count = mtype_stats_alloc (MTYPE_AS_SEG);
7185: vty_out (vty, "%ld BGP AS-PATH segments, using %s of memory%s", count,
7186: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7187: count * sizeof (struct assegment)),
7188: VTY_NEWLINE);
7189:
7190: /* Other attributes */
7191: if ((count = community_count ()))
7192: vty_out (vty, "%ld BGP community entries, using %s of memory%s", count,
7193: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7194: count * sizeof (struct community)),
7195: VTY_NEWLINE);
7196: if ((count = mtype_stats_alloc (MTYPE_ECOMMUNITY)))
7197: vty_out (vty, "%ld BGP community entries, using %s of memory%s", count,
7198: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7199: count * sizeof (struct ecommunity)),
7200: VTY_NEWLINE);
7201:
7202: if ((count = mtype_stats_alloc (MTYPE_CLUSTER)))
7203: vty_out (vty, "%ld Cluster lists, using %s of memory%s", count,
7204: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7205: count * sizeof (struct cluster_list)),
7206: VTY_NEWLINE);
7207:
7208: /* Peer related usage */
7209: count = mtype_stats_alloc (MTYPE_BGP_PEER);
7210: vty_out (vty, "%ld peers, using %s of memory%s", count,
7211: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7212: count * sizeof (struct peer)),
7213: VTY_NEWLINE);
7214:
7215: if ((count = mtype_stats_alloc (MTYPE_PEER_GROUP)))
7216: vty_out (vty, "%ld peer groups, using %s of memory%s", count,
7217: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7218: count * sizeof (struct peer_group)),
7219: VTY_NEWLINE);
7220:
7221: /* Other */
7222: if ((count = mtype_stats_alloc (MTYPE_HASH)))
7223: vty_out (vty, "%ld hash tables, using %s of memory%s", count,
7224: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7225: count * sizeof (struct hash)),
7226: VTY_NEWLINE);
7227: if ((count = mtype_stats_alloc (MTYPE_HASH_BACKET)))
7228: vty_out (vty, "%ld hash buckets, using %s of memory%s", count,
7229: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7230: count * sizeof (struct hash_backet)),
7231: VTY_NEWLINE);
7232: if ((count = mtype_stats_alloc (MTYPE_BGP_REGEXP)))
7233: vty_out (vty, "%ld compiled regexes, using %s of memory%s", count,
7234: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7235: count * sizeof (regex_t)),
7236: VTY_NEWLINE);
7237: return CMD_SUCCESS;
7238: }
7239:
7240: /* Show BGP peer's summary information. */
7241: static int
7242: bgp_show_summary (struct vty *vty, struct bgp *bgp, int afi, int safi)
7243: {
7244: struct peer *peer;
7245: struct listnode *node, *nnode;
7246: unsigned int count = 0;
7247: char timebuf[BGP_UPTIME_LEN];
7248: int len;
7249:
7250: /* Header string for each address family. */
7251: static char header[] = "Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd";
7252:
7253: for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
7254: {
7255: if (peer->afc[afi][safi])
7256: {
7257: if (!count)
7258: {
7259: unsigned long ents;
7260: char memstrbuf[MTYPE_MEMSTR_LEN];
7261:
7262: /* Usage summary and header */
7263: vty_out (vty,
7264: "BGP router identifier %s, local AS number %u%s",
7265: inet_ntoa (bgp->router_id), bgp->as, VTY_NEWLINE);
7266:
7267: ents = bgp_table_count (bgp->rib[afi][safi]);
7268: vty_out (vty, "RIB entries %ld, using %s of memory%s", ents,
7269: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7270: ents * sizeof (struct bgp_node)),
7271: VTY_NEWLINE);
7272:
7273: /* Peer related usage */
7274: ents = listcount (bgp->peer);
7275: vty_out (vty, "Peers %ld, using %s of memory%s",
7276: ents,
7277: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7278: ents * sizeof (struct peer)),
7279: VTY_NEWLINE);
7280:
7281: if ((ents = listcount (bgp->rsclient)))
7282: vty_out (vty, "RS-Client peers %ld, using %s of memory%s",
7283: ents,
7284: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7285: ents * sizeof (struct peer)),
7286: VTY_NEWLINE);
7287:
7288: if ((ents = listcount (bgp->group)))
7289: vty_out (vty, "Peer groups %ld, using %s of memory%s", ents,
7290: mtype_memstr (memstrbuf, sizeof (memstrbuf),
7291: ents * sizeof (struct peer_group)),
7292: VTY_NEWLINE);
7293:
7294: if (CHECK_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING))
7295: vty_out (vty, "Dampening enabled.%s", VTY_NEWLINE);
7296: vty_out (vty, "%s", VTY_NEWLINE);
7297: vty_out (vty, "%s%s", header, VTY_NEWLINE);
7298: }
7299:
7300: count++;
7301:
7302: len = vty_out (vty, "%s", peer->host);
7303: len = 16 - len;
7304: if (len < 1)
7305: vty_out (vty, "%s%*s", VTY_NEWLINE, 16, " ");
7306: else
7307: vty_out (vty, "%*s", len, " ");
7308:
7309: vty_out (vty, "4 ");
7310:
7311: vty_out (vty, "%5u %7d %7d %8d %4d %4lu ",
7312: peer->as,
7313: peer->open_in + peer->update_in + peer->keepalive_in
7314: + peer->notify_in + peer->refresh_in + peer->dynamic_cap_in,
7315: peer->open_out + peer->update_out + peer->keepalive_out
7316: + peer->notify_out + peer->refresh_out
7317: + peer->dynamic_cap_out,
7318: 0, 0, (unsigned long) peer->obuf->count);
7319:
7320: vty_out (vty, "%8s",
7321: peer_uptime (peer->uptime, timebuf, BGP_UPTIME_LEN));
7322:
7323: if (peer->status == Established)
7324: {
7325: vty_out (vty, " %8ld", peer->pcount[afi][safi]);
7326: }
7327: else
7328: {
7329: if (CHECK_FLAG (peer->flags, PEER_FLAG_SHUTDOWN))
7330: vty_out (vty, " Idle (Admin)");
7331: else if (CHECK_FLAG (peer->sflags, PEER_STATUS_PREFIX_OVERFLOW))
7332: vty_out (vty, " Idle (PfxCt)");
7333: else
7334: vty_out (vty, " %-11s", LOOKUP(bgp_status_msg, peer->status));
7335: }
7336:
7337: vty_out (vty, "%s", VTY_NEWLINE);
7338: }
7339: }
7340:
7341: if (count)
7342: vty_out (vty, "%sTotal number of neighbors %d%s", VTY_NEWLINE,
7343: count, VTY_NEWLINE);
7344: else
7345: vty_out (vty, "No %s neighbor is configured%s",
7346: afi == AFI_IP ? "IPv4" : "IPv6", VTY_NEWLINE);
7347: return CMD_SUCCESS;
7348: }
7349:
7350: static int
7351: bgp_show_summary_vty (struct vty *vty, const char *name,
7352: afi_t afi, safi_t safi)
7353: {
7354: struct bgp *bgp;
7355:
7356: if (name)
7357: {
7358: bgp = bgp_lookup_by_name (name);
7359:
7360: if (! bgp)
7361: {
7362: vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
7363: return CMD_WARNING;
7364: }
7365:
7366: bgp_show_summary (vty, bgp, afi, safi);
7367: return CMD_SUCCESS;
7368: }
7369:
7370: bgp = bgp_get_default ();
7371:
7372: if (bgp)
7373: bgp_show_summary (vty, bgp, afi, safi);
7374:
7375: return CMD_SUCCESS;
7376: }
7377:
7378: /* `show ip bgp summary' commands. */
7379: DEFUN (show_ip_bgp_summary,
7380: show_ip_bgp_summary_cmd,
7381: "show ip bgp summary",
7382: SHOW_STR
7383: IP_STR
7384: BGP_STR
7385: "Summary of BGP neighbor status\n")
7386: {
7387: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7388: }
7389:
7390: DEFUN (show_ip_bgp_instance_summary,
7391: show_ip_bgp_instance_summary_cmd,
7392: "show ip bgp view WORD summary",
7393: SHOW_STR
7394: IP_STR
7395: BGP_STR
7396: "BGP view\n"
7397: "View name\n"
7398: "Summary of BGP neighbor status\n")
7399: {
7400: return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
7401: }
7402:
7403: DEFUN (show_ip_bgp_ipv4_summary,
7404: show_ip_bgp_ipv4_summary_cmd,
7405: "show ip bgp ipv4 (unicast|multicast) summary",
7406: SHOW_STR
7407: IP_STR
7408: BGP_STR
7409: "Address family\n"
7410: "Address Family modifier\n"
7411: "Address Family modifier\n"
7412: "Summary of BGP neighbor status\n")
7413: {
7414: if (strncmp (argv[0], "m", 1) == 0)
7415: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
7416:
7417: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7418: }
7419:
7420: DEFUN (show_ip_bgp_instance_ipv4_summary,
7421: show_ip_bgp_instance_ipv4_summary_cmd,
7422: "show ip bgp view WORD ipv4 (unicast|multicast) summary",
7423: SHOW_STR
7424: IP_STR
7425: BGP_STR
7426: "BGP view\n"
7427: "View name\n"
7428: "Address family\n"
7429: "Address Family modifier\n"
7430: "Address Family modifier\n"
7431: "Summary of BGP neighbor status\n")
7432: {
7433: if (strncmp (argv[1], "m", 1) == 0)
7434: return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
7435: else
7436: return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
7437: }
7438:
7439: DEFUN (show_ip_bgp_vpnv4_all_summary,
7440: show_ip_bgp_vpnv4_all_summary_cmd,
7441: "show ip bgp vpnv4 all summary",
7442: SHOW_STR
7443: IP_STR
7444: BGP_STR
7445: "Display VPNv4 NLRI specific information\n"
7446: "Display information about all VPNv4 NLRIs\n"
7447: "Summary of BGP neighbor status\n")
7448: {
7449: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7450: }
7451:
7452: DEFUN (show_ip_bgp_vpnv4_rd_summary,
7453: show_ip_bgp_vpnv4_rd_summary_cmd,
7454: "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn summary",
7455: SHOW_STR
7456: IP_STR
7457: BGP_STR
7458: "Display VPNv4 NLRI specific information\n"
7459: "Display information for a route distinguisher\n"
7460: "VPN Route Distinguisher\n"
7461: "Summary of BGP neighbor status\n")
7462: {
7463: int ret;
7464: struct prefix_rd prd;
7465:
7466: ret = str2prefix_rd (argv[0], &prd);
7467: if (! ret)
7468: {
7469: vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
7470: return CMD_WARNING;
7471: }
7472:
7473: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7474: }
7475:
7476: DEFUN (show_bgp_ipv4_safi_summary,
7477: show_bgp_ipv4_safi_summary_cmd,
7478: "show bgp ipv4 (unicast|multicast) summary",
7479: SHOW_STR
7480: BGP_STR
7481: "Address family\n"
7482: "Address Family modifier\n"
7483: "Address Family modifier\n"
7484: "Summary of BGP neighbor status\n")
7485: {
7486: if (strncmp (argv[0], "m", 1) == 0)
7487: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
7488:
7489: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7490: }
7491:
7492: DEFUN (show_bgp_instance_ipv4_safi_summary,
7493: show_bgp_instance_ipv4_safi_summary_cmd,
7494: "show bgp view WORD ipv4 (unicast|multicast) summary",
7495: SHOW_STR
7496: BGP_STR
7497: "BGP view\n"
7498: "View name\n"
7499: "Address family\n"
7500: "Address Family modifier\n"
7501: "Address Family modifier\n"
7502: "Summary of BGP neighbor status\n")
7503: {
7504: if (strncmp (argv[1], "m", 1) == 0)
7505: return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
7506: else
7507: return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
7508: }
7509:
7510: DEFUN (show_bgp_ipv4_vpn_summary,
7511: show_bgp_ipv4_vpn_summary_cmd,
7512: "show bgp ipv4 vpn summary",
7513: SHOW_STR
7514: BGP_STR
7515: "IPv4\n"
7516: "Display VPN NLRI specific information\n"
7517: "Summary of BGP neighbor status\n")
7518: {
7519: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7520: }
7521:
7522: /* `show ip bgp summary' commands. */
7523: DEFUN (show_bgp_ipv6_vpn_summary,
7524: show_bgp_ipv6_vpn_summary_cmd,
7525: "show bgp ipv6 vpn summary",
7526: SHOW_STR
7527: BGP_STR
7528: "IPv6\n"
7529: "Display VPN NLRI specific information\n"
7530: "Summary of BGP neighbor status\n")
7531: {
7532: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
7533: }
7534:
7535: DEFUN (show_bgp_ipv4_encap_summary,
7536: show_bgp_ipv4_encap_summary_cmd,
7537: "show bgp ipv4 encap summary",
7538: SHOW_STR
7539: BGP_STR
7540: "IPv4\n"
7541: "Display ENCAP NLRI specific information\n"
7542: "Summary of BGP neighbor status\n")
7543: {
7544: return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_ENCAP);
7545: }
7546:
7547: DEFUN (show_bgp_ipv6_encap_summary,
7548: show_bgp_ipv6_encap_summary_cmd,
7549: "show bgp ipv6 encap summary",
7550: SHOW_STR
7551: BGP_STR
7552: "IPv6\n"
7553: "Display ENCAP NLRI specific information\n"
7554: "Summary of BGP neighbor status\n")
7555: {
7556: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
7557: }
7558:
7559: DEFUN (show_bgp_instance_summary,
7560: show_bgp_instance_summary_cmd,
7561: "show bgp view WORD summary",
7562: SHOW_STR
7563: BGP_STR
7564: "BGP view\n"
7565: "View name\n"
7566: "Summary of BGP neighbor status\n")
7567: {
7568: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7569: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7570: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
7571: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7572: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7573: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
7574: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7575: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7576: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MPLS_VPN);
7577: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7578: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7579: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_ENCAP);
7580:
7581: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7582: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7583: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
7584: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7585: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7586: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST);
7587: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7588: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7589: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MPLS_VPN);
7590: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7591: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7592: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_ENCAP);
7593:
7594: return CMD_SUCCESS;
7595: }
7596:
7597: DEFUN (show_bgp_instance_ipv4_summary,
7598: show_bgp_instance_ipv4_summary_cmd,
7599: "show bgp view WORD ipv4 summary",
7600: SHOW_STR
7601: BGP_STR
7602: IP_STR
7603: "Address Family modifier\n"
7604: "Address Family modifier\n"
7605: "BGP view\n"
7606: "View name\n"
7607: "Summary of BGP neighbor status\n")
7608: {
7609: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7610: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7611: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
7612: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7613: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7614: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
7615: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7616: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7617: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MPLS_VPN);
7618: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7619: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7620: bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_ENCAP);
7621:
7622: return CMD_SUCCESS;
7623: }
7624:
7625: DEFUN (show_bgp_instance_ipv6_summary,
7626: show_bgp_instance_ipv6_summary_cmd,
7627: "show bgp view WORD ipv6 summary",
7628: SHOW_STR
7629: BGP_STR
7630: IPV6_STR
7631: "Address Family modifier\n"
7632: "Address Family modifier\n"
7633: "BGP view\n"
7634: "View name\n"
7635: "Summary of BGP neighbor status\n")
7636: {
7637: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7638: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7639: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
7640: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7641: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7642: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST);
7643: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7644: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7645: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MPLS_VPN);
7646: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7647: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7648: bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_ENCAP);
7649:
7650: return CMD_SUCCESS;
7651: }
7652:
7653: DEFUN (show_bgp_ipv6_safi_summary,
7654: show_bgp_ipv6_safi_summary_cmd,
7655: "show bgp ipv6 (unicast|multicast) summary",
7656: SHOW_STR
7657: BGP_STR
7658: "Address family\n"
7659: "Address Family modifier\n"
7660: "Address Family modifier\n"
7661: "Summary of BGP neighbor status\n")
7662: {
7663: if (strncmp (argv[0], "m", 1) == 0)
7664: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
7665:
7666: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
7667: }
7668:
7669: DEFUN (show_bgp_instance_ipv6_safi_summary,
7670: show_bgp_instance_ipv6_safi_summary_cmd,
7671: "show bgp view WORD ipv6 (unicast|multicast) summary",
7672: SHOW_STR
7673: BGP_STR
7674: "BGP view\n"
7675: "View name\n"
7676: "Address family\n"
7677: "Address Family modifier\n"
7678: "Address Family modifier\n"
7679: "Summary of BGP neighbor status\n")
7680: {
7681: if (strncmp (argv[1], "m", 1) == 0)
7682: return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST);
7683:
7684: return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
7685: }
7686:
7687: /* old command */
7688: DEFUN (show_ipv6_bgp_summary,
7689: show_ipv6_bgp_summary_cmd,
7690: "show ipv6 bgp summary",
7691: SHOW_STR
7692: IPV6_STR
7693: BGP_STR
7694: "Summary of BGP neighbor status\n")
7695: {
7696: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
7697: }
7698:
7699: /* old command */
7700: DEFUN (show_ipv6_mbgp_summary,
7701: show_ipv6_mbgp_summary_cmd,
7702: "show ipv6 mbgp summary",
7703: SHOW_STR
7704: IPV6_STR
7705: MBGP_STR
7706: "Summary of BGP neighbor status\n")
7707: {
7708: return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
7709: }
7710:
7711: /* variations of show bgp [...] summary */
7712:
7713: /* This one is for the 0-keyword variant */
7714: DEFUN (show_bgp_summary,
7715: show_bgp_summary_cmd,
7716: "show bgp summary",
7717: SHOW_STR
7718: BGP_STR
7719: "Summary of BGP neighbor status\n")
7720: {
7721: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7722: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7723: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7724: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7725: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7726: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
7727: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7728: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7729: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7730: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7731: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7732: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_ENCAP);
7733:
7734: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7735: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7736: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
7737: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7738: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7739: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
7740: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7741: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7742: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
7743: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7744: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7745: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
7746:
7747: return CMD_SUCCESS;
7748: }
7749:
7750: ALIAS (show_bgp_summary,
7751: show_bgp_ipv6_summary_cmd,
7752: "show bgp ipv6 summary",
7753: SHOW_STR
7754: BGP_STR
7755: "Address family\n"
7756: "Summary of BGP neighbor status\n")
7757:
7758: DEFUN (show_bgp_summary_1w,
7759: show_bgp_summary_1w_cmd,
7760: "show bgp (ipv4|ipv6|unicast|multicast|vpn|encap) summary",
7761: SHOW_STR
7762: BGP_STR
7763: IP_STR
7764: IP6_STR
7765: "Address Family modifier\n"
7766: "Address Family modifier\n"
7767: "Address Family modifier\n"
7768: "Address Family modifier\n"
7769: "Summary of BGP neighbor status\n")
7770: {
7771: if (strcmp (argv[0], "ipv4") == 0) {
7772: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7773: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7774: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7775: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7776: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7777: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
7778: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7779: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7780: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7781: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7782: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7783: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_ENCAP);
7784: return CMD_SUCCESS;
7785: }
7786:
7787: if (strcmp (argv[0], "ipv6") == 0) {
7788: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7789: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7790: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
7791: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7792: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7793: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
7794: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7795: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7796: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
7797: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
7798: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7799: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
7800: return CMD_SUCCESS;
7801: }
7802:
7803: if (strcmp (argv[0], "unicast") == 0) {
7804: vty_out(vty, "IPv4 Unicast Summary:%s", VTY_NEWLINE);
7805: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7806: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
7807: vty_out(vty, "%s", VTY_NEWLINE);
7808: vty_out(vty, "IPv6 Unicast Summary:%s", VTY_NEWLINE);
7809: vty_out(vty, "---------------------%s", VTY_NEWLINE);
7810: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
7811: return CMD_SUCCESS;
7812: }
7813: if (strcmp (argv[0], "multicast") == 0) {
7814: vty_out(vty, "IPv4 Multicast Summary:%s", VTY_NEWLINE);
7815: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7816: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
7817: vty_out(vty, "%s", VTY_NEWLINE);
7818: vty_out(vty, "IPv6 Multicast Summary:%s", VTY_NEWLINE);
7819: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
7820: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
7821: return CMD_SUCCESS;
7822: }
7823: if (strcmp (argv[0], "vpn") == 0) {
7824: vty_out(vty, "IPv4 VPN Summary:%s", VTY_NEWLINE);
7825: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7826: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
7827: vty_out(vty, "%s", VTY_NEWLINE);
7828: vty_out(vty, "IPv6 VPN Summary:%s", VTY_NEWLINE);
7829: vty_out(vty, "-----------------%s", VTY_NEWLINE);
7830: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
7831: return CMD_SUCCESS;
7832: }
7833: if (strcmp (argv[0], "encap") == 0) {
7834: vty_out(vty, "IPv4 Encap Summary:%s", VTY_NEWLINE);
7835: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7836: bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_ENCAP);
7837: vty_out(vty, "%s", VTY_NEWLINE);
7838: vty_out(vty, "IPv6 Encap Summary:%s", VTY_NEWLINE);
7839: vty_out(vty, "-------------------%s", VTY_NEWLINE);
7840: bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
7841: return CMD_SUCCESS;
7842: }
7843: vty_out(vty, "Unknown keyword: %s%s", argv[0], VTY_NEWLINE);
7844: return CMD_WARNING;
7845: }
7846:
7847:
7848:
7849: const char *
7850: afi_safi_print (afi_t afi, safi_t safi)
7851: {
7852: if (afi == AFI_IP && safi == SAFI_UNICAST)
7853: return "IPv4 Unicast";
7854: else if (afi == AFI_IP && safi == SAFI_MULTICAST)
7855: return "IPv4 Multicast";
7856: else if (afi == AFI_IP && safi == SAFI_MPLS_VPN)
7857: return "VPN-IPv4 Unicast";
7858: else if (afi == AFI_IP && safi == SAFI_ENCAP)
7859: return "ENCAP-IPv4 Unicast";
7860: else if (afi == AFI_IP6 && safi == SAFI_UNICAST)
7861: return "IPv6 Unicast";
7862: else if (afi == AFI_IP6 && safi == SAFI_MULTICAST)
7863: return "IPv6 Multicast";
7864: else if (afi == AFI_IP6 && safi == SAFI_MPLS_VPN)
7865: return "VPN-IPv6 Unicast";
7866: else if (afi == AFI_IP6 && safi == SAFI_ENCAP)
7867: return "ENCAP-IPv6 Unicast";
7868: else
7869: return "Unknown";
7870: }
7871:
7872: /* Show BGP peer's information. */
7873: enum show_type
7874: {
7875: show_all,
7876: show_peer
7877: };
7878:
7879: static void
7880: bgp_show_peer_afi_orf_cap (struct vty *vty, struct peer *p,
7881: afi_t afi, safi_t safi,
7882: u_int16_t adv_smcap, u_int16_t adv_rmcap,
7883: u_int16_t rcv_smcap, u_int16_t rcv_rmcap)
7884: {
7885: /* Send-Mode */
7886: if (CHECK_FLAG (p->af_cap[afi][safi], adv_smcap)
7887: || CHECK_FLAG (p->af_cap[afi][safi], rcv_smcap))
7888: {
7889: vty_out (vty, " Send-mode: ");
7890: if (CHECK_FLAG (p->af_cap[afi][safi], adv_smcap))
7891: vty_out (vty, "advertised");
7892: if (CHECK_FLAG (p->af_cap[afi][safi], rcv_smcap))
7893: vty_out (vty, "%sreceived",
7894: CHECK_FLAG (p->af_cap[afi][safi], adv_smcap) ?
7895: ", " : "");
7896: vty_out (vty, "%s", VTY_NEWLINE);
7897: }
7898:
7899: /* Receive-Mode */
7900: if (CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap)
7901: || CHECK_FLAG (p->af_cap[afi][safi], rcv_rmcap))
7902: {
7903: vty_out (vty, " Receive-mode: ");
7904: if (CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap))
7905: vty_out (vty, "advertised");
7906: if (CHECK_FLAG (p->af_cap[afi][safi], rcv_rmcap))
7907: vty_out (vty, "%sreceived",
7908: CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap) ?
7909: ", " : "");
7910: vty_out (vty, "%s", VTY_NEWLINE);
7911: }
7912: }
7913:
7914: static void
7915: bgp_show_peer_afi (struct vty *vty, struct peer *p, afi_t afi, safi_t safi)
7916: {
7917: struct bgp_filter *filter;
7918: char orf_pfx_name[BUFSIZ];
7919: int orf_pfx_count;
7920:
7921: filter = &p->filter[afi][safi];
7922:
7923: vty_out (vty, " For address family: %s%s", afi_safi_print (afi, safi),
7924: VTY_NEWLINE);
7925:
7926: if (p->af_group[afi][safi])
7927: vty_out (vty, " %s peer-group member%s", p->group->name, VTY_NEWLINE);
7928:
7929: if (CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_ADV)
7930: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_RCV)
7931: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_OLD_RCV)
7932: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_ADV)
7933: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_RCV)
7934: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_OLD_RCV))
7935: vty_out (vty, " AF-dependant capabilities:%s", VTY_NEWLINE);
7936:
7937: if (CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_ADV)
7938: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_RCV)
7939: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_ADV)
7940: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_RCV))
7941: {
7942: vty_out (vty, " Outbound Route Filter (ORF) type (%d) Prefix-list:%s",
7943: ORF_TYPE_PREFIX, VTY_NEWLINE);
7944: bgp_show_peer_afi_orf_cap (vty, p, afi, safi,
7945: PEER_CAP_ORF_PREFIX_SM_ADV,
7946: PEER_CAP_ORF_PREFIX_RM_ADV,
7947: PEER_CAP_ORF_PREFIX_SM_RCV,
7948: PEER_CAP_ORF_PREFIX_RM_RCV);
7949: }
7950: if (CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_ADV)
7951: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_OLD_RCV)
7952: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_ADV)
7953: || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_RM_OLD_RCV))
7954: {
7955: vty_out (vty, " Outbound Route Filter (ORF) type (%d) Prefix-list:%s",
7956: ORF_TYPE_PREFIX_OLD, VTY_NEWLINE);
7957: bgp_show_peer_afi_orf_cap (vty, p, afi, safi,
7958: PEER_CAP_ORF_PREFIX_SM_ADV,
7959: PEER_CAP_ORF_PREFIX_RM_ADV,
7960: PEER_CAP_ORF_PREFIX_SM_OLD_RCV,
7961: PEER_CAP_ORF_PREFIX_RM_OLD_RCV);
7962: }
7963:
7964: sprintf (orf_pfx_name, "%s.%d.%d", p->host, afi, safi);
7965: orf_pfx_count = prefix_bgp_show_prefix_list (NULL, afi, orf_pfx_name);
7966:
7967: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_ORF_PREFIX_SEND)
7968: || orf_pfx_count)
7969: {
7970: vty_out (vty, " Outbound Route Filter (ORF):");
7971: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_ORF_PREFIX_SEND))
7972: vty_out (vty, " sent;");
7973: if (orf_pfx_count)
7974: vty_out (vty, " received (%d entries)", orf_pfx_count);
7975: vty_out (vty, "%s", VTY_NEWLINE);
7976: }
7977: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_ORF_WAIT_REFRESH))
7978: vty_out (vty, " First update is deferred until ORF or ROUTE-REFRESH is received%s", VTY_NEWLINE);
7979:
7980: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_REFLECTOR_CLIENT))
7981: vty_out (vty, " Route-Reflector Client%s", VTY_NEWLINE);
7982: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT))
7983: vty_out (vty, " Route-Server Client%s", VTY_NEWLINE);
7984: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SOFT_RECONFIG))
7985: vty_out (vty, " Inbound soft reconfiguration allowed%s", VTY_NEWLINE);
7986: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_REMOVE_PRIVATE_AS))
7987: vty_out (vty, " Private AS number removed from updates to this neighbor%s", VTY_NEWLINE);
7988: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_NEXTHOP_SELF))
7989: vty_out (vty, " NEXT_HOP is always this router%s", VTY_NEWLINE);
7990: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_AS_PATH_UNCHANGED))
7991: vty_out (vty, " AS_PATH is propagated unchanged to this neighbor%s", VTY_NEWLINE);
7992: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_NEXTHOP_UNCHANGED))
7993: vty_out (vty, " NEXT_HOP is propagated unchanged to this neighbor%s", VTY_NEWLINE);
7994: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_MED_UNCHANGED))
7995: vty_out (vty, " MED is propagated unchanged to this neighbor%s", VTY_NEWLINE);
7996: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY)
7997: || CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
7998: {
7999: vty_out (vty, " Community attribute sent to this neighbor");
8000: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY)
8001: && CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
8002: vty_out (vty, "(both)%s", VTY_NEWLINE);
8003: else if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
8004: vty_out (vty, "(extended)%s", VTY_NEWLINE);
8005: else
8006: vty_out (vty, "(standard)%s", VTY_NEWLINE);
8007: }
8008: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE))
8009: {
8010: vty_out (vty, " Default information originate,");
8011:
8012: if (p->default_rmap[afi][safi].name)
8013: vty_out (vty, " default route-map %s%s,",
8014: p->default_rmap[afi][safi].map ? "*" : "",
8015: p->default_rmap[afi][safi].name);
8016: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_DEFAULT_ORIGINATE))
8017: vty_out (vty, " default sent%s", VTY_NEWLINE);
8018: else
8019: vty_out (vty, " default not sent%s", VTY_NEWLINE);
8020: }
8021:
8022: if (filter->plist[FILTER_IN].name
8023: || filter->dlist[FILTER_IN].name
8024: || filter->aslist[FILTER_IN].name
8025: || filter->map[RMAP_IN].name)
8026: vty_out (vty, " Inbound path policy configured%s", VTY_NEWLINE);
8027: if (filter->plist[FILTER_OUT].name
8028: || filter->dlist[FILTER_OUT].name
8029: || filter->aslist[FILTER_OUT].name
8030: || filter->map[RMAP_OUT].name
8031: || filter->usmap.name)
8032: vty_out (vty, " Outbound path policy configured%s", VTY_NEWLINE);
8033: if (filter->map[RMAP_IMPORT].name)
8034: vty_out (vty, " Import policy for this RS-client configured%s", VTY_NEWLINE);
8035: if (filter->map[RMAP_EXPORT].name)
8036: vty_out (vty, " Export policy for this RS-client configured%s", VTY_NEWLINE);
8037:
8038: /* prefix-list */
8039: if (filter->plist[FILTER_IN].name)
8040: vty_out (vty, " Incoming update prefix filter list is %s%s%s",
8041: filter->plist[FILTER_IN].plist ? "*" : "",
8042: filter->plist[FILTER_IN].name,
8043: VTY_NEWLINE);
8044: if (filter->plist[FILTER_OUT].name)
8045: vty_out (vty, " Outgoing update prefix filter list is %s%s%s",
8046: filter->plist[FILTER_OUT].plist ? "*" : "",
8047: filter->plist[FILTER_OUT].name,
8048: VTY_NEWLINE);
8049:
8050: /* distribute-list */
8051: if (filter->dlist[FILTER_IN].name)
8052: vty_out (vty, " Incoming update network filter list is %s%s%s",
8053: filter->dlist[FILTER_IN].alist ? "*" : "",
8054: filter->dlist[FILTER_IN].name,
8055: VTY_NEWLINE);
8056: if (filter->dlist[FILTER_OUT].name)
8057: vty_out (vty, " Outgoing update network filter list is %s%s%s",
8058: filter->dlist[FILTER_OUT].alist ? "*" : "",
8059: filter->dlist[FILTER_OUT].name,
8060: VTY_NEWLINE);
8061:
8062: /* filter-list. */
8063: if (filter->aslist[FILTER_IN].name)
8064: vty_out (vty, " Incoming update AS path filter list is %s%s%s",
8065: filter->aslist[FILTER_IN].aslist ? "*" : "",
8066: filter->aslist[FILTER_IN].name,
8067: VTY_NEWLINE);
8068: if (filter->aslist[FILTER_OUT].name)
8069: vty_out (vty, " Outgoing update AS path filter list is %s%s%s",
8070: filter->aslist[FILTER_OUT].aslist ? "*" : "",
8071: filter->aslist[FILTER_OUT].name,
8072: VTY_NEWLINE);
8073:
8074: /* route-map. */
8075: if (filter->map[RMAP_IN].name)
8076: vty_out (vty, " Route map for incoming advertisements is %s%s%s",
8077: filter->map[RMAP_IN].map ? "*" : "",
8078: filter->map[RMAP_IN].name,
8079: VTY_NEWLINE);
8080: if (filter->map[RMAP_OUT].name)
8081: vty_out (vty, " Route map for outgoing advertisements is %s%s%s",
8082: filter->map[RMAP_OUT].map ? "*" : "",
8083: filter->map[RMAP_OUT].name,
8084: VTY_NEWLINE);
8085: if (filter->map[RMAP_IMPORT].name)
8086: vty_out (vty, " Route map for advertisements going into this RS-client's table is %s%s%s",
8087: filter->map[RMAP_IMPORT].map ? "*" : "",
8088: filter->map[RMAP_IMPORT].name,
8089: VTY_NEWLINE);
8090: if (filter->map[RMAP_EXPORT].name)
8091: vty_out (vty, " Route map for advertisements coming from this RS-client is %s%s%s",
8092: filter->map[RMAP_EXPORT].map ? "*" : "",
8093: filter->map[RMAP_EXPORT].name,
8094: VTY_NEWLINE);
8095:
8096: /* unsuppress-map */
8097: if (filter->usmap.name)
8098: vty_out (vty, " Route map for selective unsuppress is %s%s%s",
8099: filter->usmap.map ? "*" : "",
8100: filter->usmap.name, VTY_NEWLINE);
8101:
8102: /* Receive prefix count */
8103: vty_out (vty, " %ld accepted prefixes%s", p->pcount[afi][safi], VTY_NEWLINE);
8104:
8105: /* Maximum prefix */
8106: if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX))
8107: {
8108: vty_out (vty, " Maximum prefixes allowed %ld%s%s", p->pmax[afi][safi],
8109: CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_WARNING)
8110: ? " (warning-only)" : "", VTY_NEWLINE);
8111: vty_out (vty, " Threshold for warning message %d%%",
8112: p->pmax_threshold[afi][safi]);
8113: if (p->pmax_restart[afi][safi])
8114: vty_out (vty, ", restart interval %d min", p->pmax_restart[afi][safi]);
8115: vty_out (vty, "%s", VTY_NEWLINE);
8116: }
8117:
8118: vty_out (vty, "%s", VTY_NEWLINE);
8119: }
8120:
8121: static void
8122: bgp_show_peer (struct vty *vty, struct peer *p)
8123: {
8124: struct bgp *bgp;
8125: char buf1[BUFSIZ];
8126: char timebuf[BGP_UPTIME_LEN];
8127: afi_t afi;
8128: safi_t safi;
8129:
8130: bgp = p->bgp;
8131:
8132: /* Configured IP address. */
8133: vty_out (vty, "BGP neighbor is %s, ", p->host);
8134: vty_out (vty, "remote AS %u, ", p->as);
8135: vty_out (vty, "local AS %u%s%s, ",
8136: p->change_local_as ? p->change_local_as : p->local_as,
8137: CHECK_FLAG (p->flags, PEER_FLAG_LOCAL_AS_NO_PREPEND) ?
8138: " no-prepend" : "",
8139: CHECK_FLAG (p->flags, PEER_FLAG_LOCAL_AS_REPLACE_AS) ?
8140: " replace-as" : "");
8141: vty_out (vty, "%s link%s",
8142: p->as == p->local_as ? "internal" : "external",
8143: VTY_NEWLINE);
8144:
8145: /* Description. */
8146: if (p->desc)
8147: vty_out (vty, " Description: %s%s", p->desc, VTY_NEWLINE);
8148:
8149: /* Peer-group */
8150: if (p->group)
8151: vty_out (vty, " Member of peer-group %s for session parameters%s",
8152: p->group->name, VTY_NEWLINE);
8153:
8154: /* Administrative shutdown. */
8155: if (CHECK_FLAG (p->flags, PEER_FLAG_SHUTDOWN))
8156: vty_out (vty, " Administratively shut down%s", VTY_NEWLINE);
8157:
8158: /* BGP Version. */
8159: vty_out (vty, " BGP version 4");
8160: vty_out (vty, ", remote router ID %s%s",
8161: inet_ntop (AF_INET, &p->remote_id, buf1, BUFSIZ),
8162: VTY_NEWLINE);
8163:
8164: /* Confederation */
8165: if (CHECK_FLAG (bgp->config, BGP_CONFIG_CONFEDERATION)
8166: && bgp_confederation_peers_check (bgp, p->as))
8167: vty_out (vty, " Neighbor under common administration%s", VTY_NEWLINE);
8168:
8169: /* Status. */
8170: vty_out (vty, " BGP state = %s",
8171: LOOKUP (bgp_status_msg, p->status));
8172: if (p->status == Established)
8173: vty_out (vty, ", up for %8s",
8174: peer_uptime (p->uptime, timebuf, BGP_UPTIME_LEN));
8175: else if (p->status == Active)
8176: {
8177: if (CHECK_FLAG (p->flags, PEER_FLAG_PASSIVE))
8178: vty_out (vty, " (passive)");
8179: else if (CHECK_FLAG (p->sflags, PEER_STATUS_NSF_WAIT))
8180: vty_out (vty, " (NSF passive)");
8181: }
8182: vty_out (vty, "%s", VTY_NEWLINE);
8183:
8184: /* read timer */
8185: vty_out (vty, " Last read %s", peer_uptime (p->readtime, timebuf, BGP_UPTIME_LEN));
8186:
8187: /* Configured timer values. */
8188: vty_out (vty, ", hold time is %d, keepalive interval is %d seconds%s",
8189: p->v_holdtime, p->v_keepalive, VTY_NEWLINE);
8190: if (CHECK_FLAG (p->config, PEER_CONFIG_TIMER))
8191: {
8192: vty_out (vty, " Configured hold time is %d", p->holdtime);
8193: vty_out (vty, ", keepalive interval is %d seconds%s",
8194: p->keepalive, VTY_NEWLINE);
8195: }
8196:
8197: /* Capability. */
8198: if (p->status == Established)
8199: {
8200: if (p->cap
8201: || p->afc_adv[AFI_IP][SAFI_UNICAST]
8202: || p->afc_recv[AFI_IP][SAFI_UNICAST]
8203: || p->afc_adv[AFI_IP][SAFI_MULTICAST]
8204: || p->afc_recv[AFI_IP][SAFI_MULTICAST]
8205: || p->afc_adv[AFI_IP6][SAFI_UNICAST]
8206: || p->afc_recv[AFI_IP6][SAFI_UNICAST]
8207: || p->afc_adv[AFI_IP6][SAFI_MULTICAST]
8208: || p->afc_recv[AFI_IP6][SAFI_MULTICAST]
8209: || p->afc_adv[AFI_IP6][SAFI_MPLS_VPN]
8210: || p->afc_recv[AFI_IP6][SAFI_MPLS_VPN]
8211: || p->afc_adv[AFI_IP6][SAFI_ENCAP]
8212: || p->afc_recv[AFI_IP6][SAFI_ENCAP]
8213: || p->afc_adv[AFI_IP][SAFI_ENCAP]
8214: || p->afc_recv[AFI_IP][SAFI_ENCAP]
8215: || p->afc_adv[AFI_IP][SAFI_MPLS_VPN]
8216: || p->afc_recv[AFI_IP][SAFI_MPLS_VPN])
8217: {
8218: vty_out (vty, " Neighbor capabilities:%s", VTY_NEWLINE);
8219:
8220: /* AS4 */
8221: if (CHECK_FLAG (p->cap, PEER_CAP_AS4_RCV)
8222: || CHECK_FLAG (p->cap, PEER_CAP_AS4_ADV))
8223: {
8224: vty_out (vty, " 4 Byte AS:");
8225: if (CHECK_FLAG (p->cap, PEER_CAP_AS4_ADV))
8226: vty_out (vty, " advertised");
8227: if (CHECK_FLAG (p->cap, PEER_CAP_AS4_RCV))
8228: vty_out (vty, " %sreceived",
8229: CHECK_FLAG (p->cap, PEER_CAP_AS4_ADV) ? "and " : "");
8230: vty_out (vty, "%s", VTY_NEWLINE);
8231: }
8232: /* Dynamic */
8233: if (CHECK_FLAG (p->cap, PEER_CAP_DYNAMIC_RCV)
8234: || CHECK_FLAG (p->cap, PEER_CAP_DYNAMIC_ADV))
8235: {
8236: vty_out (vty, " Dynamic:");
8237: if (CHECK_FLAG (p->cap, PEER_CAP_DYNAMIC_ADV))
8238: vty_out (vty, " advertised");
8239: if (CHECK_FLAG (p->cap, PEER_CAP_DYNAMIC_RCV))
8240: vty_out (vty, " %sreceived",
8241: CHECK_FLAG (p->cap, PEER_CAP_DYNAMIC_ADV) ? "and " : "");
8242: vty_out (vty, "%s", VTY_NEWLINE);
8243: }
8244:
8245: /* Route Refresh */
8246: if (CHECK_FLAG (p->cap, PEER_CAP_REFRESH_ADV)
8247: || CHECK_FLAG (p->cap, PEER_CAP_REFRESH_NEW_RCV)
8248: || CHECK_FLAG (p->cap, PEER_CAP_REFRESH_OLD_RCV))
8249: {
8250: vty_out (vty, " Route refresh:");
8251: if (CHECK_FLAG (p->cap, PEER_CAP_REFRESH_ADV))
8252: vty_out (vty, " advertised");
8253: if (CHECK_FLAG (p->cap, PEER_CAP_REFRESH_NEW_RCV)
8254: || CHECK_FLAG (p->cap, PEER_CAP_REFRESH_OLD_RCV))
8255: vty_out (vty, " %sreceived(%s)",
8256: CHECK_FLAG (p->cap, PEER_CAP_REFRESH_ADV) ? "and " : "",
8257: (CHECK_FLAG (p->cap, PEER_CAP_REFRESH_OLD_RCV)
8258: && CHECK_FLAG (p->cap, PEER_CAP_REFRESH_NEW_RCV)) ?
8259: "old & new" : CHECK_FLAG (p->cap, PEER_CAP_REFRESH_OLD_RCV) ? "old" : "new");
8260:
8261: vty_out (vty, "%s", VTY_NEWLINE);
8262: }
8263:
8264: /* Multiprotocol Extensions */
8265: for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
8266: for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
8267: if (p->afc_adv[afi][safi] || p->afc_recv[afi][safi])
8268: {
8269: vty_out (vty, " Address family %s:", afi_safi_print (afi, safi));
8270: if (p->afc_adv[afi][safi])
8271: vty_out (vty, " advertised");
8272: if (p->afc_recv[afi][safi])
8273: vty_out (vty, " %sreceived", p->afc_adv[afi][safi] ? "and " : "");
8274: vty_out (vty, "%s", VTY_NEWLINE);
8275: }
8276:
8277: /* Gracefull Restart */
8278: if (CHECK_FLAG (p->cap, PEER_CAP_RESTART_RCV)
8279: || CHECK_FLAG (p->cap, PEER_CAP_RESTART_ADV))
8280: {
8281: vty_out (vty, " Graceful Restart Capabilty:");
8282: if (CHECK_FLAG (p->cap, PEER_CAP_RESTART_ADV))
8283: vty_out (vty, " advertised");
8284: if (CHECK_FLAG (p->cap, PEER_CAP_RESTART_RCV))
8285: vty_out (vty, " %sreceived",
8286: CHECK_FLAG (p->cap, PEER_CAP_RESTART_ADV) ? "and " : "");
8287: vty_out (vty, "%s", VTY_NEWLINE);
8288:
8289: if (CHECK_FLAG (p->cap, PEER_CAP_RESTART_RCV))
8290: {
8291: int restart_af_count = 0;
8292:
8293: vty_out (vty, " Remote Restart timer is %d seconds%s",
8294: p->v_gr_restart, VTY_NEWLINE);
8295: vty_out (vty, " Address families by peer:%s ", VTY_NEWLINE);
8296:
8297: for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
8298: for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
8299: if (CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_RESTART_AF_RCV))
8300: {
8301: vty_out (vty, "%s%s(%s)", restart_af_count ? ", " : "",
8302: afi_safi_print (afi, safi),
8303: CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_RESTART_AF_PRESERVE_RCV) ?
8304: "preserved" : "not preserved");
8305: restart_af_count++;
8306: }
8307: if (! restart_af_count)
8308: vty_out (vty, "none");
8309: vty_out (vty, "%s", VTY_NEWLINE);
8310: }
8311: }
8312: }
8313: }
8314:
8315: /* graceful restart information */
8316: if (CHECK_FLAG (p->cap, PEER_CAP_RESTART_RCV)
8317: || p->t_gr_restart
8318: || p->t_gr_stale)
8319: {
8320: int eor_send_af_count = 0;
8321: int eor_receive_af_count = 0;
8322:
8323: vty_out (vty, " Graceful restart informations:%s", VTY_NEWLINE);
8324: if (p->status == Established)
8325: {
8326: vty_out (vty, " End-of-RIB send: ");
8327: for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
8328: for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
8329: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_EOR_SEND))
8330: {
8331: vty_out (vty, "%s%s", eor_send_af_count ? ", " : "",
8332: afi_safi_print (afi, safi));
8333: eor_send_af_count++;
8334: }
8335: vty_out (vty, "%s", VTY_NEWLINE);
8336:
8337: vty_out (vty, " End-of-RIB received: ");
8338: for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
8339: for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
8340: if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_EOR_RECEIVED))
8341: {
8342: vty_out (vty, "%s%s", eor_receive_af_count ? ", " : "",
8343: afi_safi_print (afi, safi));
8344: eor_receive_af_count++;
8345: }
8346: vty_out (vty, "%s", VTY_NEWLINE);
8347: }
8348:
8349: if (p->t_gr_restart)
8350: vty_out (vty, " The remaining time of restart timer is %ld%s",
8351: thread_timer_remain_second (p->t_gr_restart), VTY_NEWLINE);
8352:
8353: if (p->t_gr_stale)
8354: vty_out (vty, " The remaining time of stalepath timer is %ld%s",
8355: thread_timer_remain_second (p->t_gr_stale), VTY_NEWLINE);
8356: }
8357:
8358: /* Packet counts. */
8359: vty_out (vty, " Message statistics:%s", VTY_NEWLINE);
8360: vty_out (vty, " Inq depth is 0%s", VTY_NEWLINE);
8361: vty_out (vty, " Outq depth is %lu%s", (unsigned long) p->obuf->count, VTY_NEWLINE);
8362: vty_out (vty, " Sent Rcvd%s", VTY_NEWLINE);
8363: vty_out (vty, " Opens: %10d %10d%s", p->open_out, p->open_in, VTY_NEWLINE);
8364: vty_out (vty, " Notifications: %10d %10d%s", p->notify_out, p->notify_in, VTY_NEWLINE);
8365: vty_out (vty, " Updates: %10d %10d%s", p->update_out, p->update_in, VTY_NEWLINE);
8366: vty_out (vty, " Keepalives: %10d %10d%s", p->keepalive_out, p->keepalive_in, VTY_NEWLINE);
8367: vty_out (vty, " Route Refresh: %10d %10d%s", p->refresh_out, p->refresh_in, VTY_NEWLINE);
8368: vty_out (vty, " Capability: %10d %10d%s", p->dynamic_cap_out, p->dynamic_cap_in, VTY_NEWLINE);
8369: vty_out (vty, " Total: %10d %10d%s", p->open_out + p->notify_out +
8370: p->update_out + p->keepalive_out + p->refresh_out + p->dynamic_cap_out,
8371: p->open_in + p->notify_in + p->update_in + p->keepalive_in + p->refresh_in +
8372: p->dynamic_cap_in, VTY_NEWLINE);
8373:
8374: /* advertisement-interval */
8375: vty_out (vty, " Minimum time between advertisement runs is %d seconds%s",
8376: p->v_routeadv, VTY_NEWLINE);
8377:
8378: /* Update-source. */
8379: if (p->update_if || p->update_source)
8380: {
8381: vty_out (vty, " Update source is ");
8382: if (p->update_if)
8383: vty_out (vty, "%s", p->update_if);
8384: else if (p->update_source)
8385: vty_out (vty, "%s",
8386: sockunion2str (p->update_source, buf1, SU_ADDRSTRLEN));
8387: vty_out (vty, "%s", VTY_NEWLINE);
8388: }
8389:
8390: /* Default weight */
8391: if (CHECK_FLAG (p->config, PEER_CONFIG_WEIGHT))
8392: vty_out (vty, " Default weight %d%s", p->weight,
8393: VTY_NEWLINE);
8394:
8395: vty_out (vty, "%s", VTY_NEWLINE);
8396:
8397: /* Address Family Information */
8398: for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
8399: for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
8400: if (p->afc[afi][safi])
8401: bgp_show_peer_afi (vty, p, afi, safi);
8402:
8403: vty_out (vty, " Connections established %d; dropped %d%s",
8404: p->established, p->dropped,
8405: VTY_NEWLINE);
8406:
8407: if (! p->dropped)
8408: vty_out (vty, " Last reset never%s", VTY_NEWLINE);
8409: else
8410: vty_out (vty, " Last reset %s, due to %s%s",
8411: peer_uptime (p->resettime, timebuf, BGP_UPTIME_LEN),
8412: peer_down_str[(int) p->last_reset], VTY_NEWLINE);
8413:
8414: if (CHECK_FLAG (p->sflags, PEER_STATUS_PREFIX_OVERFLOW))
8415: {
8416: vty_out (vty, " Peer had exceeded the max. no. of prefixes configured.%s", VTY_NEWLINE);
8417:
8418: if (p->t_pmax_restart)
8419: vty_out (vty, " Reduce the no. of prefix from %s, will restart in %ld seconds%s",
8420: p->host, thread_timer_remain_second (p->t_pmax_restart),
8421: VTY_NEWLINE);
8422: else
8423: vty_out (vty, " Reduce the no. of prefix and clear ip bgp %s to restore peering%s",
8424: p->host, VTY_NEWLINE);
8425: }
8426:
8427: /* EBGP Multihop and GTSM */
8428: if (p->sort != BGP_PEER_IBGP)
8429: {
8430: if (p->gtsm_hops > 0)
8431: vty_out (vty, " External BGP neighbor may be up to %d hops away.%s",
8432: p->gtsm_hops, VTY_NEWLINE);
8433: else if (p->ttl > 1)
8434: vty_out (vty, " External BGP neighbor may be up to %d hops away.%s",
8435: p->ttl, VTY_NEWLINE);
8436: }
8437: else
8438: {
8439: if (p->gtsm_hops > 0)
8440: vty_out (vty, " Internal BGP neighbor may be up to %d hops away.%s",
8441: p->gtsm_hops, VTY_NEWLINE);
8442: }
8443:
8444: /* Local address. */
8445: if (p->su_local)
8446: {
8447: vty_out (vty, "Local host: %s, Local port: %d%s",
8448: sockunion2str (p->su_local, buf1, SU_ADDRSTRLEN),
8449: ntohs (p->su_local->sin.sin_port),
8450: VTY_NEWLINE);
8451: }
8452:
8453: /* Remote address. */
8454: if (p->su_remote)
8455: {
8456: vty_out (vty, "Foreign host: %s, Foreign port: %d%s",
8457: sockunion2str (p->su_remote, buf1, SU_ADDRSTRLEN),
8458: ntohs (p->su_remote->sin.sin_port),
8459: VTY_NEWLINE);
8460: }
8461:
8462: /* Nexthop display. */
8463: if (p->su_local)
8464: {
8465: vty_out (vty, "Nexthop: %s%s",
8466: inet_ntop (AF_INET, &p->nexthop.v4, buf1, BUFSIZ),
8467: VTY_NEWLINE);
8468: vty_out (vty, "Nexthop global: %s%s",
8469: inet_ntop (AF_INET6, &p->nexthop.v6_global, buf1, BUFSIZ),
8470: VTY_NEWLINE);
8471: vty_out (vty, "Nexthop local: %s%s",
8472: inet_ntop (AF_INET6, &p->nexthop.v6_local, buf1, BUFSIZ),
8473: VTY_NEWLINE);
8474: vty_out (vty, "BGP connection: %s%s",
8475: p->shared_network ? "shared network" : "non shared network",
8476: VTY_NEWLINE);
8477: }
8478:
8479: /* TCP metrics. */
8480: if (p->status == Established && p->rtt)
8481: vty_out (vty, "Estimated round trip time: %d ms%s",
8482: p->rtt, VTY_NEWLINE);
8483:
8484: /* Timer information. */
8485: if (p->t_start)
8486: vty_out (vty, "Next start timer due in %ld seconds%s",
8487: thread_timer_remain_second (p->t_start), VTY_NEWLINE);
8488: if (p->t_connect)
8489: vty_out (vty, "Next connect timer due in %ld seconds%s",
8490: thread_timer_remain_second (p->t_connect), VTY_NEWLINE);
8491:
8492: vty_out (vty, "Read thread: %s Write thread: %s%s",
8493: p->t_read ? "on" : "off",
8494: p->t_write ? "on" : "off",
8495: VTY_NEWLINE);
8496:
8497: if (p->notify.code == BGP_NOTIFY_OPEN_ERR
8498: && p->notify.subcode == BGP_NOTIFY_OPEN_UNSUP_CAPBL)
8499: bgp_capability_vty_out (vty, p);
8500:
8501: vty_out (vty, "%s", VTY_NEWLINE);
8502: }
8503:
8504: static int
8505: bgp_show_neighbor (struct vty *vty, struct bgp *bgp,
8506: enum show_type type, union sockunion *su)
8507: {
8508: struct listnode *node, *nnode;
8509: struct peer *peer;
8510: int find = 0;
8511:
8512: for (ALL_LIST_ELEMENTS (bgp->peer, node, nnode, peer))
8513: {
8514: switch (type)
8515: {
8516: case show_all:
8517: bgp_show_peer (vty, peer);
8518: break;
8519: case show_peer:
8520: if (sockunion_same (&peer->su, su))
8521: {
8522: find = 1;
8523: bgp_show_peer (vty, peer);
8524: }
8525: break;
8526: }
8527: }
8528:
8529: if (type == show_peer && ! find)
8530: vty_out (vty, "%% No such neighbor%s", VTY_NEWLINE);
8531:
8532: return CMD_SUCCESS;
8533: }
8534:
8535: static int
8536: bgp_show_neighbor_vty (struct vty *vty, const char *name,
8537: enum show_type type, const char *ip_str)
8538: {
8539: int ret;
8540: struct bgp *bgp;
8541: union sockunion su;
8542:
8543: if (ip_str)
8544: {
8545: ret = str2sockunion (ip_str, &su);
8546: if (ret < 0)
8547: {
8548: vty_out (vty, "%% Malformed address: %s%s", ip_str, VTY_NEWLINE);
8549: return CMD_WARNING;
8550: }
8551: }
8552:
8553: if (name)
8554: {
8555: bgp = bgp_lookup_by_name (name);
8556:
8557: if (! bgp)
8558: {
8559: vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
8560: return CMD_WARNING;
8561: }
8562:
8563: bgp_show_neighbor (vty, bgp, type, &su);
8564:
8565: return CMD_SUCCESS;
8566: }
8567:
8568: bgp = bgp_get_default ();
8569:
8570: if (bgp)
8571: bgp_show_neighbor (vty, bgp, type, &su);
8572:
8573: return CMD_SUCCESS;
8574: }
8575:
8576: /* "show ip bgp neighbors" commands. */DEFUN (show_ip_bgp_neighbors,
8577: show_ip_bgp_neighbors_cmd,
8578: "show ip bgp neighbors",
8579: SHOW_STR
8580: IP_STR
8581: BGP_STR
8582: "Detailed information on TCP and BGP neighbor connections\n")
8583: {
8584: return bgp_show_neighbor_vty (vty, NULL, show_all, NULL);
8585: }
8586:
8587: ALIAS (show_ip_bgp_neighbors,
8588: show_ip_bgp_ipv4_neighbors_cmd,
8589: "show ip bgp ipv4 (unicast|multicast) neighbors",
8590: SHOW_STR
8591: IP_STR
8592: BGP_STR
8593: "Address family\n"
8594: "Address Family modifier\n"
8595: "Address Family modifier\n"
8596: "Detailed information on TCP and BGP neighbor connections\n")
8597:
8598: ALIAS (show_ip_bgp_neighbors,
8599: show_ip_bgp_vpnv4_all_neighbors_cmd,
8600: "show ip bgp vpnv4 all neighbors",
8601: SHOW_STR
8602: IP_STR
8603: BGP_STR
8604: "Display VPNv4 NLRI specific information\n"
8605: "Display information about all VPNv4 NLRIs\n"
8606: "Detailed information on TCP and BGP neighbor connections\n")
8607:
8608: ALIAS (show_ip_bgp_neighbors,
8609: show_ip_bgp_vpnv4_rd_neighbors_cmd,
8610: "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors",
8611: SHOW_STR
8612: IP_STR
8613: BGP_STR
8614: "Display VPNv4 NLRI specific information\n"
8615: "Display information for a route distinguisher\n"
8616: "VPN Route Distinguisher\n"
8617: "Detailed information on TCP and BGP neighbor connections\n")
8618:
8619: ALIAS (show_ip_bgp_neighbors,
8620: show_bgp_ipv6_neighbors_cmd,
8621: "show bgp ipv6 neighbors",
8622: SHOW_STR
8623: BGP_STR
8624: "Address family\n"
8625: "Detailed information on TCP and BGP neighbor connections\n")
8626:
8627: DEFUN (show_ip_bgp_neighbors_peer,
8628: show_ip_bgp_neighbors_peer_cmd,
8629: "show ip bgp neighbors (A.B.C.D|X:X::X:X)",
8630: SHOW_STR
8631: IP_STR
8632: BGP_STR
8633: "Detailed information on TCP and BGP neighbor connections\n"
8634: "Neighbor to display information about\n"
8635: "Neighbor to display information about\n")
8636: {
8637: return bgp_show_neighbor_vty (vty, NULL, show_peer, argv[argc - 1]);
8638: }
8639:
8640: ALIAS (show_ip_bgp_neighbors_peer,
8641: show_ip_bgp_ipv4_neighbors_peer_cmd,
8642: "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X)",
8643: SHOW_STR
8644: IP_STR
8645: BGP_STR
8646: "Address family\n"
8647: "Address Family modifier\n"
8648: "Address Family modifier\n"
8649: "Detailed information on TCP and BGP neighbor connections\n"
8650: "Neighbor to display information about\n"
8651: "Neighbor to display information about\n")
8652:
8653: ALIAS (show_ip_bgp_neighbors_peer,
8654: show_ip_bgp_vpnv4_all_neighbors_peer_cmd,
8655: "show ip bgp vpnv4 all neighbors A.B.C.D",
8656: SHOW_STR
8657: IP_STR
8658: BGP_STR
8659: "Display VPNv4 NLRI specific information\n"
8660: "Display information about all VPNv4 NLRIs\n"
8661: "Detailed information on TCP and BGP neighbor connections\n"
8662: "Neighbor to display information about\n")
8663:
8664: ALIAS (show_ip_bgp_neighbors_peer,
8665: show_ip_bgp_vpnv4_rd_neighbors_peer_cmd,
8666: "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn neighbors A.B.C.D",
8667: SHOW_STR
8668: IP_STR
8669: BGP_STR
8670: "Display VPNv4 NLRI specific information\n"
8671: "Display information about all VPNv4 NLRIs\n"
8672: "Detailed information on TCP and BGP neighbor connections\n"
8673: "Neighbor to display information about\n")
8674:
8675: ALIAS (show_ip_bgp_neighbors_peer,
8676: show_bgp_ipv6_neighbors_peer_cmd,
8677: "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X)",
8678: SHOW_STR
8679: BGP_STR
8680: "Address family\n"
8681: "Detailed information on TCP and BGP neighbor connections\n"
8682: "Neighbor to display information about\n"
8683: "Neighbor to display information about\n")
8684:
8685: DEFUN (show_ip_bgp_instance_neighbors,
8686: show_ip_bgp_instance_neighbors_cmd,
8687: "show ip bgp view WORD neighbors",
8688: SHOW_STR
8689: IP_STR
8690: BGP_STR
8691: "BGP view\n"
8692: "View name\n"
8693: "Detailed information on TCP and BGP neighbor connections\n")
8694: {
8695: return bgp_show_neighbor_vty (vty, argv[0], show_all, NULL);
8696: }
8697:
8698: ALIAS (show_ip_bgp_instance_neighbors,
8699: show_bgp_instance_ipv6_neighbors_cmd,
8700: "show bgp view WORD ipv6 neighbors",
8701: SHOW_STR
8702: BGP_STR
8703: "BGP view\n"
8704: "View name\n"
8705: "Address family\n"
8706: "Detailed information on TCP and BGP neighbor connections\n")
8707:
8708: DEFUN (show_ip_bgp_instance_neighbors_peer,
8709: show_ip_bgp_instance_neighbors_peer_cmd,
8710: "show ip bgp view WORD neighbors (A.B.C.D|X:X::X:X)",
8711: SHOW_STR
8712: IP_STR
8713: BGP_STR
8714: "BGP view\n"
8715: "View name\n"
8716: "Detailed information on TCP and BGP neighbor connections\n"
8717: "Neighbor to display information about\n"
8718: "Neighbor to display information about\n")
8719: {
8720: return bgp_show_neighbor_vty (vty, argv[0], show_peer, argv[1]);
8721: }
8722:
8723: /* Show BGP's AS paths internal data. There are both `show ip bgp
8724: paths' and `show ip mbgp paths'. Those functions results are the
8725: same.*/
8726: DEFUN (show_ip_bgp_paths,
8727: show_ip_bgp_paths_cmd,
8728: "show ip bgp paths",
8729: SHOW_STR
8730: IP_STR
8731: BGP_STR
8732: "Path information\n")
8733: {
8734: vty_out (vty, "Address Refcnt Path%s", VTY_NEWLINE);
8735: aspath_print_all_vty (vty);
8736: return CMD_SUCCESS;
8737: }
8738:
8739: DEFUN (show_ip_bgp_ipv4_paths,
8740: show_ip_bgp_ipv4_paths_cmd,
8741: "show ip bgp ipv4 (unicast|multicast) paths",
8742: SHOW_STR
8743: IP_STR
8744: BGP_STR
8745: "Address family\n"
8746: "Address Family modifier\n"
8747: "Address Family modifier\n"
8748: "Path information\n")
8749: {
8750: vty_out (vty, "Address Refcnt Path\r\n");
8751: aspath_print_all_vty (vty);
8752:
8753: return CMD_SUCCESS;
8754: }
8755:
8756: DEFUN (show_bgp_neighbors,
8757: show_bgp_neighbors_cmd,
8758: "show bgp neighbors",
8759: SHOW_STR
8760: BGP_STR
8761: "Detailed information on TCP and BGP neighbor connections\n")
8762: {
8763: return bgp_show_neighbor_vty (vty, NULL, show_all, NULL);
8764: }
8765:
8766: DEFUN (show_bgp_neighbors_peer,
8767: show_bgp_neighbors_peer_cmd,
8768: "show bgp neighbors (A.B.C.D|X:X::X:X)",
8769: SHOW_STR
8770: BGP_STR
8771: "Detailed information on TCP and BGP neighbor connections\n"
8772: "Neighbor to display information about\n"
8773: "Neighbor to display information about\n")
8774: {
8775: return bgp_show_neighbor_vty (vty, NULL, show_peer, argv[argc - 1]);
8776: }
8777:
8778: DEFUN (show_bgp_instance_neighbors,
8779: show_bgp_instance_neighbors_cmd,
8780: "show bgp view WORD neighbors",
8781: SHOW_STR
8782: BGP_STR
8783: "BGP view\n"
8784: "View name\n"
8785: "Detailed information on TCP and BGP neighbor connections\n")
8786: {
8787: return bgp_show_neighbor_vty (vty, argv[0], show_all, NULL);
8788: }
8789:
8790: DEFUN (show_bgp_instance_neighbors_peer,
8791: show_bgp_instance_neighbors_peer_cmd,
8792: "show bgp view WORD neighbors (A.B.C.D|X:X::X:X)",
8793: SHOW_STR
8794: BGP_STR
8795: "BGP view\n"
8796: "View name\n"
8797: "Detailed information on TCP and BGP neighbor connections\n"
8798: "Neighbor to display information about\n"
8799: "Neighbor to display information about\n")
8800: {
8801: return bgp_show_neighbor_vty (vty, argv[0], show_peer, argv[1]);
8802: }
8803:
8804: ALIAS (show_bgp_instance_neighbors_peer,
8805: show_bgp_instance_ipv6_neighbors_peer_cmd,
8806: "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X)",
8807: SHOW_STR
8808: BGP_STR
8809: "BGP view\n"
8810: "View name\n"
8811: "Address family\n"
8812: "Detailed information on TCP and BGP neighbor connections\n"
8813: "Neighbor to display information about\n"
8814: "Neighbor to display information about\n")
8815:
8816: /* Show BGP's AS paths internal data. There are both `show ip bgp
8817: paths' and `show ip mbgp paths'. Those functions results are the
8818: same.*/
8819: DEFUN (show_bgp_ipv4_paths,
8820: show_bgp_ipv4_paths_cmd,
8821: "show bgp paths",
8822: SHOW_STR
8823: BGP_STR
8824: "Path information\n")
8825: {
8826: vty_out (vty, "Address Refcnt Path%s", VTY_NEWLINE);
8827: aspath_print_all_vty (vty);
8828: return CMD_SUCCESS;
8829: }
8830:
8831: #include "hash.h"
8832:
8833: static void
8834: community_show_all_iterator (struct hash_backet *backet, struct vty *vty)
8835: {
8836: struct community *com;
8837:
8838: com = (struct community *) backet->data;
8839: vty_out (vty, "[%p] (%ld) %s%s", (void *)backet, com->refcnt,
8840: community_str (com), VTY_NEWLINE);
8841: }
8842:
8843: /* Show BGP's community internal data. */
8844: DEFUN (show_ip_bgp_community_info,
8845: show_ip_bgp_community_info_cmd,
8846: "show ip bgp community-info",
8847: SHOW_STR
8848: IP_STR
8849: BGP_STR
8850: "List all bgp community information\n")
8851: {
8852: vty_out (vty, "Address Refcnt Community%s", VTY_NEWLINE);
8853:
8854: hash_iterate (community_hash (),
8855: (void (*) (struct hash_backet *, void *))
8856: community_show_all_iterator,
8857: vty);
8858:
8859: return CMD_SUCCESS;
8860: }
8861:
8862: DEFUN (show_ip_bgp_attr_info,
8863: show_ip_bgp_attr_info_cmd,
8864: "show ip bgp attribute-info",
8865: SHOW_STR
8866: IP_STR
8867: BGP_STR
8868: "List all bgp attribute information\n")
8869: {
8870: attr_show_all (vty);
8871: return CMD_SUCCESS;
8872: }
8873:
8874: static int
8875: bgp_write_rsclient_summary (struct vty *vty, struct peer *rsclient,
8876: afi_t afi, safi_t safi)
8877: {
8878: char timebuf[BGP_UPTIME_LEN];
8879: char rmbuf[14];
8880: const char *rmname;
8881: struct peer *peer;
8882: struct listnode *node, *nnode;
8883: int len;
8884: int count = 0;
8885:
8886: if (CHECK_FLAG (rsclient->sflags, PEER_STATUS_GROUP))
8887: {
8888: for (ALL_LIST_ELEMENTS (rsclient->group->peer, node, nnode, peer))
8889: {
8890: count++;
8891: bgp_write_rsclient_summary (vty, peer, afi, safi);
8892: }
8893: return count;
8894: }
8895:
8896: len = vty_out (vty, "%s", rsclient->host);
8897: len = 16 - len;
8898:
8899: if (len < 1)
8900: vty_out (vty, "%s%*s", VTY_NEWLINE, 16, " ");
8901: else
8902: vty_out (vty, "%*s", len, " ");
8903:
8904: vty_out (vty, "4 ");
8905:
8906: vty_out (vty, "%10u ", rsclient->as);
8907:
8908: rmname = ROUTE_MAP_EXPORT_NAME(&rsclient->filter[afi][safi]);
8909: if ( rmname && strlen (rmname) > 13 )
8910: {
8911: sprintf (rmbuf, "%13s", "...");
8912: rmname = strncpy (rmbuf, rmname, 10);
8913: }
8914: else if (! rmname)
8915: rmname = "<none>";
8916: vty_out (vty, " %13s ", rmname);
8917:
8918: rmname = ROUTE_MAP_IMPORT_NAME(&rsclient->filter[afi][safi]);
8919: if ( rmname && strlen (rmname) > 13 )
8920: {
8921: sprintf (rmbuf, "%13s", "...");
8922: rmname = strncpy (rmbuf, rmname, 10);
8923: }
8924: else if (! rmname)
8925: rmname = "<none>";
8926: vty_out (vty, " %13s ", rmname);
8927:
8928: vty_out (vty, "%8s", peer_uptime (rsclient->uptime, timebuf, BGP_UPTIME_LEN));
8929:
8930: if (CHECK_FLAG (rsclient->flags, PEER_FLAG_SHUTDOWN))
8931: vty_out (vty, " Idle (Admin)");
8932: else if (CHECK_FLAG (rsclient->sflags, PEER_STATUS_PREFIX_OVERFLOW))
8933: vty_out (vty, " Idle (PfxCt)");
8934: else
8935: vty_out (vty, " %-11s", LOOKUP(bgp_status_msg, rsclient->status));
8936:
8937: vty_out (vty, "%s", VTY_NEWLINE);
8938:
8939: return 1;
8940: }
8941:
8942: static int
8943: bgp_show_rsclient_summary (struct vty *vty, struct bgp *bgp,
8944: afi_t afi, safi_t safi)
8945: {
8946: struct peer *peer;
8947: struct listnode *node, *nnode;
8948: int count = 0;
8949:
8950: /* Header string for each address family. */
8951: static char header[] = "Neighbor V AS Export-Policy Import-Policy Up/Down State";
8952:
8953: for (ALL_LIST_ELEMENTS (bgp->rsclient, node, nnode, peer))
8954: {
8955: if (peer->afc[afi][safi] &&
8956: CHECK_FLAG (peer->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT))
8957: {
8958: if (! count)
8959: {
8960: vty_out (vty,
8961: "Route Server's BGP router identifier %s%s",
8962: inet_ntoa (bgp->router_id), VTY_NEWLINE);
8963: vty_out (vty,
8964: "Route Server's local AS number %u%s", bgp->as,
8965: VTY_NEWLINE);
8966:
8967: vty_out (vty, "%s", VTY_NEWLINE);
8968: vty_out (vty, "%s%s", header, VTY_NEWLINE);
8969: }
8970:
8971: count += bgp_write_rsclient_summary (vty, peer, afi, safi);
8972: }
8973: }
8974:
8975: if (count)
8976: vty_out (vty, "%sTotal number of Route Server Clients %d%s", VTY_NEWLINE,
8977: count, VTY_NEWLINE);
8978: else
8979: vty_out (vty, "No %s Route Server Client is configured%s",
8980: afi == AFI_IP ? "IPv4" : "IPv6", VTY_NEWLINE);
8981:
8982: return CMD_SUCCESS;
8983: }
8984:
8985: static int
8986: bgp_show_rsclient_summary_vty (struct vty *vty, const char *name,
8987: afi_t afi, safi_t safi)
8988: {
8989: struct bgp *bgp;
8990:
8991: if (name)
8992: {
8993: bgp = bgp_lookup_by_name (name);
8994:
8995: if (! bgp)
8996: {
8997: vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
8998: return CMD_WARNING;
8999: }
9000:
9001: bgp_show_rsclient_summary (vty, bgp, afi, safi);
9002: return CMD_SUCCESS;
9003: }
9004:
9005: bgp = bgp_get_default ();
9006:
9007: if (bgp)
9008: bgp_show_rsclient_summary (vty, bgp, afi, safi);
9009:
9010: return CMD_SUCCESS;
9011: }
9012:
9013: /* 'show bgp rsclient' commands. */
9014: DEFUN (show_ip_bgp_rsclient_summary,
9015: show_ip_bgp_rsclient_summary_cmd,
9016: "show ip bgp rsclient summary",
9017: SHOW_STR
9018: IP_STR
9019: BGP_STR
9020: "Information about Route Server Clients\n"
9021: "Summary of all Route Server Clients\n")
9022: {
9023: return bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
9024: }
9025:
9026: DEFUN (show_ip_bgp_instance_rsclient_summary,
9027: show_ip_bgp_instance_rsclient_summary_cmd,
9028: "show ip bgp view WORD rsclient summary",
9029: SHOW_STR
9030: IP_STR
9031: BGP_STR
9032: "BGP view\n"
9033: "View name\n"
9034: "Information about Route Server Clients\n"
9035: "Summary of all Route Server Clients\n")
9036: {
9037: return bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
9038: }
9039:
9040: DEFUN (show_ip_bgp_ipv4_rsclient_summary,
9041: show_ip_bgp_ipv4_rsclient_summary_cmd,
9042: "show ip bgp ipv4 (unicast|multicast) rsclient summary",
9043: SHOW_STR
9044: IP_STR
9045: BGP_STR
9046: "Address family\n"
9047: "Address Family modifier\n"
9048: "Address Family modifier\n"
9049: "Information about Route Server Clients\n"
9050: "Summary of all Route Server Clients\n")
9051: {
9052: if (strncmp (argv[0], "m", 1) == 0)
9053: return bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
9054:
9055: return bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
9056: }
9057:
9058: DEFUN (show_ip_bgp_instance_ipv4_rsclient_summary,
9059: show_ip_bgp_instance_ipv4_rsclient_summary_cmd,
9060: "show ip bgp view WORD ipv4 (unicast|multicast) rsclient summary",
9061: SHOW_STR
9062: IP_STR
9063: BGP_STR
9064: "BGP view\n"
9065: "View name\n"
9066: "Address family\n"
9067: "Address Family modifier\n"
9068: "Address Family modifier\n"
9069: "Information about Route Server Clients\n"
9070: "Summary of all Route Server Clients\n")
9071: {
9072: if (strncmp (argv[1], "m", 1) == 0)
9073: return bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
9074:
9075: return bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
9076: }
9077:
9078: DEFUN (show_bgp_instance_ipv4_safi_rsclient_summary,
9079: show_bgp_instance_ipv4_safi_rsclient_summary_cmd,
9080: "show bgp view WORD ipv4 (unicast|multicast) rsclient summary",
9081: SHOW_STR
9082: BGP_STR
9083: "BGP view\n"
9084: "View name\n"
9085: "Address family\n"
9086: "Address Family modifier\n"
9087: "Address Family modifier\n"
9088: "Information about Route Server Clients\n"
9089: "Summary of all Route Server Clients\n")
9090: {
9091: safi_t safi;
9092:
9093: if (argc == 2) {
9094: safi = (strncmp (argv[1], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST;
9095: return bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, safi);
9096: } else {
9097: safi = (strncmp (argv[0], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST;
9098: return bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, safi);
9099: }
9100: }
9101:
9102: ALIAS (show_bgp_instance_ipv4_safi_rsclient_summary,
9103: show_bgp_ipv4_safi_rsclient_summary_cmd,
9104: "show bgp ipv4 (unicast|multicast) rsclient summary",
9105: SHOW_STR
9106: BGP_STR
9107: "Address family\n"
9108: "Address Family modifier\n"
9109: "Address Family modifier\n"
9110: "Information about Route Server Clients\n"
9111: "Summary of all Route Server Clients\n")
9112:
9113: DEFUN (show_bgp_rsclient_summary,
9114: show_bgp_rsclient_summary_cmd,
9115: "show bgp rsclient summary",
9116: SHOW_STR
9117: BGP_STR
9118: "Information about Route Server Clients\n"
9119: "Summary of all Route Server Clients\n")
9120: {
9121: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9122: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9123: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
9124: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9125: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9126: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
9127: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9128: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9129: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
9130: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9131: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9132: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP, SAFI_ENCAP);
9133:
9134: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9135: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9136: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
9137: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9138: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9139: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
9140: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9141: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9142: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
9143: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9144: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9145: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
9146:
9147: return CMD_SUCCESS;
9148: }
9149:
9150: DEFUN (show_bgp_instance_rsclient_summary,
9151: show_bgp_instance_rsclient_summary_cmd,
9152: "show bgp view WORD rsclient summary",
9153: SHOW_STR
9154: BGP_STR
9155: "BGP view\n"
9156: "View name\n"
9157: "Information about Route Server Clients\n"
9158: "Summary of all Route Server Clients\n")
9159: {
9160: vty_out(vty, "%sIPv4 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9161: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9162: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
9163: vty_out(vty, "%sIPv4 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9164: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9165: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
9166: vty_out(vty, "%sIPv4 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9167: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9168: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_MPLS_VPN);
9169: vty_out(vty, "%sIPv4 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9170: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9171: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP, SAFI_ENCAP);
9172:
9173: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9174: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9175: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
9176: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9177: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9178: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST);
9179: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9180: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9181: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_MPLS_VPN);
9182: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9183: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9184: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_ENCAP);
9185:
9186: return CMD_SUCCESS;
9187: }
9188:
9189: DEFUN (show_bgp_ipv6_rsclient_summary,
9190: show_bgp_ipv6_rsclient_summary_cmd,
9191: "show bgp ipv6 rsclient summary",
9192: SHOW_STR
9193: BGP_STR
9194: "Address family\n"
9195: "Information about Route Server Clients\n"
9196: "Summary of all Route Server Clients\n")
9197: {
9198: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9199: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9200: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
9201: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9202: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9203: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST);
9204: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9205: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9206: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN);
9207: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9208: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9209: bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, SAFI_ENCAP);
9210:
9211: return CMD_SUCCESS;
9212: }
9213:
9214: DEFUN (show_bgp_instance_ipv6_rsclient_summary,
9215: show_bgp_instance_ipv6_rsclient_summary_cmd,
9216: "show bgp view WORD ipv6 rsclient summary",
9217: SHOW_STR
9218: BGP_STR
9219: "BGP view\n"
9220: "View name\n"
9221: "Address family\n"
9222: "Information about Route Server Clients\n"
9223: "Summary of all Route Server Clients\n")
9224: {
9225: vty_out(vty, "%sIPv6 Unicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9226: vty_out(vty, "---------------------%s", VTY_NEWLINE);
9227: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
9228: vty_out(vty, "%sIPv6 Multicast Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9229: vty_out(vty, "-----------------------%s", VTY_NEWLINE);
9230: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST);
9231: vty_out(vty, "%sIPv6 VPN Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9232: vty_out(vty, "-----------------%s", VTY_NEWLINE);
9233: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_MPLS_VPN);
9234: vty_out(vty, "%sIPv6 Encap Summary:%s", VTY_NEWLINE, VTY_NEWLINE);
9235: vty_out(vty, "-------------------%s", VTY_NEWLINE);
9236: bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, SAFI_ENCAP);
9237:
9238: return CMD_SUCCESS;
9239: }
9240:
9241: DEFUN (show_bgp_instance_ipv6_safi_rsclient_summary,
9242: show_bgp_instance_ipv6_safi_rsclient_summary_cmd,
9243: "show bgp view WORD ipv6 (unicast|multicast) rsclient summary",
9244: SHOW_STR
9245: BGP_STR
9246: "BGP view\n"
9247: "View name\n"
9248: "Address family\n"
9249: "Address Family modifier\n"
9250: "Address Family modifier\n"
9251: "Information about Route Server Clients\n"
9252: "Summary of all Route Server Clients\n")
9253: {
9254: safi_t safi;
9255:
9256: if (argc == 2) {
9257: safi = (strncmp (argv[1], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST;
9258: return bgp_show_rsclient_summary_vty (vty, argv[0], AFI_IP6, safi);
9259: } else {
9260: safi = (strncmp (argv[0], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST;
9261: return bgp_show_rsclient_summary_vty (vty, NULL, AFI_IP6, safi);
9262: }
9263: }
9264:
9265: ALIAS (show_bgp_instance_ipv6_safi_rsclient_summary,
9266: show_bgp_ipv6_safi_rsclient_summary_cmd,
9267: "show bgp ipv6 (unicast|multicast) rsclient summary",
9268: SHOW_STR
9269: BGP_STR
9270: IPV6_STR
9271: "Address Family modifier\n"
9272: "Address Family modifier\n"
9273: "Information about Route Server Clients\n"
9274: "Summary of all Route Server Clients\n")
9275:
9276: /* Redistribute VTY commands. */
9277:
9278: DEFUN (bgp_redistribute_ipv4,
9279: bgp_redistribute_ipv4_cmd,
9280: "redistribute " QUAGGA_IP_REDIST_STR_BGPD,
9281: "Redistribute information from another routing protocol\n"
9282: QUAGGA_IP_REDIST_HELP_STR_BGPD)
9283: {
9284: int type;
9285:
9286: type = proto_redistnum (AFI_IP, argv[0]);
9287: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9288: {
9289: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9290: return CMD_WARNING;
9291: }
9292: return bgp_redistribute_set (vty->index, AFI_IP, type);
9293: }
9294:
9295: DEFUN (bgp_redistribute_ipv4_rmap,
9296: bgp_redistribute_ipv4_rmap_cmd,
9297: "redistribute " QUAGGA_IP_REDIST_STR_BGPD " route-map WORD",
9298: "Redistribute information from another routing protocol\n"
9299: QUAGGA_IP_REDIST_HELP_STR_BGPD
9300: "Route map reference\n"
9301: "Pointer to route-map entries\n")
9302: {
9303: int type;
9304:
9305: type = proto_redistnum (AFI_IP, argv[0]);
9306: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9307: {
9308: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9309: return CMD_WARNING;
9310: }
9311:
9312: bgp_redistribute_rmap_set (vty->index, AFI_IP, type, argv[1]);
9313: return bgp_redistribute_set (vty->index, AFI_IP, type);
9314: }
9315:
9316: DEFUN (bgp_redistribute_ipv4_metric,
9317: bgp_redistribute_ipv4_metric_cmd,
9318: "redistribute " QUAGGA_IP_REDIST_STR_BGPD " metric <0-4294967295>",
9319: "Redistribute information from another routing protocol\n"
9320: QUAGGA_IP_REDIST_HELP_STR_BGPD
9321: "Metric for redistributed routes\n"
9322: "Default metric\n")
9323: {
9324: int type;
9325: u_int32_t metric;
9326:
9327: type = proto_redistnum (AFI_IP, argv[0]);
9328: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9329: {
9330: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9331: return CMD_WARNING;
9332: }
9333: VTY_GET_INTEGER ("metric", metric, argv[1]);
9334:
9335: bgp_redistribute_metric_set (vty->index, AFI_IP, type, metric);
9336: return bgp_redistribute_set (vty->index, AFI_IP, type);
9337: }
9338:
9339: DEFUN (bgp_redistribute_ipv4_rmap_metric,
9340: bgp_redistribute_ipv4_rmap_metric_cmd,
9341: "redistribute " QUAGGA_IP_REDIST_STR_BGPD " route-map WORD metric <0-4294967295>",
9342: "Redistribute information from another routing protocol\n"
9343: QUAGGA_IP_REDIST_HELP_STR_BGPD
9344: "Route map reference\n"
9345: "Pointer to route-map entries\n"
9346: "Metric for redistributed routes\n"
9347: "Default metric\n")
9348: {
9349: int type;
9350: u_int32_t metric;
9351:
9352: type = proto_redistnum (AFI_IP, argv[0]);
9353: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9354: {
9355: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9356: return CMD_WARNING;
9357: }
9358: VTY_GET_INTEGER ("metric", metric, argv[2]);
9359:
9360: bgp_redistribute_rmap_set (vty->index, AFI_IP, type, argv[1]);
9361: bgp_redistribute_metric_set (vty->index, AFI_IP, type, metric);
9362: return bgp_redistribute_set (vty->index, AFI_IP, type);
9363: }
9364:
9365: DEFUN (bgp_redistribute_ipv4_metric_rmap,
9366: bgp_redistribute_ipv4_metric_rmap_cmd,
9367: "redistribute " QUAGGA_IP_REDIST_STR_BGPD " metric <0-4294967295> route-map WORD",
9368: "Redistribute information from another routing protocol\n"
9369: QUAGGA_IP_REDIST_HELP_STR_BGPD
9370: "Metric for redistributed routes\n"
9371: "Default metric\n"
9372: "Route map reference\n"
9373: "Pointer to route-map entries\n")
9374: {
9375: int type;
9376: u_int32_t metric;
9377:
9378: type = proto_redistnum (AFI_IP, argv[0]);
9379: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9380: {
9381: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9382: return CMD_WARNING;
9383: }
9384: VTY_GET_INTEGER ("metric", metric, argv[1]);
9385:
9386: bgp_redistribute_metric_set (vty->index, AFI_IP, type, metric);
9387: bgp_redistribute_rmap_set (vty->index, AFI_IP, type, argv[2]);
9388: return bgp_redistribute_set (vty->index, AFI_IP, type);
9389: }
9390:
9391: DEFUN (no_bgp_redistribute_ipv4,
9392: no_bgp_redistribute_ipv4_cmd,
9393: "no redistribute " QUAGGA_IP_REDIST_STR_BGPD,
9394: NO_STR
9395: "Redistribute information from another routing protocol\n"
9396: QUAGGA_IP_REDIST_HELP_STR_BGPD)
9397: {
9398: int type;
9399:
9400: type = proto_redistnum (AFI_IP, argv[0]);
9401: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9402: {
9403: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9404: return CMD_WARNING;
9405: }
9406:
9407: return bgp_redistribute_unset (vty->index, AFI_IP, type);
9408: }
9409:
9410: DEFUN (no_bgp_redistribute_ipv4_rmap,
9411: no_bgp_redistribute_ipv4_rmap_cmd,
9412: "no redistribute " QUAGGA_IP_REDIST_STR_BGPD " route-map WORD",
9413: NO_STR
9414: "Redistribute information from another routing protocol\n"
9415: QUAGGA_IP_REDIST_HELP_STR_BGPD
9416: "Route map reference\n"
9417: "Pointer to route-map entries\n")
9418: {
9419: int type;
9420:
9421: type = proto_redistnum (AFI_IP, argv[0]);
9422: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9423: {
9424: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9425: return CMD_WARNING;
9426: }
9427:
9428: bgp_redistribute_routemap_unset (vty->index, AFI_IP, type);
9429: return CMD_SUCCESS;
9430: }
9431:
9432: DEFUN (no_bgp_redistribute_ipv4_metric,
9433: no_bgp_redistribute_ipv4_metric_cmd,
9434: "no redistribute " QUAGGA_IP_REDIST_STR_BGPD " metric <0-4294967295>",
9435: NO_STR
9436: "Redistribute information from another routing protocol\n"
9437: QUAGGA_IP_REDIST_HELP_STR_BGPD
9438: "Metric for redistributed routes\n"
9439: "Default metric\n")
9440: {
9441: int type;
9442:
9443: type = proto_redistnum (AFI_IP, argv[0]);
9444: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9445: {
9446: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9447: return CMD_WARNING;
9448: }
9449:
9450: bgp_redistribute_metric_unset (vty->index, AFI_IP, type);
9451: return CMD_SUCCESS;
9452: }
9453:
9454: DEFUN (no_bgp_redistribute_ipv4_rmap_metric,
9455: no_bgp_redistribute_ipv4_rmap_metric_cmd,
9456: "no redistribute " QUAGGA_IP_REDIST_STR_BGPD " route-map WORD metric <0-4294967295>",
9457: NO_STR
9458: "Redistribute information from another routing protocol\n"
9459: QUAGGA_IP_REDIST_HELP_STR_BGPD
9460: "Route map reference\n"
9461: "Pointer to route-map entries\n"
9462: "Metric for redistributed routes\n"
9463: "Default metric\n")
9464: {
9465: int type;
9466:
9467: type = proto_redistnum (AFI_IP, argv[0]);
9468: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9469: {
9470: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9471: return CMD_WARNING;
9472: }
9473:
9474: bgp_redistribute_metric_unset (vty->index, AFI_IP, type);
9475: bgp_redistribute_routemap_unset (vty->index, AFI_IP, type);
9476: return CMD_SUCCESS;
9477: }
9478:
9479: ALIAS (no_bgp_redistribute_ipv4_rmap_metric,
9480: no_bgp_redistribute_ipv4_metric_rmap_cmd,
9481: "no redistribute " QUAGGA_IP_REDIST_STR_BGPD " metric <0-4294967295> route-map WORD",
9482: NO_STR
9483: "Redistribute information from another routing protocol\n"
9484: QUAGGA_IP_REDIST_HELP_STR_BGPD
9485: "Metric for redistributed routes\n"
9486: "Default metric\n"
9487: "Route map reference\n"
9488: "Pointer to route-map entries\n")
9489:
9490: DEFUN (bgp_redistribute_ipv6,
9491: bgp_redistribute_ipv6_cmd,
9492: "redistribute " QUAGGA_IP6_REDIST_STR_BGPD,
9493: "Redistribute information from another routing protocol\n"
9494: QUAGGA_IP6_REDIST_HELP_STR_BGPD)
9495: {
9496: int type;
9497:
9498: type = proto_redistnum (AFI_IP6, argv[0]);
9499: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9500: {
9501: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9502: return CMD_WARNING;
9503: }
9504:
9505: return bgp_redistribute_set (vty->index, AFI_IP6, type);
9506: }
9507:
9508: DEFUN (bgp_redistribute_ipv6_rmap,
9509: bgp_redistribute_ipv6_rmap_cmd,
9510: "redistribute " QUAGGA_IP6_REDIST_STR_BGPD " route-map WORD",
9511: "Redistribute information from another routing protocol\n"
9512: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9513: "Route map reference\n"
9514: "Pointer to route-map entries\n")
9515: {
9516: int type;
9517:
9518: type = proto_redistnum (AFI_IP6, argv[0]);
9519: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9520: {
9521: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9522: return CMD_WARNING;
9523: }
9524:
9525: bgp_redistribute_rmap_set (vty->index, AFI_IP6, type, argv[1]);
9526: return bgp_redistribute_set (vty->index, AFI_IP6, type);
9527: }
9528:
9529: DEFUN (bgp_redistribute_ipv6_metric,
9530: bgp_redistribute_ipv6_metric_cmd,
9531: "redistribute " QUAGGA_IP6_REDIST_STR_BGPD " metric <0-4294967295>",
9532: "Redistribute information from another routing protocol\n"
9533: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9534: "Metric for redistributed routes\n"
9535: "Default metric\n")
9536: {
9537: int type;
9538: u_int32_t metric;
9539:
9540: type = proto_redistnum (AFI_IP6, argv[0]);
9541: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9542: {
9543: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9544: return CMD_WARNING;
9545: }
9546: VTY_GET_INTEGER ("metric", metric, argv[1]);
9547:
9548: bgp_redistribute_metric_set (vty->index, AFI_IP6, type, metric);
9549: return bgp_redistribute_set (vty->index, AFI_IP6, type);
9550: }
9551:
9552: DEFUN (bgp_redistribute_ipv6_rmap_metric,
9553: bgp_redistribute_ipv6_rmap_metric_cmd,
9554: "redistribute " QUAGGA_IP6_REDIST_STR_BGPD " route-map WORD metric <0-4294967295>",
9555: "Redistribute information from another routing protocol\n"
9556: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9557: "Route map reference\n"
9558: "Pointer to route-map entries\n"
9559: "Metric for redistributed routes\n"
9560: "Default metric\n")
9561: {
9562: int type;
9563: u_int32_t metric;
9564:
9565: type = proto_redistnum (AFI_IP6, argv[0]);
9566: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9567: {
9568: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9569: return CMD_WARNING;
9570: }
9571: VTY_GET_INTEGER ("metric", metric, argv[2]);
9572:
9573: bgp_redistribute_rmap_set (vty->index, AFI_IP6, type, argv[1]);
9574: bgp_redistribute_metric_set (vty->index, AFI_IP6, type, metric);
9575: return bgp_redistribute_set (vty->index, AFI_IP6, type);
9576: }
9577:
9578: DEFUN (bgp_redistribute_ipv6_metric_rmap,
9579: bgp_redistribute_ipv6_metric_rmap_cmd,
9580: "redistribute " QUAGGA_IP6_REDIST_STR_BGPD " metric <0-4294967295> route-map WORD",
9581: "Redistribute information from another routing protocol\n"
9582: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9583: "Metric for redistributed routes\n"
9584: "Default metric\n"
9585: "Route map reference\n"
9586: "Pointer to route-map entries\n")
9587: {
9588: int type;
9589: u_int32_t metric;
9590:
9591: type = proto_redistnum (AFI_IP6, argv[0]);
9592: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9593: {
9594: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9595: return CMD_WARNING;
9596: }
9597: VTY_GET_INTEGER ("metric", metric, argv[1]);
9598:
9599: bgp_redistribute_metric_set (vty->index, AFI_IP6, type, metric);
9600: bgp_redistribute_rmap_set (vty->index, AFI_IP6, type, argv[2]);
9601: return bgp_redistribute_set (vty->index, AFI_IP6, type);
9602: }
9603:
9604: DEFUN (no_bgp_redistribute_ipv6,
9605: no_bgp_redistribute_ipv6_cmd,
9606: "no redistribute " QUAGGA_IP6_REDIST_STR_BGPD,
9607: NO_STR
9608: "Redistribute information from another routing protocol\n"
9609: QUAGGA_IP6_REDIST_HELP_STR_BGPD)
9610: {
9611: int type;
9612:
9613: type = proto_redistnum (AFI_IP6, argv[0]);
9614: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9615: {
9616: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9617: return CMD_WARNING;
9618: }
9619:
9620: return bgp_redistribute_unset (vty->index, AFI_IP6, type);
9621: }
9622:
9623: DEFUN (no_bgp_redistribute_ipv6_rmap,
9624: no_bgp_redistribute_ipv6_rmap_cmd,
9625: "no redistribute " QUAGGA_IP6_REDIST_STR_BGPD " route-map WORD",
9626: NO_STR
9627: "Redistribute information from another routing protocol\n"
9628: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9629: "Route map reference\n"
9630: "Pointer to route-map entries\n")
9631: {
9632: int type;
9633:
9634: type = proto_redistnum (AFI_IP6, argv[0]);
9635: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9636: {
9637: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9638: return CMD_WARNING;
9639: }
9640:
9641: bgp_redistribute_routemap_unset (vty->index, AFI_IP6, type);
9642: return CMD_SUCCESS;
9643: }
9644:
9645: DEFUN (no_bgp_redistribute_ipv6_metric,
9646: no_bgp_redistribute_ipv6_metric_cmd,
9647: "no redistribute " QUAGGA_IP6_REDIST_STR_BGPD " metric <0-4294967295>",
9648: NO_STR
9649: "Redistribute information from another routing protocol\n"
9650: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9651: "Metric for redistributed routes\n"
9652: "Default metric\n")
9653: {
9654: int type;
9655:
9656: type = proto_redistnum (AFI_IP6, argv[0]);
9657: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9658: {
9659: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9660: return CMD_WARNING;
9661: }
9662:
9663: bgp_redistribute_metric_unset (vty->index, AFI_IP6, type);
9664: return CMD_SUCCESS;
9665: }
9666:
9667: DEFUN (no_bgp_redistribute_ipv6_rmap_metric,
9668: no_bgp_redistribute_ipv6_rmap_metric_cmd,
9669: "no redistribute " QUAGGA_IP6_REDIST_STR_BGPD " route-map WORD metric <0-4294967295>",
9670: NO_STR
9671: "Redistribute information from another routing protocol\n"
9672: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9673: "Route map reference\n"
9674: "Pointer to route-map entries\n"
9675: "Metric for redistributed routes\n"
9676: "Default metric\n")
9677: {
9678: int type;
9679:
9680: type = proto_redistnum (AFI_IP6, argv[0]);
9681: if (type < 0 || type == ZEBRA_ROUTE_BGP)
9682: {
9683: vty_out (vty, "%% Invalid route type%s", VTY_NEWLINE);
9684: return CMD_WARNING;
9685: }
9686:
9687: bgp_redistribute_metric_unset (vty->index, AFI_IP6, type);
9688: bgp_redistribute_routemap_unset (vty->index, AFI_IP6, type);
9689: return CMD_SUCCESS;
9690: }
9691:
9692: ALIAS (no_bgp_redistribute_ipv6_rmap_metric,
9693: no_bgp_redistribute_ipv6_metric_rmap_cmd,
9694: "no redistribute " QUAGGA_IP6_REDIST_STR_BGPD " metric <0-4294967295> route-map WORD",
9695: NO_STR
9696: "Redistribute information from another routing protocol\n"
9697: QUAGGA_IP6_REDIST_HELP_STR_BGPD
9698: "Metric for redistributed routes\n"
9699: "Default metric\n"
9700: "Route map reference\n"
9701: "Pointer to route-map entries\n")
9702:
9703: int
9704: bgp_config_write_redistribute (struct vty *vty, struct bgp *bgp, afi_t afi,
9705: safi_t safi, int *write)
9706: {
9707: int i;
9708:
9709: /* Unicast redistribution only. */
9710: if (safi != SAFI_UNICAST)
9711: return 0;
9712:
9713: for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
9714: {
9715: /* Redistribute BGP does not make sense. */
9716: if (bgp->redist[afi][i] && i != ZEBRA_ROUTE_BGP)
9717: {
9718: /* Display "address-family" when it is not yet diplayed. */
9719: bgp_config_write_family_header (vty, afi, safi, write);
9720:
9721: /* "redistribute" configuration. */
9722: vty_out (vty, " redistribute %s", zebra_route_string(i));
9723:
9724: if (bgp->redist_metric_flag[afi][i])
9725: vty_out (vty, " metric %u", bgp->redist_metric[afi][i]);
9726:
9727: if (bgp->rmap[afi][i].name)
9728: vty_out (vty, " route-map %s", bgp->rmap[afi][i].name);
9729:
9730: vty_out (vty, "%s", VTY_NEWLINE);
9731: }
9732: }
9733: return *write;
9734: }
9735:
9736: /* BGP node structure. */
9737: static struct cmd_node bgp_node =
9738: {
9739: BGP_NODE,
9740: "%s(config-router)# ",
9741: 1,
9742: };
9743:
9744: static struct cmd_node bgp_ipv4_unicast_node =
9745: {
9746: BGP_IPV4_NODE,
9747: "%s(config-router-af)# ",
9748: 1,
9749: };
9750:
9751: static struct cmd_node bgp_ipv4_multicast_node =
9752: {
9753: BGP_IPV4M_NODE,
9754: "%s(config-router-af)# ",
9755: 1,
9756: };
9757:
9758: static struct cmd_node bgp_ipv6_unicast_node =
9759: {
9760: BGP_IPV6_NODE,
9761: "%s(config-router-af)# ",
9762: 1,
9763: };
9764:
9765: static struct cmd_node bgp_ipv6_multicast_node =
9766: {
9767: BGP_IPV6M_NODE,
9768: "%s(config-router-af)# ",
9769: 1,
9770: };
9771:
9772: static struct cmd_node bgp_vpnv4_node =
9773: {
9774: BGP_VPNV4_NODE,
9775: "%s(config-router-af)# ",
9776: 1
9777: };
9778:
9779: static struct cmd_node bgp_vpnv6_node =
9780: {
9781: BGP_VPNV6_NODE,
9782: "%s(config-router-af-vpnv6)# ",
9783: 1
9784: };
9785:
9786: static struct cmd_node bgp_encap_node =
9787: {
9788: BGP_ENCAP_NODE,
9789: "%s(config-router-af-encap)# ",
9790: 1
9791: };
9792:
9793: static struct cmd_node bgp_encapv6_node =
9794: {
9795: BGP_ENCAPV6_NODE,
9796: "%s(config-router-af-encapv6)# ",
9797: 1
9798: };
9799:
9800: static void community_list_vty (void);
9801:
9802: void
9803: bgp_vty_init (void)
9804: {
9805: /* Install bgp top node. */
9806: install_node (&bgp_node, bgp_config_write);
9807: install_node (&bgp_ipv4_unicast_node, NULL);
9808: install_node (&bgp_ipv4_multicast_node, NULL);
9809: install_node (&bgp_ipv6_unicast_node, NULL);
9810: install_node (&bgp_ipv6_multicast_node, NULL);
9811: install_node (&bgp_vpnv4_node, NULL);
9812: install_node (&bgp_vpnv6_node, NULL);
9813: install_node (&bgp_encap_node, NULL);
9814: install_node (&bgp_encapv6_node, NULL);
9815:
9816: /* Install default VTY commands to new nodes. */
9817: install_default (BGP_NODE);
9818: install_default (BGP_IPV4_NODE);
9819: install_default (BGP_IPV4M_NODE);
9820: install_default (BGP_IPV6_NODE);
9821: install_default (BGP_IPV6M_NODE);
9822: install_default (BGP_VPNV4_NODE);
9823: install_default (BGP_VPNV6_NODE);
9824: install_default (BGP_ENCAP_NODE);
9825: install_default (BGP_ENCAPV6_NODE);
9826:
9827: /* "bgp multiple-instance" commands. */
9828: install_element (CONFIG_NODE, &bgp_multiple_instance_cmd);
9829: install_element (CONFIG_NODE, &no_bgp_multiple_instance_cmd);
9830:
9831: /* "bgp config-type" commands. */
9832: install_element (CONFIG_NODE, &bgp_config_type_cmd);
9833: install_element (CONFIG_NODE, &no_bgp_config_type_cmd);
9834:
9835: /* Dummy commands (Currently not supported) */
9836: install_element (BGP_NODE, &no_synchronization_cmd);
9837: install_element (BGP_NODE, &no_auto_summary_cmd);
9838:
9839: /* "router bgp" commands. */
9840: install_element (CONFIG_NODE, &router_bgp_cmd);
9841: install_element (CONFIG_NODE, &router_bgp_view_cmd);
9842:
9843: /* "no router bgp" commands. */
9844: install_element (CONFIG_NODE, &no_router_bgp_cmd);
9845: install_element (CONFIG_NODE, &no_router_bgp_view_cmd);
9846:
9847: /* "bgp router-id" commands. */
9848: install_element (BGP_NODE, &bgp_router_id_cmd);
9849: install_element (BGP_NODE, &no_bgp_router_id_cmd);
9850: install_element (BGP_NODE, &no_bgp_router_id_val_cmd);
9851:
9852: /* "bgp cluster-id" commands. */
9853: install_element (BGP_NODE, &bgp_cluster_id_cmd);
9854: install_element (BGP_NODE, &bgp_cluster_id32_cmd);
9855: install_element (BGP_NODE, &no_bgp_cluster_id_cmd);
9856: install_element (BGP_NODE, &no_bgp_cluster_id_arg_cmd);
9857:
9858: /* "bgp confederation" commands. */
9859: install_element (BGP_NODE, &bgp_confederation_identifier_cmd);
9860: install_element (BGP_NODE, &no_bgp_confederation_identifier_cmd);
9861: install_element (BGP_NODE, &no_bgp_confederation_identifier_arg_cmd);
9862:
9863: /* "bgp confederation peers" commands. */
9864: install_element (BGP_NODE, &bgp_confederation_peers_cmd);
9865: install_element (BGP_NODE, &no_bgp_confederation_peers_cmd);
9866:
9867: /* "maximum-paths" commands. */
9868: install_element (BGP_NODE, &bgp_maxpaths_cmd);
9869: install_element (BGP_NODE, &no_bgp_maxpaths_cmd);
9870: install_element (BGP_NODE, &no_bgp_maxpaths_arg_cmd);
9871: install_element (BGP_IPV4_NODE, &bgp_maxpaths_cmd);
9872: install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_cmd);
9873: install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_arg_cmd);
9874: install_element (BGP_NODE, &bgp_maxpaths_ibgp_cmd);
9875: install_element (BGP_NODE, &no_bgp_maxpaths_ibgp_cmd);
9876: install_element (BGP_NODE, &no_bgp_maxpaths_ibgp_arg_cmd);
9877: install_element (BGP_IPV4_NODE, &bgp_maxpaths_ibgp_cmd);
9878: install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_ibgp_cmd);
9879: install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_ibgp_arg_cmd);
9880:
9881: /* "timers bgp" commands. */
9882: install_element (BGP_NODE, &bgp_timers_cmd);
9883: install_element (BGP_NODE, &no_bgp_timers_cmd);
9884: install_element (BGP_NODE, &no_bgp_timers_arg_cmd);
9885:
9886: /* "bgp client-to-client reflection" commands */
9887: install_element (BGP_NODE, &no_bgp_client_to_client_reflection_cmd);
9888: install_element (BGP_NODE, &bgp_client_to_client_reflection_cmd);
9889:
9890: /* "bgp always-compare-med" commands */
9891: install_element (BGP_NODE, &bgp_always_compare_med_cmd);
9892: install_element (BGP_NODE, &no_bgp_always_compare_med_cmd);
9893:
9894: /* "bgp deterministic-med" commands */
9895: install_element (BGP_NODE, &bgp_deterministic_med_cmd);
9896: install_element (BGP_NODE, &no_bgp_deterministic_med_cmd);
9897:
9898: /* "bgp graceful-restart" commands */
9899: install_element (BGP_NODE, &bgp_graceful_restart_cmd);
9900: install_element (BGP_NODE, &no_bgp_graceful_restart_cmd);
9901: install_element (BGP_NODE, &bgp_graceful_restart_stalepath_time_cmd);
9902: install_element (BGP_NODE, &no_bgp_graceful_restart_stalepath_time_cmd);
9903: install_element (BGP_NODE, &no_bgp_graceful_restart_stalepath_time_val_cmd);
9904:
9905: /* "bgp fast-external-failover" commands */
9906: install_element (BGP_NODE, &bgp_fast_external_failover_cmd);
9907: install_element (BGP_NODE, &no_bgp_fast_external_failover_cmd);
9908:
9909: /* "bgp enforce-first-as" commands */
9910: install_element (BGP_NODE, &bgp_enforce_first_as_cmd);
9911: install_element (BGP_NODE, &no_bgp_enforce_first_as_cmd);
9912:
9913: /* "bgp bestpath compare-routerid" commands */
9914: install_element (BGP_NODE, &bgp_bestpath_compare_router_id_cmd);
9915: install_element (BGP_NODE, &no_bgp_bestpath_compare_router_id_cmd);
9916:
9917: /* "bgp bestpath as-path ignore" commands */
9918: install_element (BGP_NODE, &bgp_bestpath_aspath_ignore_cmd);
9919: install_element (BGP_NODE, &no_bgp_bestpath_aspath_ignore_cmd);
9920:
9921: /* "bgp bestpath as-path confed" commands */
9922: install_element (BGP_NODE, &bgp_bestpath_aspath_confed_cmd);
9923: install_element (BGP_NODE, &no_bgp_bestpath_aspath_confed_cmd);
9924:
9925: /* "bgp bestpath as-path multipath-relax" commands */
9926: install_element (BGP_NODE, &bgp_bestpath_aspath_multipath_relax_cmd);
9927: install_element (BGP_NODE, &no_bgp_bestpath_aspath_multipath_relax_cmd);
9928:
9929: /* "bgp log-neighbor-changes" commands */
9930: install_element (BGP_NODE, &bgp_log_neighbor_changes_cmd);
9931: install_element (BGP_NODE, &no_bgp_log_neighbor_changes_cmd);
9932:
9933: /* "bgp bestpath med" commands */
9934: install_element (BGP_NODE, &bgp_bestpath_med_cmd);
9935: install_element (BGP_NODE, &bgp_bestpath_med2_cmd);
9936: install_element (BGP_NODE, &bgp_bestpath_med3_cmd);
9937: install_element (BGP_NODE, &no_bgp_bestpath_med_cmd);
9938: install_element (BGP_NODE, &no_bgp_bestpath_med2_cmd);
9939: install_element (BGP_NODE, &no_bgp_bestpath_med3_cmd);
9940:
9941: /* "no bgp default ipv4-unicast" commands. */
9942: install_element (BGP_NODE, &no_bgp_default_ipv4_unicast_cmd);
9943: install_element (BGP_NODE, &bgp_default_ipv4_unicast_cmd);
9944:
9945: /* "bgp network import-check" commands. */
9946: install_element (BGP_NODE, &bgp_network_import_check_cmd);
9947: install_element (BGP_NODE, &no_bgp_network_import_check_cmd);
9948:
9949: /* "bgp default local-preference" commands. */
9950: install_element (BGP_NODE, &bgp_default_local_preference_cmd);
9951: install_element (BGP_NODE, &no_bgp_default_local_preference_cmd);
9952: install_element (BGP_NODE, &no_bgp_default_local_preference_val_cmd);
9953:
9954: /* "neighbor remote-as" commands. */
9955: install_element (BGP_NODE, &neighbor_remote_as_cmd);
9956: install_element (BGP_NODE, &no_neighbor_cmd);
9957: install_element (BGP_NODE, &no_neighbor_remote_as_cmd);
9958:
9959: /* "neighbor peer-group" commands. */
9960: install_element (BGP_NODE, &neighbor_peer_group_cmd);
9961: install_element (BGP_NODE, &no_neighbor_peer_group_cmd);
9962: install_element (BGP_NODE, &no_neighbor_peer_group_remote_as_cmd);
9963:
9964: /* "neighbor local-as" commands. */
9965: install_element (BGP_NODE, &neighbor_local_as_cmd);
9966: install_element (BGP_NODE, &neighbor_local_as_no_prepend_cmd);
9967: install_element (BGP_NODE, &neighbor_local_as_no_prepend_replace_as_cmd);
9968: install_element (BGP_NODE, &no_neighbor_local_as_cmd);
9969: install_element (BGP_NODE, &no_neighbor_local_as_val_cmd);
9970: install_element (BGP_NODE, &no_neighbor_local_as_val2_cmd);
9971: install_element (BGP_NODE, &no_neighbor_local_as_val3_cmd);
9972:
9973: /* "neighbor password" commands. */
9974: install_element (BGP_NODE, &neighbor_password_cmd);
9975: install_element (BGP_NODE, &no_neighbor_password_cmd);
9976:
9977: /* "neighbor activate" commands. */
9978: install_element (BGP_NODE, &neighbor_activate_cmd);
9979: install_element (BGP_IPV4_NODE, &neighbor_activate_cmd);
9980: install_element (BGP_IPV4M_NODE, &neighbor_activate_cmd);
9981: install_element (BGP_IPV6_NODE, &neighbor_activate_cmd);
9982: install_element (BGP_IPV6M_NODE, &neighbor_activate_cmd);
9983: install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd);
9984: install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd);
9985: install_element (BGP_ENCAP_NODE, &neighbor_activate_cmd);
9986: install_element (BGP_ENCAPV6_NODE, &neighbor_activate_cmd);
9987:
9988: /* "no neighbor activate" commands. */
9989: install_element (BGP_NODE, &no_neighbor_activate_cmd);
9990: install_element (BGP_IPV4_NODE, &no_neighbor_activate_cmd);
9991: install_element (BGP_IPV4M_NODE, &no_neighbor_activate_cmd);
9992: install_element (BGP_IPV6_NODE, &no_neighbor_activate_cmd);
9993: install_element (BGP_IPV6M_NODE, &no_neighbor_activate_cmd);
9994: install_element (BGP_VPNV4_NODE, &no_neighbor_activate_cmd);
9995: install_element (BGP_VPNV6_NODE, &no_neighbor_activate_cmd);
9996: install_element (BGP_ENCAP_NODE, &no_neighbor_activate_cmd);
9997: install_element (BGP_ENCAPV6_NODE, &no_neighbor_activate_cmd);
9998:
9999: /* "neighbor peer-group set" commands. */
10000: install_element (BGP_NODE, &neighbor_set_peer_group_cmd);
10001: install_element (BGP_IPV4_NODE, &neighbor_set_peer_group_cmd);
10002: install_element (BGP_IPV4M_NODE, &neighbor_set_peer_group_cmd);
10003: install_element (BGP_IPV6_NODE, &neighbor_set_peer_group_cmd);
10004: install_element (BGP_IPV6M_NODE, &neighbor_set_peer_group_cmd);
10005: install_element (BGP_VPNV4_NODE, &neighbor_set_peer_group_cmd);
10006: install_element (BGP_VPNV6_NODE, &neighbor_set_peer_group_cmd);
10007: install_element (BGP_ENCAP_NODE, &neighbor_set_peer_group_cmd);
10008: install_element (BGP_ENCAPV6_NODE, &neighbor_set_peer_group_cmd);
10009:
10010: /* "no neighbor peer-group unset" commands. */
10011: install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd);
10012: install_element (BGP_IPV4_NODE, &no_neighbor_set_peer_group_cmd);
10013: install_element (BGP_IPV4M_NODE, &no_neighbor_set_peer_group_cmd);
10014: install_element (BGP_IPV6_NODE, &no_neighbor_set_peer_group_cmd);
10015: install_element (BGP_IPV6M_NODE, &no_neighbor_set_peer_group_cmd);
10016: install_element (BGP_VPNV4_NODE, &no_neighbor_set_peer_group_cmd);
10017: install_element (BGP_VPNV6_NODE, &no_neighbor_set_peer_group_cmd);
10018: install_element (BGP_ENCAP_NODE, &no_neighbor_set_peer_group_cmd);
10019: install_element (BGP_ENCAPV6_NODE, &no_neighbor_set_peer_group_cmd);
10020:
10021: /* "neighbor softreconfiguration inbound" commands.*/
10022: install_element (BGP_NODE, &neighbor_soft_reconfiguration_cmd);
10023: install_element (BGP_NODE, &no_neighbor_soft_reconfiguration_cmd);
10024: install_element (BGP_IPV4_NODE, &neighbor_soft_reconfiguration_cmd);
10025: install_element (BGP_IPV4_NODE, &no_neighbor_soft_reconfiguration_cmd);
10026: install_element (BGP_IPV4M_NODE, &neighbor_soft_reconfiguration_cmd);
10027: install_element (BGP_IPV4M_NODE, &no_neighbor_soft_reconfiguration_cmd);
10028: install_element (BGP_IPV6_NODE, &neighbor_soft_reconfiguration_cmd);
10029: install_element (BGP_IPV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
10030: install_element (BGP_IPV6M_NODE, &neighbor_soft_reconfiguration_cmd);
10031: install_element (BGP_IPV6M_NODE, &no_neighbor_soft_reconfiguration_cmd);
10032: install_element (BGP_VPNV4_NODE, &neighbor_soft_reconfiguration_cmd);
10033: install_element (BGP_VPNV4_NODE, &no_neighbor_soft_reconfiguration_cmd);
10034: install_element (BGP_VPNV6_NODE, &neighbor_soft_reconfiguration_cmd);
10035: install_element (BGP_VPNV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
10036: install_element (BGP_ENCAP_NODE, &neighbor_soft_reconfiguration_cmd);
10037: install_element (BGP_ENCAP_NODE, &no_neighbor_soft_reconfiguration_cmd);
10038: install_element (BGP_ENCAPV6_NODE, &neighbor_soft_reconfiguration_cmd);
10039: install_element (BGP_ENCAPV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
10040:
10041: /* "neighbor attribute-unchanged" commands. */
10042: install_element (BGP_NODE, &neighbor_attr_unchanged_cmd);
10043: install_element (BGP_NODE, &neighbor_attr_unchanged1_cmd);
10044: install_element (BGP_NODE, &neighbor_attr_unchanged2_cmd);
10045: install_element (BGP_NODE, &neighbor_attr_unchanged3_cmd);
10046: install_element (BGP_NODE, &neighbor_attr_unchanged4_cmd);
10047: install_element (BGP_NODE, &neighbor_attr_unchanged5_cmd);
10048: install_element (BGP_NODE, &neighbor_attr_unchanged6_cmd);
10049: install_element (BGP_NODE, &neighbor_attr_unchanged7_cmd);
10050: install_element (BGP_NODE, &neighbor_attr_unchanged8_cmd);
10051: install_element (BGP_NODE, &neighbor_attr_unchanged9_cmd);
10052: install_element (BGP_NODE, &neighbor_attr_unchanged10_cmd);
10053: install_element (BGP_NODE, &no_neighbor_attr_unchanged_cmd);
10054: install_element (BGP_NODE, &no_neighbor_attr_unchanged1_cmd);
10055: install_element (BGP_NODE, &no_neighbor_attr_unchanged2_cmd);
10056: install_element (BGP_NODE, &no_neighbor_attr_unchanged3_cmd);
10057: install_element (BGP_NODE, &no_neighbor_attr_unchanged4_cmd);
10058: install_element (BGP_NODE, &no_neighbor_attr_unchanged5_cmd);
10059: install_element (BGP_NODE, &no_neighbor_attr_unchanged6_cmd);
10060: install_element (BGP_NODE, &no_neighbor_attr_unchanged7_cmd);
10061: install_element (BGP_NODE, &no_neighbor_attr_unchanged8_cmd);
10062: install_element (BGP_NODE, &no_neighbor_attr_unchanged9_cmd);
10063: install_element (BGP_NODE, &no_neighbor_attr_unchanged10_cmd);
10064: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged_cmd);
10065: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged1_cmd);
10066: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged2_cmd);
10067: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged3_cmd);
10068: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged4_cmd);
10069: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged5_cmd);
10070: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged6_cmd);
10071: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged7_cmd);
10072: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged8_cmd);
10073: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged9_cmd);
10074: install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged10_cmd);
10075: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged_cmd);
10076: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged1_cmd);
10077: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged2_cmd);
10078: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged3_cmd);
10079: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged4_cmd);
10080: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged5_cmd);
10081: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged6_cmd);
10082: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged7_cmd);
10083: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged8_cmd);
10084: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged9_cmd);
10085: install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged10_cmd);
10086: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged_cmd);
10087: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged1_cmd);
10088: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged2_cmd);
10089: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged3_cmd);
10090: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged4_cmd);
10091: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged5_cmd);
10092: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged6_cmd);
10093: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged7_cmd);
10094: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged8_cmd);
10095: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged9_cmd);
10096: install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged10_cmd);
10097: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged_cmd);
10098: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged1_cmd);
10099: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged2_cmd);
10100: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged3_cmd);
10101: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged4_cmd);
10102: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged5_cmd);
10103: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged6_cmd);
10104: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged7_cmd);
10105: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged8_cmd);
10106: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged9_cmd);
10107: install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged10_cmd);
10108: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged_cmd);
10109: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged1_cmd);
10110: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged2_cmd);
10111: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged3_cmd);
10112: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged4_cmd);
10113: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged5_cmd);
10114: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged6_cmd);
10115: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged7_cmd);
10116: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged8_cmd);
10117: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged9_cmd);
10118: install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged10_cmd);
10119: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged_cmd);
10120: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged1_cmd);
10121: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged2_cmd);
10122: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged3_cmd);
10123: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged4_cmd);
10124: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged5_cmd);
10125: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged6_cmd);
10126: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged7_cmd);
10127: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged8_cmd);
10128: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged9_cmd);
10129: install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged10_cmd);
10130: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged_cmd);
10131: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged1_cmd);
10132: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged2_cmd);
10133: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged3_cmd);
10134: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged4_cmd);
10135: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged5_cmd);
10136: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged6_cmd);
10137: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged7_cmd);
10138: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged8_cmd);
10139: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged9_cmd);
10140: install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged10_cmd);
10141: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged_cmd);
10142: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged1_cmd);
10143: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged2_cmd);
10144: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged3_cmd);
10145: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged4_cmd);
10146: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged5_cmd);
10147: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged6_cmd);
10148: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged7_cmd);
10149: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged8_cmd);
10150: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged9_cmd);
10151: install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged10_cmd);
10152: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged_cmd);
10153: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged1_cmd);
10154: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged2_cmd);
10155: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged3_cmd);
10156: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged4_cmd);
10157: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged5_cmd);
10158: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged6_cmd);
10159: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged7_cmd);
10160: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged8_cmd);
10161: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged9_cmd);
10162: install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged10_cmd);
10163: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged_cmd);
10164: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged1_cmd);
10165: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged2_cmd);
10166: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged3_cmd);
10167: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged4_cmd);
10168: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged5_cmd);
10169: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged6_cmd);
10170: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged7_cmd);
10171: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged8_cmd);
10172: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged9_cmd);
10173: install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged10_cmd);
10174:
10175: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged_cmd);
10176: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged1_cmd);
10177: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged2_cmd);
10178: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged3_cmd);
10179: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged4_cmd);
10180: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged5_cmd);
10181: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged6_cmd);
10182: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged7_cmd);
10183: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged8_cmd);
10184: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged9_cmd);
10185: install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged10_cmd);
10186: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged_cmd);
10187: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged1_cmd);
10188: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged2_cmd);
10189: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged3_cmd);
10190: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged4_cmd);
10191: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged5_cmd);
10192: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged6_cmd);
10193: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged7_cmd);
10194: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged8_cmd);
10195: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged9_cmd);
10196: install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged10_cmd);
10197:
10198: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged_cmd);
10199: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged1_cmd);
10200: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged2_cmd);
10201: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged3_cmd);
10202: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged4_cmd);
10203: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged5_cmd);
10204: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged6_cmd);
10205: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged7_cmd);
10206: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged8_cmd);
10207: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged9_cmd);
10208: install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged10_cmd);
10209: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged_cmd);
10210: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged1_cmd);
10211: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged2_cmd);
10212: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged3_cmd);
10213: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged4_cmd);
10214: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged5_cmd);
10215: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged6_cmd);
10216: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged7_cmd);
10217: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged8_cmd);
10218: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged9_cmd);
10219: install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged10_cmd);
10220:
10221: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged_cmd);
10222: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged1_cmd);
10223: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged2_cmd);
10224: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged3_cmd);
10225: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged4_cmd);
10226: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged5_cmd);
10227: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged6_cmd);
10228: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged7_cmd);
10229: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged8_cmd);
10230: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged9_cmd);
10231: install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged10_cmd);
10232: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged_cmd);
10233: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged1_cmd);
10234: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged2_cmd);
10235: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged3_cmd);
10236: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged4_cmd);
10237: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged5_cmd);
10238: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged6_cmd);
10239: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged7_cmd);
10240: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged8_cmd);
10241: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged9_cmd);
10242: install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged10_cmd);
10243:
10244: /* "nexthop-local unchanged" commands */
10245: install_element (BGP_IPV6_NODE, &neighbor_nexthop_local_unchanged_cmd);
10246: install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_local_unchanged_cmd);
10247:
10248: /* "transparent-as" and "transparent-nexthop" for old version
10249: compatibility. */
10250: install_element (BGP_NODE, &neighbor_transparent_as_cmd);
10251: install_element (BGP_NODE, &neighbor_transparent_nexthop_cmd);
10252:
10253: /* "neighbor next-hop-self" commands. */
10254: install_element (BGP_NODE, &neighbor_nexthop_self_cmd);
10255: install_element (BGP_NODE, &no_neighbor_nexthop_self_cmd);
10256: install_element (BGP_IPV4_NODE, &neighbor_nexthop_self_cmd);
10257: install_element (BGP_IPV4_NODE, &no_neighbor_nexthop_self_cmd);
10258: install_element (BGP_IPV4M_NODE, &neighbor_nexthop_self_cmd);
10259: install_element (BGP_IPV4M_NODE, &no_neighbor_nexthop_self_cmd);
10260: install_element (BGP_IPV6_NODE, &neighbor_nexthop_self_cmd);
10261: install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_self_cmd);
10262: install_element (BGP_IPV6M_NODE, &neighbor_nexthop_self_cmd);
10263: install_element (BGP_IPV6M_NODE, &no_neighbor_nexthop_self_cmd);
10264: install_element (BGP_VPNV4_NODE, &neighbor_nexthop_self_cmd);
10265: install_element (BGP_VPNV4_NODE, &no_neighbor_nexthop_self_cmd);
10266: install_element (BGP_VPNV6_NODE, &neighbor_nexthop_self_cmd);
10267: install_element (BGP_VPNV6_NODE, &no_neighbor_nexthop_self_cmd);
10268: install_element (BGP_ENCAP_NODE, &neighbor_nexthop_self_cmd);
10269: install_element (BGP_ENCAP_NODE, &no_neighbor_nexthop_self_cmd);
10270: install_element (BGP_ENCAPV6_NODE, &neighbor_nexthop_self_cmd);
10271: install_element (BGP_ENCAPV6_NODE, &no_neighbor_nexthop_self_cmd);
10272:
10273: /* "neighbor remove-private-AS" commands. */
10274: install_element (BGP_NODE, &neighbor_remove_private_as_cmd);
10275: install_element (BGP_NODE, &no_neighbor_remove_private_as_cmd);
10276: install_element (BGP_IPV4_NODE, &neighbor_remove_private_as_cmd);
10277: install_element (BGP_IPV4_NODE, &no_neighbor_remove_private_as_cmd);
10278: install_element (BGP_IPV4M_NODE, &neighbor_remove_private_as_cmd);
10279: install_element (BGP_IPV4M_NODE, &no_neighbor_remove_private_as_cmd);
10280: install_element (BGP_IPV6_NODE, &neighbor_remove_private_as_cmd);
10281: install_element (BGP_IPV6_NODE, &no_neighbor_remove_private_as_cmd);
10282: install_element (BGP_IPV6M_NODE, &neighbor_remove_private_as_cmd);
10283: install_element (BGP_IPV6M_NODE, &no_neighbor_remove_private_as_cmd);
10284: install_element (BGP_VPNV4_NODE, &neighbor_remove_private_as_cmd);
10285: install_element (BGP_VPNV4_NODE, &no_neighbor_remove_private_as_cmd);
10286: install_element (BGP_VPNV6_NODE, &neighbor_remove_private_as_cmd);
10287: install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_cmd);
10288: install_element (BGP_ENCAP_NODE, &neighbor_remove_private_as_cmd);
10289: install_element (BGP_ENCAP_NODE, &no_neighbor_remove_private_as_cmd);
10290: install_element (BGP_ENCAPV6_NODE, &neighbor_remove_private_as_cmd);
10291: install_element (BGP_ENCAPV6_NODE, &no_neighbor_remove_private_as_cmd);
10292:
10293: /* "neighbor send-community" commands.*/
10294: install_element (BGP_NODE, &neighbor_send_community_cmd);
10295: install_element (BGP_NODE, &neighbor_send_community_type_cmd);
10296: install_element (BGP_NODE, &no_neighbor_send_community_cmd);
10297: install_element (BGP_NODE, &no_neighbor_send_community_type_cmd);
10298: install_element (BGP_IPV4_NODE, &neighbor_send_community_cmd);
10299: install_element (BGP_IPV4_NODE, &neighbor_send_community_type_cmd);
10300: install_element (BGP_IPV4_NODE, &no_neighbor_send_community_cmd);
10301: install_element (BGP_IPV4_NODE, &no_neighbor_send_community_type_cmd);
10302: install_element (BGP_IPV4M_NODE, &neighbor_send_community_cmd);
10303: install_element (BGP_IPV4M_NODE, &neighbor_send_community_type_cmd);
10304: install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_cmd);
10305: install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_type_cmd);
10306: install_element (BGP_IPV6_NODE, &neighbor_send_community_cmd);
10307: install_element (BGP_IPV6_NODE, &neighbor_send_community_type_cmd);
10308: install_element (BGP_IPV6_NODE, &no_neighbor_send_community_cmd);
10309: install_element (BGP_IPV6_NODE, &no_neighbor_send_community_type_cmd);
10310: install_element (BGP_IPV6M_NODE, &neighbor_send_community_cmd);
10311: install_element (BGP_IPV6M_NODE, &neighbor_send_community_type_cmd);
10312: install_element (BGP_IPV6M_NODE, &no_neighbor_send_community_cmd);
10313: install_element (BGP_IPV6M_NODE, &no_neighbor_send_community_type_cmd);
10314: install_element (BGP_VPNV4_NODE, &neighbor_send_community_cmd);
10315: install_element (BGP_VPNV4_NODE, &neighbor_send_community_type_cmd);
10316: install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_cmd);
10317: install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_type_cmd);
10318: install_element (BGP_VPNV6_NODE, &neighbor_send_community_cmd);
10319: install_element (BGP_VPNV6_NODE, &neighbor_send_community_type_cmd);
10320: install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_cmd);
10321: install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_type_cmd);
10322: install_element (BGP_ENCAP_NODE, &neighbor_send_community_cmd);
10323: install_element (BGP_ENCAP_NODE, &neighbor_send_community_type_cmd);
10324: install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_cmd);
10325: install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_type_cmd);
10326: install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_cmd);
10327: install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_type_cmd);
10328: install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_cmd);
10329: install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_type_cmd);
10330:
10331: /* "neighbor route-reflector" commands.*/
10332: install_element (BGP_NODE, &neighbor_route_reflector_client_cmd);
10333: install_element (BGP_NODE, &no_neighbor_route_reflector_client_cmd);
10334: install_element (BGP_IPV4_NODE, &neighbor_route_reflector_client_cmd);
10335: install_element (BGP_IPV4_NODE, &no_neighbor_route_reflector_client_cmd);
10336: install_element (BGP_IPV4M_NODE, &neighbor_route_reflector_client_cmd);
10337: install_element (BGP_IPV4M_NODE, &no_neighbor_route_reflector_client_cmd);
10338: install_element (BGP_IPV6_NODE, &neighbor_route_reflector_client_cmd);
10339: install_element (BGP_IPV6_NODE, &no_neighbor_route_reflector_client_cmd);
10340: install_element (BGP_IPV6M_NODE, &neighbor_route_reflector_client_cmd);
10341: install_element (BGP_IPV6M_NODE, &no_neighbor_route_reflector_client_cmd);
10342: install_element (BGP_VPNV4_NODE, &neighbor_route_reflector_client_cmd);
10343: install_element (BGP_VPNV4_NODE, &no_neighbor_route_reflector_client_cmd);
10344: install_element (BGP_VPNV6_NODE, &neighbor_route_reflector_client_cmd);
10345: install_element (BGP_VPNV6_NODE, &no_neighbor_route_reflector_client_cmd);
10346: install_element (BGP_ENCAP_NODE, &neighbor_route_reflector_client_cmd);
10347: install_element (BGP_ENCAP_NODE, &no_neighbor_route_reflector_client_cmd);
10348: install_element (BGP_ENCAPV6_NODE, &neighbor_route_reflector_client_cmd);
10349: install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_reflector_client_cmd);
10350:
10351: /* "neighbor route-server" commands.*/
10352: install_element (BGP_NODE, &neighbor_route_server_client_cmd);
10353: install_element (BGP_NODE, &no_neighbor_route_server_client_cmd);
10354: install_element (BGP_IPV4_NODE, &neighbor_route_server_client_cmd);
10355: install_element (BGP_IPV4_NODE, &no_neighbor_route_server_client_cmd);
10356: install_element (BGP_IPV4M_NODE, &neighbor_route_server_client_cmd);
10357: install_element (BGP_IPV4M_NODE, &no_neighbor_route_server_client_cmd);
10358: install_element (BGP_IPV6_NODE, &neighbor_route_server_client_cmd);
10359: install_element (BGP_IPV6_NODE, &no_neighbor_route_server_client_cmd);
10360: install_element (BGP_IPV6M_NODE, &neighbor_route_server_client_cmd);
10361: install_element (BGP_IPV6M_NODE, &no_neighbor_route_server_client_cmd);
10362: install_element (BGP_VPNV4_NODE, &neighbor_route_server_client_cmd);
10363: install_element (BGP_VPNV4_NODE, &no_neighbor_route_server_client_cmd);
10364: install_element (BGP_VPNV6_NODE, &neighbor_route_server_client_cmd);
10365: install_element (BGP_VPNV6_NODE, &no_neighbor_route_server_client_cmd);
10366: install_element (BGP_ENCAP_NODE, &neighbor_route_server_client_cmd);
10367: install_element (BGP_ENCAP_NODE, &no_neighbor_route_server_client_cmd);
10368: install_element (BGP_ENCAPV6_NODE, &neighbor_route_server_client_cmd);
10369: install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_server_client_cmd);
10370:
10371: /* "neighbor passive" commands. */
10372: install_element (BGP_NODE, &neighbor_passive_cmd);
10373: install_element (BGP_NODE, &no_neighbor_passive_cmd);
10374:
10375: /* "neighbor shutdown" commands. */
10376: install_element (BGP_NODE, &neighbor_shutdown_cmd);
10377: install_element (BGP_NODE, &no_neighbor_shutdown_cmd);
10378:
10379: /* Deprecated "neighbor capability route-refresh" commands.*/
10380: install_element (BGP_NODE, &neighbor_capability_route_refresh_cmd);
10381: install_element (BGP_NODE, &no_neighbor_capability_route_refresh_cmd);
10382:
10383: /* "neighbor capability orf prefix-list" commands.*/
10384: install_element (BGP_NODE, &neighbor_capability_orf_prefix_cmd);
10385: install_element (BGP_NODE, &no_neighbor_capability_orf_prefix_cmd);
10386: install_element (BGP_IPV4_NODE, &neighbor_capability_orf_prefix_cmd);
10387: install_element (BGP_IPV4_NODE, &no_neighbor_capability_orf_prefix_cmd);
10388: install_element (BGP_IPV4M_NODE, &neighbor_capability_orf_prefix_cmd);
10389: install_element (BGP_IPV4M_NODE, &no_neighbor_capability_orf_prefix_cmd);
10390: install_element (BGP_IPV6_NODE, &neighbor_capability_orf_prefix_cmd);
10391: install_element (BGP_IPV6_NODE, &no_neighbor_capability_orf_prefix_cmd);
10392: install_element (BGP_IPV6M_NODE, &neighbor_capability_orf_prefix_cmd);
10393: install_element (BGP_IPV6M_NODE, &no_neighbor_capability_orf_prefix_cmd);
10394:
10395: /* "neighbor capability dynamic" commands.*/
10396: install_element (BGP_NODE, &neighbor_capability_dynamic_cmd);
10397: install_element (BGP_NODE, &no_neighbor_capability_dynamic_cmd);
10398:
10399: /* "neighbor dont-capability-negotiate" commands. */
10400: install_element (BGP_NODE, &neighbor_dont_capability_negotiate_cmd);
10401: install_element (BGP_NODE, &no_neighbor_dont_capability_negotiate_cmd);
10402:
10403: /* "neighbor ebgp-multihop" commands. */
10404: install_element (BGP_NODE, &neighbor_ebgp_multihop_cmd);
10405: install_element (BGP_NODE, &neighbor_ebgp_multihop_ttl_cmd);
10406: install_element (BGP_NODE, &no_neighbor_ebgp_multihop_cmd);
10407: install_element (BGP_NODE, &no_neighbor_ebgp_multihop_ttl_cmd);
10408:
10409: /* "neighbor disable-connected-check" commands. */
10410: install_element (BGP_NODE, &neighbor_disable_connected_check_cmd);
10411: install_element (BGP_NODE, &no_neighbor_disable_connected_check_cmd);
10412: install_element (BGP_NODE, &neighbor_enforce_multihop_cmd);
10413: install_element (BGP_NODE, &no_neighbor_enforce_multihop_cmd);
10414:
10415: /* "neighbor description" commands. */
10416: install_element (BGP_NODE, &neighbor_description_cmd);
10417: install_element (BGP_NODE, &no_neighbor_description_cmd);
10418: install_element (BGP_NODE, &no_neighbor_description_val_cmd);
10419:
10420: /* "neighbor update-source" commands. "*/
10421: install_element (BGP_NODE, &neighbor_update_source_cmd);
10422: install_element (BGP_NODE, &no_neighbor_update_source_cmd);
10423:
10424: /* "neighbor default-originate" commands. */
10425: install_element (BGP_NODE, &neighbor_default_originate_cmd);
10426: install_element (BGP_NODE, &neighbor_default_originate_rmap_cmd);
10427: install_element (BGP_NODE, &no_neighbor_default_originate_cmd);
10428: install_element (BGP_NODE, &no_neighbor_default_originate_rmap_cmd);
10429: install_element (BGP_IPV4_NODE, &neighbor_default_originate_cmd);
10430: install_element (BGP_IPV4_NODE, &neighbor_default_originate_rmap_cmd);
10431: install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_cmd);
10432: install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_rmap_cmd);
10433: install_element (BGP_IPV4M_NODE, &neighbor_default_originate_cmd);
10434: install_element (BGP_IPV4M_NODE, &neighbor_default_originate_rmap_cmd);
10435: install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_cmd);
10436: install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_rmap_cmd);
10437: install_element (BGP_IPV6_NODE, &neighbor_default_originate_cmd);
10438: install_element (BGP_IPV6_NODE, &neighbor_default_originate_rmap_cmd);
10439: install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_cmd);
10440: install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_rmap_cmd);
10441: install_element (BGP_IPV6M_NODE, &neighbor_default_originate_cmd);
10442: install_element (BGP_IPV6M_NODE, &neighbor_default_originate_rmap_cmd);
10443: install_element (BGP_IPV6M_NODE, &no_neighbor_default_originate_cmd);
10444: install_element (BGP_IPV6M_NODE, &no_neighbor_default_originate_rmap_cmd);
10445:
10446: /* "neighbor port" commands. */
10447: install_element (BGP_NODE, &neighbor_port_cmd);
10448: install_element (BGP_NODE, &no_neighbor_port_cmd);
10449: install_element (BGP_NODE, &no_neighbor_port_val_cmd);
10450:
10451: /* "neighbor weight" commands. */
10452: install_element (BGP_NODE, &neighbor_weight_cmd);
10453: install_element (BGP_NODE, &no_neighbor_weight_cmd);
10454: install_element (BGP_NODE, &no_neighbor_weight_val_cmd);
10455:
10456: /* "neighbor override-capability" commands. */
10457: install_element (BGP_NODE, &neighbor_override_capability_cmd);
10458: install_element (BGP_NODE, &no_neighbor_override_capability_cmd);
10459:
10460: /* "neighbor strict-capability-match" commands. */
10461: install_element (BGP_NODE, &neighbor_strict_capability_cmd);
10462: install_element (BGP_NODE, &no_neighbor_strict_capability_cmd);
10463:
10464: /* "neighbor timers" commands. */
10465: install_element (BGP_NODE, &neighbor_timers_cmd);
10466: install_element (BGP_NODE, &no_neighbor_timers_cmd);
10467:
10468: /* "neighbor timers connect" commands. */
10469: install_element (BGP_NODE, &neighbor_timers_connect_cmd);
10470: install_element (BGP_NODE, &no_neighbor_timers_connect_cmd);
10471: install_element (BGP_NODE, &no_neighbor_timers_connect_val_cmd);
10472:
10473: /* "neighbor advertisement-interval" commands. */
10474: install_element (BGP_NODE, &neighbor_advertise_interval_cmd);
10475: install_element (BGP_NODE, &no_neighbor_advertise_interval_cmd);
10476: install_element (BGP_NODE, &no_neighbor_advertise_interval_val_cmd);
10477:
10478: /* "neighbor version" commands. */
10479: install_element (BGP_NODE, &neighbor_version_cmd);
10480:
10481: /* "neighbor interface" commands. */
10482: install_element (BGP_NODE, &neighbor_interface_cmd);
10483: install_element (BGP_NODE, &no_neighbor_interface_cmd);
10484:
10485: /* "neighbor distribute" commands. */
10486: install_element (BGP_NODE, &neighbor_distribute_list_cmd);
10487: install_element (BGP_NODE, &no_neighbor_distribute_list_cmd);
10488: install_element (BGP_IPV4_NODE, &neighbor_distribute_list_cmd);
10489: install_element (BGP_IPV4_NODE, &no_neighbor_distribute_list_cmd);
10490: install_element (BGP_IPV4M_NODE, &neighbor_distribute_list_cmd);
10491: install_element (BGP_IPV4M_NODE, &no_neighbor_distribute_list_cmd);
10492: install_element (BGP_IPV6_NODE, &neighbor_distribute_list_cmd);
10493: install_element (BGP_IPV6_NODE, &no_neighbor_distribute_list_cmd);
10494: install_element (BGP_IPV6M_NODE, &neighbor_distribute_list_cmd);
10495: install_element (BGP_IPV6M_NODE, &no_neighbor_distribute_list_cmd);
10496: install_element (BGP_VPNV4_NODE, &neighbor_distribute_list_cmd);
10497: install_element (BGP_VPNV4_NODE, &no_neighbor_distribute_list_cmd);
10498: install_element (BGP_VPNV6_NODE, &neighbor_distribute_list_cmd);
10499: install_element (BGP_VPNV6_NODE, &no_neighbor_distribute_list_cmd);
10500: install_element (BGP_ENCAP_NODE, &neighbor_distribute_list_cmd);
10501: install_element (BGP_ENCAP_NODE, &no_neighbor_distribute_list_cmd);
10502: install_element (BGP_ENCAPV6_NODE, &neighbor_distribute_list_cmd);
10503: install_element (BGP_ENCAPV6_NODE, &no_neighbor_distribute_list_cmd);
10504:
10505: /* "neighbor prefix-list" commands. */
10506: install_element (BGP_NODE, &neighbor_prefix_list_cmd);
10507: install_element (BGP_NODE, &no_neighbor_prefix_list_cmd);
10508: install_element (BGP_IPV4_NODE, &neighbor_prefix_list_cmd);
10509: install_element (BGP_IPV4_NODE, &no_neighbor_prefix_list_cmd);
10510: install_element (BGP_IPV4M_NODE, &neighbor_prefix_list_cmd);
10511: install_element (BGP_IPV4M_NODE, &no_neighbor_prefix_list_cmd);
10512: install_element (BGP_IPV6_NODE, &neighbor_prefix_list_cmd);
10513: install_element (BGP_IPV6_NODE, &no_neighbor_prefix_list_cmd);
10514: install_element (BGP_IPV6M_NODE, &neighbor_prefix_list_cmd);
10515: install_element (BGP_IPV6M_NODE, &no_neighbor_prefix_list_cmd);
10516: install_element (BGP_VPNV4_NODE, &neighbor_prefix_list_cmd);
10517: install_element (BGP_VPNV4_NODE, &no_neighbor_prefix_list_cmd);
10518: install_element (BGP_VPNV6_NODE, &neighbor_prefix_list_cmd);
10519: install_element (BGP_VPNV6_NODE, &no_neighbor_prefix_list_cmd);
10520: install_element (BGP_ENCAP_NODE, &neighbor_prefix_list_cmd);
10521: install_element (BGP_ENCAP_NODE, &no_neighbor_prefix_list_cmd);
10522: install_element (BGP_ENCAPV6_NODE, &neighbor_prefix_list_cmd);
10523: install_element (BGP_ENCAPV6_NODE, &no_neighbor_prefix_list_cmd);
10524:
10525: /* "neighbor filter-list" commands. */
10526: install_element (BGP_NODE, &neighbor_filter_list_cmd);
10527: install_element (BGP_NODE, &no_neighbor_filter_list_cmd);
10528: install_element (BGP_IPV4_NODE, &neighbor_filter_list_cmd);
10529: install_element (BGP_IPV4_NODE, &no_neighbor_filter_list_cmd);
10530: install_element (BGP_IPV4M_NODE, &neighbor_filter_list_cmd);
10531: install_element (BGP_IPV4M_NODE, &no_neighbor_filter_list_cmd);
10532: install_element (BGP_IPV6_NODE, &neighbor_filter_list_cmd);
10533: install_element (BGP_IPV6_NODE, &no_neighbor_filter_list_cmd);
10534: install_element (BGP_IPV6M_NODE, &neighbor_filter_list_cmd);
10535: install_element (BGP_IPV6M_NODE, &no_neighbor_filter_list_cmd);
10536: install_element (BGP_VPNV4_NODE, &neighbor_filter_list_cmd);
10537: install_element (BGP_VPNV4_NODE, &no_neighbor_filter_list_cmd);
10538: install_element (BGP_VPNV6_NODE, &neighbor_filter_list_cmd);
10539: install_element (BGP_VPNV6_NODE, &no_neighbor_filter_list_cmd);
10540: install_element (BGP_ENCAP_NODE, &neighbor_filter_list_cmd);
10541: install_element (BGP_ENCAP_NODE, &no_neighbor_filter_list_cmd);
10542: install_element (BGP_ENCAPV6_NODE, &neighbor_filter_list_cmd);
10543: install_element (BGP_ENCAPV6_NODE, &no_neighbor_filter_list_cmd);
10544:
10545: /* "neighbor route-map" commands. */
10546: install_element (BGP_NODE, &neighbor_route_map_cmd);
10547: install_element (BGP_NODE, &no_neighbor_route_map_cmd);
10548: install_element (BGP_IPV4_NODE, &neighbor_route_map_cmd);
10549: install_element (BGP_IPV4_NODE, &no_neighbor_route_map_cmd);
10550: install_element (BGP_IPV4M_NODE, &neighbor_route_map_cmd);
10551: install_element (BGP_IPV4M_NODE, &no_neighbor_route_map_cmd);
10552: install_element (BGP_IPV6_NODE, &neighbor_route_map_cmd);
10553: install_element (BGP_IPV6_NODE, &no_neighbor_route_map_cmd);
10554: install_element (BGP_IPV6M_NODE, &neighbor_route_map_cmd);
10555: install_element (BGP_IPV6M_NODE, &no_neighbor_route_map_cmd);
10556: install_element (BGP_VPNV4_NODE, &neighbor_route_map_cmd);
10557: install_element (BGP_VPNV4_NODE, &no_neighbor_route_map_cmd);
10558: install_element (BGP_VPNV6_NODE, &neighbor_route_map_cmd);
10559: install_element (BGP_VPNV6_NODE, &no_neighbor_route_map_cmd);
10560: install_element (BGP_ENCAP_NODE, &neighbor_route_map_cmd);
10561: install_element (BGP_ENCAP_NODE, &no_neighbor_route_map_cmd);
10562: install_element (BGP_ENCAPV6_NODE, &neighbor_route_map_cmd);
10563: install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_map_cmd);
10564:
10565: /* "neighbor unsuppress-map" commands. */
10566: install_element (BGP_NODE, &neighbor_unsuppress_map_cmd);
10567: install_element (BGP_NODE, &no_neighbor_unsuppress_map_cmd);
10568: install_element (BGP_IPV4_NODE, &neighbor_unsuppress_map_cmd);
10569: install_element (BGP_IPV4_NODE, &no_neighbor_unsuppress_map_cmd);
10570: install_element (BGP_IPV4M_NODE, &neighbor_unsuppress_map_cmd);
10571: install_element (BGP_IPV4M_NODE, &no_neighbor_unsuppress_map_cmd);
10572: install_element (BGP_IPV6_NODE, &neighbor_unsuppress_map_cmd);
10573: install_element (BGP_IPV6_NODE, &no_neighbor_unsuppress_map_cmd);
10574: install_element (BGP_IPV6M_NODE, &neighbor_unsuppress_map_cmd);
10575: install_element (BGP_IPV6M_NODE, &no_neighbor_unsuppress_map_cmd);
10576: install_element (BGP_VPNV4_NODE, &neighbor_unsuppress_map_cmd);
10577: install_element (BGP_VPNV4_NODE, &no_neighbor_unsuppress_map_cmd);
10578: install_element (BGP_VPNV6_NODE, &neighbor_unsuppress_map_cmd);
10579: install_element (BGP_VPNV6_NODE, &no_neighbor_unsuppress_map_cmd);
10580: install_element (BGP_ENCAP_NODE, &neighbor_unsuppress_map_cmd);
10581: install_element (BGP_ENCAP_NODE, &no_neighbor_unsuppress_map_cmd);
10582: install_element (BGP_ENCAPV6_NODE, &neighbor_unsuppress_map_cmd);
10583: install_element (BGP_ENCAPV6_NODE, &no_neighbor_unsuppress_map_cmd);
10584:
10585: /* "neighbor maximum-prefix" commands. */
10586: install_element (BGP_NODE, &neighbor_maximum_prefix_cmd);
10587: install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_cmd);
10588: install_element (BGP_NODE, &neighbor_maximum_prefix_warning_cmd);
10589: install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10590: install_element (BGP_NODE, &neighbor_maximum_prefix_restart_cmd);
10591: install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10592: install_element (BGP_NODE, &no_neighbor_maximum_prefix_cmd);
10593: install_element (BGP_NODE, &no_neighbor_maximum_prefix_val_cmd);
10594: install_element (BGP_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10595: install_element (BGP_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10596: install_element (BGP_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10597: install_element (BGP_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10598: install_element (BGP_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10599: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_cmd);
10600: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_cmd);
10601: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_warning_cmd);
10602: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10603: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_restart_cmd);
10604: install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10605: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_cmd);
10606: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_val_cmd);
10607: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10608: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10609: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10610: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10611: install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10612: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_cmd);
10613: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_cmd);
10614: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_warning_cmd);
10615: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10616: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_restart_cmd);
10617: install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10618: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_cmd);
10619: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_val_cmd);
10620: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10621: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10622: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10623: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10624: install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10625: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_cmd);
10626: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
10627: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_warning_cmd);
10628: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10629: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_restart_cmd);
10630: install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10631: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_cmd);
10632: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_val_cmd);
10633: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10634: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10635: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10636: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10637: install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10638: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_cmd);
10639: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_cmd);
10640: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_warning_cmd);
10641: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10642: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_restart_cmd);
10643: install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10644: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_cmd);
10645: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_val_cmd);
10646: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10647: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10648: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10649: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10650: install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10651: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_cmd);
10652: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_cmd);
10653: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_warning_cmd);
10654: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10655: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_restart_cmd);
10656: install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10657: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_cmd);
10658: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_val_cmd);
10659: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10660: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10661: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10662: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10663: install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10664:
10665: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_cmd);
10666: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
10667: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_warning_cmd);
10668: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10669: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_restart_cmd);
10670: install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10671: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_cmd);
10672: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_val_cmd);
10673: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10674: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10675: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10676: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10677: install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10678:
10679: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_cmd);
10680: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_cmd);
10681: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_warning_cmd);
10682: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10683: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_restart_cmd);
10684: install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10685: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_cmd);
10686: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_val_cmd);
10687: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10688: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10689: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10690: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10691: install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10692:
10693: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_cmd);
10694: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
10695: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_warning_cmd);
10696: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
10697: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_restart_cmd);
10698: install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
10699: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_cmd);
10700: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_val_cmd);
10701: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
10702: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_warning_cmd);
10703: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
10704: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
10705: install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
10706:
10707: /* "neighbor allowas-in" */
10708: install_element (BGP_NODE, &neighbor_allowas_in_cmd);
10709: install_element (BGP_NODE, &neighbor_allowas_in_arg_cmd);
10710: install_element (BGP_NODE, &no_neighbor_allowas_in_cmd);
10711: install_element (BGP_IPV4_NODE, &neighbor_allowas_in_cmd);
10712: install_element (BGP_IPV4_NODE, &neighbor_allowas_in_arg_cmd);
10713: install_element (BGP_IPV4_NODE, &no_neighbor_allowas_in_cmd);
10714: install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_cmd);
10715: install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_arg_cmd);
10716: install_element (BGP_IPV4M_NODE, &no_neighbor_allowas_in_cmd);
10717: install_element (BGP_IPV6_NODE, &neighbor_allowas_in_cmd);
10718: install_element (BGP_IPV6_NODE, &neighbor_allowas_in_arg_cmd);
10719: install_element (BGP_IPV6_NODE, &no_neighbor_allowas_in_cmd);
10720: install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_cmd);
10721: install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_arg_cmd);
10722: install_element (BGP_IPV6M_NODE, &no_neighbor_allowas_in_cmd);
10723: install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_cmd);
10724: install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_arg_cmd);
10725: install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd);
10726: install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_cmd);
10727: install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_arg_cmd);
10728: install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_cmd);
10729: install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_cmd);
10730: install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_arg_cmd);
10731: install_element (BGP_ENCAP_NODE, &no_neighbor_allowas_in_cmd);
10732: install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_cmd);
10733: install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_arg_cmd);
10734: install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd);
10735:
10736: /* address-family commands. */
10737: install_element (BGP_NODE, &address_family_ipv4_cmd);
10738: install_element (BGP_NODE, &address_family_ipv4_safi_cmd);
10739: install_element (BGP_NODE, &address_family_ipv6_cmd);
10740: install_element (BGP_NODE, &address_family_ipv6_safi_cmd);
10741: install_element (BGP_NODE, &address_family_vpnv4_cmd);
10742: install_element (BGP_NODE, &address_family_vpnv4_unicast_cmd);
10743:
10744: install_element (BGP_NODE, &address_family_vpnv6_cmd);
10745: install_element (BGP_NODE, &address_family_vpnv6_unicast_cmd);
10746:
10747: install_element (BGP_NODE, &address_family_encap_cmd);
10748: install_element (BGP_NODE, &address_family_encapv4_cmd);
10749: install_element (BGP_NODE, &address_family_encapv6_cmd);
10750:
10751: /* "exit-address-family" command. */
10752: install_element (BGP_IPV4_NODE, &exit_address_family_cmd);
10753: install_element (BGP_IPV4M_NODE, &exit_address_family_cmd);
10754: install_element (BGP_IPV6_NODE, &exit_address_family_cmd);
10755: install_element (BGP_IPV6M_NODE, &exit_address_family_cmd);
10756: install_element (BGP_VPNV4_NODE, &exit_address_family_cmd);
10757: install_element (BGP_VPNV6_NODE, &exit_address_family_cmd);
10758: install_element (BGP_ENCAP_NODE, &exit_address_family_cmd);
10759: install_element (BGP_ENCAPV6_NODE, &exit_address_family_cmd);
10760:
10761: /* "clear ip bgp commands" */
10762: install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd);
10763: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_cmd);
10764: install_element (ENABLE_NODE, &clear_ip_bgp_as_cmd);
10765: install_element (ENABLE_NODE, &clear_ip_bgp_peer_cmd);
10766: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_cmd);
10767: install_element (ENABLE_NODE, &clear_ip_bgp_external_cmd);
10768: install_element (ENABLE_NODE, &clear_bgp_all_cmd);
10769: install_element (ENABLE_NODE, &clear_bgp_instance_all_cmd);
10770: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_cmd);
10771: install_element (ENABLE_NODE, &clear_bgp_peer_cmd);
10772: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_cmd);
10773: install_element (ENABLE_NODE, &clear_bgp_peer_group_cmd);
10774: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_cmd);
10775: install_element (ENABLE_NODE, &clear_bgp_external_cmd);
10776: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_cmd);
10777: install_element (ENABLE_NODE, &clear_bgp_as_cmd);
10778: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_cmd);
10779:
10780: /* "clear ip bgp neighbor soft in" */
10781: install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_in_cmd);
10782: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_in_cmd);
10783: install_element (ENABLE_NODE, &clear_ip_bgp_all_in_cmd);
10784: install_element (ENABLE_NODE, &clear_ip_bgp_all_in_prefix_filter_cmd);
10785: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_in_prefix_filter_cmd);
10786: install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_in_cmd);
10787: install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_cmd);
10788: install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_prefix_filter_cmd);
10789: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_in_cmd);
10790: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_cmd);
10791: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_prefix_filter_cmd);
10792: install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_in_cmd);
10793: install_element (ENABLE_NODE, &clear_ip_bgp_external_in_cmd);
10794: install_element (ENABLE_NODE, &clear_ip_bgp_external_in_prefix_filter_cmd);
10795: install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_in_cmd);
10796: install_element (ENABLE_NODE, &clear_ip_bgp_as_in_cmd);
10797: install_element (ENABLE_NODE, &clear_ip_bgp_as_in_prefix_filter_cmd);
10798: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_in_cmd);
10799: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_in_cmd);
10800: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_cmd);
10801: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_prefix_filter_cmd);
10802: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd);
10803: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_in_cmd);
10804: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_cmd);
10805: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd);
10806: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_in_cmd);
10807: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_cmd);
10808: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd);
10809: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_in_cmd);
10810: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_cmd);
10811: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_prefix_filter_cmd);
10812: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_in_cmd);
10813: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_cmd);
10814: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_prefix_filter_cmd);
10815: install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_in_cmd);
10816: install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_in_cmd);
10817: install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_in_cmd);
10818: install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_in_cmd);
10819: install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_in_cmd);
10820: install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_in_cmd);
10821: install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_in_cmd);
10822: install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_in_cmd);
10823: install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_in_cmd);
10824: install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_in_cmd);
10825: install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_in_cmd);
10826: install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_in_cmd);
10827: install_element (ENABLE_NODE, &clear_bgp_all_soft_in_cmd);
10828: install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_in_cmd);
10829: install_element (ENABLE_NODE, &clear_bgp_all_in_cmd);
10830: install_element (ENABLE_NODE, &clear_bgp_all_in_prefix_filter_cmd);
10831: install_element (ENABLE_NODE, &clear_bgp_peer_soft_in_cmd);
10832: install_element (ENABLE_NODE, &clear_bgp_peer_in_cmd);
10833: install_element (ENABLE_NODE, &clear_bgp_peer_in_prefix_filter_cmd);
10834: install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_in_cmd);
10835: install_element (ENABLE_NODE, &clear_bgp_peer_group_in_cmd);
10836: install_element (ENABLE_NODE, &clear_bgp_peer_group_in_prefix_filter_cmd);
10837: install_element (ENABLE_NODE, &clear_bgp_external_soft_in_cmd);
10838: install_element (ENABLE_NODE, &clear_bgp_external_in_cmd);
10839: install_element (ENABLE_NODE, &clear_bgp_external_in_prefix_filter_cmd);
10840: install_element (ENABLE_NODE, &clear_bgp_as_soft_in_cmd);
10841: install_element (ENABLE_NODE, &clear_bgp_as_in_cmd);
10842: install_element (ENABLE_NODE, &clear_bgp_as_in_prefix_filter_cmd);
10843: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_in_cmd);
10844: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_cmd);
10845: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_prefix_filter_cmd);
10846: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_in_cmd);
10847: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_cmd);
10848: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_prefix_filter_cmd);
10849: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_in_cmd);
10850: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_cmd);
10851: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_prefix_filter_cmd);
10852: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_in_cmd);
10853: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_cmd);
10854: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_prefix_filter_cmd);
10855: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_in_cmd);
10856: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_cmd);
10857: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_prefix_filter_cmd);
10858:
10859: /* "clear ip bgp neighbor soft out" */
10860: install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_out_cmd);
10861: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_out_cmd);
10862: install_element (ENABLE_NODE, &clear_ip_bgp_all_out_cmd);
10863: install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_out_cmd);
10864: install_element (ENABLE_NODE, &clear_ip_bgp_peer_out_cmd);
10865: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_out_cmd);
10866: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_out_cmd);
10867: install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_out_cmd);
10868: install_element (ENABLE_NODE, &clear_ip_bgp_external_out_cmd);
10869: install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_out_cmd);
10870: install_element (ENABLE_NODE, &clear_ip_bgp_as_out_cmd);
10871: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_out_cmd);
10872: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_out_cmd);
10873: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_out_cmd);
10874: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_out_cmd);
10875: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_out_cmd);
10876: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_out_cmd);
10877: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_out_cmd);
10878: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_out_cmd);
10879: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_out_cmd);
10880: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_out_cmd);
10881: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_out_cmd);
10882: install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_out_cmd);
10883: install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_out_cmd);
10884: install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_out_cmd);
10885: install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_out_cmd);
10886: install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_out_cmd);
10887: install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_out_cmd);
10888: install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_out_cmd);
10889: install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_out_cmd);
10890: install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_out_cmd);
10891: install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_out_cmd);
10892: install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_out_cmd);
10893: install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_out_cmd);
10894: install_element (ENABLE_NODE, &clear_bgp_all_soft_out_cmd);
10895: install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_out_cmd);
10896: install_element (ENABLE_NODE, &clear_bgp_all_out_cmd);
10897: install_element (ENABLE_NODE, &clear_bgp_peer_soft_out_cmd);
10898: install_element (ENABLE_NODE, &clear_bgp_peer_out_cmd);
10899: install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_out_cmd);
10900: install_element (ENABLE_NODE, &clear_bgp_peer_group_out_cmd);
10901: install_element (ENABLE_NODE, &clear_bgp_external_soft_out_cmd);
10902: install_element (ENABLE_NODE, &clear_bgp_external_out_cmd);
10903: install_element (ENABLE_NODE, &clear_bgp_as_soft_out_cmd);
10904: install_element (ENABLE_NODE, &clear_bgp_as_out_cmd);
10905: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_out_cmd);
10906: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_out_cmd);
10907: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_out_cmd);
10908: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_out_cmd);
10909: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_out_cmd);
10910: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_out_cmd);
10911: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_out_cmd);
10912: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_out_cmd);
10913: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_out_cmd);
10914: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_out_cmd);
10915:
10916: /* "clear ip bgp neighbor soft" */
10917: install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_cmd);
10918: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_cmd);
10919: install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_cmd);
10920: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_cmd);
10921: install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_cmd);
10922: install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_cmd);
10923: install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_cmd);
10924: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_cmd);
10925: install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_cmd);
10926: install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_cmd);
10927: install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_cmd);
10928: install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_cmd);
10929: install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_cmd);
10930: install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_cmd);
10931: install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_cmd);
10932: install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_cmd);
10933: install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_cmd);
10934: install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_cmd);
10935: install_element (ENABLE_NODE, &clear_bgp_all_soft_cmd);
10936: install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_cmd);
10937: install_element (ENABLE_NODE, &clear_bgp_peer_soft_cmd);
10938: install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_cmd);
10939: install_element (ENABLE_NODE, &clear_bgp_external_soft_cmd);
10940: install_element (ENABLE_NODE, &clear_bgp_as_soft_cmd);
10941: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_cmd);
10942: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_cmd);
10943: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_cmd);
10944: install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_cmd);
10945: install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_cmd);
10946:
10947: /* "clear ip bgp neighbor rsclient" */
10948: install_element (ENABLE_NODE, &clear_ip_bgp_all_rsclient_cmd);
10949: install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_rsclient_cmd);
10950: install_element (ENABLE_NODE, &clear_ip_bgp_peer_rsclient_cmd);
10951: install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_rsclient_cmd);
10952: install_element (ENABLE_NODE, &clear_bgp_all_rsclient_cmd);
10953: install_element (ENABLE_NODE, &clear_bgp_instance_all_rsclient_cmd);
10954: install_element (ENABLE_NODE, &clear_bgp_ipv6_all_rsclient_cmd);
10955: install_element (ENABLE_NODE, &clear_bgp_ipv6_instance_all_rsclient_cmd);
10956: install_element (ENABLE_NODE, &clear_bgp_peer_rsclient_cmd);
10957: install_element (ENABLE_NODE, &clear_bgp_instance_peer_rsclient_cmd);
10958: install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_rsclient_cmd);
10959: install_element (ENABLE_NODE, &clear_bgp_ipv6_instance_peer_rsclient_cmd);
10960:
10961: /* "show ip bgp summary" commands. */
10962: install_element (VIEW_NODE, &show_bgp_summary_cmd);
10963: install_element (RESTRICTED_NODE, &show_bgp_summary_cmd);
10964: install_element (ENABLE_NODE, &show_bgp_summary_cmd);
10965:
10966: install_element (VIEW_NODE, &show_bgp_summary_1w_cmd);
10967: install_element (RESTRICTED_NODE, &show_bgp_summary_1w_cmd);
10968: install_element (ENABLE_NODE, &show_bgp_summary_1w_cmd);
10969:
10970: install_element (VIEW_NODE, &show_bgp_ipv4_safi_summary_cmd);
10971: install_element (VIEW_NODE, &show_bgp_instance_ipv4_safi_summary_cmd);
10972: install_element (VIEW_NODE, &show_bgp_instance_ipv4_summary_cmd);
10973:
10974: install_element (VIEW_NODE, &show_bgp_ipv4_vpn_summary_cmd);
10975: install_element (VIEW_NODE, &show_bgp_ipv4_encap_summary_cmd);
10976: install_element (VIEW_NODE, &show_bgp_ipv6_vpn_summary_cmd);
10977: install_element (VIEW_NODE, &show_bgp_ipv6_encap_summary_cmd);
10978:
10979: install_element (VIEW_NODE, &show_bgp_instance_summary_cmd);
10980: install_element (VIEW_NODE, &show_bgp_ipv6_safi_summary_cmd);
10981: install_element (VIEW_NODE, &show_bgp_instance_ipv6_summary_cmd);
10982: install_element (VIEW_NODE, &show_bgp_instance_ipv6_safi_summary_cmd);
10983: install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_summary_cmd);
10984: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_summary_cmd);
10985: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_safi_summary_cmd);
10986:
10987: install_element (RESTRICTED_NODE, &show_bgp_ipv4_vpn_summary_cmd);
10988: install_element (RESTRICTED_NODE, &show_bgp_ipv4_encap_summary_cmd);
10989: install_element (RESTRICTED_NODE, &show_bgp_ipv6_vpn_summary_cmd);
10990: install_element (RESTRICTED_NODE, &show_bgp_ipv6_encap_summary_cmd);
10991:
10992: install_element (RESTRICTED_NODE, &show_bgp_instance_summary_cmd);
10993: install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_summary_cmd);
10994: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_summary_cmd);
10995: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_safi_summary_cmd);
10996: install_element (ENABLE_NODE, &show_bgp_ipv4_safi_summary_cmd);
10997: install_element (ENABLE_NODE, &show_bgp_instance_ipv4_summary_cmd);
10998: install_element (ENABLE_NODE, &show_bgp_instance_ipv4_safi_summary_cmd);
10999:
11000: install_element (ENABLE_NODE, &show_bgp_ipv4_vpn_summary_cmd);
11001: install_element (ENABLE_NODE, &show_bgp_ipv4_encap_summary_cmd);
11002: install_element (ENABLE_NODE, &show_bgp_ipv6_vpn_summary_cmd);
11003: install_element (ENABLE_NODE, &show_bgp_ipv6_encap_summary_cmd);
11004:
11005: install_element (ENABLE_NODE, &show_bgp_instance_summary_cmd);
11006: install_element (ENABLE_NODE, &show_bgp_ipv6_safi_summary_cmd);
11007: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_summary_cmd);
11008: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_safi_summary_cmd);
11009:
11010: /* "show ip bgp neighbors" commands. */
11011: install_element (VIEW_NODE, &show_bgp_instance_neighbors_cmd);
11012: install_element (ENABLE_NODE, &show_bgp_instance_neighbors_cmd);
11013:
11014: install_element (VIEW_NODE, &show_bgp_neighbors_cmd);
11015: install_element (VIEW_NODE, &show_bgp_neighbors_peer_cmd);
11016: install_element (VIEW_NODE, &show_bgp_instance_neighbors_peer_cmd);
11017: install_element (RESTRICTED_NODE, &show_bgp_neighbors_peer_cmd);
11018: install_element (RESTRICTED_NODE, &show_bgp_instance_neighbors_peer_cmd);
11019: install_element (ENABLE_NODE, &show_bgp_neighbors_cmd);
11020: install_element (ENABLE_NODE, &show_bgp_neighbors_peer_cmd);
11021: install_element (ENABLE_NODE, &show_bgp_instance_neighbors_peer_cmd);
11022: install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_cmd);
11023: install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd);
11024: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd);
11025: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_neighbors_cmd);
11026: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd);
11027:
11028: /* "show ip bgp rsclient" commands. */
11029: install_element (VIEW_NODE, &show_bgp_instance_ipv4_safi_rsclient_summary_cmd);
11030: install_element (VIEW_NODE, &show_bgp_ipv4_safi_rsclient_summary_cmd);
11031: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_safi_rsclient_summary_cmd);
11032: install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rsclient_summary_cmd);
11033: install_element (ENABLE_NODE, &show_bgp_instance_ipv4_safi_rsclient_summary_cmd);
11034: install_element (ENABLE_NODE, &show_bgp_ipv4_safi_rsclient_summary_cmd);
11035:
11036: install_element (VIEW_NODE, &show_bgp_rsclient_summary_cmd);
11037: install_element (VIEW_NODE, &show_bgp_instance_rsclient_summary_cmd);
11038: install_element (RESTRICTED_NODE, &show_bgp_rsclient_summary_cmd);
11039: install_element (RESTRICTED_NODE, &show_bgp_instance_rsclient_summary_cmd);
11040: install_element (ENABLE_NODE, &show_bgp_rsclient_summary_cmd);
11041: install_element (ENABLE_NODE, &show_bgp_instance_rsclient_summary_cmd);
11042: install_element (VIEW_NODE, &show_bgp_ipv6_rsclient_summary_cmd);
11043: install_element (VIEW_NODE, &show_bgp_instance_ipv6_rsclient_summary_cmd);
11044: install_element (VIEW_NODE, &show_bgp_instance_ipv6_safi_rsclient_summary_cmd);
11045: install_element (VIEW_NODE, &show_bgp_ipv6_safi_rsclient_summary_cmd);
11046: install_element (RESTRICTED_NODE, &show_bgp_ipv6_rsclient_summary_cmd);
11047: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_rsclient_summary_cmd);
11048: install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_safi_rsclient_summary_cmd);
11049: install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rsclient_summary_cmd);
11050: install_element (ENABLE_NODE, &show_bgp_ipv6_rsclient_summary_cmd);
11051: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_rsclient_summary_cmd);
11052: install_element (ENABLE_NODE, &show_bgp_instance_ipv6_safi_rsclient_summary_cmd);
11053: install_element (ENABLE_NODE, &show_bgp_ipv6_safi_rsclient_summary_cmd);
11054:
11055: /* "show ip bgp paths" commands. */
11056: install_element (VIEW_NODE, &show_bgp_ipv4_paths_cmd);
11057: install_element (ENABLE_NODE, &show_bgp_ipv4_paths_cmd);
11058:
11059: /* "show ip bgp community" commands. */
11060: install_element (VIEW_NODE, &show_ip_bgp_community_info_cmd);
11061: install_element (ENABLE_NODE, &show_ip_bgp_community_info_cmd);
11062:
11063: /* "show ip bgp attribute-info" commands. */
11064: install_element (VIEW_NODE, &show_ip_bgp_attr_info_cmd);
11065: install_element (ENABLE_NODE, &show_ip_bgp_attr_info_cmd);
11066:
11067: /* "redistribute" commands. */
11068: install_element (BGP_NODE, &bgp_redistribute_ipv4_cmd);
11069: install_element (BGP_NODE, &no_bgp_redistribute_ipv4_cmd);
11070: install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_cmd);
11071: install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_cmd);
11072: install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_cmd);
11073: install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_cmd);
11074: install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_metric_cmd);
11075: install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_rmap_cmd);
11076: install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_metric_cmd);
11077: install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_rmap_cmd);
11078: install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_cmd);
11079: install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_cmd);
11080: install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_cmd);
11081: install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_cmd);
11082: install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_cmd);
11083: install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_cmd);
11084: install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_metric_cmd);
11085: install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_rmap_cmd);
11086: install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_metric_cmd);
11087: install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_rmap_cmd);
11088:
11089: /* ttl_security commands */
11090: install_element (BGP_NODE, &neighbor_ttl_security_cmd);
11091: install_element (BGP_NODE, &no_neighbor_ttl_security_cmd);
11092:
11093: /* "show bgp memory" commands. */
11094: install_element (VIEW_NODE, &show_bgp_memory_cmd);
11095: install_element (RESTRICTED_NODE, &show_bgp_memory_cmd);
11096: install_element (ENABLE_NODE, &show_bgp_memory_cmd);
11097:
11098: /* "show bgp views" commands. */
11099: install_element (VIEW_NODE, &show_bgp_views_cmd);
11100: install_element (RESTRICTED_NODE, &show_bgp_views_cmd);
11101: install_element (ENABLE_NODE, &show_bgp_views_cmd);
11102:
11103: /* non afi/safi forms of commands */
11104: install_element (VIEW_NODE, &show_ip_bgp_summary_cmd);
11105: install_element (VIEW_NODE, &show_ip_bgp_instance_summary_cmd);
11106: install_element (VIEW_NODE, &show_ip_bgp_ipv4_summary_cmd);
11107: install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_summary_cmd);
11108: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_summary_cmd);
11109: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd);
11110: install_element (VIEW_NODE, &show_bgp_ipv6_summary_cmd);
11111: install_element (RESTRICTED_NODE, &show_ip_bgp_summary_cmd);
11112: install_element (RESTRICTED_NODE, &show_ip_bgp_instance_summary_cmd);
11113: install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_summary_cmd);
11114: install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_summary_cmd);
11115: install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_summary_cmd);
11116: install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd);
11117: install_element (RESTRICTED_NODE, &show_bgp_ipv6_summary_cmd);
11118: install_element (ENABLE_NODE, &show_ip_bgp_summary_cmd);
11119: install_element (ENABLE_NODE, &show_ip_bgp_instance_summary_cmd);
11120: install_element (ENABLE_NODE, &show_ip_bgp_ipv4_summary_cmd);
11121: install_element (ENABLE_NODE, &show_ip_bgp_instance_ipv4_summary_cmd);
11122: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_summary_cmd);
11123: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd);
11124: install_element (ENABLE_NODE, &show_bgp_ipv6_summary_cmd);
11125: install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd);
11126: install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_cmd);
11127: install_element (VIEW_NODE, &show_ip_bgp_neighbors_peer_cmd);
11128: install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd);
11129: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_cmd);
11130: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_cmd);
11131: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd);
11132: install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd);
11133: install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_cmd);
11134: install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_peer_cmd);
11135: install_element (RESTRICTED_NODE, &show_ip_bgp_neighbors_peer_cmd);
11136: install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd);
11137: install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd);
11138: install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd);
11139: install_element (RESTRICTED_NODE, &show_ip_bgp_instance_neighbors_peer_cmd);
11140: install_element (ENABLE_NODE, &show_ip_bgp_neighbors_cmd);
11141: install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbors_cmd);
11142: install_element (ENABLE_NODE, &show_ip_bgp_neighbors_peer_cmd);
11143: install_element (ENABLE_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd);
11144: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbors_cmd);
11145: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbors_cmd);
11146: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd);
11147: install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd);
11148: install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_cmd);
11149: install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_peer_cmd);
11150: install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_cmd);
11151: install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_peer_cmd);
11152: install_element (RESTRICTED_NODE, &show_bgp_ipv6_neighbors_peer_cmd);
11153: install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_cmd);
11154: install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_peer_cmd);
11155: install_element (VIEW_NODE, &show_ipv6_bgp_summary_cmd);
11156: install_element (VIEW_NODE, &show_ipv6_mbgp_summary_cmd);
11157: install_element (ENABLE_NODE, &show_ipv6_bgp_summary_cmd);
11158: install_element (ENABLE_NODE, &show_ipv6_mbgp_summary_cmd);
11159: install_element (VIEW_NODE, &show_ip_bgp_rsclient_summary_cmd);
11160: install_element (VIEW_NODE, &show_ip_bgp_instance_rsclient_summary_cmd);
11161: install_element (VIEW_NODE, &show_ip_bgp_ipv4_rsclient_summary_cmd);
11162: install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_rsclient_summary_cmd);
11163: install_element (RESTRICTED_NODE, &show_ip_bgp_rsclient_summary_cmd);
11164: install_element (RESTRICTED_NODE, &show_ip_bgp_instance_rsclient_summary_cmd);
11165: install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_rsclient_summary_cmd);
11166: install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_rsclient_summary_cmd);
11167: install_element (ENABLE_NODE, &show_ip_bgp_rsclient_summary_cmd);
11168: install_element (ENABLE_NODE, &show_ip_bgp_instance_rsclient_summary_cmd);
11169: install_element (ENABLE_NODE, &show_ip_bgp_ipv4_rsclient_summary_cmd);
11170: install_element (ENABLE_NODE, &show_ip_bgp_instance_ipv4_rsclient_summary_cmd);
11171: install_element (VIEW_NODE, &show_ip_bgp_paths_cmd);
11172: install_element (VIEW_NODE, &show_ip_bgp_ipv4_paths_cmd);
11173: install_element (ENABLE_NODE, &show_ip_bgp_paths_cmd);
11174: install_element (ENABLE_NODE, &show_ip_bgp_ipv4_paths_cmd);
11175: /* Community-list. */
11176: community_list_vty ();
11177: }
11178:
11179: #include "memory.h"
11180: #include "bgp_regex.h"
11181: #include "bgp_clist.h"
11182: #include "bgp_ecommunity.h"
11183:
11184: /* VTY functions. */
11185:
11186: /* Direction value to string conversion. */
11187: static const char *
11188: community_direct_str (int direct)
11189: {
11190: switch (direct)
11191: {
11192: case COMMUNITY_DENY:
11193: return "deny";
11194: case COMMUNITY_PERMIT:
11195: return "permit";
11196: default:
11197: return "unknown";
11198: }
11199: }
11200:
11201: /* Display error string. */
11202: static void
11203: community_list_perror (struct vty *vty, int ret)
11204: {
11205: switch (ret)
11206: {
11207: case COMMUNITY_LIST_ERR_CANT_FIND_LIST:
11208: vty_out (vty, "%% Can't find community-list%s", VTY_NEWLINE);
11209: break;
11210: case COMMUNITY_LIST_ERR_MALFORMED_VAL:
11211: vty_out (vty, "%% Malformed community-list value%s", VTY_NEWLINE);
11212: break;
11213: case COMMUNITY_LIST_ERR_STANDARD_CONFLICT:
11214: vty_out (vty, "%% Community name conflict, previously defined as standard community%s", VTY_NEWLINE);
11215: break;
11216: case COMMUNITY_LIST_ERR_EXPANDED_CONFLICT:
11217: vty_out (vty, "%% Community name conflict, previously defined as expanded community%s", VTY_NEWLINE);
11218: break;
11219: }
11220: }
11221:
11222: /* VTY interface for community_set() function. */
11223: static int
11224: community_list_set_vty (struct vty *vty, int argc, const char **argv,
11225: int style, int reject_all_digit_name)
11226: {
11227: int ret;
11228: int direct;
11229: char *str;
11230:
11231: /* Check the list type. */
11232: if (strncmp (argv[1], "p", 1) == 0)
11233: direct = COMMUNITY_PERMIT;
11234: else if (strncmp (argv[1], "d", 1) == 0)
11235: direct = COMMUNITY_DENY;
11236: else
11237: {
11238: vty_out (vty, "%% Matching condition must be permit or deny%s",
11239: VTY_NEWLINE);
11240: return CMD_WARNING;
11241: }
11242:
11243: /* All digit name check. */
11244: if (reject_all_digit_name && all_digit (argv[0]))
11245: {
11246: vty_out (vty, "%% Community name cannot have all digits%s", VTY_NEWLINE);
11247: return CMD_WARNING;
11248: }
11249:
11250: /* Concat community string argument. */
11251: if (argc > 1)
11252: str = argv_concat (argv, argc, 2);
11253: else
11254: str = NULL;
11255:
11256: /* When community_list_set() return nevetive value, it means
11257: malformed community string. */
11258: ret = community_list_set (bgp_clist, argv[0], str, direct, style);
11259:
11260: /* Free temporary community list string allocated by
11261: argv_concat(). */
11262: if (str)
11263: XFREE (MTYPE_TMP, str);
11264:
11265: if (ret < 0)
11266: {
11267: /* Display error string. */
11268: community_list_perror (vty, ret);
11269: return CMD_WARNING;
11270: }
11271:
11272: return CMD_SUCCESS;
11273: }
11274:
11275: /* Communiyt-list entry delete. */
11276: static int
11277: community_list_unset_vty (struct vty *vty, int argc, const char **argv,
11278: int style)
11279: {
11280: int ret;
11281: int direct = 0;
11282: char *str = NULL;
11283:
11284: if (argc > 1)
11285: {
11286: /* Check the list direct. */
11287: if (strncmp (argv[1], "p", 1) == 0)
11288: direct = COMMUNITY_PERMIT;
11289: else if (strncmp (argv[1], "d", 1) == 0)
11290: direct = COMMUNITY_DENY;
11291: else
11292: {
11293: vty_out (vty, "%% Matching condition must be permit or deny%s",
11294: VTY_NEWLINE);
11295: return CMD_WARNING;
11296: }
11297:
11298: /* Concat community string argument. */
11299: str = argv_concat (argv, argc, 2);
11300: }
11301:
11302: /* Unset community list. */
11303: ret = community_list_unset (bgp_clist, argv[0], str, direct, style);
11304:
11305: /* Free temporary community list string allocated by
11306: argv_concat(). */
11307: if (str)
11308: XFREE (MTYPE_TMP, str);
11309:
11310: if (ret < 0)
11311: {
11312: community_list_perror (vty, ret);
11313: return CMD_WARNING;
11314: }
11315:
11316: return CMD_SUCCESS;
11317: }
11318:
11319: /* "community-list" keyword help string. */
11320: #define COMMUNITY_LIST_STR "Add a community list entry\n"
11321: #define COMMUNITY_VAL_STR "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n"
11322:
11323: DEFUN (ip_community_list_standard,
11324: ip_community_list_standard_cmd,
11325: "ip community-list <1-99> (deny|permit) .AA:NN",
11326: IP_STR
11327: COMMUNITY_LIST_STR
11328: "Community list number (standard)\n"
11329: "Specify community to reject\n"
11330: "Specify community to accept\n"
11331: COMMUNITY_VAL_STR)
11332: {
11333: return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 0);
11334: }
11335:
11336: ALIAS (ip_community_list_standard,
11337: ip_community_list_standard2_cmd,
11338: "ip community-list <1-99> (deny|permit)",
11339: IP_STR
11340: COMMUNITY_LIST_STR
11341: "Community list number (standard)\n"
11342: "Specify community to reject\n"
11343: "Specify community to accept\n")
11344:
11345: DEFUN (ip_community_list_expanded,
11346: ip_community_list_expanded_cmd,
11347: "ip community-list <100-500> (deny|permit) .LINE",
11348: IP_STR
11349: COMMUNITY_LIST_STR
11350: "Community list number (expanded)\n"
11351: "Specify community to reject\n"
11352: "Specify community to accept\n"
11353: "An ordered list as a regular-expression\n")
11354: {
11355: return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 0);
11356: }
11357:
11358: DEFUN (ip_community_list_name_standard,
11359: ip_community_list_name_standard_cmd,
11360: "ip community-list standard WORD (deny|permit) .AA:NN",
11361: IP_STR
11362: COMMUNITY_LIST_STR
11363: "Add a standard community-list entry\n"
11364: "Community list name\n"
11365: "Specify community to reject\n"
11366: "Specify community to accept\n"
11367: COMMUNITY_VAL_STR)
11368: {
11369: return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 1);
11370: }
11371:
11372: ALIAS (ip_community_list_name_standard,
11373: ip_community_list_name_standard2_cmd,
11374: "ip community-list standard WORD (deny|permit)",
11375: IP_STR
11376: COMMUNITY_LIST_STR
11377: "Add a standard community-list entry\n"
11378: "Community list name\n"
11379: "Specify community to reject\n"
11380: "Specify community to accept\n")
11381:
11382: DEFUN (ip_community_list_name_expanded,
11383: ip_community_list_name_expanded_cmd,
11384: "ip community-list expanded WORD (deny|permit) .LINE",
11385: IP_STR
11386: COMMUNITY_LIST_STR
11387: "Add an expanded community-list entry\n"
11388: "Community list name\n"
11389: "Specify community to reject\n"
11390: "Specify community to accept\n"
11391: "An ordered list as a regular-expression\n")
11392: {
11393: return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 1);
11394: }
11395:
11396: DEFUN (no_ip_community_list_standard_all,
11397: no_ip_community_list_standard_all_cmd,
11398: "no ip community-list <1-99>",
11399: NO_STR
11400: IP_STR
11401: COMMUNITY_LIST_STR
11402: "Community list number (standard)\n")
11403: {
11404: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
11405: }
11406:
11407: DEFUN (no_ip_community_list_expanded_all,
11408: no_ip_community_list_expanded_all_cmd,
11409: "no ip community-list <100-500>",
11410: NO_STR
11411: IP_STR
11412: COMMUNITY_LIST_STR
11413: "Community list number (expanded)\n")
11414: {
11415: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
11416: }
11417:
11418: DEFUN (no_ip_community_list_name_standard_all,
11419: no_ip_community_list_name_standard_all_cmd,
11420: "no ip community-list standard WORD",
11421: NO_STR
11422: IP_STR
11423: COMMUNITY_LIST_STR
11424: "Add a standard community-list entry\n"
11425: "Community list name\n")
11426: {
11427: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
11428: }
11429:
11430: DEFUN (no_ip_community_list_name_expanded_all,
11431: no_ip_community_list_name_expanded_all_cmd,
11432: "no ip community-list expanded WORD",
11433: NO_STR
11434: IP_STR
11435: COMMUNITY_LIST_STR
11436: "Add an expanded community-list entry\n"
11437: "Community list name\n")
11438: {
11439: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
11440: }
11441:
11442: DEFUN (no_ip_community_list_standard,
11443: no_ip_community_list_standard_cmd,
11444: "no ip community-list <1-99> (deny|permit) .AA:NN",
11445: NO_STR
11446: IP_STR
11447: COMMUNITY_LIST_STR
11448: "Community list number (standard)\n"
11449: "Specify community to reject\n"
11450: "Specify community to accept\n"
11451: COMMUNITY_VAL_STR)
11452: {
11453: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
11454: }
11455:
11456: DEFUN (no_ip_community_list_expanded,
11457: no_ip_community_list_expanded_cmd,
11458: "no ip community-list <100-500> (deny|permit) .LINE",
11459: NO_STR
11460: IP_STR
11461: COMMUNITY_LIST_STR
11462: "Community list number (expanded)\n"
11463: "Specify community to reject\n"
11464: "Specify community to accept\n"
11465: "An ordered list as a regular-expression\n")
11466: {
11467: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
11468: }
11469:
11470: DEFUN (no_ip_community_list_name_standard,
11471: no_ip_community_list_name_standard_cmd,
11472: "no ip community-list standard WORD (deny|permit) .AA:NN",
11473: NO_STR
11474: IP_STR
11475: COMMUNITY_LIST_STR
11476: "Specify a standard community-list\n"
11477: "Community list name\n"
11478: "Specify community to reject\n"
11479: "Specify community to accept\n"
11480: COMMUNITY_VAL_STR)
11481: {
11482: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
11483: }
11484:
11485: DEFUN (no_ip_community_list_name_expanded,
11486: no_ip_community_list_name_expanded_cmd,
11487: "no ip community-list expanded WORD (deny|permit) .LINE",
11488: NO_STR
11489: IP_STR
11490: COMMUNITY_LIST_STR
11491: "Specify an expanded community-list\n"
11492: "Community list name\n"
11493: "Specify community to reject\n"
11494: "Specify community to accept\n"
11495: "An ordered list as a regular-expression\n")
11496: {
11497: return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
11498: }
11499:
11500: static void
11501: community_list_show (struct vty *vty, struct community_list *list)
11502: {
11503: struct community_entry *entry;
11504:
11505: for (entry = list->head; entry; entry = entry->next)
11506: {
11507: if (entry == list->head)
11508: {
11509: if (all_digit (list->name))
11510: vty_out (vty, "Community %s list %s%s",
11511: entry->style == COMMUNITY_LIST_STANDARD ?
11512: "standard" : "(expanded) access",
11513: list->name, VTY_NEWLINE);
11514: else
11515: vty_out (vty, "Named Community %s list %s%s",
11516: entry->style == COMMUNITY_LIST_STANDARD ?
11517: "standard" : "expanded",
11518: list->name, VTY_NEWLINE);
11519: }
11520: if (entry->any)
11521: vty_out (vty, " %s%s",
11522: community_direct_str (entry->direct), VTY_NEWLINE);
11523: else
11524: vty_out (vty, " %s %s%s",
11525: community_direct_str (entry->direct),
11526: entry->style == COMMUNITY_LIST_STANDARD
11527: ? community_str (entry->u.com) : entry->config,
11528: VTY_NEWLINE);
11529: }
11530: }
11531:
11532: DEFUN (show_ip_community_list,
11533: show_ip_community_list_cmd,
11534: "show ip community-list",
11535: SHOW_STR
11536: IP_STR
11537: "List community-list\n")
11538: {
11539: struct community_list *list;
11540: struct community_list_master *cm;
11541:
11542: cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_MASTER);
11543: if (! cm)
11544: return CMD_SUCCESS;
11545:
11546: for (list = cm->num.head; list; list = list->next)
11547: community_list_show (vty, list);
11548:
11549: for (list = cm->str.head; list; list = list->next)
11550: community_list_show (vty, list);
11551:
11552: return CMD_SUCCESS;
11553: }
11554:
11555: DEFUN (show_ip_community_list_arg,
11556: show_ip_community_list_arg_cmd,
11557: "show ip community-list (<1-500>|WORD)",
11558: SHOW_STR
11559: IP_STR
11560: "List community-list\n"
11561: "Community-list number\n"
11562: "Community-list name\n")
11563: {
11564: struct community_list *list;
11565:
11566: list = community_list_lookup (bgp_clist, argv[0], COMMUNITY_LIST_MASTER);
11567: if (! list)
11568: {
11569: vty_out (vty, "%% Can't find community-list%s", VTY_NEWLINE);
11570: return CMD_WARNING;
11571: }
11572:
11573: community_list_show (vty, list);
11574:
11575: return CMD_SUCCESS;
11576: }
11577:
11578: static int
11579: extcommunity_list_set_vty (struct vty *vty, int argc, const char **argv,
11580: int style, int reject_all_digit_name)
11581: {
11582: int ret;
11583: int direct;
11584: char *str;
11585:
11586: /* Check the list type. */
11587: if (strncmp (argv[1], "p", 1) == 0)
11588: direct = COMMUNITY_PERMIT;
11589: else if (strncmp (argv[1], "d", 1) == 0)
11590: direct = COMMUNITY_DENY;
11591: else
11592: {
11593: vty_out (vty, "%% Matching condition must be permit or deny%s",
11594: VTY_NEWLINE);
11595: return CMD_WARNING;
11596: }
11597:
11598: /* All digit name check. */
11599: if (reject_all_digit_name && all_digit (argv[0]))
11600: {
11601: vty_out (vty, "%% Community name cannot have all digits%s", VTY_NEWLINE);
11602: return CMD_WARNING;
11603: }
11604:
11605: /* Concat community string argument. */
11606: if (argc > 1)
11607: str = argv_concat (argv, argc, 2);
11608: else
11609: str = NULL;
11610:
11611: ret = extcommunity_list_set (bgp_clist, argv[0], str, direct, style);
11612:
11613: /* Free temporary community list string allocated by
11614: argv_concat(). */
11615: if (str)
11616: XFREE (MTYPE_TMP, str);
11617:
11618: if (ret < 0)
11619: {
11620: community_list_perror (vty, ret);
11621: return CMD_WARNING;
11622: }
11623: return CMD_SUCCESS;
11624: }
11625:
11626: static int
11627: extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv,
11628: int style)
11629: {
11630: int ret;
11631: int direct = 0;
11632: char *str = NULL;
11633:
11634: if (argc > 1)
11635: {
11636: /* Check the list direct. */
11637: if (strncmp (argv[1], "p", 1) == 0)
11638: direct = COMMUNITY_PERMIT;
11639: else if (strncmp (argv[1], "d", 1) == 0)
11640: direct = COMMUNITY_DENY;
11641: else
11642: {
11643: vty_out (vty, "%% Matching condition must be permit or deny%s",
11644: VTY_NEWLINE);
11645: return CMD_WARNING;
11646: }
11647:
11648: /* Concat community string argument. */
11649: str = argv_concat (argv, argc, 2);
11650: }
11651:
11652: /* Unset community list. */
11653: ret = extcommunity_list_unset (bgp_clist, argv[0], str, direct, style);
11654:
11655: /* Free temporary community list string allocated by
11656: argv_concat(). */
11657: if (str)
11658: XFREE (MTYPE_TMP, str);
11659:
11660: if (ret < 0)
11661: {
11662: community_list_perror (vty, ret);
11663: return CMD_WARNING;
11664: }
11665:
11666: return CMD_SUCCESS;
11667: }
11668:
11669: /* "extcommunity-list" keyword help string. */
11670: #define EXTCOMMUNITY_LIST_STR "Add a extended community list entry\n"
11671: #define EXTCOMMUNITY_VAL_STR "Extended community attribute in 'rt aa:nn_or_IPaddr:nn' OR 'soo aa:nn_or_IPaddr:nn' format\n"
11672:
11673: DEFUN (ip_extcommunity_list_standard,
11674: ip_extcommunity_list_standard_cmd,
11675: "ip extcommunity-list <1-99> (deny|permit) .AA:NN",
11676: IP_STR
11677: EXTCOMMUNITY_LIST_STR
11678: "Extended Community list number (standard)\n"
11679: "Specify community to reject\n"
11680: "Specify community to accept\n"
11681: EXTCOMMUNITY_VAL_STR)
11682: {
11683: return extcommunity_list_set_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 0);
11684: }
11685:
11686: ALIAS (ip_extcommunity_list_standard,
11687: ip_extcommunity_list_standard2_cmd,
11688: "ip extcommunity-list <1-99> (deny|permit)",
11689: IP_STR
11690: EXTCOMMUNITY_LIST_STR
11691: "Extended Community list number (standard)\n"
11692: "Specify community to reject\n"
11693: "Specify community to accept\n")
11694:
11695: DEFUN (ip_extcommunity_list_expanded,
11696: ip_extcommunity_list_expanded_cmd,
11697: "ip extcommunity-list <100-500> (deny|permit) .LINE",
11698: IP_STR
11699: EXTCOMMUNITY_LIST_STR
11700: "Extended Community list number (expanded)\n"
11701: "Specify community to reject\n"
11702: "Specify community to accept\n"
11703: "An ordered list as a regular-expression\n")
11704: {
11705: return extcommunity_list_set_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 0);
11706: }
11707:
11708: DEFUN (ip_extcommunity_list_name_standard,
11709: ip_extcommunity_list_name_standard_cmd,
11710: "ip extcommunity-list standard WORD (deny|permit) .AA:NN",
11711: IP_STR
11712: EXTCOMMUNITY_LIST_STR
11713: "Specify standard extcommunity-list\n"
11714: "Extended Community list name\n"
11715: "Specify community to reject\n"
11716: "Specify community to accept\n"
11717: EXTCOMMUNITY_VAL_STR)
11718: {
11719: return extcommunity_list_set_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 1);
11720: }
11721:
11722: ALIAS (ip_extcommunity_list_name_standard,
11723: ip_extcommunity_list_name_standard2_cmd,
11724: "ip extcommunity-list standard WORD (deny|permit)",
11725: IP_STR
11726: EXTCOMMUNITY_LIST_STR
11727: "Specify standard extcommunity-list\n"
11728: "Extended Community list name\n"
11729: "Specify community to reject\n"
11730: "Specify community to accept\n")
11731:
11732: DEFUN (ip_extcommunity_list_name_expanded,
11733: ip_extcommunity_list_name_expanded_cmd,
11734: "ip extcommunity-list expanded WORD (deny|permit) .LINE",
11735: IP_STR
11736: EXTCOMMUNITY_LIST_STR
11737: "Specify expanded extcommunity-list\n"
11738: "Extended Community list name\n"
11739: "Specify community to reject\n"
11740: "Specify community to accept\n"
11741: "An ordered list as a regular-expression\n")
11742: {
11743: return extcommunity_list_set_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 1);
11744: }
11745:
11746: DEFUN (no_ip_extcommunity_list_standard_all,
11747: no_ip_extcommunity_list_standard_all_cmd,
11748: "no ip extcommunity-list <1-99>",
11749: NO_STR
11750: IP_STR
11751: EXTCOMMUNITY_LIST_STR
11752: "Extended Community list number (standard)\n")
11753: {
11754: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
11755: }
11756:
11757: DEFUN (no_ip_extcommunity_list_expanded_all,
11758: no_ip_extcommunity_list_expanded_all_cmd,
11759: "no ip extcommunity-list <100-500>",
11760: NO_STR
11761: IP_STR
11762: EXTCOMMUNITY_LIST_STR
11763: "Extended Community list number (expanded)\n")
11764: {
11765: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
11766: }
11767:
11768: DEFUN (no_ip_extcommunity_list_name_standard_all,
11769: no_ip_extcommunity_list_name_standard_all_cmd,
11770: "no ip extcommunity-list standard WORD",
11771: NO_STR
11772: IP_STR
11773: EXTCOMMUNITY_LIST_STR
11774: "Specify standard extcommunity-list\n"
11775: "Extended Community list name\n")
11776: {
11777: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
11778: }
11779:
11780: DEFUN (no_ip_extcommunity_list_name_expanded_all,
11781: no_ip_extcommunity_list_name_expanded_all_cmd,
11782: "no ip extcommunity-list expanded WORD",
11783: NO_STR
11784: IP_STR
11785: EXTCOMMUNITY_LIST_STR
11786: "Specify expanded extcommunity-list\n"
11787: "Extended Community list name\n")
11788: {
11789: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
11790: }
11791:
11792: DEFUN (no_ip_extcommunity_list_standard,
11793: no_ip_extcommunity_list_standard_cmd,
11794: "no ip extcommunity-list <1-99> (deny|permit) .AA:NN",
11795: NO_STR
11796: IP_STR
11797: EXTCOMMUNITY_LIST_STR
11798: "Extended Community list number (standard)\n"
11799: "Specify community to reject\n"
11800: "Specify community to accept\n"
11801: EXTCOMMUNITY_VAL_STR)
11802: {
11803: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
11804: }
11805:
11806: DEFUN (no_ip_extcommunity_list_expanded,
11807: no_ip_extcommunity_list_expanded_cmd,
11808: "no ip extcommunity-list <100-500> (deny|permit) .LINE",
11809: NO_STR
11810: IP_STR
11811: EXTCOMMUNITY_LIST_STR
11812: "Extended Community list number (expanded)\n"
11813: "Specify community to reject\n"
11814: "Specify community to accept\n"
11815: "An ordered list as a regular-expression\n")
11816: {
11817: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
11818: }
11819:
11820: DEFUN (no_ip_extcommunity_list_name_standard,
11821: no_ip_extcommunity_list_name_standard_cmd,
11822: "no ip extcommunity-list standard WORD (deny|permit) .AA:NN",
11823: NO_STR
11824: IP_STR
11825: EXTCOMMUNITY_LIST_STR
11826: "Specify standard extcommunity-list\n"
11827: "Extended Community list name\n"
11828: "Specify community to reject\n"
11829: "Specify community to accept\n"
11830: EXTCOMMUNITY_VAL_STR)
11831: {
11832: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
11833: }
11834:
11835: DEFUN (no_ip_extcommunity_list_name_expanded,
11836: no_ip_extcommunity_list_name_expanded_cmd,
11837: "no ip extcommunity-list expanded WORD (deny|permit) .LINE",
11838: NO_STR
11839: IP_STR
11840: EXTCOMMUNITY_LIST_STR
11841: "Specify expanded extcommunity-list\n"
11842: "Community list name\n"
11843: "Specify community to reject\n"
11844: "Specify community to accept\n"
11845: "An ordered list as a regular-expression\n")
11846: {
11847: return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
11848: }
11849:
11850: static void
11851: extcommunity_list_show (struct vty *vty, struct community_list *list)
11852: {
11853: struct community_entry *entry;
11854:
11855: for (entry = list->head; entry; entry = entry->next)
11856: {
11857: if (entry == list->head)
11858: {
11859: if (all_digit (list->name))
11860: vty_out (vty, "Extended community %s list %s%s",
11861: entry->style == EXTCOMMUNITY_LIST_STANDARD ?
11862: "standard" : "(expanded) access",
11863: list->name, VTY_NEWLINE);
11864: else
11865: vty_out (vty, "Named extended community %s list %s%s",
11866: entry->style == EXTCOMMUNITY_LIST_STANDARD ?
11867: "standard" : "expanded",
11868: list->name, VTY_NEWLINE);
11869: }
11870: if (entry->any)
11871: vty_out (vty, " %s%s",
11872: community_direct_str (entry->direct), VTY_NEWLINE);
11873: else
11874: vty_out (vty, " %s %s%s",
11875: community_direct_str (entry->direct),
11876: entry->style == EXTCOMMUNITY_LIST_STANDARD ?
11877: entry->u.ecom->str : entry->config,
11878: VTY_NEWLINE);
11879: }
11880: }
11881:
11882: DEFUN (show_ip_extcommunity_list,
11883: show_ip_extcommunity_list_cmd,
11884: "show ip extcommunity-list",
11885: SHOW_STR
11886: IP_STR
11887: "List extended-community list\n")
11888: {
11889: struct community_list *list;
11890: struct community_list_master *cm;
11891:
11892: cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_MASTER);
11893: if (! cm)
11894: return CMD_SUCCESS;
11895:
11896: for (list = cm->num.head; list; list = list->next)
11897: extcommunity_list_show (vty, list);
11898:
11899: for (list = cm->str.head; list; list = list->next)
11900: extcommunity_list_show (vty, list);
11901:
11902: return CMD_SUCCESS;
11903: }
11904:
11905: DEFUN (show_ip_extcommunity_list_arg,
11906: show_ip_extcommunity_list_arg_cmd,
11907: "show ip extcommunity-list (<1-500>|WORD)",
11908: SHOW_STR
11909: IP_STR
11910: "List extended-community list\n"
11911: "Extcommunity-list number\n"
11912: "Extcommunity-list name\n")
11913: {
11914: struct community_list *list;
11915:
11916: list = community_list_lookup (bgp_clist, argv[0], EXTCOMMUNITY_LIST_MASTER);
11917: if (! list)
11918: {
11919: vty_out (vty, "%% Can't find extcommunity-list%s", VTY_NEWLINE);
11920: return CMD_WARNING;
11921: }
11922:
11923: extcommunity_list_show (vty, list);
11924:
11925: return CMD_SUCCESS;
11926: }
11927:
11928: /* Return configuration string of community-list entry. */
11929: static const char *
11930: community_list_config_str (struct community_entry *entry)
11931: {
11932: const char *str;
11933:
11934: if (entry->any)
11935: str = "";
11936: else
11937: {
11938: if (entry->style == COMMUNITY_LIST_STANDARD)
11939: str = community_str (entry->u.com);
11940: else
11941: str = entry->config;
11942: }
11943: return str;
11944: }
11945:
11946: /* Display community-list and extcommunity-list configuration. */
11947: static int
11948: community_list_config_write (struct vty *vty)
11949: {
11950: struct community_list *list;
11951: struct community_entry *entry;
11952: struct community_list_master *cm;
11953: int write = 0;
11954:
11955: /* Community-list. */
11956: cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_MASTER);
11957:
11958: for (list = cm->num.head; list; list = list->next)
11959: for (entry = list->head; entry; entry = entry->next)
11960: {
11961: vty_out (vty, "ip community-list %s %s %s%s",
11962: list->name, community_direct_str (entry->direct),
11963: community_list_config_str (entry),
11964: VTY_NEWLINE);
11965: write++;
11966: }
11967: for (list = cm->str.head; list; list = list->next)
11968: for (entry = list->head; entry; entry = entry->next)
11969: {
11970: vty_out (vty, "ip community-list %s %s %s %s%s",
11971: entry->style == COMMUNITY_LIST_STANDARD
11972: ? "standard" : "expanded",
11973: list->name, community_direct_str (entry->direct),
11974: community_list_config_str (entry),
11975: VTY_NEWLINE);
11976: write++;
11977: }
11978:
11979: /* Extcommunity-list. */
11980: cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_MASTER);
11981:
11982: for (list = cm->num.head; list; list = list->next)
11983: for (entry = list->head; entry; entry = entry->next)
11984: {
11985: vty_out (vty, "ip extcommunity-list %s %s %s%s",
11986: list->name, community_direct_str (entry->direct),
11987: community_list_config_str (entry), VTY_NEWLINE);
11988: write++;
11989: }
11990: for (list = cm->str.head; list; list = list->next)
11991: for (entry = list->head; entry; entry = entry->next)
11992: {
11993: vty_out (vty, "ip extcommunity-list %s %s %s %s%s",
11994: entry->style == EXTCOMMUNITY_LIST_STANDARD
11995: ? "standard" : "expanded",
11996: list->name, community_direct_str (entry->direct),
11997: community_list_config_str (entry), VTY_NEWLINE);
11998: write++;
11999: }
12000: return write;
12001: }
12002:
12003: static struct cmd_node community_list_node =
12004: {
12005: COMMUNITY_LIST_NODE,
12006: "",
12007: 1 /* Export to vtysh. */
12008: };
12009:
12010: static void
12011: community_list_vty (void)
12012: {
12013: install_node (&community_list_node, community_list_config_write);
12014:
12015: /* Community-list. */
12016: install_element (CONFIG_NODE, &ip_community_list_standard_cmd);
12017: install_element (CONFIG_NODE, &ip_community_list_standard2_cmd);
12018: install_element (CONFIG_NODE, &ip_community_list_expanded_cmd);
12019: install_element (CONFIG_NODE, &ip_community_list_name_standard_cmd);
12020: install_element (CONFIG_NODE, &ip_community_list_name_standard2_cmd);
12021: install_element (CONFIG_NODE, &ip_community_list_name_expanded_cmd);
12022: install_element (CONFIG_NODE, &no_ip_community_list_standard_all_cmd);
12023: install_element (CONFIG_NODE, &no_ip_community_list_expanded_all_cmd);
12024: install_element (CONFIG_NODE, &no_ip_community_list_name_standard_all_cmd);
12025: install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_all_cmd);
12026: install_element (CONFIG_NODE, &no_ip_community_list_standard_cmd);
12027: install_element (CONFIG_NODE, &no_ip_community_list_expanded_cmd);
12028: install_element (CONFIG_NODE, &no_ip_community_list_name_standard_cmd);
12029: install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_cmd);
12030: install_element (VIEW_NODE, &show_ip_community_list_cmd);
12031: install_element (VIEW_NODE, &show_ip_community_list_arg_cmd);
12032: install_element (ENABLE_NODE, &show_ip_community_list_cmd);
12033: install_element (ENABLE_NODE, &show_ip_community_list_arg_cmd);
12034:
12035: /* Extcommunity-list. */
12036: install_element (CONFIG_NODE, &ip_extcommunity_list_standard_cmd);
12037: install_element (CONFIG_NODE, &ip_extcommunity_list_standard2_cmd);
12038: install_element (CONFIG_NODE, &ip_extcommunity_list_expanded_cmd);
12039: install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard_cmd);
12040: install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard2_cmd);
12041: install_element (CONFIG_NODE, &ip_extcommunity_list_name_expanded_cmd);
12042: install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_all_cmd);
12043: install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_all_cmd);
12044: install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_all_cmd);
12045: install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_all_cmd);
12046: install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_cmd);
12047: install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_cmd);
12048: install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_cmd);
12049: install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_cmd);
12050: install_element (VIEW_NODE, &show_ip_extcommunity_list_cmd);
12051: install_element (VIEW_NODE, &show_ip_extcommunity_list_arg_cmd);
12052: install_element (ENABLE_NODE, &show_ip_extcommunity_list_cmd);
12053: install_element (ENABLE_NODE, &show_ip_extcommunity_list_arg_cmd);
12054: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>