bgp_vty.c
上传用户:xiaozhuqw
上传日期:2009-11-15
资源大小:1338k
文件大小:293k
源码类别:

网络

开发平台:

Unix_Linux

  1.   else if (strncmp (direct_str, "o", 1) == 0)
  2.     direct = FILTER_OUT;
  3.   ret = peer_aslist_set (peer, afi, safi, direct, name_str);
  4.   return bgp_vty_return (vty, ret);
  5. }
  6. int
  7. peer_aslist_unset_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
  8.        char *direct_str)
  9. {
  10.   int ret;
  11.   struct peer *peer;
  12.   int direct = FILTER_IN;
  13.   peer = peer_and_group_lookup_vty (vty, ip_str);
  14.   if (! peer)
  15.     return CMD_WARNING;
  16.   /* Check filter direction. */
  17.   if (strncmp (direct_str, "i", 1) == 0)
  18.     direct = FILTER_IN;
  19.   else if (strncmp (direct_str, "o", 1) == 0)
  20.     direct = FILTER_OUT;
  21.   ret = peer_aslist_unset (peer, afi, safi, direct);
  22.   return bgp_vty_return (vty, ret);
  23. }
  24. DEFUN (neighbor_filter_list,
  25.        neighbor_filter_list_cmd,
  26.        NEIGHBOR_CMD2 "filter-list WORD (in|out)",
  27.        NEIGHBOR_STR
  28.        NEIGHBOR_ADDR_STR2
  29.        "Establish BGP filtersn"
  30.        "AS path access-list namen"
  31.        "Filter incoming routesn"
  32.        "Filter outgoing routesn")
  33. {
  34.   return peer_aslist_set_vty (vty, argv[0], bgp_node_afi (vty),
  35.       bgp_node_safi (vty), argv[1], argv[2]);
  36. }
  37. DEFUN (no_neighbor_filter_list,
  38.        no_neighbor_filter_list_cmd,
  39.        NO_NEIGHBOR_CMD2 "filter-list WORD (in|out)",
  40.        NO_STR
  41.        NEIGHBOR_STR
  42.        NEIGHBOR_ADDR_STR2
  43.        "Establish BGP filtersn"
  44.        "AS path access-list namen"
  45.        "Filter incoming routesn"
  46.        "Filter outgoing routesn")
  47. {
  48.   return peer_aslist_unset_vty (vty, argv[0], bgp_node_afi (vty),
  49. bgp_node_safi (vty), argv[2]);
  50. }
  51. /* Set route-map to the peer. */
  52. int
  53. peer_route_map_set_vty (struct vty *vty, char *ip_str, afi_t afi, safi_t safi,
  54. char *name_str, char *direct_str)
  55. {
  56.   int ret;
  57.   struct peer *peer;
  58.   int direct = FILTER_IN;
  59.   peer = peer_and_group_lookup_vty (vty, ip_str);
  60.   if (! peer)
  61.     return CMD_WARNING;
  62.   /* Check filter direction. */
  63.   if (strncmp (direct_str, "i", 1) == 0)
  64.     direct = FILTER_IN;
  65.   else if (strncmp (direct_str, "o", 1) == 0)
  66.     direct = FILTER_OUT;
  67.   ret = peer_route_map_set (peer, afi, safi, direct, name_str);
  68.   return bgp_vty_return (vty, ret);
  69. }
  70. int
  71. peer_route_map_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
  72.   safi_t safi, char *direct_str)
  73. {
  74.   int ret;
  75.   struct peer *peer;
  76.   int direct = FILTER_IN;
  77.   peer = peer_and_group_lookup_vty (vty, ip_str);
  78.   if (! peer)
  79.     return CMD_WARNING;
  80.   /* Check filter direction. */
  81.   if (strncmp (direct_str, "i", 1) == 0)
  82.     direct = FILTER_IN;
  83.   else if (strncmp (direct_str, "o", 1) == 0)
  84.     direct = FILTER_OUT;
  85.   ret = peer_route_map_unset (peer, afi, safi, direct);
  86.   return bgp_vty_return (vty, ret);
  87. }
  88. DEFUN (neighbor_route_map,
  89.        neighbor_route_map_cmd,
  90.        NEIGHBOR_CMD2 "route-map WORD (in|out)",
  91.        NEIGHBOR_STR
  92.        NEIGHBOR_ADDR_STR2
  93.        "Apply route map to neighborn"
  94.        "Name of route mapn"
  95.        "Apply map to incoming routesn"
  96.        "Apply map to outbound routesn")
  97. {
  98.   return peer_route_map_set_vty (vty, argv[0], bgp_node_afi (vty),
  99.  bgp_node_safi (vty), argv[1], argv[2]);
  100. }
  101. DEFUN (no_neighbor_route_map,
  102.        no_neighbor_route_map_cmd,
  103.        NO_NEIGHBOR_CMD2 "route-map WORD (in|out)",
  104.        NO_STR
  105.        NEIGHBOR_STR
  106.        NEIGHBOR_ADDR_STR2
  107.        "Apply route map to neighborn"
  108.        "Name of route mapn"
  109.        "Apply map to incoming routesn"
  110.        "Apply map to outbound routesn")
  111. {
  112.   return peer_route_map_unset_vty (vty, argv[0], bgp_node_afi (vty),
  113.    bgp_node_safi (vty), argv[2]);
  114. }
  115. /* Set unsuppress-map to the peer. */
  116. int
  117. peer_unsuppress_map_set_vty (struct vty *vty, char *ip_str, afi_t afi,
  118.      safi_t safi, char *name_str)
  119. {
  120.   int ret;
  121.   struct peer *peer;
  122.   peer = peer_and_group_lookup_vty (vty, ip_str);
  123.   if (! peer)
  124.     return CMD_WARNING;
  125.   ret = peer_unsuppress_map_set (peer, afi, safi, name_str);
  126.   return bgp_vty_return (vty, ret);
  127. }
  128. /* Unset route-map from the peer. */
  129. int
  130. peer_unsuppress_map_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
  131.        safi_t safi)
  132. {
  133.   int ret;
  134.   struct peer *peer;
  135.   peer = peer_and_group_lookup_vty (vty, ip_str);
  136.   if (! peer)
  137.     return CMD_WARNING;
  138.   ret = peer_unsuppress_map_unset (peer, afi, safi);
  139.   return bgp_vty_return (vty, ret);
  140. }
  141. DEFUN (neighbor_unsuppress_map,
  142.        neighbor_unsuppress_map_cmd,
  143.        NEIGHBOR_CMD2 "unsuppress-map WORD",
  144.        NEIGHBOR_STR
  145.        NEIGHBOR_ADDR_STR2
  146.        "Route-map to selectively unsuppress suppressed routesn"
  147.        "Name of route mapn")
  148. {
  149.   return peer_unsuppress_map_set_vty (vty, argv[0], bgp_node_afi (vty),
  150.       bgp_node_safi (vty), argv[1]);
  151. }
  152. DEFUN (no_neighbor_unsuppress_map,
  153.        no_neighbor_unsuppress_map_cmd,
  154.        NO_NEIGHBOR_CMD2 "unsuppress-map WORD",
  155.        NO_STR
  156.        NEIGHBOR_STR
  157.        NEIGHBOR_ADDR_STR2
  158.        "Route-map to selectively unsuppress suppressed routesn"
  159.        "Name of route mapn")
  160. {
  161.   return peer_unsuppress_map_unset_vty (vty, argv[0], bgp_node_afi (vty),
  162. bgp_node_safi (vty));
  163. }
  164. int
  165. peer_maximum_prefix_set_vty (struct vty *vty, char *ip_str, afi_t afi,
  166.      safi_t safi, char *num_str, char *threshold_str,
  167.      int warning, char *restart_str)
  168. {
  169.   int ret;
  170.   struct peer *peer;
  171.   u_int32_t max;
  172.   u_char threshold;
  173.   u_int16_t restart;
  174.   peer = peer_and_group_lookup_vty (vty, ip_str);
  175.   if (! peer)
  176.     return CMD_WARNING;
  177.   VTY_GET_INTEGER ("maxmum number", max, num_str);
  178.   if (threshold_str)
  179.     threshold = atoi (threshold_str);
  180.   else
  181.     threshold = MAXIMUM_PREFIX_THRESHOLD_DEFAULT;
  182.   if (restart_str)
  183.     restart = atoi (restart_str);
  184.   else
  185.     restart = 0;
  186.   ret = peer_maximum_prefix_set (peer, afi, safi, max, threshold, warning, restart);
  187.   return bgp_vty_return (vty, ret);
  188. }
  189. int
  190. peer_maximum_prefix_unset_vty (struct vty *vty, char *ip_str, afi_t afi,
  191.        safi_t safi)
  192. {
  193.   int ret;
  194.   struct peer *peer;
  195.   peer = peer_and_group_lookup_vty (vty, ip_str);
  196.   if (! peer)
  197.     return CMD_WARNING;
  198.   ret = peer_maximum_prefix_unset (peer, afi, safi);
  199.   return bgp_vty_return (vty, ret);
  200. }
  201. /* Maximum number of prefix configuration.  prefix count is different
  202.    for each peer configuration.  So this configuration can be set for
  203.    each peer configuration. */
  204. DEFUN (neighbor_maximum_prefix,
  205.        neighbor_maximum_prefix_cmd,
  206.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295>",
  207.        NEIGHBOR_STR
  208.        NEIGHBOR_ADDR_STR2
  209.        "Maximum number of prefix accept from this peern"
  210.        "maximum no. of prefix limitn")
  211. {
  212.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  213.       bgp_node_safi (vty), argv[1], NULL, 0 ,NULL);
  214. }
  215. DEFUN (neighbor_maximum_prefix_threshold,
  216.        neighbor_maximum_prefix_threshold_cmd,
  217.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100>",
  218.        NEIGHBOR_STR
  219.        NEIGHBOR_ADDR_STR2
  220.        "Maximum number of prefix accept from this peern"
  221.        "maximum no. of prefix limitn"
  222.        "Threshold value (%) at which to generate a warning msgn")
  223. {
  224.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  225.       bgp_node_safi (vty), argv[1], argv[2], 0, NULL);
  226. }
  227. DEFUN (neighbor_maximum_prefix_warning,
  228.        neighbor_maximum_prefix_warning_cmd,
  229.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
  230.        NEIGHBOR_STR
  231.        NEIGHBOR_ADDR_STR2
  232.        "Maximum number of prefix accept from this peern"
  233.        "maximum no. of prefix limitn"
  234.        "Only give warning message when limit is exceededn")
  235. {
  236.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  237.       bgp_node_safi (vty), argv[1], NULL, 1, NULL);
  238. }
  239. DEFUN (neighbor_maximum_prefix_threshold_warning,
  240.        neighbor_maximum_prefix_threshold_warning_cmd,
  241.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> warning-only",
  242.        NEIGHBOR_STR
  243.        NEIGHBOR_ADDR_STR2
  244.        "Maximum number of prefix accept from this peern"
  245.        "maximum no. of prefix limitn"
  246.        "Threshold value (%) at which to generate a warning msgn"
  247.        "Only give warning message when limit is exceededn")
  248. {
  249.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  250.       bgp_node_safi (vty), argv[1], argv[2], 1, NULL);
  251. }
  252. DEFUN (neighbor_maximum_prefix_restart,
  253.        neighbor_maximum_prefix_restart_cmd,
  254.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> restart <1-65535>",
  255.        NEIGHBOR_STR
  256.        NEIGHBOR_ADDR_STR2
  257.        "Maximum number of prefix accept from this peern"
  258.        "maximum no. of prefix limitn"
  259.        "Restart bgp connection after limit is exceededn"
  260.        "Restart interval in minutes")
  261. {
  262.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  263.       bgp_node_safi (vty), argv[1], NULL, 0, argv[2]);
  264. }
  265. DEFUN (neighbor_maximum_prefix_threshold_restart,
  266.        neighbor_maximum_prefix_threshold_restart_cmd,
  267.        NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> restart <1-65535>",
  268.        NEIGHBOR_STR
  269.        NEIGHBOR_ADDR_STR2
  270.        "Maximum number of prefix accept from this peern"
  271.        "maximum no. of prefix limitn"
  272.        "Threshold value (%) at which to generate a warning msgn"
  273.        "Restart bgp connection after limit is exceededn"
  274.        "Restart interval in minutes")
  275. {
  276.   return peer_maximum_prefix_set_vty (vty, argv[0], bgp_node_afi (vty),
  277.       bgp_node_safi (vty), argv[1], argv[2], 0, argv[3]);
  278. }
  279. DEFUN (no_neighbor_maximum_prefix,
  280.        no_neighbor_maximum_prefix_cmd,
  281.        NO_NEIGHBOR_CMD2 "maximum-prefix",
  282.        NO_STR
  283.        NEIGHBOR_STR
  284.        NEIGHBOR_ADDR_STR2
  285.        "Maximum number of prefix accept from this peern")
  286. {
  287.   return peer_maximum_prefix_unset_vty (vty, argv[0], bgp_node_afi (vty),
  288. bgp_node_safi (vty));
  289. }
  290.  
  291. ALIAS (no_neighbor_maximum_prefix,
  292.        no_neighbor_maximum_prefix_val_cmd,
  293.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295>",
  294.        NO_STR
  295.        NEIGHBOR_STR
  296.        NEIGHBOR_ADDR_STR2
  297.        "Maximum number of prefix accept from this peern"
  298.        "maximum no. of prefix limitn");
  299. ALIAS (no_neighbor_maximum_prefix,
  300.        no_neighbor_maximum_prefix_threshold_cmd,
  301.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
  302.        NO_STR
  303.        NEIGHBOR_STR
  304.        NEIGHBOR_ADDR_STR2
  305.        "Maximum number of prefix accept from this peern"
  306.        "maximum no. of prefix limitn"
  307.        "Threshold value (%) at which to generate a warning msgn")
  308. ALIAS (no_neighbor_maximum_prefix,
  309.        no_neighbor_maximum_prefix_warning_cmd,
  310.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
  311.        NO_STR
  312.        NEIGHBOR_STR
  313.        NEIGHBOR_ADDR_STR2
  314.        "Maximum number of prefix accept from this peern"
  315.        "maximum no. of prefix limitn"
  316.        "Only give warning message when limit is exceededn");
  317. ALIAS (no_neighbor_maximum_prefix,
  318.        no_neighbor_maximum_prefix_threshold_warning_cmd,
  319.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> warning-only",
  320.        NO_STR
  321.        NEIGHBOR_STR
  322.        NEIGHBOR_ADDR_STR2
  323.        "Maximum number of prefix accept from this peern"
  324.        "maximum no. of prefix limitn"
  325.        "Threshold value (%) at which to generate a warning msgn"
  326.        "Only give warning message when limit is exceededn");
  327. ALIAS (no_neighbor_maximum_prefix,
  328.        no_neighbor_maximum_prefix_restart_cmd,
  329.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> restart <1-65535>",
  330.        NO_STR
  331.        NEIGHBOR_STR
  332.        NEIGHBOR_ADDR_STR2
  333.        "Maximum number of prefix accept from this peern"
  334.        "maximum no. of prefix limitn"
  335.        "Restart bgp connection after limit is exceededn"
  336.        "Restart interval in minutes")
  337. ALIAS (no_neighbor_maximum_prefix,
  338.        no_neighbor_maximum_prefix_threshold_restart_cmd,
  339.        NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100> restart <1-65535>",
  340.        NO_STR
  341.        NEIGHBOR_STR
  342.        NEIGHBOR_ADDR_STR2
  343.        "Maximum number of prefix accept from this peern"
  344.        "maximum no. of prefix limitn"
  345.        "Threshold value (%) at which to generate a warning msgn"
  346.        "Restart bgp connection after limit is exceededn"
  347.        "Restart interval in minutes")
  348. /* "neighbor allowas-in" */
  349. DEFUN (neighbor_allowas_in,
  350.        neighbor_allowas_in_cmd,
  351.        NEIGHBOR_CMD2 "allowas-in",
  352.        NEIGHBOR_STR
  353.        NEIGHBOR_ADDR_STR2
  354.        "Accept as-path with my AS present in itn")
  355. {
  356.   int ret;
  357.   struct peer *peer;
  358.   int allow_num;
  359.   peer = peer_and_group_lookup_vty (vty, argv[0]);
  360.   if (! peer)
  361.     return CMD_WARNING;
  362.   if (argc == 1)
  363.     allow_num = 3;
  364.   else
  365.     VTY_GET_INTEGER_RANGE ("AS number", allow_num, argv[1], 1, 10);
  366.   ret = peer_allowas_in_set (peer, bgp_node_afi (vty), bgp_node_safi (vty),
  367.      allow_num);
  368.   return bgp_vty_return (vty, ret);
  369. }
  370. ALIAS (neighbor_allowas_in,
  371.        neighbor_allowas_in_arg_cmd,
  372.        NEIGHBOR_CMD2 "allowas-in <1-10>",
  373.        NEIGHBOR_STR
  374.        NEIGHBOR_ADDR_STR2
  375.        "Accept as-path with my AS present in itn"
  376.        "Number of occurances of AS numbern");
  377. DEFUN (no_neighbor_allowas_in,
  378.        no_neighbor_allowas_in_cmd,
  379.        NO_NEIGHBOR_CMD2 "allowas-in",
  380.        NO_STR
  381.        NEIGHBOR_STR
  382.        NEIGHBOR_ADDR_STR2
  383.        "allow local ASN appears in aspath attributen")
  384. {
  385.   int ret;
  386.   struct peer *peer;
  387.   peer = peer_and_group_lookup_vty (vty, argv[0]);
  388.   if (! peer)
  389.     return CMD_WARNING;
  390.   ret = peer_allowas_in_unset (peer, bgp_node_afi (vty), bgp_node_safi (vty));
  391.   return bgp_vty_return (vty, ret);
  392. }
  393. /* Address family configuration.  */
  394. DEFUN (address_family_ipv4,
  395.        address_family_ipv4_cmd,
  396.        "address-family ipv4",
  397.        "Enter Address Family command moden"
  398.        "Address familyn")
  399. {
  400.   vty->node = BGP_IPV4_NODE;
  401.   return CMD_SUCCESS;
  402. }
  403. DEFUN (address_family_ipv4_safi,
  404.        address_family_ipv4_safi_cmd,
  405.        "address-family ipv4 (unicast|multicast)",
  406.        "Enter Address Family command moden"
  407.        "Address familyn"
  408.        "Address Family modifiern"
  409.        "Address Family modifiern")
  410. {
  411.   if (strncmp (argv[0], "m", 1) == 0)
  412.     vty->node = BGP_IPV4M_NODE;
  413.   else
  414.     vty->node = BGP_IPV4_NODE;
  415.   return CMD_SUCCESS;
  416. }
  417. DEFUN (address_family_ipv6_unicast,
  418.        address_family_ipv6_unicast_cmd,
  419.        "address-family ipv6 unicast",
  420.        "Enter Address Family command moden"
  421.        "Address familyn"
  422.        "unicastn")
  423. {
  424.   vty->node = BGP_IPV6_NODE;
  425.   return CMD_SUCCESS;
  426. }
  427. ALIAS (address_family_ipv6_unicast,
  428.        address_family_ipv6_cmd,
  429.        "address-family ipv6",
  430.        "Enter Address Family command moden"
  431.        "Address familyn");
  432. DEFUN (address_family_vpnv4,
  433.        address_family_vpnv4_cmd,
  434.        "address-family vpnv4",
  435.        "Enter Address Family command moden"
  436.        "Address familyn")
  437. {
  438.   vty->node = BGP_VPNV4_NODE;
  439.   return CMD_SUCCESS;
  440. }
  441. ALIAS (address_family_vpnv4,
  442.        address_family_vpnv4_unicast_cmd,
  443.        "address-family vpnv4 unicast",
  444.        "Enter Address Family command moden"
  445.        "Address familyn"
  446.        "Address Family Modifiern");
  447. DEFUN (exit_address_family,
  448.        exit_address_family_cmd,
  449.        "exit-address-family",
  450.        "Exit from Address Family configuration moden")
  451. {
  452.   if (vty->node == BGP_IPV4_NODE
  453.       || vty->node == BGP_IPV4M_NODE
  454.       || vty->node == BGP_VPNV4_NODE
  455.       || vty->node == BGP_IPV6_NODE)
  456.     vty->node = BGP_NODE;
  457.   return CMD_SUCCESS;
  458. }
  459. /* BGP clear sort. */
  460. enum clear_sort
  461.   {
  462.     clear_all,
  463.     clear_peer,
  464.     clear_group,
  465.     clear_external,
  466.     clear_as
  467.   };
  468. void
  469. bgp_clear_vty_error (struct vty *vty, struct peer *peer, afi_t afi,
  470.      safi_t safi, int error)
  471. {
  472.   switch (error)
  473.     {
  474.     case BGP_ERR_AF_UNCONFIGURED:
  475.       vty_out (vty,
  476.        "%%BGP: Enable %s %s address family for the neighbor %s%s",
  477.        afi == AFI_IP6 ? "IPv6" : safi == SAFI_MPLS_VPN ? "VPNv4" : "IPv4",
  478.        safi == SAFI_MULTICAST ? "Multicast" : "Unicast",
  479.        peer->host, VTY_NEWLINE);
  480.       break;
  481.     case BGP_ERR_SOFT_RECONFIG_UNCONFIGURED:
  482.       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);
  483.       break;
  484.     default:
  485.       break;
  486.     }
  487. }
  488. /* `clear ip bgp' functions. */
  489. int
  490. bgp_clear (struct vty *vty, struct bgp *bgp,  afi_t afi, safi_t safi,
  491.            enum clear_sort sort,enum bgp_clear_type stype, char *arg)
  492. {
  493.   int ret;
  494.   struct peer *peer;
  495.   struct listnode *nn;
  496.   /* Clear all neighbors. */
  497.   if (sort == clear_all)
  498.     {
  499.       LIST_LOOP (bgp->peer, peer, nn)
  500. {
  501.   if (stype == BGP_CLEAR_SOFT_NONE)
  502.     ret = peer_clear (peer);
  503.   else
  504.     ret = peer_clear_soft (peer, afi, safi, stype);
  505.   if (ret < 0)
  506.     bgp_clear_vty_error (vty, peer, afi, safi, ret);
  507. }
  508.       return 0;
  509.     }
  510.   /* Clear specified neighbors. */
  511.   if (sort == clear_peer)
  512.     {
  513.       union sockunion su;
  514.       int ret;
  515.       /* Make sockunion for lookup. */
  516.       ret = str2sockunion (arg, &su);
  517.       if (ret < 0)
  518. {
  519.   vty_out (vty, "Malformed address: %s%s", arg, VTY_NEWLINE);
  520.   return -1;
  521. }
  522.       peer = peer_lookup (bgp, &su);
  523.       if (! peer)
  524. {
  525.   vty_out (vty, "%%BGP: Unknown neighbor - "%s"%s", arg, VTY_NEWLINE);
  526.   return -1;
  527. }
  528.       if (stype == BGP_CLEAR_SOFT_NONE)
  529. ret = peer_clear (peer);
  530.       else
  531. ret = peer_clear_soft (peer, afi, safi, stype);
  532.       if (ret < 0)
  533. bgp_clear_vty_error (vty, peer, afi, safi, ret);
  534.       return 0;
  535.     }
  536.   /* Clear all peer-group members. */
  537.   if (sort == clear_group)
  538.     {
  539.       struct peer_group *group;
  540.       group = peer_group_lookup (bgp, arg);
  541.       if (! group)
  542. {
  543.   vty_out (vty, "%%BGP: No such peer-group %s%s", arg, VTY_NEWLINE);
  544.   return -1; 
  545. }
  546.       LIST_LOOP (group->peer, peer, nn)
  547. {
  548.   if (stype == BGP_CLEAR_SOFT_NONE)
  549.     {
  550.       ret = peer_clear (peer);
  551.       continue;
  552.     }
  553.   ret = peer_clear_soft (peer, afi, safi, stype);
  554.   if (ret < 0)
  555.     bgp_clear_vty_error (vty, peer, afi, safi, ret);
  556. }
  557.       return 0;
  558.     }
  559.   if (sort == clear_external)
  560.     {
  561.       LIST_LOOP (bgp->peer, peer, nn)
  562. {
  563.   if (peer_sort (peer) == BGP_PEER_IBGP) 
  564.     continue;
  565.   if (stype == BGP_CLEAR_SOFT_NONE)
  566.     ret = peer_clear (peer);
  567.   else
  568.     ret = peer_clear_soft (peer, afi, safi, stype);
  569.   if (ret < 0)
  570.     bgp_clear_vty_error (vty, peer, afi, safi, ret);
  571. }
  572.       return 0;
  573.     }
  574.   if (sort == clear_as)
  575.     {
  576.       as_t as;
  577.       unsigned long as_ul;
  578.       char *endptr = NULL;
  579.       int find = 0;
  580.       as_ul = strtoul(arg, &endptr, 10);
  581.       if ((as_ul == ULONG_MAX) || (*endptr != '') || (as_ul > USHRT_MAX))
  582. {
  583.   vty_out (vty, "Invalid AS number%s", VTY_NEWLINE); 
  584.   return -1;
  585. }
  586.       as = (as_t) as_ul;
  587.       LIST_LOOP (bgp->peer, peer, nn)
  588. {
  589.   if (peer->as != as) 
  590.     continue;
  591.   find = 1;
  592.   if (stype == BGP_CLEAR_SOFT_NONE)
  593.     ret = peer_clear (peer);
  594.   else
  595.     ret = peer_clear_soft (peer, afi, safi, stype);
  596.   if (ret < 0)
  597.     bgp_clear_vty_error (vty, peer, afi, safi, ret);
  598. }
  599.       if (! find)
  600. vty_out (vty, "%%BGP: No peer is configured with AS %s%s", arg,
  601.  VTY_NEWLINE);
  602.       return 0;
  603.     }
  604.   return 0;
  605. }
  606. int
  607. bgp_clear_vty (struct vty *vty, char *name, afi_t afi, safi_t safi,
  608.                enum clear_sort sort, enum bgp_clear_type stype, char *arg)  
  609. {
  610.   int ret;
  611.   struct bgp *bgp;
  612.   /* BGP structure lookup. */
  613.   if (name)
  614.     {
  615.       bgp = bgp_lookup_by_name (name);
  616.       if (bgp == NULL)
  617.         {
  618.           vty_out (vty, "Can't find BGP view %s%s", name, VTY_NEWLINE);
  619.           return CMD_WARNING;
  620.         }
  621.     }
  622.   else
  623.     {
  624.       bgp = bgp_get_default ();
  625.       if (bgp == NULL)
  626.         {
  627.           vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
  628.           return CMD_WARNING;
  629.         }
  630.     }
  631.   ret =  bgp_clear (vty, bgp, afi, safi, sort, stype, arg);
  632.   if (ret < 0)
  633.     return CMD_WARNING;
  634.   return CMD_SUCCESS;
  635. }
  636.   
  637. DEFUN (clear_ip_bgp_all,
  638.        clear_ip_bgp_all_cmd,
  639.        "clear ip bgp *",
  640.        CLEAR_STR
  641.        IP_STR
  642.        BGP_STR
  643.        "Clear all peersn")
  644. {
  645.   if (argc == 1)
  646.     return bgp_clear_vty (vty, argv[0], 0, 0, clear_all, BGP_CLEAR_SOFT_NONE, NULL);    
  647.   return bgp_clear_vty (vty, NULL, 0, 0, clear_all, BGP_CLEAR_SOFT_NONE, NULL);
  648. }
  649. ALIAS (clear_ip_bgp_all,
  650.        clear_bgp_all_cmd,
  651.        "clear bgp *",
  652.        CLEAR_STR
  653.        BGP_STR
  654.        "Clear all peersn");
  655. ALIAS (clear_ip_bgp_all,
  656.        clear_bgp_ipv6_all_cmd,
  657.        "clear bgp ipv6 *",
  658.        CLEAR_STR
  659.        BGP_STR
  660.        "Address familyn"
  661.        "Clear all peersn");
  662. ALIAS (clear_ip_bgp_all,
  663.        clear_ip_bgp_instance_all_cmd,
  664.        "clear ip bgp view WORD *",
  665.        CLEAR_STR
  666.        IP_STR
  667.        BGP_STR
  668.        "BGP viewn"
  669.        "view namen"
  670.        "Clear all peersn");
  671. ALIAS (clear_ip_bgp_all,
  672.        clear_bgp_instance_all_cmd,
  673.        "clear bgp view WORD *",
  674.        CLEAR_STR
  675.        BGP_STR
  676.        "BGP viewn"
  677.        "view namen"
  678.        "Clear all peersn");
  679. DEFUN (clear_ip_bgp_peer,
  680.        clear_ip_bgp_peer_cmd, 
  681.        "clear ip bgp (A.B.C.D|X:X::X:X)",
  682.        CLEAR_STR
  683.        IP_STR
  684.        BGP_STR
  685.        "BGP neighbor IP address to clearn"
  686.        "BGP IPv6 neighbor to clearn")
  687. {
  688.   return bgp_clear_vty (vty, NULL, 0, 0, clear_peer, BGP_CLEAR_SOFT_NONE, argv[0]);
  689. }
  690. ALIAS (clear_ip_bgp_peer,
  691.        clear_bgp_peer_cmd, 
  692.        "clear bgp (A.B.C.D|X:X::X:X)",
  693.        CLEAR_STR
  694.        BGP_STR
  695.        "BGP neighbor address to clearn"
  696.        "BGP IPv6 neighbor to clearn");
  697. ALIAS (clear_ip_bgp_peer,
  698.        clear_bgp_ipv6_peer_cmd, 
  699.        "clear bgp ipv6 (A.B.C.D|X:X::X:X)",
  700.        CLEAR_STR
  701.        BGP_STR
  702.        "Address familyn"
  703.        "BGP neighbor address to clearn"
  704.        "BGP IPv6 neighbor to clearn");
  705. DEFUN (clear_ip_bgp_peer_group,
  706.        clear_ip_bgp_peer_group_cmd, 
  707.        "clear ip bgp peer-group WORD",
  708.        CLEAR_STR
  709.        IP_STR
  710.        BGP_STR
  711.        "Clear all members of peer-groupn"
  712.        "BGP peer-group namen")
  713. {
  714.   return bgp_clear_vty (vty, NULL, 0, 0, clear_group, BGP_CLEAR_SOFT_NONE, argv[0]);
  715. }
  716. ALIAS (clear_ip_bgp_peer_group,
  717.        clear_bgp_peer_group_cmd, 
  718.        "clear bgp peer-group WORD",
  719.        CLEAR_STR
  720.        BGP_STR
  721.        "Clear all members of peer-groupn"
  722.        "BGP peer-group namen");
  723. ALIAS (clear_ip_bgp_peer_group,
  724.        clear_bgp_ipv6_peer_group_cmd, 
  725.        "clear bgp ipv6 peer-group WORD",
  726.        CLEAR_STR
  727.        BGP_STR
  728.        "Address familyn"
  729.        "Clear all members of peer-groupn"
  730.        "BGP peer-group namen");
  731. DEFUN (clear_ip_bgp_external,
  732.        clear_ip_bgp_external_cmd,
  733.        "clear ip bgp external",
  734.        CLEAR_STR
  735.        IP_STR
  736.        BGP_STR
  737.        "Clear all external peersn")
  738. {
  739.   return bgp_clear_vty (vty, NULL, 0, 0, clear_external, BGP_CLEAR_SOFT_NONE, NULL);
  740. }
  741. ALIAS (clear_ip_bgp_external,
  742.        clear_bgp_external_cmd, 
  743.        "clear bgp external",
  744.        CLEAR_STR
  745.        BGP_STR
  746.        "Clear all external peersn");
  747. ALIAS (clear_ip_bgp_external,
  748.        clear_bgp_ipv6_external_cmd, 
  749.        "clear bgp ipv6 external",
  750.        CLEAR_STR
  751.        BGP_STR
  752.        "Address familyn"
  753.        "Clear all external peersn");
  754. DEFUN (clear_ip_bgp_as,
  755.        clear_ip_bgp_as_cmd,
  756.        "clear ip bgp <1-65535>",
  757.        CLEAR_STR
  758.        IP_STR
  759.        BGP_STR
  760.        "Clear peers with the AS numbern")
  761. {
  762.   return bgp_clear_vty (vty, NULL, 0, 0, clear_as, BGP_CLEAR_SOFT_NONE, argv[0]);
  763. }       
  764. ALIAS (clear_ip_bgp_as,
  765.        clear_bgp_as_cmd,
  766.        "clear bgp <1-65535>",
  767.        CLEAR_STR
  768.        BGP_STR
  769.        "Clear peers with the AS numbern");
  770. ALIAS (clear_ip_bgp_as,
  771.        clear_bgp_ipv6_as_cmd,
  772.        "clear bgp ipv6 <1-65535>",
  773.        CLEAR_STR
  774.        BGP_STR
  775.        "Address familyn"
  776.        "Clear peers with the AS numbern");
  777. /* Outbound soft-reconfiguration */
  778. DEFUN (clear_ip_bgp_all_soft_out,
  779.        clear_ip_bgp_all_soft_out_cmd,
  780.        "clear ip bgp * soft out",
  781.        CLEAR_STR
  782.        IP_STR
  783.        BGP_STR
  784.        "Clear all peersn"
  785.        "Soft reconfign"
  786.        "Soft reconfig outbound updaten")
  787. {
  788.   if (argc == 1)
  789.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  790.                           BGP_CLEAR_SOFT_OUT, NULL);
  791.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  792. BGP_CLEAR_SOFT_OUT, NULL);
  793. }
  794. ALIAS (clear_ip_bgp_all_soft_out,
  795.        clear_ip_bgp_all_out_cmd,
  796.        "clear ip bgp * out",
  797.        CLEAR_STR
  798.        IP_STR
  799.        BGP_STR
  800.        "Clear all peersn"
  801.        "Soft reconfig outbound updaten");
  802. ALIAS (clear_ip_bgp_all_soft_out,
  803.        clear_ip_bgp_instance_all_soft_out_cmd,
  804.        "clear ip bgp view WORD * soft out",
  805.        CLEAR_STR
  806.        IP_STR
  807.        BGP_STR
  808.        "BGP viewn"
  809.        "view namen"
  810.        "Clear all peersn"
  811.        "Soft reconfign"
  812.        "Soft reconfig outbound updaten");
  813. DEFUN (clear_ip_bgp_all_ipv4_soft_out,
  814.        clear_ip_bgp_all_ipv4_soft_out_cmd,
  815.        "clear ip bgp * ipv4 (unicast|multicast) soft out",
  816.        CLEAR_STR
  817.        IP_STR
  818.        BGP_STR
  819.        "Clear all peersn"
  820.        "Address familyn"
  821.        "Address Family modifiern"
  822.        "Address Family modifiern"
  823.        "Soft reconfign"
  824.        "Soft reconfig outbound updaten")
  825. {
  826.   if (strncmp (argv[0], "m", 1) == 0)
  827.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
  828.   BGP_CLEAR_SOFT_OUT, NULL);
  829.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  830. BGP_CLEAR_SOFT_OUT, NULL);
  831. }
  832. ALIAS (clear_ip_bgp_all_ipv4_soft_out,
  833.        clear_ip_bgp_all_ipv4_out_cmd,
  834.        "clear ip bgp * ipv4 (unicast|multicast) out",
  835.        CLEAR_STR
  836.        IP_STR
  837.        BGP_STR
  838.        "Clear all peersn"
  839.        "Address familyn"
  840.        "Address Family modifiern"
  841.        "Address Family modifiern"
  842.        "Soft reconfig outbound updaten");
  843. DEFUN (clear_ip_bgp_instance_all_ipv4_soft_out,
  844.        clear_ip_bgp_instance_all_ipv4_soft_out_cmd,
  845.        "clear ip bgp view WORD * ipv4 (unicast|multicast) soft out",
  846.        CLEAR_STR
  847.        IP_STR
  848.        BGP_STR
  849.        "BGP viewn"
  850.        "view namen"
  851.        "Clear all peersn"
  852.        "Address familyn"
  853.        "Address Family modifiern"
  854.        "Address Family modifiern"
  855.        "Soft reconfig outbound updaten")
  856. {
  857.   if (strncmp (argv[1], "m", 1) == 0)
  858.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
  859.                           BGP_CLEAR_SOFT_OUT, NULL);
  860.   return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  861.                         BGP_CLEAR_SOFT_OUT, NULL);
  862. }
  863. DEFUN (clear_ip_bgp_all_vpnv4_soft_out,
  864.        clear_ip_bgp_all_vpnv4_soft_out_cmd,
  865.        "clear ip bgp * vpnv4 unicast soft out",
  866.        CLEAR_STR
  867.        IP_STR
  868.        BGP_STR
  869.        "Clear all peersn"
  870.        "Address familyn"
  871.        "Address Family Modifiern"
  872.        "Soft reconfign"
  873.        "Soft reconfig outbound updaten")
  874. {
  875.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
  876. BGP_CLEAR_SOFT_OUT, NULL);
  877. }
  878. ALIAS (clear_ip_bgp_all_vpnv4_soft_out,
  879.        clear_ip_bgp_all_vpnv4_out_cmd,
  880.        "clear ip bgp * vpnv4 unicast out",
  881.        CLEAR_STR
  882.        IP_STR
  883.        BGP_STR
  884.        "Clear all peersn"
  885.        "Address familyn"
  886.        "Address Family Modifiern"
  887.        "Soft reconfig outbound updaten");
  888. DEFUN (clear_bgp_all_soft_out,
  889.        clear_bgp_all_soft_out_cmd,
  890.        "clear bgp * soft out",
  891.        CLEAR_STR
  892.        BGP_STR
  893.        "Clear all peersn"
  894.        "Soft reconfign"
  895.        "Soft reconfig outbound updaten")
  896. {
  897.   if (argc == 1)
  898.     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
  899.                           BGP_CLEAR_SOFT_OUT, NULL);
  900.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
  901. BGP_CLEAR_SOFT_OUT, NULL);
  902. }
  903. ALIAS (clear_bgp_all_soft_out,
  904.        clear_bgp_instance_all_soft_out_cmd,
  905.        "clear bgp view WORD * soft out",
  906.        CLEAR_STR
  907.        BGP_STR
  908.        "BGP viewn"
  909.        "view namen"
  910.        "Clear all peersn"
  911.        "Soft reconfign"
  912.        "Soft reconfig outbound updaten");
  913. ALIAS (clear_bgp_all_soft_out,
  914.        clear_bgp_all_out_cmd,
  915.        "clear bgp * out",
  916.        CLEAR_STR
  917.        BGP_STR
  918.        "Clear all peersn"
  919.        "Soft reconfig outbound updaten");
  920. ALIAS (clear_bgp_all_soft_out,
  921.        clear_bgp_ipv6_all_soft_out_cmd,
  922.        "clear bgp ipv6 * soft out",
  923.        CLEAR_STR
  924.        BGP_STR
  925.        "Address familyn"
  926.        "Clear all peersn"
  927.        "Soft reconfign"
  928.        "Soft reconfig outbound updaten");
  929. ALIAS (clear_bgp_all_soft_out,
  930.        clear_bgp_ipv6_all_out_cmd,
  931.        "clear bgp ipv6 * out",
  932.        CLEAR_STR
  933.        BGP_STR
  934.        "Address familyn"
  935.        "Clear all peersn"
  936.        "Soft reconfig outbound updaten");
  937. DEFUN (clear_ip_bgp_peer_soft_out,
  938.        clear_ip_bgp_peer_soft_out_cmd,
  939.        "clear ip bgp A.B.C.D soft out",
  940.        CLEAR_STR
  941.        IP_STR
  942.        BGP_STR
  943.        "BGP neighbor address to clearn"
  944.        "Soft reconfign"
  945.        "Soft reconfig outbound updaten")
  946. {
  947.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  948. BGP_CLEAR_SOFT_OUT, argv[0]);
  949. }
  950. ALIAS (clear_ip_bgp_peer_soft_out,
  951.        clear_ip_bgp_peer_out_cmd,
  952.        "clear ip bgp A.B.C.D out",
  953.        CLEAR_STR
  954.        IP_STR
  955.        BGP_STR
  956.        "BGP neighbor address to clearn"
  957.        "Soft reconfig outbound updaten");
  958. DEFUN (clear_ip_bgp_peer_ipv4_soft_out,
  959.        clear_ip_bgp_peer_ipv4_soft_out_cmd,
  960.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft out",
  961.        CLEAR_STR
  962.        IP_STR
  963.        BGP_STR
  964.        "BGP neighbor address to clearn"
  965.        "Address familyn"
  966.        "Address Family modifiern"
  967.        "Address Family modifiern"
  968.        "Soft reconfign"
  969.        "Soft reconfig outbound updaten")
  970. {
  971.   if (strncmp (argv[1], "m", 1) == 0)
  972.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
  973.   BGP_CLEAR_SOFT_OUT, argv[0]);
  974.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  975. BGP_CLEAR_SOFT_OUT, argv[0]);
  976. }
  977. ALIAS (clear_ip_bgp_peer_ipv4_soft_out,
  978.        clear_ip_bgp_peer_ipv4_out_cmd,
  979.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) out",
  980.        CLEAR_STR
  981.        IP_STR
  982.        BGP_STR
  983.        "BGP neighbor address to clearn"
  984.        "Address familyn"
  985.        "Address Family modifiern"
  986.        "Address Family modifiern"
  987.        "Soft reconfig outbound updaten");
  988. DEFUN (clear_ip_bgp_peer_vpnv4_soft_out,
  989.        clear_ip_bgp_peer_vpnv4_soft_out_cmd,
  990.        "clear ip bgp A.B.C.D vpnv4 unicast soft out",
  991.        CLEAR_STR
  992.        IP_STR
  993.        BGP_STR
  994.        "BGP neighbor address to clearn"
  995.        "Address familyn"
  996.        "Address Family Modifiern"
  997.        "Soft reconfign"
  998.        "Soft reconfig outbound updaten")
  999. {
  1000.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
  1001. BGP_CLEAR_SOFT_OUT, argv[0]);
  1002. }
  1003. ALIAS (clear_ip_bgp_peer_vpnv4_soft_out,
  1004.        clear_ip_bgp_peer_vpnv4_out_cmd,
  1005.        "clear ip bgp A.B.C.D vpnv4 unicast out",
  1006.        CLEAR_STR
  1007.        IP_STR
  1008.        BGP_STR
  1009.        "BGP neighbor address to clearn"
  1010.        "Address familyn"
  1011.        "Address Family Modifiern"
  1012.        "Soft reconfig outbound updaten");
  1013. DEFUN (clear_bgp_peer_soft_out,
  1014.        clear_bgp_peer_soft_out_cmd,
  1015.        "clear bgp (A.B.C.D|X:X::X:X) soft out",
  1016.        CLEAR_STR
  1017.        BGP_STR
  1018.        "BGP neighbor address to clearn"
  1019.        "BGP IPv6 neighbor to clearn"
  1020.        "Soft reconfign"
  1021.        "Soft reconfig outbound updaten")
  1022. {
  1023.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
  1024. BGP_CLEAR_SOFT_OUT, argv[0]);
  1025. }
  1026. ALIAS (clear_bgp_peer_soft_out,
  1027.        clear_bgp_ipv6_peer_soft_out_cmd,
  1028.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft out",
  1029.        CLEAR_STR
  1030.        BGP_STR
  1031.        "Address familyn"
  1032.        "BGP neighbor address to clearn"
  1033.        "BGP IPv6 neighbor to clearn"
  1034.        "Soft reconfign"
  1035.        "Soft reconfig outbound updaten");
  1036. ALIAS (clear_bgp_peer_soft_out,
  1037.        clear_bgp_peer_out_cmd,
  1038.        "clear bgp (A.B.C.D|X:X::X:X) out",
  1039.        CLEAR_STR
  1040.        BGP_STR
  1041.        "BGP neighbor address to clearn"
  1042.        "BGP IPv6 neighbor to clearn"
  1043.        "Soft reconfig outbound updaten");
  1044. ALIAS (clear_bgp_peer_soft_out,
  1045.        clear_bgp_ipv6_peer_out_cmd,
  1046.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) out",
  1047.        CLEAR_STR
  1048.        BGP_STR
  1049.        "Address familyn"
  1050.        "BGP neighbor address to clearn"
  1051.        "BGP IPv6 neighbor to clearn"
  1052.        "Soft reconfig outbound updaten");
  1053. DEFUN (clear_ip_bgp_peer_group_soft_out,
  1054.        clear_ip_bgp_peer_group_soft_out_cmd, 
  1055.        "clear ip bgp peer-group WORD soft out",
  1056.        CLEAR_STR
  1057.        IP_STR
  1058.        BGP_STR
  1059.        "Clear all members of peer-groupn"
  1060.        "BGP peer-group namen"
  1061.        "Soft reconfign"
  1062.        "Soft reconfig outbound updaten")
  1063. {
  1064.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1065. BGP_CLEAR_SOFT_OUT, argv[0]);
  1066. }
  1067. ALIAS (clear_ip_bgp_peer_group_soft_out,
  1068.        clear_ip_bgp_peer_group_out_cmd, 
  1069.        "clear ip bgp peer-group WORD out",
  1070.        CLEAR_STR
  1071.        IP_STR
  1072.        BGP_STR
  1073.        "Clear all members of peer-groupn"
  1074.        "BGP peer-group namen"
  1075.        "Soft reconfig outbound updaten");
  1076. DEFUN (clear_ip_bgp_peer_group_ipv4_soft_out,
  1077.        clear_ip_bgp_peer_group_ipv4_soft_out_cmd,
  1078.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft out",
  1079.        CLEAR_STR
  1080.        IP_STR
  1081.        BGP_STR
  1082.        "Clear all members of peer-groupn"
  1083.        "BGP peer-group namen"
  1084.        "Address familyn"
  1085.        "Address Family modifiern"
  1086.        "Address Family modifiern"
  1087.        "Soft reconfign"
  1088.        "Soft reconfig outbound updaten")
  1089. {
  1090.   if (strncmp (argv[1], "m", 1) == 0)
  1091.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
  1092.   BGP_CLEAR_SOFT_OUT, argv[0]);
  1093.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1094. BGP_CLEAR_SOFT_OUT, argv[0]);
  1095. }
  1096. ALIAS (clear_ip_bgp_peer_group_ipv4_soft_out,
  1097.        clear_ip_bgp_peer_group_ipv4_out_cmd,
  1098.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) out",
  1099.        CLEAR_STR
  1100.        IP_STR
  1101.        BGP_STR
  1102.        "Clear all members of peer-groupn"
  1103.        "BGP peer-group namen"
  1104.        "Address familyn"
  1105.        "Address Family modifiern"
  1106.        "Address Family modifiern"
  1107.        "Soft reconfig outbound updaten");
  1108. DEFUN (clear_bgp_peer_group_soft_out,
  1109.        clear_bgp_peer_group_soft_out_cmd,
  1110.        "clear bgp peer-group WORD soft out",
  1111.        CLEAR_STR
  1112.        BGP_STR
  1113.        "Clear all members of peer-groupn"
  1114.        "BGP peer-group namen"
  1115.        "Soft reconfign"
  1116.        "Soft reconfig outbound updaten")
  1117. {
  1118.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
  1119. BGP_CLEAR_SOFT_OUT, argv[0]);
  1120. }
  1121. ALIAS (clear_bgp_peer_group_soft_out,
  1122.        clear_bgp_ipv6_peer_group_soft_out_cmd,
  1123.        "clear bgp ipv6 peer-group WORD soft out",
  1124.        CLEAR_STR
  1125.        BGP_STR
  1126.        "Address familyn"
  1127.        "Clear all members of peer-groupn"
  1128.        "BGP peer-group namen"
  1129.        "Soft reconfign"
  1130.        "Soft reconfig outbound updaten");
  1131. ALIAS (clear_bgp_peer_group_soft_out,
  1132.        clear_bgp_peer_group_out_cmd,
  1133.        "clear bgp peer-group WORD out",
  1134.        CLEAR_STR
  1135.        BGP_STR
  1136.        "Clear all members of peer-groupn"
  1137.        "BGP peer-group namen"
  1138.        "Soft reconfig outbound updaten");
  1139. ALIAS (clear_bgp_peer_group_soft_out,
  1140.        clear_bgp_ipv6_peer_group_out_cmd,
  1141.        "clear bgp ipv6 peer-group WORD out",
  1142.        CLEAR_STR
  1143.        BGP_STR
  1144.        "Address familyn"
  1145.        "Clear all members of peer-groupn"
  1146.        "BGP peer-group namen"
  1147.        "Soft reconfig outbound updaten");
  1148. DEFUN (clear_ip_bgp_external_soft_out,
  1149.        clear_ip_bgp_external_soft_out_cmd, 
  1150.        "clear ip bgp external soft out",
  1151.        CLEAR_STR
  1152.        IP_STR
  1153.        BGP_STR
  1154.        "Clear all external peersn"
  1155.        "Soft reconfign"
  1156.        "Soft reconfig outbound updaten")
  1157. {
  1158.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1159. BGP_CLEAR_SOFT_OUT, NULL);
  1160. }
  1161. ALIAS (clear_ip_bgp_external_soft_out,
  1162.        clear_ip_bgp_external_out_cmd, 
  1163.        "clear ip bgp external out",
  1164.        CLEAR_STR
  1165.        IP_STR
  1166.        BGP_STR
  1167.        "Clear all external peersn"
  1168.        "Soft reconfig outbound updaten");
  1169. DEFUN (clear_ip_bgp_external_ipv4_soft_out,
  1170.        clear_ip_bgp_external_ipv4_soft_out_cmd,
  1171.        "clear ip bgp external ipv4 (unicast|multicast) soft out",
  1172.        CLEAR_STR
  1173.        IP_STR
  1174.        BGP_STR
  1175.        "Clear all external peersn"
  1176.        "Address familyn"
  1177.        "Address Family modifiern"
  1178.        "Address Family modifiern"
  1179.        "Soft reconfign"
  1180.        "Soft reconfig outbound updaten")
  1181. {
  1182.   if (strncmp (argv[0], "m", 1) == 0)
  1183.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
  1184.   BGP_CLEAR_SOFT_OUT, NULL);
  1185.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1186. BGP_CLEAR_SOFT_OUT, NULL);
  1187. }
  1188. ALIAS (clear_ip_bgp_external_ipv4_soft_out,
  1189.        clear_ip_bgp_external_ipv4_out_cmd,
  1190.        "clear ip bgp external ipv4 (unicast|multicast) out",
  1191.        CLEAR_STR
  1192.        IP_STR
  1193.        BGP_STR
  1194.        "Clear all external peersn"
  1195.        "Address familyn"
  1196.        "Address Family modifiern"
  1197.        "Address Family modifiern"
  1198.        "Soft reconfig outbound updaten");
  1199. DEFUN (clear_bgp_external_soft_out,
  1200.        clear_bgp_external_soft_out_cmd,
  1201.        "clear bgp external soft out",
  1202.        CLEAR_STR
  1203.        BGP_STR
  1204.        "Clear all external peersn"
  1205.        "Soft reconfign"
  1206.        "Soft reconfig outbound updaten")
  1207. {
  1208.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
  1209. BGP_CLEAR_SOFT_OUT, NULL);
  1210. }
  1211. ALIAS (clear_bgp_external_soft_out,
  1212.        clear_bgp_ipv6_external_soft_out_cmd,
  1213.        "clear bgp ipv6 external soft out",
  1214.        CLEAR_STR
  1215.        BGP_STR
  1216.        "Address familyn"
  1217.        "Clear all external peersn"
  1218.        "Soft reconfign"
  1219.        "Soft reconfig outbound updaten");
  1220. ALIAS (clear_bgp_external_soft_out,
  1221.        clear_bgp_external_out_cmd,
  1222.        "clear bgp external out",
  1223.        CLEAR_STR
  1224.        BGP_STR
  1225.        "Clear all external peersn"
  1226.        "Soft reconfig outbound updaten");
  1227. ALIAS (clear_bgp_external_soft_out,
  1228.        clear_bgp_ipv6_external_out_cmd,
  1229.        "clear bgp ipv6 external WORD out",
  1230.        CLEAR_STR
  1231.        BGP_STR
  1232.        "Address familyn"
  1233.        "Clear all external peersn"
  1234.        "Soft reconfig outbound updaten");
  1235. DEFUN (clear_ip_bgp_as_soft_out,
  1236.        clear_ip_bgp_as_soft_out_cmd,
  1237.        "clear ip bgp <1-65535> soft out",
  1238.        CLEAR_STR
  1239.        IP_STR
  1240.        BGP_STR
  1241.        "Clear peers with the AS numbern"
  1242.        "Soft reconfign"
  1243.        "Soft reconfig outbound updaten")
  1244. {
  1245.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  1246. BGP_CLEAR_SOFT_OUT, argv[0]);
  1247. }
  1248. ALIAS (clear_ip_bgp_as_soft_out,
  1249.        clear_ip_bgp_as_out_cmd,
  1250.        "clear ip bgp <1-65535> out",
  1251.        CLEAR_STR
  1252.        IP_STR
  1253.        BGP_STR
  1254.        "Clear peers with the AS numbern"
  1255.        "Soft reconfig outbound updaten");
  1256. DEFUN (clear_ip_bgp_as_ipv4_soft_out,
  1257.        clear_ip_bgp_as_ipv4_soft_out_cmd,
  1258.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft out",
  1259.        CLEAR_STR
  1260.        IP_STR
  1261.        BGP_STR
  1262.        "Clear peers with the AS numbern"
  1263.        "Address familyn"
  1264.        "Address Family modifiern"
  1265.        "Address Family modifiern"
  1266.        "Soft reconfign"
  1267.        "Soft reconfig outbound updaten")
  1268. {
  1269.   if (strncmp (argv[1], "m", 1) == 0)
  1270.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
  1271.   BGP_CLEAR_SOFT_OUT, argv[0]);
  1272.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  1273. BGP_CLEAR_SOFT_OUT, argv[0]);
  1274. }
  1275. ALIAS (clear_ip_bgp_as_ipv4_soft_out,
  1276.        clear_ip_bgp_as_ipv4_out_cmd,
  1277.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) out",
  1278.        CLEAR_STR
  1279.        IP_STR
  1280.        BGP_STR
  1281.        "Clear peers with the AS numbern"
  1282.        "Address familyn"
  1283.        "Address Family modifiern"
  1284.        "Address Family modifiern"
  1285.        "Soft reconfig outbound updaten");
  1286. DEFUN (clear_ip_bgp_as_vpnv4_soft_out,
  1287.        clear_ip_bgp_as_vpnv4_soft_out_cmd,
  1288.        "clear ip bgp <1-65535> vpnv4 unicast soft out",
  1289.        CLEAR_STR
  1290.        IP_STR
  1291.        BGP_STR
  1292.        "Clear peers with the AS numbern"
  1293.        "Address familyn"
  1294.        "Address Family modifiern"
  1295.        "Soft reconfign"
  1296.        "Soft reconfig outbound updaten")
  1297. {
  1298.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
  1299. BGP_CLEAR_SOFT_OUT, argv[0]);
  1300. }
  1301. ALIAS (clear_ip_bgp_as_vpnv4_soft_out,
  1302.        clear_ip_bgp_as_vpnv4_out_cmd,
  1303.        "clear ip bgp <1-65535> vpnv4 unicast out",
  1304.        CLEAR_STR
  1305.        IP_STR
  1306.        BGP_STR
  1307.        "Clear peers with the AS numbern"
  1308.        "Address familyn"
  1309.        "Address Family modifiern"
  1310.        "Soft reconfig outbound updaten");
  1311. DEFUN (clear_bgp_as_soft_out,
  1312.        clear_bgp_as_soft_out_cmd,
  1313.        "clear bgp <1-65535> soft out",
  1314.        CLEAR_STR
  1315.        BGP_STR
  1316.        "Clear peers with the AS numbern"
  1317.        "Soft reconfign"
  1318.        "Soft reconfig outbound updaten")
  1319. {
  1320.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
  1321. BGP_CLEAR_SOFT_OUT, argv[0]);
  1322. }
  1323. ALIAS (clear_bgp_as_soft_out,
  1324.        clear_bgp_ipv6_as_soft_out_cmd,
  1325.        "clear bgp ipv6 <1-65535> soft out",
  1326.        CLEAR_STR
  1327.        BGP_STR
  1328.        "Address familyn"
  1329.        "Clear peers with the AS numbern"
  1330.        "Soft reconfign"
  1331.        "Soft reconfig outbound updaten");
  1332. ALIAS (clear_bgp_as_soft_out,
  1333.        clear_bgp_as_out_cmd,
  1334.        "clear bgp <1-65535> out",
  1335.        CLEAR_STR
  1336.        BGP_STR
  1337.        "Clear peers with the AS numbern"
  1338.        "Soft reconfig outbound updaten");
  1339. ALIAS (clear_bgp_as_soft_out,
  1340.        clear_bgp_ipv6_as_out_cmd,
  1341.        "clear bgp ipv6 <1-65535> out",
  1342.        CLEAR_STR
  1343.        BGP_STR
  1344.        "Address familyn"
  1345.        "Clear peers with the AS numbern"
  1346.        "Soft reconfig outbound updaten");
  1347. /* Inbound soft-reconfiguration */
  1348. DEFUN (clear_ip_bgp_all_soft_in,
  1349.        clear_ip_bgp_all_soft_in_cmd,
  1350.        "clear ip bgp * soft in",
  1351.        CLEAR_STR
  1352.        IP_STR
  1353.        BGP_STR
  1354.        "Clear all peersn"
  1355.        "Soft reconfign"
  1356.        "Soft reconfig inbound updaten")
  1357. {
  1358.   if (argc == 1)
  1359.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  1360.                           BGP_CLEAR_SOFT_IN, NULL);
  1361.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  1362. BGP_CLEAR_SOFT_IN, NULL);
  1363. }
  1364. ALIAS (clear_ip_bgp_all_soft_in,
  1365.        clear_ip_bgp_instance_all_soft_in_cmd,
  1366.        "clear ip bgp view WORD * soft in",
  1367.        CLEAR_STR
  1368.        IP_STR
  1369.        BGP_STR
  1370.        "BGP viewn"
  1371.        "view namen"
  1372.        "Clear all peersn"
  1373.        "Soft reconfign"
  1374.        "Soft reconfig inbound updaten");
  1375. ALIAS (clear_ip_bgp_all_soft_in,
  1376.        clear_ip_bgp_all_in_cmd,
  1377.        "clear ip bgp * in",
  1378.        CLEAR_STR
  1379.        IP_STR
  1380.        BGP_STR
  1381.        "Clear all peersn"
  1382.        "Soft reconfig inbound updaten");
  1383. DEFUN (clear_ip_bgp_all_in_prefix_filter,
  1384.        clear_ip_bgp_all_in_prefix_filter_cmd,
  1385.        "clear ip bgp * in prefix-filter",
  1386.        CLEAR_STR
  1387.        IP_STR
  1388.        BGP_STR
  1389.        "Clear all peersn"
  1390.        "Soft reconfig inbound updaten"
  1391.        "Push out prefix-list ORF and do inbound soft reconfign")
  1392. {
  1393.   if (argc== 1)
  1394.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  1395.                           BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1396.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  1397. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1398. }
  1399. ALIAS (clear_ip_bgp_all_in_prefix_filter,
  1400.        clear_ip_bgp_instance_all_in_prefix_filter_cmd,
  1401.        "clear ip bgp view WORD * in prefix-filter",
  1402.        CLEAR_STR
  1403.        IP_STR
  1404.        BGP_STR
  1405.        "BGP viewn"
  1406.        "view namen"
  1407.        "Clear all peersn"
  1408.        "Soft reconfig inbound updaten"
  1409.        "Push out prefix-list ORF and do inbound soft reconfign");
  1410. DEFUN (clear_ip_bgp_all_ipv4_soft_in,
  1411.        clear_ip_bgp_all_ipv4_soft_in_cmd,
  1412.        "clear ip bgp * ipv4 (unicast|multicast) soft in",
  1413.        CLEAR_STR
  1414.        IP_STR
  1415.        BGP_STR
  1416.        "Clear all peersn"
  1417.        "Address familyn"
  1418.        "Address Family modifiern"
  1419.        "Address Family modifiern"
  1420.        "Soft reconfign"
  1421.        "Soft reconfig inbound updaten")
  1422. {
  1423.   if (strncmp (argv[0], "m", 1) == 0)
  1424.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
  1425.   BGP_CLEAR_SOFT_IN, NULL);
  1426.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  1427. BGP_CLEAR_SOFT_IN, NULL);
  1428. }
  1429. ALIAS (clear_ip_bgp_all_ipv4_soft_in,
  1430.        clear_ip_bgp_all_ipv4_in_cmd,
  1431.        "clear ip bgp * ipv4 (unicast|multicast) in",
  1432.        CLEAR_STR
  1433.        IP_STR
  1434.        BGP_STR
  1435.        "Clear all peersn"
  1436.        "Address familyn"
  1437.        "Address Family modifiern"
  1438.        "Address Family modifiern"
  1439.        "Soft reconfig inbound updaten");
  1440. DEFUN (clear_ip_bgp_instance_all_ipv4_soft_in,
  1441.        clear_ip_bgp_instance_all_ipv4_soft_in_cmd,
  1442.        "clear ip bgp view WORD * ipv4 (unicast|multicast) soft in",
  1443.        CLEAR_STR
  1444.        IP_STR
  1445.        BGP_STR
  1446.        "BGP viewn"
  1447.        "view namen"
  1448.        "Clear all peersn"
  1449.        "Address familyn"
  1450.        "Address Family modifiern"
  1451.        "Address Family modifiern"
  1452.        "Soft reconfign"
  1453.        "Soft reconfig inbound updaten")
  1454. {
  1455.   if (strncmp (argv[1], "m", 1) == 0)
  1456.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
  1457.                           BGP_CLEAR_SOFT_IN, NULL);
  1458.   return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  1459.                         BGP_CLEAR_SOFT_IN, NULL);
  1460. }
  1461. DEFUN (clear_ip_bgp_all_ipv4_in_prefix_filter,
  1462.        clear_ip_bgp_all_ipv4_in_prefix_filter_cmd,
  1463.        "clear ip bgp * ipv4 (unicast|multicast) in prefix-filter",
  1464.        CLEAR_STR
  1465.        IP_STR
  1466.        BGP_STR
  1467.        "Clear all peersn"
  1468.        "Address familyn"
  1469.        "Address Family modifiern"
  1470.        "Address Family modifiern"
  1471.        "Soft reconfig inbound updaten"
  1472.        "Push out prefix-list ORF and do inbound soft reconfign")
  1473. {
  1474.   if (strncmp (argv[0], "m", 1) == 0)
  1475.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
  1476.   BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1477.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  1478. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1479. }
  1480. DEFUN (clear_ip_bgp_instance_all_ipv4_in_prefix_filter,
  1481.        clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd,
  1482.        "clear ip bgp view WORD * ipv4 (unicast|multicast) in prefix-filter",
  1483.        CLEAR_STR
  1484.        IP_STR
  1485.        BGP_STR
  1486.        "Clear all peersn"
  1487.        "Address familyn"
  1488.        "Address Family modifiern"
  1489.        "Address Family modifiern"
  1490.        "Soft reconfig inbound updaten"
  1491.        "Push out prefix-list ORF and do inbound soft reconfign")
  1492. {
  1493.   if (strncmp (argv[1], "m", 1) == 0)
  1494.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
  1495.                           BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1496.   return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  1497.                         BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1498. }
  1499. DEFUN (clear_ip_bgp_all_vpnv4_soft_in,
  1500.        clear_ip_bgp_all_vpnv4_soft_in_cmd,
  1501.        "clear ip bgp * vpnv4 unicast soft in",
  1502.        CLEAR_STR
  1503.        IP_STR
  1504.        BGP_STR
  1505.        "Clear all peersn"
  1506.        "Address familyn"
  1507.        "Address Family Modifiern"
  1508.        "Soft reconfign"
  1509.        "Soft reconfig inbound updaten")
  1510. {
  1511.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
  1512. BGP_CLEAR_SOFT_IN, NULL);
  1513. }
  1514. ALIAS (clear_ip_bgp_all_vpnv4_soft_in,
  1515.        clear_ip_bgp_all_vpnv4_in_cmd,
  1516.        "clear ip bgp * vpnv4 unicast in",
  1517.        CLEAR_STR
  1518.        IP_STR
  1519.        BGP_STR
  1520.        "Clear all peersn"
  1521.        "Address familyn"
  1522.        "Address Family Modifiern"
  1523.        "Soft reconfig inbound updaten");
  1524. DEFUN (clear_bgp_all_soft_in,
  1525.        clear_bgp_all_soft_in_cmd,
  1526.        "clear bgp * soft in",
  1527.        CLEAR_STR
  1528.        BGP_STR
  1529.        "Clear all peersn"
  1530.        "Soft reconfign"
  1531.        "Soft reconfig inbound updaten")
  1532. {
  1533.   if (argc == 1)
  1534.     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
  1535.   BGP_CLEAR_SOFT_IN, NULL);
  1536.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
  1537. BGP_CLEAR_SOFT_IN, NULL);
  1538. }
  1539. ALIAS (clear_bgp_all_soft_in,
  1540.        clear_bgp_instance_all_soft_in_cmd,
  1541.        "clear bgp view WORD * soft in",
  1542.        CLEAR_STR
  1543.        BGP_STR
  1544.        "BGP viewn"
  1545.        "view namen"
  1546.        "Clear all peersn"
  1547.        "Soft reconfign"
  1548.        "Soft reconfig inbound updaten");
  1549. ALIAS (clear_bgp_all_soft_in,
  1550.        clear_bgp_ipv6_all_soft_in_cmd,
  1551.        "clear bgp ipv6 * soft in",
  1552.        CLEAR_STR
  1553.        BGP_STR
  1554.        "Address familyn"
  1555.        "Clear all peersn"
  1556.        "Soft reconfign"
  1557.        "Soft reconfig inbound updaten");
  1558. ALIAS (clear_bgp_all_soft_in,
  1559.        clear_bgp_all_in_cmd,
  1560.        "clear bgp * in",
  1561.        CLEAR_STR
  1562.        BGP_STR
  1563.        "Clear all peersn"
  1564.        "Soft reconfig inbound updaten");
  1565. ALIAS (clear_bgp_all_soft_in,
  1566.        clear_bgp_ipv6_all_in_cmd,
  1567.        "clear bgp ipv6 * in",
  1568.        CLEAR_STR
  1569.        BGP_STR
  1570.        "Address familyn"
  1571.        "Clear all peersn"
  1572.        "Soft reconfig inbound updaten");
  1573. DEFUN (clear_bgp_all_in_prefix_filter,
  1574.        clear_bgp_all_in_prefix_filter_cmd,
  1575.        "clear bgp * in prefix-filter",
  1576.        CLEAR_STR
  1577.        BGP_STR
  1578.        "Clear all peersn"
  1579.        "Soft reconfig inbound updaten"
  1580.        "Push out prefix-list ORF and do inbound soft reconfign")
  1581. {
  1582.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
  1583. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1584. }
  1585. ALIAS (clear_bgp_all_in_prefix_filter,
  1586.        clear_bgp_ipv6_all_in_prefix_filter_cmd,
  1587.        "clear bgp ipv6 * in prefix-filter",
  1588.        CLEAR_STR
  1589.        BGP_STR
  1590.        "Address familyn"
  1591.        "Clear all peersn"
  1592.        "Soft reconfig inbound updaten"
  1593.        "Push out prefix-list ORF and do inbound soft reconfign");
  1594. DEFUN (clear_ip_bgp_peer_soft_in,
  1595.        clear_ip_bgp_peer_soft_in_cmd,
  1596.        "clear ip bgp A.B.C.D soft in",
  1597.        CLEAR_STR
  1598.        IP_STR
  1599.        BGP_STR
  1600.        "BGP neighbor address to clearn"
  1601.        "Soft reconfign"
  1602.        "Soft reconfig inbound updaten")
  1603. {
  1604.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  1605. BGP_CLEAR_SOFT_IN, argv[0]);
  1606. }
  1607. ALIAS (clear_ip_bgp_peer_soft_in,
  1608.        clear_ip_bgp_peer_in_cmd,
  1609.        "clear ip bgp A.B.C.D in",
  1610.        CLEAR_STR
  1611.        IP_STR
  1612.        BGP_STR
  1613.        "BGP neighbor address to clearn"
  1614.        "Soft reconfig inbound updaten");
  1615.        
  1616. DEFUN (clear_ip_bgp_peer_in_prefix_filter,
  1617.        clear_ip_bgp_peer_in_prefix_filter_cmd,
  1618.        "clear ip bgp A.B.C.D in prefix-filter",
  1619.        CLEAR_STR
  1620.        IP_STR
  1621.        BGP_STR
  1622.        "BGP neighbor address to clearn"
  1623.        "Soft reconfig inbound updaten"
  1624.        "Push out the existing ORF prefix-listn")
  1625. {
  1626.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  1627. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1628. }
  1629. DEFUN (clear_ip_bgp_peer_ipv4_soft_in,
  1630.        clear_ip_bgp_peer_ipv4_soft_in_cmd,
  1631.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft in",
  1632.        CLEAR_STR
  1633.        IP_STR
  1634.        BGP_STR
  1635.        "BGP neighbor address to clearn"
  1636.        "Address familyn"
  1637.        "Address Family modifiern"
  1638.        "Address Family modifiern"
  1639.        "Soft reconfign"
  1640.        "Soft reconfig inbound updaten")
  1641. {
  1642.   if (strncmp (argv[1], "m", 1) == 0)
  1643.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
  1644.   BGP_CLEAR_SOFT_IN, argv[0]);
  1645.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  1646. BGP_CLEAR_SOFT_IN, argv[0]);
  1647. }
  1648. ALIAS (clear_ip_bgp_peer_ipv4_soft_in,
  1649.        clear_ip_bgp_peer_ipv4_in_cmd,
  1650.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in",
  1651.        CLEAR_STR
  1652.        IP_STR
  1653.        BGP_STR
  1654.        "BGP neighbor address to clearn"
  1655.        "Address familyn"
  1656.        "Address Family modifiern"
  1657.        "Address Family modifiern"
  1658.        "Soft reconfig inbound updaten");
  1659. DEFUN (clear_ip_bgp_peer_ipv4_in_prefix_filter,
  1660.        clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd,
  1661.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) in prefix-filter",
  1662.        CLEAR_STR
  1663.        IP_STR
  1664.        BGP_STR
  1665.        "BGP neighbor address to clearn"
  1666.        "Address familyn"
  1667.        "Address Family modifiern"
  1668.        "Address Family modifiern"
  1669.        "Soft reconfig inbound updaten"
  1670.        "Push out the existing ORF prefix-listn")
  1671. {
  1672.   if (strncmp (argv[1], "m", 1) == 0)
  1673.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
  1674.   BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1675.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  1676. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1677. }
  1678. DEFUN (clear_ip_bgp_peer_vpnv4_soft_in,
  1679.        clear_ip_bgp_peer_vpnv4_soft_in_cmd,
  1680.        "clear ip bgp A.B.C.D vpnv4 unicast soft in",
  1681.        CLEAR_STR
  1682.        IP_STR
  1683.        BGP_STR
  1684.        "BGP neighbor address to clearn"
  1685.        "Address familyn"
  1686.        "Address Family Modifiern"
  1687.        "Soft reconfign"
  1688.        "Soft reconfig inbound updaten")
  1689. {
  1690.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
  1691. BGP_CLEAR_SOFT_IN, argv[0]);
  1692. }
  1693. ALIAS (clear_ip_bgp_peer_vpnv4_soft_in,
  1694.        clear_ip_bgp_peer_vpnv4_in_cmd,
  1695.        "clear ip bgp A.B.C.D vpnv4 unicast in",
  1696.        CLEAR_STR
  1697.        IP_STR
  1698.        BGP_STR
  1699.        "BGP neighbor address to clearn"
  1700.        "Address familyn"
  1701.        "Address Family Modifiern"
  1702.        "Soft reconfig inbound updaten");
  1703. DEFUN (clear_bgp_peer_soft_in,
  1704.        clear_bgp_peer_soft_in_cmd,
  1705.        "clear bgp (A.B.C.D|X:X::X:X) soft in",
  1706.        CLEAR_STR
  1707.        BGP_STR
  1708.        "BGP neighbor address to clearn"
  1709.        "BGP IPv6 neighbor to clearn"
  1710.        "Soft reconfign"
  1711.        "Soft reconfig inbound updaten")
  1712. {
  1713.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
  1714. BGP_CLEAR_SOFT_IN, argv[0]);
  1715. }
  1716. ALIAS (clear_bgp_peer_soft_in,
  1717.        clear_bgp_ipv6_peer_soft_in_cmd,
  1718.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft in",
  1719.        CLEAR_STR
  1720.        BGP_STR
  1721.        "Address familyn"
  1722.        "BGP neighbor address to clearn"
  1723.        "BGP IPv6 neighbor to clearn"
  1724.        "Soft reconfign"
  1725.        "Soft reconfig inbound updaten");
  1726. ALIAS (clear_bgp_peer_soft_in,
  1727.        clear_bgp_peer_in_cmd,
  1728.        "clear bgp (A.B.C.D|X:X::X:X) in",
  1729.        CLEAR_STR
  1730.        BGP_STR
  1731.        "BGP neighbor address to clearn"
  1732.        "BGP IPv6 neighbor to clearn"
  1733.        "Soft reconfig inbound updaten");
  1734. ALIAS (clear_bgp_peer_soft_in,
  1735.        clear_bgp_ipv6_peer_in_cmd,
  1736.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) in",
  1737.        CLEAR_STR
  1738.        BGP_STR
  1739.        "Address familyn"
  1740.        "BGP neighbor address to clearn"
  1741.        "BGP IPv6 neighbor to clearn"
  1742.        "Soft reconfig inbound updaten");
  1743. DEFUN (clear_bgp_peer_in_prefix_filter,
  1744.        clear_bgp_peer_in_prefix_filter_cmd,
  1745.        "clear bgp (A.B.C.D|X:X::X:X) in prefix-filter",
  1746.        CLEAR_STR
  1747.        BGP_STR
  1748.        "BGP neighbor address to clearn"
  1749.        "BGP IPv6 neighbor to clearn"
  1750.        "Soft reconfig inbound updaten"
  1751.        "Push out the existing ORF prefix-listn")
  1752. {
  1753.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
  1754. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1755. }
  1756. ALIAS (clear_bgp_peer_in_prefix_filter,
  1757.        clear_bgp_ipv6_peer_in_prefix_filter_cmd,
  1758.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) in prefix-filter",
  1759.        CLEAR_STR
  1760.        BGP_STR
  1761.        "Address familyn"
  1762.        "BGP neighbor address to clearn"
  1763.        "BGP IPv6 neighbor to clearn"
  1764.        "Soft reconfig inbound updaten"
  1765.        "Push out the existing ORF prefix-listn");
  1766. DEFUN (clear_ip_bgp_peer_group_soft_in,
  1767.        clear_ip_bgp_peer_group_soft_in_cmd,
  1768.        "clear ip bgp peer-group WORD soft in",
  1769.        CLEAR_STR
  1770.        IP_STR
  1771.        BGP_STR
  1772.        "Clear all members of peer-groupn"
  1773.        "BGP peer-group namen"
  1774.        "Soft reconfign"
  1775.        "Soft reconfig inbound updaten")
  1776. {
  1777.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1778. BGP_CLEAR_SOFT_IN, argv[0]);
  1779. }
  1780. ALIAS (clear_ip_bgp_peer_group_soft_in,
  1781.        clear_ip_bgp_peer_group_in_cmd,
  1782.        "clear ip bgp peer-group WORD in",
  1783.        CLEAR_STR
  1784.        IP_STR
  1785.        BGP_STR
  1786.        "Clear all members of peer-groupn"
  1787.        "BGP peer-group namen"
  1788.        "Soft reconfig inbound updaten");
  1789. DEFUN (clear_ip_bgp_peer_group_in_prefix_filter,
  1790.        clear_ip_bgp_peer_group_in_prefix_filter_cmd,
  1791.        "clear ip bgp peer-group WORD in prefix-filter",
  1792.        CLEAR_STR
  1793.        IP_STR
  1794.        BGP_STR
  1795.        "Clear all members of peer-groupn"
  1796.        "BGP peer-group namen"
  1797.        "Soft reconfig inbound updaten"
  1798.        "Push out prefix-list ORF and do inbound soft reconfign")
  1799. {
  1800.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1801. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1802. }
  1803. DEFUN (clear_ip_bgp_peer_group_ipv4_soft_in,
  1804.        clear_ip_bgp_peer_group_ipv4_soft_in_cmd,
  1805.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft in",
  1806.        CLEAR_STR
  1807.        IP_STR
  1808.        BGP_STR
  1809.        "Clear all members of peer-groupn"
  1810.        "BGP peer-group namen"
  1811.        "Address familyn"
  1812.        "Address Family modifiern"
  1813.        "Address Family modifiern"
  1814.        "Soft reconfign"
  1815.        "Soft reconfig inbound updaten")
  1816. {
  1817.   if (strncmp (argv[1], "m", 1) == 0)
  1818.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
  1819.   BGP_CLEAR_SOFT_IN, argv[0]);
  1820.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1821. BGP_CLEAR_SOFT_IN, argv[0]);
  1822. }
  1823. ALIAS (clear_ip_bgp_peer_group_ipv4_soft_in,
  1824.        clear_ip_bgp_peer_group_ipv4_in_cmd,
  1825.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in",
  1826.        CLEAR_STR
  1827.        IP_STR
  1828.        BGP_STR
  1829.        "Clear all members of peer-groupn"
  1830.        "BGP peer-group namen"
  1831.        "Address familyn"
  1832.        "Address Family modifiern"
  1833.        "Address Family modifiern"
  1834.        "Soft reconfig inbound updaten");
  1835. DEFUN (clear_ip_bgp_peer_group_ipv4_in_prefix_filter,
  1836.        clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd,
  1837.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) in prefix-filter",
  1838.        CLEAR_STR
  1839.        IP_STR
  1840.        BGP_STR
  1841.        "Clear all members of peer-groupn"
  1842.        "BGP peer-group namen"
  1843.        "Address familyn"
  1844.        "Address Family modifiern"
  1845.        "Address Family modifiern"
  1846.        "Soft reconfig inbound updaten"
  1847.        "Push out prefix-list ORF and do inbound soft reconfign")
  1848. {
  1849.   if (strncmp (argv[1], "m", 1) == 0)
  1850.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
  1851.   BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1852.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  1853. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1854. }
  1855. DEFUN (clear_bgp_peer_group_soft_in,
  1856.        clear_bgp_peer_group_soft_in_cmd,
  1857.        "clear bgp peer-group WORD soft in",
  1858.        CLEAR_STR
  1859.        BGP_STR
  1860.        "Clear all members of peer-groupn"
  1861.        "BGP peer-group namen"
  1862.        "Soft reconfign"
  1863.        "Soft reconfig inbound updaten")
  1864. {
  1865.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
  1866. BGP_CLEAR_SOFT_IN, argv[0]);
  1867. }
  1868. ALIAS (clear_bgp_peer_group_soft_in,
  1869.        clear_bgp_ipv6_peer_group_soft_in_cmd,
  1870.        "clear bgp ipv6 peer-group WORD soft in",
  1871.        CLEAR_STR
  1872.        BGP_STR
  1873.        "Address familyn"
  1874.        "Clear all members of peer-groupn"
  1875.        "BGP peer-group namen"
  1876.        "Soft reconfign"
  1877.        "Soft reconfig inbound updaten");
  1878. ALIAS (clear_bgp_peer_group_soft_in,
  1879.        clear_bgp_peer_group_in_cmd,
  1880.        "clear bgp peer-group WORD in",
  1881.        CLEAR_STR
  1882.        BGP_STR
  1883.        "Clear all members of peer-groupn"
  1884.        "BGP peer-group namen"
  1885.        "Soft reconfig inbound updaten");
  1886. ALIAS (clear_bgp_peer_group_soft_in,
  1887.        clear_bgp_ipv6_peer_group_in_cmd,
  1888.        "clear bgp ipv6 peer-group WORD in",
  1889.        CLEAR_STR
  1890.        BGP_STR
  1891.        "Address familyn"
  1892.        "Clear all members of peer-groupn"
  1893.        "BGP peer-group namen"
  1894.        "Soft reconfig inbound updaten");
  1895. DEFUN (clear_bgp_peer_group_in_prefix_filter,
  1896.        clear_bgp_peer_group_in_prefix_filter_cmd,
  1897.        "clear bgp peer-group WORD in prefix-filter",
  1898.        CLEAR_STR
  1899.        BGP_STR
  1900.        "Clear all members of peer-groupn"
  1901.        "BGP peer-group namen"
  1902.        "Soft reconfig inbound updaten"
  1903.        "Push out prefix-list ORF and do inbound soft reconfign")
  1904. {
  1905.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
  1906. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  1907. }
  1908. ALIAS (clear_bgp_peer_group_in_prefix_filter,
  1909.        clear_bgp_ipv6_peer_group_in_prefix_filter_cmd,
  1910.        "clear bgp ipv6 peer-group WORD in prefix-filter",
  1911.        CLEAR_STR
  1912.        BGP_STR
  1913.        "Address familyn"
  1914.        "Clear all members of peer-groupn"
  1915.        "BGP peer-group namen"
  1916.        "Soft reconfig inbound updaten"
  1917.        "Push out prefix-list ORF and do inbound soft reconfign");
  1918. DEFUN (clear_ip_bgp_external_soft_in,
  1919.        clear_ip_bgp_external_soft_in_cmd,
  1920.        "clear ip bgp external soft in",
  1921.        CLEAR_STR
  1922.        IP_STR
  1923.        BGP_STR
  1924.        "Clear all external peersn"
  1925.        "Soft reconfign"
  1926.        "Soft reconfig inbound updaten")
  1927. {
  1928.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1929. BGP_CLEAR_SOFT_IN, NULL);
  1930. }
  1931. ALIAS (clear_ip_bgp_external_soft_in,
  1932.        clear_ip_bgp_external_in_cmd,
  1933.        "clear ip bgp external in",
  1934.        CLEAR_STR
  1935.        IP_STR
  1936.        BGP_STR
  1937.        "Clear all external peersn"
  1938.        "Soft reconfig inbound updaten");
  1939. DEFUN (clear_ip_bgp_external_in_prefix_filter,
  1940.        clear_ip_bgp_external_in_prefix_filter_cmd,
  1941.        "clear ip bgp external in prefix-filter",
  1942.        CLEAR_STR
  1943.        IP_STR
  1944.        BGP_STR
  1945.        "Clear all external peersn"
  1946.        "Soft reconfig inbound updaten"
  1947.        "Push out prefix-list ORF and do inbound soft reconfign")
  1948. {
  1949.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1950. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1951. }
  1952. DEFUN (clear_ip_bgp_external_ipv4_soft_in,
  1953.        clear_ip_bgp_external_ipv4_soft_in_cmd,
  1954.        "clear ip bgp external ipv4 (unicast|multicast) soft in",
  1955.        CLEAR_STR
  1956.        IP_STR
  1957.        BGP_STR
  1958.        "Clear all external peersn"
  1959.        "Address familyn"
  1960.        "Address Family modifiern"
  1961.        "Address Family modifiern"
  1962.        "Soft reconfign"
  1963.        "Soft reconfig inbound updaten")
  1964. {
  1965.   if (strncmp (argv[0], "m", 1) == 0)
  1966.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
  1967.   BGP_CLEAR_SOFT_IN, NULL);
  1968.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1969. BGP_CLEAR_SOFT_IN, NULL);
  1970. }
  1971. ALIAS (clear_ip_bgp_external_ipv4_soft_in,
  1972.        clear_ip_bgp_external_ipv4_in_cmd,
  1973.        "clear ip bgp external ipv4 (unicast|multicast) in",
  1974.        CLEAR_STR
  1975.        IP_STR
  1976.        BGP_STR
  1977.        "Clear all external peersn"
  1978.        "Address familyn"
  1979.        "Address Family modifiern"
  1980.        "Address Family modifiern"
  1981.        "Soft reconfig inbound updaten");
  1982. DEFUN (clear_ip_bgp_external_ipv4_in_prefix_filter,
  1983.        clear_ip_bgp_external_ipv4_in_prefix_filter_cmd,
  1984.        "clear ip bgp external ipv4 (unicast|multicast) in prefix-filter",
  1985.        CLEAR_STR
  1986.        IP_STR
  1987.        BGP_STR
  1988.        "Clear all external peersn"
  1989.        "Address familyn"
  1990.        "Address Family modifiern"
  1991.        "Address Family modifiern"
  1992.        "Soft reconfig inbound updaten"
  1993.        "Push out prefix-list ORF and do inbound soft reconfign")
  1994. {
  1995.   if (strncmp (argv[0], "m", 1) == 0)
  1996.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
  1997.   BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  1998.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  1999. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  2000. }
  2001. DEFUN (clear_bgp_external_soft_in,
  2002.        clear_bgp_external_soft_in_cmd,
  2003.        "clear bgp external soft in",
  2004.        CLEAR_STR
  2005.        BGP_STR
  2006.        "Clear all external peersn"
  2007.        "Soft reconfign"
  2008.        "Soft reconfig inbound updaten")
  2009. {
  2010.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
  2011. BGP_CLEAR_SOFT_IN, NULL);
  2012. }
  2013. ALIAS (clear_bgp_external_soft_in,
  2014.        clear_bgp_ipv6_external_soft_in_cmd,
  2015.        "clear bgp ipv6 external soft in",
  2016.        CLEAR_STR
  2017.        BGP_STR
  2018.        "Address familyn"
  2019.        "Clear all external peersn"
  2020.        "Soft reconfign"
  2021.        "Soft reconfig inbound updaten");
  2022. ALIAS (clear_bgp_external_soft_in,
  2023.        clear_bgp_external_in_cmd,
  2024.        "clear bgp external in",
  2025.        CLEAR_STR
  2026.        BGP_STR
  2027.        "Clear all external peersn"
  2028.        "Soft reconfig inbound updaten");
  2029. ALIAS (clear_bgp_external_soft_in,
  2030.        clear_bgp_ipv6_external_in_cmd,
  2031.        "clear bgp ipv6 external WORD in",
  2032.        CLEAR_STR
  2033.        BGP_STR
  2034.        "Address familyn"
  2035.        "Clear all external peersn"
  2036.        "Soft reconfig inbound updaten");
  2037. DEFUN (clear_bgp_external_in_prefix_filter,
  2038.        clear_bgp_external_in_prefix_filter_cmd,
  2039.        "clear bgp external in prefix-filter",
  2040.        CLEAR_STR
  2041.        BGP_STR
  2042.        "Clear all external peersn"
  2043.        "Soft reconfig inbound updaten"
  2044.        "Push out prefix-list ORF and do inbound soft reconfign")
  2045. {
  2046.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
  2047. BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL);
  2048. }
  2049. ALIAS (clear_bgp_external_in_prefix_filter,
  2050.        clear_bgp_ipv6_external_in_prefix_filter_cmd,
  2051.        "clear bgp ipv6 external in prefix-filter",
  2052.        CLEAR_STR
  2053.        BGP_STR
  2054.        "Address familyn"
  2055.        "Clear all external peersn"
  2056.        "Soft reconfig inbound updaten"
  2057.        "Push out prefix-list ORF and do inbound soft reconfign");
  2058. DEFUN (clear_ip_bgp_as_soft_in,
  2059.        clear_ip_bgp_as_soft_in_cmd,
  2060.        "clear ip bgp <1-65535> soft in",
  2061.        CLEAR_STR
  2062.        IP_STR
  2063.        BGP_STR
  2064.        "Clear peers with the AS numbern"
  2065.        "Soft reconfign"
  2066.        "Soft reconfig inbound updaten")
  2067. {
  2068.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  2069. BGP_CLEAR_SOFT_IN, argv[0]);
  2070. }
  2071. ALIAS (clear_ip_bgp_as_soft_in,
  2072.        clear_ip_bgp_as_in_cmd,
  2073.        "clear ip bgp <1-65535> in",
  2074.        CLEAR_STR
  2075.        IP_STR
  2076.        BGP_STR
  2077.        "Clear peers with the AS numbern"
  2078.        "Soft reconfig inbound updaten");
  2079. DEFUN (clear_ip_bgp_as_in_prefix_filter,
  2080.        clear_ip_bgp_as_in_prefix_filter_cmd,
  2081.        "clear ip bgp <1-65535> in prefix-filter",
  2082.        CLEAR_STR
  2083.        IP_STR
  2084.        BGP_STR
  2085.        "Clear peers with the AS numbern"
  2086.        "Soft reconfig inbound updaten"
  2087.        "Push out prefix-list ORF and do inbound soft reconfign")
  2088. {
  2089.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  2090. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  2091. }
  2092. DEFUN (clear_ip_bgp_as_ipv4_soft_in,
  2093.        clear_ip_bgp_as_ipv4_soft_in_cmd,
  2094.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft in",
  2095.        CLEAR_STR
  2096.        IP_STR
  2097.        BGP_STR
  2098.        "Clear peers with the AS numbern"
  2099.        "Address familyn"
  2100.        "Address Family modifiern"
  2101.        "Address Family modifiern"
  2102.        "Soft reconfign"
  2103.        "Soft reconfig inbound updaten")
  2104. {
  2105.   if (strncmp (argv[1], "m", 1) == 0)
  2106.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
  2107.   BGP_CLEAR_SOFT_IN, argv[0]);
  2108.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  2109. BGP_CLEAR_SOFT_IN, argv[0]);
  2110. }
  2111. ALIAS (clear_ip_bgp_as_ipv4_soft_in,
  2112.        clear_ip_bgp_as_ipv4_in_cmd,
  2113.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) in",
  2114.        CLEAR_STR
  2115.        IP_STR
  2116.        BGP_STR
  2117.        "Clear peers with the AS numbern"
  2118.        "Address familyn"
  2119.        "Address Family modifiern"
  2120.        "Address Family modifiern"
  2121.        "Soft reconfig inbound updaten");
  2122. DEFUN (clear_ip_bgp_as_ipv4_in_prefix_filter,
  2123.        clear_ip_bgp_as_ipv4_in_prefix_filter_cmd,
  2124.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) in prefix-filter",
  2125.        CLEAR_STR
  2126.        IP_STR
  2127.        BGP_STR
  2128.        "Clear peers with the AS numbern"
  2129.        "Address familyn"
  2130.        "Address Family modifiern"
  2131.        "Address Family modifiern"
  2132.        "Soft reconfig inbound updaten"
  2133.        "Push out prefix-list ORF and do inbound soft reconfign")
  2134. {
  2135.   if (strncmp (argv[1], "m", 1) == 0)
  2136.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
  2137.   BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  2138.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  2139. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  2140. }
  2141. DEFUN (clear_ip_bgp_as_vpnv4_soft_in,
  2142.        clear_ip_bgp_as_vpnv4_soft_in_cmd,
  2143.        "clear ip bgp <1-65535> vpnv4 unicast soft in",
  2144.        CLEAR_STR
  2145.        IP_STR
  2146.        BGP_STR
  2147.        "Clear peers with the AS numbern"
  2148.        "Address familyn"
  2149.        "Address Family modifiern"
  2150.        "Soft reconfign"
  2151.        "Soft reconfig inbound updaten")
  2152. {
  2153.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
  2154. BGP_CLEAR_SOFT_IN, argv[0]);
  2155. }
  2156. ALIAS (clear_ip_bgp_as_vpnv4_soft_in,
  2157.        clear_ip_bgp_as_vpnv4_in_cmd,
  2158.        "clear ip bgp <1-65535> vpnv4 unicast in",
  2159.        CLEAR_STR
  2160.        IP_STR
  2161.        BGP_STR
  2162.        "Clear peers with the AS numbern"
  2163.        "Address familyn"
  2164.        "Address Family modifiern"
  2165.        "Soft reconfig inbound updaten");
  2166. DEFUN (clear_bgp_as_soft_in,
  2167.        clear_bgp_as_soft_in_cmd,
  2168.        "clear bgp <1-65535> soft in",
  2169.        CLEAR_STR
  2170.        BGP_STR
  2171.        "Clear peers with the AS numbern"
  2172.        "Soft reconfign"
  2173.        "Soft reconfig inbound updaten")
  2174. {
  2175.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
  2176. BGP_CLEAR_SOFT_IN, argv[0]);
  2177. }
  2178. ALIAS (clear_bgp_as_soft_in,
  2179.        clear_bgp_ipv6_as_soft_in_cmd,
  2180.        "clear bgp ipv6 <1-65535> soft in",
  2181.        CLEAR_STR
  2182.        BGP_STR
  2183.        "Address familyn"
  2184.        "Clear peers with the AS numbern"
  2185.        "Soft reconfign"
  2186.        "Soft reconfig inbound updaten");
  2187. ALIAS (clear_bgp_as_soft_in,
  2188.        clear_bgp_as_in_cmd,
  2189.        "clear bgp <1-65535> in",
  2190.        CLEAR_STR
  2191.        BGP_STR
  2192.        "Clear peers with the AS numbern"
  2193.        "Soft reconfig inbound updaten");
  2194. ALIAS (clear_bgp_as_soft_in,
  2195.        clear_bgp_ipv6_as_in_cmd,
  2196.        "clear bgp ipv6 <1-65535> in",
  2197.        CLEAR_STR
  2198.        BGP_STR
  2199.        "Address familyn"
  2200.        "Clear peers with the AS numbern"
  2201.        "Soft reconfig inbound updaten");
  2202. DEFUN (clear_bgp_as_in_prefix_filter,
  2203.        clear_bgp_as_in_prefix_filter_cmd,
  2204.        "clear bgp <1-65535> in prefix-filter",
  2205.        CLEAR_STR
  2206.        BGP_STR
  2207.        "Clear peers with the AS numbern"
  2208.        "Soft reconfig inbound updaten"
  2209.        "Push out prefix-list ORF and do inbound soft reconfign")
  2210. {
  2211.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
  2212. BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[0]);
  2213. }
  2214. ALIAS (clear_bgp_as_in_prefix_filter,
  2215.        clear_bgp_ipv6_as_in_prefix_filter_cmd,
  2216.        "clear bgp ipv6 <1-65535> in prefix-filter",
  2217.        CLEAR_STR
  2218.        BGP_STR
  2219.        "Address familyn"
  2220.        "Clear peers with the AS numbern"
  2221.        "Soft reconfig inbound updaten"
  2222.        "Push out prefix-list ORF and do inbound soft reconfign");
  2223. /* Both soft-reconfiguration */
  2224. DEFUN (clear_ip_bgp_all_soft,
  2225.        clear_ip_bgp_all_soft_cmd,
  2226.        "clear ip bgp * soft",
  2227.        CLEAR_STR
  2228.        IP_STR
  2229.        BGP_STR
  2230.        "Clear all peersn"
  2231.        "Soft reconfign")
  2232. {
  2233.   if (argc == 1)
  2234.     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
  2235.   BGP_CLEAR_SOFT_BOTH, NULL);
  2236.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  2237. BGP_CLEAR_SOFT_BOTH, NULL);
  2238. }
  2239. ALIAS (clear_ip_bgp_all_soft,
  2240.        clear_ip_bgp_instance_all_soft_cmd,
  2241.        "clear ip bgp view WORD * soft",
  2242.        CLEAR_STR
  2243.        IP_STR
  2244.        BGP_STR
  2245.        "BGP viewn"
  2246.        "view namen"
  2247.        "Clear all peersn"
  2248.        "Soft reconfign");
  2249. DEFUN (clear_ip_bgp_all_ipv4_soft,
  2250.        clear_ip_bgp_all_ipv4_soft_cmd,
  2251.        "clear ip bgp * ipv4 (unicast|multicast) soft",
  2252.        CLEAR_STR
  2253.        IP_STR
  2254.        BGP_STR
  2255.        "Clear all peersn"
  2256.        "Address familyn"
  2257.        "Address Family Modifiern"
  2258.        "Address Family Modifiern"
  2259.        "Soft reconfign")
  2260. {
  2261.   if (strncmp (argv[0], "m", 1) == 0)
  2262.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
  2263.   BGP_CLEAR_SOFT_BOTH, NULL);
  2264.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  2265. BGP_CLEAR_SOFT_BOTH, NULL);
  2266. }
  2267. DEFUN (clear_ip_bgp_instance_all_ipv4_soft,
  2268.        clear_ip_bgp_instance_all_ipv4_soft_cmd,
  2269.        "clear ip bgp view WORD * ipv4 (unicast|multicast) soft",
  2270.        CLEAR_STR
  2271.        IP_STR
  2272.        BGP_STR
  2273.        "BGP viewn"
  2274.        "view namen"
  2275.        "Clear all peersn"
  2276.        "Address familyn"
  2277.        "Address Family Modifiern"
  2278.        "Address Family Modifiern"
  2279.        "Soft reconfign")
  2280. {
  2281.   if (strncmp (argv[1], "m", 1) == 0)
  2282.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
  2283.                           BGP_CLEAR_SOFT_BOTH, NULL);
  2284.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all,
  2285.                         BGP_CLEAR_SOFT_BOTH, NULL);
  2286. }
  2287. DEFUN (clear_ip_bgp_all_vpnv4_soft,
  2288.        clear_ip_bgp_all_vpnv4_soft_cmd,
  2289.        "clear ip bgp * vpnv4 unicast soft",
  2290.        CLEAR_STR
  2291.        IP_STR
  2292.        BGP_STR
  2293.        "Clear all peersn"
  2294.        "Address familyn"
  2295.        "Address Family Modifiern"
  2296.        "Soft reconfign")
  2297. {
  2298.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
  2299. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2300. }
  2301. DEFUN (clear_bgp_all_soft,
  2302.        clear_bgp_all_soft_cmd,
  2303.        "clear bgp * soft",
  2304.        CLEAR_STR
  2305.        BGP_STR
  2306.        "Clear all peersn"
  2307.        "Soft reconfign")
  2308. {
  2309.   if (argc == 1)
  2310.     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
  2311.   BGP_CLEAR_SOFT_BOTH, argv[0]);
  2312.  
  2313.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all,
  2314. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2315. }
  2316. ALIAS (clear_bgp_all_soft,
  2317.        clear_bgp_instance_all_soft_cmd,
  2318.        "clear bgp view WORD * soft",
  2319.        CLEAR_STR
  2320.        BGP_STR
  2321.        "BGP viewn"
  2322.        "view namen"
  2323.        "Clear all peersn"
  2324.        "Soft reconfign");
  2325. ALIAS (clear_bgp_all_soft,
  2326.        clear_bgp_ipv6_all_soft_cmd,
  2327.        "clear bgp ipv6 * soft",
  2328.        CLEAR_STR
  2329.        BGP_STR
  2330.        "Address familyn"
  2331.        "Clear all peersn"
  2332.        "Soft reconfign");
  2333. DEFUN (clear_ip_bgp_peer_soft,
  2334.        clear_ip_bgp_peer_soft_cmd,
  2335.        "clear ip bgp A.B.C.D soft",
  2336.        CLEAR_STR
  2337.        IP_STR
  2338.        BGP_STR
  2339.        "BGP neighbor address to clearn"
  2340.        "Soft reconfign")
  2341. {
  2342.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  2343. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2344. }
  2345. DEFUN (clear_ip_bgp_peer_ipv4_soft,
  2346.        clear_ip_bgp_peer_ipv4_soft_cmd,
  2347.        "clear ip bgp A.B.C.D ipv4 (unicast|multicast) soft",
  2348.        CLEAR_STR
  2349.        IP_STR
  2350.        BGP_STR
  2351.        "BGP neighbor address to clearn"
  2352.        "Address familyn"
  2353.        "Address Family Modifiern"
  2354.        "Address Family Modifiern"
  2355.        "Soft reconfign")
  2356. {
  2357.   if (strncmp (argv[1], "m", 1) == 0)
  2358.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
  2359.   BGP_CLEAR_SOFT_BOTH, argv[0]);
  2360.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
  2361. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2362. }
  2363. DEFUN (clear_ip_bgp_peer_vpnv4_soft,
  2364.        clear_ip_bgp_peer_vpnv4_soft_cmd,
  2365.        "clear ip bgp A.B.C.D vpnv4 unicast soft",
  2366.        CLEAR_STR
  2367.        IP_STR
  2368.        BGP_STR
  2369.        "BGP neighbor address to clearn"
  2370.        "Address familyn"
  2371.        "Address Family Modifiern"
  2372.        "Soft reconfign")
  2373. {
  2374.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
  2375. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2376. }
  2377. DEFUN (clear_bgp_peer_soft,
  2378.        clear_bgp_peer_soft_cmd,
  2379.        "clear bgp (A.B.C.D|X:X::X:X) soft",
  2380.        CLEAR_STR
  2381.        BGP_STR
  2382.        "BGP neighbor address to clearn"
  2383.        "BGP IPv6 neighbor to clearn"
  2384.        "Soft reconfign")
  2385. {
  2386.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
  2387. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2388. }
  2389. ALIAS (clear_bgp_peer_soft,
  2390.        clear_bgp_ipv6_peer_soft_cmd,
  2391.        "clear bgp ipv6 (A.B.C.D|X:X::X:X) soft",
  2392.        CLEAR_STR
  2393.        BGP_STR
  2394.        "Address familyn"
  2395.        "BGP neighbor address to clearn"
  2396.        "BGP IPv6 neighbor to clearn"
  2397.        "Soft reconfign");
  2398. DEFUN (clear_ip_bgp_peer_group_soft,
  2399.        clear_ip_bgp_peer_group_soft_cmd,
  2400.        "clear ip bgp peer-group WORD soft",
  2401.        CLEAR_STR
  2402.        IP_STR
  2403.        BGP_STR
  2404.        "Clear all members of peer-groupn"
  2405.        "BGP peer-group namen"
  2406.        "Soft reconfign")
  2407. {
  2408.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  2409. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2410. }
  2411. DEFUN (clear_ip_bgp_peer_group_ipv4_soft,
  2412.        clear_ip_bgp_peer_group_ipv4_soft_cmd,
  2413.        "clear ip bgp peer-group WORD ipv4 (unicast|multicast) soft",
  2414.        CLEAR_STR
  2415.        IP_STR
  2416.        BGP_STR
  2417.        "Clear all members of peer-groupn"
  2418.        "BGP peer-group namen"
  2419.        "Address familyn"
  2420.        "Address Family modifiern"
  2421.        "Address Family modifiern"
  2422.        "Soft reconfign")
  2423. {
  2424.   if (strncmp (argv[1], "m", 1) == 0)
  2425.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
  2426.   BGP_CLEAR_SOFT_BOTH, argv[0]);
  2427.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
  2428. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2429. }
  2430. DEFUN (clear_bgp_peer_group_soft,
  2431.        clear_bgp_peer_group_soft_cmd,
  2432.        "clear bgp peer-group WORD soft",
  2433.        CLEAR_STR
  2434.        BGP_STR
  2435.        "Clear all members of peer-groupn"
  2436.        "BGP peer-group namen"
  2437.        "Soft reconfign")
  2438. {
  2439.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
  2440. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2441. }
  2442. ALIAS (clear_bgp_peer_group_soft,
  2443.        clear_bgp_ipv6_peer_group_soft_cmd,
  2444.        "clear bgp ipv6 peer-group WORD soft",
  2445.        CLEAR_STR
  2446.        BGP_STR
  2447.        "Address familyn"
  2448.        "Clear all members of peer-groupn"
  2449.        "BGP peer-group namen"
  2450.        "Soft reconfign");
  2451. DEFUN (clear_ip_bgp_external_soft,
  2452.        clear_ip_bgp_external_soft_cmd,
  2453.        "clear ip bgp external soft",
  2454.        CLEAR_STR
  2455.        IP_STR
  2456.        BGP_STR
  2457.        "Clear all external peersn"
  2458.        "Soft reconfign")
  2459. {
  2460.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  2461. BGP_CLEAR_SOFT_BOTH, NULL);
  2462. }
  2463. DEFUN (clear_ip_bgp_external_ipv4_soft,
  2464.        clear_ip_bgp_external_ipv4_soft_cmd,
  2465.        "clear ip bgp external ipv4 (unicast|multicast) soft",
  2466.        CLEAR_STR
  2467.        IP_STR
  2468.        BGP_STR
  2469.        "Clear all external peersn"
  2470.        "Address familyn"
  2471.        "Address Family modifiern"
  2472.        "Address Family modifiern"
  2473.        "Soft reconfign")
  2474. {
  2475.   if (strncmp (argv[0], "m", 1) == 0)
  2476.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
  2477.   BGP_CLEAR_SOFT_BOTH, NULL);
  2478.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
  2479. BGP_CLEAR_SOFT_BOTH, NULL);
  2480. }
  2481. DEFUN (clear_bgp_external_soft,
  2482.        clear_bgp_external_soft_cmd,
  2483.        "clear bgp external soft",
  2484.        CLEAR_STR
  2485.        BGP_STR
  2486.        "Clear all external peersn"
  2487.        "Soft reconfign")
  2488. {
  2489.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
  2490. BGP_CLEAR_SOFT_BOTH, NULL);
  2491. }
  2492. ALIAS (clear_bgp_external_soft,
  2493.        clear_bgp_ipv6_external_soft_cmd,
  2494.        "clear bgp ipv6 external soft",
  2495.        CLEAR_STR
  2496.        BGP_STR
  2497.        "Address familyn"
  2498.        "Clear all external peersn"
  2499.        "Soft reconfign");
  2500. DEFUN (clear_ip_bgp_as_soft,
  2501.        clear_ip_bgp_as_soft_cmd,
  2502.        "clear ip bgp <1-65535> soft",
  2503.        CLEAR_STR
  2504.        IP_STR
  2505.        BGP_STR
  2506.        "Clear peers with the AS numbern"
  2507.        "Soft reconfign")
  2508. {
  2509.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
  2510. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2511. }
  2512. DEFUN (clear_ip_bgp_as_ipv4_soft,
  2513.        clear_ip_bgp_as_ipv4_soft_cmd,
  2514.        "clear ip bgp <1-65535> ipv4 (unicast|multicast) soft",
  2515.        CLEAR_STR
  2516.        IP_STR
  2517.        BGP_STR
  2518.        "Clear peers with the AS numbern"
  2519.        "Address familyn"
  2520.        "Address Family Modifiern"
  2521.        "Address Family Modifiern"
  2522.        "Soft reconfign")
  2523. {
  2524.   if (strncmp (argv[1], "m", 1) == 0)
  2525.     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
  2526.   BGP_CLEAR_SOFT_BOTH, argv[0]);
  2527.   return bgp_clear_vty (vty, NULL,AFI_IP, SAFI_UNICAST, clear_as,
  2528. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2529. }
  2530. DEFUN (clear_ip_bgp_as_vpnv4_soft,
  2531.        clear_ip_bgp_as_vpnv4_soft_cmd,
  2532.        "clear ip bgp <1-65535> vpnv4 unicast soft",
  2533.        CLEAR_STR
  2534.        IP_STR
  2535.        BGP_STR
  2536.        "Clear peers with the AS numbern"
  2537.        "Address familyn"
  2538.        "Address Family Modifiern"
  2539.        "Soft reconfign")
  2540. {
  2541.   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
  2542. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2543. }
  2544. DEFUN (clear_bgp_as_soft,
  2545.        clear_bgp_as_soft_cmd,
  2546.        "clear bgp <1-65535> soft",
  2547.        CLEAR_STR
  2548.        BGP_STR
  2549.        "Clear peers with the AS numbern"
  2550.        "Soft reconfign")
  2551. {
  2552.   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
  2553. BGP_CLEAR_SOFT_BOTH, argv[0]);
  2554. }
  2555. ALIAS (clear_bgp_as_soft,
  2556.        clear_bgp_ipv6_as_soft_cmd,
  2557.        "clear bgp ipv6 <1-65535> soft",
  2558.        CLEAR_STR
  2559.        BGP_STR
  2560.        "Address familyn"
  2561.        "Clear peers with the AS numbern"
  2562.        "Soft reconfign");
  2563. /* Show BGP peer's summary information. */
  2564. int
  2565. bgp_show_summary (struct vty *vty, struct bgp *bgp, int afi, int safi)
  2566. {
  2567.   struct peer *peer;
  2568.   struct listnode *nn;
  2569.   int count = 0;
  2570.   char timebuf[BGP_UPTIME_LEN];
  2571.   int len;
  2572.   /* Header string for each address family. */
  2573.   static char header[] = "Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd";
  2574.   LIST_LOOP (bgp->peer, peer, nn)
  2575.     {
  2576.       if (peer->afc[afi][safi])
  2577. {
  2578.   if (! count)
  2579.     {
  2580.       vty_out (vty,
  2581.        "BGP router identifier %s, local AS number %d%s",
  2582.        inet_ntoa (bgp->router_id), bgp->as, VTY_NEWLINE);
  2583.       vty_out (vty, 
  2584.        "%ld BGP AS-PATH entries%s", aspath_count (),
  2585.        VTY_NEWLINE);
  2586.       vty_out (vty, 
  2587.        "%ld BGP community entries%s", community_count (),
  2588.        VTY_NEWLINE);
  2589.       if (CHECK_FLAG(bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING))
  2590. vty_out (vty, "Dampening enabled.%s", VTY_NEWLINE);
  2591.       vty_out (vty, "%s", VTY_NEWLINE);
  2592.       vty_out (vty, "%s%s", header, VTY_NEWLINE);
  2593.     }
  2594.   count++;
  2595.   len = vty_out (vty, "%s", peer->host);
  2596.   len = 16 - len;
  2597.   if (len < 1)
  2598.     vty_out (vty, "%s%*s", VTY_NEWLINE, 16, " ");
  2599.   else
  2600.     vty_out (vty, "%*s", len, " ");
  2601.   vty_out (vty, "4 ");
  2602.   vty_out (vty, "%5d %7d %7d %8d %4d %4ld ",
  2603.    peer->as,
  2604.    peer->open_in + peer->update_in + peer->keepalive_in
  2605.    + peer->notify_in + peer->refresh_in + peer->dynamic_cap_in,
  2606.    peer->open_out + peer->update_out + peer->keepalive_out
  2607.    + peer->notify_out + peer->refresh_out
  2608.    + peer->dynamic_cap_out,
  2609.    0, 0, peer->obuf->count);
  2610.   vty_out (vty, "%8s", 
  2611.    peer_uptime (peer->uptime, timebuf, BGP_UPTIME_LEN));
  2612.   if (peer->status == Established)
  2613.     {
  2614.       vty_out (vty, " %8ld", peer->pcount[afi][safi]);
  2615.     }
  2616.   else
  2617.     {
  2618.       if (CHECK_FLAG (peer->flags, PEER_FLAG_SHUTDOWN))
  2619. vty_out (vty, " Idle (Admin)");
  2620.       else if (CHECK_FLAG (peer->sflags, PEER_STATUS_PREFIX_OVERFLOW))
  2621. vty_out (vty, " Idle (PfxCt)");
  2622.       else
  2623. vty_out (vty, " %-11s", LOOKUP(bgp_status_msg, peer->status));
  2624.     }
  2625.   vty_out (vty, "%s", VTY_NEWLINE);
  2626. }
  2627.     }
  2628.   if (count)
  2629.     vty_out (vty, "%sTotal number of neighbors %d%s", VTY_NEWLINE,
  2630.      count, VTY_NEWLINE);
  2631.   else
  2632.     vty_out (vty, "No %s neighbor is configured%s",
  2633.      afi == AFI_IP ? "IPv4" : "IPv6", VTY_NEWLINE);
  2634.   return CMD_SUCCESS;
  2635. }
  2636. int 
  2637. bgp_show_summary_vty (struct vty *vty, char *name, afi_t afi, safi_t safi)
  2638. {
  2639.   struct bgp *bgp;
  2640.   if (name)
  2641.     {
  2642.       bgp = bgp_lookup_by_name (name);
  2643.       
  2644.       if (! bgp)
  2645. {
  2646.   vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); 
  2647.   return CMD_WARNING;
  2648. }
  2649.       bgp_show_summary (vty, bgp, afi, safi);
  2650.       return CMD_SUCCESS;
  2651.     }
  2652.   
  2653.   bgp = bgp_get_default ();
  2654.   if (bgp)
  2655.     bgp_show_summary (vty, bgp, afi, safi);    
  2656.  
  2657.   return CMD_SUCCESS;
  2658. }
  2659. /* `show ip bgp summary' commands. */
  2660. DEFUN (show_ip_bgp_summary, 
  2661.        show_ip_bgp_summary_cmd,
  2662.        "show ip bgp summary",
  2663.        SHOW_STR
  2664.        IP_STR
  2665.        BGP_STR
  2666.        "Summary of BGP neighbor statusn")
  2667. {
  2668.   return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
  2669. }
  2670. DEFUN (show_ip_bgp_instance_summary,
  2671.        show_ip_bgp_instance_summary_cmd,
  2672.        "show ip bgp view WORD summary",
  2673.        SHOW_STR
  2674.        IP_STR
  2675.        BGP_STR
  2676.        "BGP viewn"
  2677.        "View namen"
  2678.        "Summary of BGP neighbor statusn")
  2679. {
  2680.   return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);  
  2681. }
  2682. DEFUN (show_ip_bgp_ipv4_summary, 
  2683.        show_ip_bgp_ipv4_summary_cmd,
  2684.        "show ip bgp ipv4 (unicast|multicast) summary",
  2685.        SHOW_STR
  2686.        IP_STR
  2687.        BGP_STR
  2688.        "Address familyn"
  2689.        "Address Family modifiern"
  2690.        "Address Family modifiern"
  2691.        "Summary of BGP neighbor statusn")
  2692. {
  2693.   if (strncmp (argv[0], "m", 1) == 0)
  2694.     return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST);
  2695.   return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST);
  2696. }
  2697. DEFUN (show_ip_bgp_instance_ipv4_summary,
  2698.        show_ip_bgp_instance_ipv4_summary_cmd,
  2699.        "show ip bgp view WORD ipv4 (unicast|multicast) summary",
  2700.        SHOW_STR
  2701.        IP_STR
  2702.        BGP_STR
  2703.        "BGP viewn"
  2704.        "View namen"
  2705.        "Address familyn"
  2706.        "Address Family modifiern"
  2707.        "Address Family modifiern"
  2708.        "Summary of BGP neighbor statusn")
  2709. {
  2710.   if (strncmp (argv[1], "m", 1) == 0)
  2711.     return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST);
  2712.   else
  2713.     return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST);
  2714. }
  2715. DEFUN (show_ip_bgp_vpnv4_all_summary,
  2716.        show_ip_bgp_vpnv4_all_summary_cmd,
  2717.        "show ip bgp vpnv4 all summary",
  2718.        SHOW_STR
  2719.        IP_STR
  2720.        BGP_STR
  2721.        "Display VPNv4 NLRI specific informationn"
  2722.        "Display information about all VPNv4 NLRIsn"
  2723.        "Summary of BGP neighbor statusn")
  2724. {
  2725.   return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
  2726. }
  2727. DEFUN (show_ip_bgp_vpnv4_rd_summary,
  2728.        show_ip_bgp_vpnv4_rd_summary_cmd,
  2729.        "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn summary",
  2730.        SHOW_STR
  2731.        IP_STR
  2732.        BGP_STR
  2733.        "Display VPNv4 NLRI specific informationn"
  2734.        "Display information for a route distinguishern"
  2735.        "VPN Route Distinguishern"
  2736.        "Summary of BGP neighbor statusn")
  2737. {
  2738.   int ret;
  2739.   struct prefix_rd prd;
  2740.   ret = str2prefix_rd (argv[0], &prd);
  2741.   if (! ret)
  2742.     {
  2743.       vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
  2744.       return CMD_WARNING;
  2745.     }
  2746.   return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN);
  2747. }
  2748. #ifdef HAVE_IPV6
  2749. DEFUN (show_bgp_summary, 
  2750.        show_bgp_summary_cmd,
  2751.        "show bgp summary",
  2752.        SHOW_STR
  2753.        BGP_STR
  2754.        "Summary of BGP neighbor statusn")
  2755. {
  2756.   return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST);
  2757. }
  2758. DEFUN (show_bgp_instance_summary,
  2759.        show_bgp_instance_summary_cmd,
  2760.        "show bgp view WORD summary",
  2761.        SHOW_STR
  2762.        BGP_STR
  2763.        "BGP viewn"
  2764.        "View namen"
  2765.        "Summary of BGP neighbor statusn")
  2766. {
  2767.   return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST);
  2768. }
  2769. ALIAS (show_bgp_summary, 
  2770.        show_bgp_ipv6_summary_cmd,
  2771.        "show bgp ipv6 summary",
  2772.        SHOW_STR
  2773.        BGP_STR
  2774.        "Address familyn"
  2775.        "Summary of BGP neighbor statusn");
  2776. ALIAS (show_bgp_instance_summary,
  2777.        show_bgp_instance_ipv6_summary_cmd,
  2778.        "show bgp view WORD ipv6 summary",
  2779.        SHOW_STR
  2780.        BGP_STR
  2781.        "BGP viewn"
  2782.        "View namen"
  2783.        "Address familyn"
  2784.        "Summary of BGP neighbor statusn");
  2785. #endif /* HAVE_IPV6 */
  2786. char *
  2787. afi_safi_print (afi_t afi, safi_t safi)
  2788. {
  2789.   if (afi == AFI_IP && safi == SAFI_UNICAST)
  2790.     return "IPv4 Unicast";
  2791.   else if (afi == AFI_IP && safi == SAFI_MULTICAST)
  2792.     return "IPv4 Multicast";
  2793.   else if (afi == AFI_IP && safi == SAFI_MPLS_VPN)
  2794.     return "VPNv4 Unicast";
  2795.   else if (afi == AFI_IP6 && safi == SAFI_UNICAST)
  2796.     return "IPv6 Unicast";
  2797.   else if (afi == AFI_IP6 && safi == SAFI_MULTICAST)
  2798.     return "IPv6 Multicast";
  2799.   else
  2800.     return "Unknown";
  2801. }
  2802. /* Show BGP peer's information. */
  2803. enum show_type
  2804.   {
  2805.     show_all,
  2806.     show_peer
  2807.   };
  2808. void
  2809. bgp_show_peer_afi_orf_cap (struct vty *vty, struct peer *p,
  2810.    afi_t afi, safi_t safi,
  2811.    u_int16_t adv_smcap, u_int16_t adv_rmcap,
  2812.    u_int16_t rcv_smcap, u_int16_t rcv_rmcap)
  2813. {
  2814.   /* Send-Mode */
  2815.   if (CHECK_FLAG (p->af_cap[afi][safi], adv_smcap)
  2816.       || CHECK_FLAG (p->af_cap[afi][safi], rcv_smcap))
  2817.     {
  2818.       vty_out (vty, "      Send-mode: ");
  2819.       if (CHECK_FLAG (p->af_cap[afi][safi], adv_smcap))
  2820. vty_out (vty, "advertised");
  2821.       if (CHECK_FLAG (p->af_cap[afi][safi], rcv_smcap))
  2822. vty_out (vty, "%sreceived",
  2823.  CHECK_FLAG (p->af_cap[afi][safi], adv_smcap) ?
  2824.  ", " : "");
  2825.       vty_out (vty, "%s", VTY_NEWLINE);
  2826.     }
  2827.   /* Receive-Mode */
  2828.   if (CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap)
  2829.       || CHECK_FLAG (p->af_cap[afi][safi], rcv_rmcap))
  2830.     {
  2831.       vty_out (vty, "      Receive-mode: ");
  2832.       if (CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap))
  2833. vty_out (vty, "advertised");
  2834.       if (CHECK_FLAG (p->af_cap[afi][safi], rcv_rmcap))
  2835. vty_out (vty, "%sreceived",
  2836.  CHECK_FLAG (p->af_cap[afi][safi], adv_rmcap) ?
  2837.  ", " : "");
  2838.       vty_out (vty, "%s", VTY_NEWLINE);
  2839.     }
  2840. }
  2841. void
  2842. bgp_show_peer_afi (struct vty *vty, struct peer *p, afi_t afi, safi_t safi)
  2843. {
  2844.   struct bgp_filter *filter;
  2845.   char orf_pfx_name[BUFSIZ];
  2846.   int orf_pfx_count;
  2847.   filter = &p->filter[afi][safi];
  2848.   vty_out (vty, " For address family: %s%s", afi_safi_print (afi, safi),
  2849.    VTY_NEWLINE);
  2850.   vty_out (vty, "  Configuration flags 0x%x%s", p->af_config[afi][safi],
  2851.    VTY_NEWLINE);
  2852.   if (peer_group_member (p))
  2853.     vty_out (vty, "  %s peer-group member%s", p->group->name, VTY_NEWLINE);
  2854.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_REFLECTOR_CLIENT))
  2855.     vty_out (vty, "  Route-Reflector Client%s", VTY_NEWLINE);
  2856.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT))
  2857.     vty_out (vty, "  Route-Server Client%s", VTY_NEWLINE);
  2858.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SOFT_RECONFIG))
  2859.     vty_out (vty, "  Inbound soft reconfiguration allowed%s", VTY_NEWLINE);
  2860.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_REMOVE_PRIVATE_AS))
  2861.     vty_out (vty, "  Private AS number removed from updates to this neighbor%s", VTY_NEWLINE);
  2862.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_NEXTHOP_SELF))
  2863.     vty_out (vty, "  NEXT_HOP is always this router%s", VTY_NEWLINE);
  2864.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_AS_PATH_UNCHANGED))
  2865.     vty_out (vty, "  AS_PATH is propagated unchanged to this neighbor%s", VTY_NEWLINE);
  2866.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_NEXTHOP_UNCHANGED))
  2867.     vty_out (vty, "  NEXT_HOP is propagated unchanged to this neighbor%s", VTY_NEWLINE);
  2868.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_MED_UNCHANGED))
  2869.     vty_out (vty, "  MED is propagated unchanged to this neighbor%s", VTY_NEWLINE);
  2870.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY)
  2871.       || CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
  2872.     {
  2873.       vty_out (vty, "  Community attribute sent to this neighbor");
  2874.       if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY)
  2875.   && CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
  2876. vty_out (vty, "(both)%s", VTY_NEWLINE);
  2877.       else if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY))
  2878. vty_out (vty, "(extended)%s", VTY_NEWLINE);
  2879.       else 
  2880. vty_out (vty, "(standard)%s", VTY_NEWLINE);
  2881.     }
  2882.   if (CHECK_FLAG (p->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE))
  2883.     {
  2884.       vty_out (vty, "  Default information originate,");
  2885.       if (p->default_rmap[afi][safi].name)
  2886. vty_out (vty, " default route-map %s%s,",
  2887.  p->default_rmap[afi][safi].map ? "*" : "",
  2888.  p->default_rmap[afi][safi].name);
  2889.       if (CHECK_FLAG (p->af_sflags[afi][safi], PEER_STATUS_DEFAULT_ORIGINATE))
  2890. vty_out (vty, " default sent%s", VTY_NEWLINE);
  2891.       else
  2892. vty_out (vty, " default not sent%s", VTY_NEWLINE);
  2893.     }
  2894.   if (CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_ADV)
  2895.       || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_RCV)
  2896.       || CHECK_FLAG (p->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_OLD_RCV)