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