From: Daniel Walton Date: Mon, 26 Sep 2016 00:47:13 +0000 (+0000) Subject: bgpd: combine "clear bgp, clear ip bgp" commands into one DEFUN X-Git-Tag: frr-3.0-branchpoint~129^2~159 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b09b5ae03367d724c909222f988d60cab740a621;p=matthieu%2Ffrr.git bgpd: combine "clear bgp, clear ip bgp" commands into one DEFUN Signed-off-by: Daniel Walton --- diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index ff5fc48f62..4788cd230a 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -559,7 +559,7 @@ bgp_clear_vty (struct vty *vty, const char *name, afi_t afi, safi_t safi, static void bgp_clear_star_soft_in (struct vty *vty, const char *name) { - bgp_clear_vty (vty,name, AFI_IP, SAFI_UNICAST, clear_all, + bgp_clear_vty (vty, name, AFI_IP, SAFI_UNICAST, clear_all, BGP_CLEAR_SOFT_IN, NULL); bgp_clear_vty (vty, name, AFI_IP6, SAFI_UNICAST, clear_all, BGP_CLEAR_SOFT_IN, NULL); @@ -6220,133 +6220,212 @@ bgp_clear_prefix (struct vty *vty, const char *view_name, const char *ip_str, return CMD_SUCCESS; } -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp *", - * CLEAR_STR - * BGP_STR - * "Clear all peers\n" - * - * "clear bgp WORD ipv6 *", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all peers\n" - * - * "clear bgp ipv6 *", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all peers\n" - */ +// dwalton +/* one clear bgp command to rule them all */ DEFUN (clear_ip_bgp_all, clear_ip_bgp_all_cmd, - "clear ip bgp [ WORD] *", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n") -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, 0, 0, clear_all, BGP_CLEAR_SOFT_NONE, NULL); -} - -/* - * CHECK ME need ipv6 equivalent - */ -DEFUN (clear_ip_bgp_peer, - clear_ip_bgp_peer_cmd, - "clear [ip] bgp [ WORD] ", + "clear [ip] bgp [ WORD] <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group WORD> [] []", CLEAR_STR IP_STR BGP_STR BGP_INSTANCE_HELP_STR - "BGP neighbor IP address to clear\n" + "Clear all peers\n" + "BGP neighbor address to clear\n" "BGP IPv6 neighbor to clear\n" "BGP neighbor on interface to clear\n" + "Clear peers with the AS number\n" + "Clear all external peers\n" "Clear all members of peer-group\n" - "BGP peer-group name\n") + "BGP peer-group name\n" + "Address family\n" + "Address Family modifier\n" + "Address family\n" + "Address Family modifier\n" + "Address family\n" + "Address Family modifier\n" + "Address family\n" + "Address Family modifier\n" + "Address family\n" + "Address Family modifier\n" + BGP_SOFT_STR + BGP_SOFT_STR + BGP_SOFT_IN_STR + BGP_SOFT_STR + BGP_SOFT_OUT_STR + BGP_SOFT_IN_STR + "Push out prefix-list ORF and do inbound soft reconfig\n" + BGP_SOFT_IN_STR + BGP_SOFT_OUT_STR) { int idx_ip = 1; int idx_view_vrf = 3; int idx_vrf = 4; - int idx_peer = 5; + int idx_clr_sort = 5; + int idx_soft_in_out = argc - 1; + int idx_afi; + int idx_safi; char *vrf = NULL; - enum clear_sort clearer; + afi_t afi; + safi_t safi; + enum clear_sort clr_sort; + enum bgp_clear_type clr_type; + char *clr_arg = NULL; - if (!strmatch(argv[idx_ip]->text, "ip")) + /* + * If the user does "clear ip bgp" then we default the afi safi to ipv4 unicast. + * If the user does "clear bgp" then we default the afi safi to ipv6 unicast. + * This may be over-written later in the command if they explicitly + * specify an afi safi. + */ + if (strmatch(argv[idx_ip]->text, "ip")) + { + afi = AFI_IP; + safi = SAFI_UNICAST; + } + else { + afi = AFI_IP6; + safi = SAFI_UNICAST; idx_view_vrf--; idx_vrf--; - idx_peer--; + idx_clr_sort--; } - - if (argv[idx_view_vrf]->type == WORD_TKN) + + if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) vrf = argv[idx_vrf]->arg; else - idx_peer -= 2; + idx_clr_sort -= 2; - /* peer-group WORD */ - if (argv[idx_peer]->type == WORD_TKN) + /* <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external> */ + if (strmatch(argv[idx_clr_sort]->text, "*")) { - clearer = clear_group; - idx_peer += 1; + clr_sort = clear_all; } - else + else if (argv[idx_clr_sort]->type == IPV4_TKN) + { + clr_sort = clear_peer; + clr_arg = argv[idx_clr_sort]->arg; + } + else if (argv[idx_clr_sort]->type == IPV6_TKN) + { + clr_sort = clear_peer; + clr_arg = argv[idx_clr_sort]->arg; + } + else if (argv[idx_clr_sort]->type == RANGE_TKN) + { + clr_sort = clear_as; + clr_arg = argv[idx_clr_sort]->arg; + } + else if (strmatch(argv[idx_clr_sort]->text, "external")) { - clearer = clear_peer; + clr_sort = clear_external; } + else if (strmatch(argv[idx_clr_sort]->text, "peer-group")) + { + clr_sort = clear_group; + clr_arg = argv[idx_clr_sort + 1]->arg; - return bgp_clear_vty (vty, vrf, 0, 0, clearer, BGP_CLEAR_SOFT_NONE, argv[idx_peer]->arg); -} + if (! peer_group_lookup (vty->index, clr_arg)) + { + vty_out (vty, "%% No such peer-group%s", VTY_NEWLINE); + return CMD_WARNING; + } + } + else if (argv[idx_clr_sort]->type == WORD_TKN) + { + if (peer_lookup_by_conf_if (vty->index, argv[idx_clr_sort]->arg)) + { + clr_sort = clear_peer; + clr_arg = argv[idx_clr_sort]->arg; + } + else + { + vty_out (vty, "%% No such neighbor%s", VTY_NEWLINE); + return CMD_WARNING; + } + } -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp WORD ipv6 external", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all external peers\n" - * - * "clear bgp ipv6 external", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all external peers\n" - */ -DEFUN (clear_ip_bgp_external, - clear_ip_bgp_external_cmd, - "clear [ip] bgp [ WORD] external", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n") -{ - int idx_ip = 1; - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; + /* soft, soft in, or soft out */ + if (strmatch(argv[idx_soft_in_out]->text, "in")) + { + clr_type = BGP_CLEAR_SOFT_IN; - if (!strmatch(argv[idx_ip]->text, "ip")) + if (strmatch(argv[idx_soft_in_out-1]->text, "soft")) + { + idx_afi = idx_soft_in_out - 3; + idx_safi = idx_soft_in_out - 2; + } + else + { + idx_afi = idx_soft_in_out - 2; + idx_safi = idx_soft_in_out - 1; + } + } + else if (strmatch(argv[idx_soft_in_out]->text, "out")) { - idx_view_vrf--; - idx_vrf--; + clr_type = BGP_CLEAR_SOFT_OUT; + + if (strmatch(argv[idx_soft_in_out-1]->text, "soft")) + { + idx_afi = idx_soft_in_out - 3; + idx_safi = idx_soft_in_out - 2; + } + else + { + idx_afi = idx_soft_in_out - 2; + idx_safi = idx_soft_in_out - 1; + } + } + else if (strmatch(argv[idx_soft_in_out]->text, "soft")) + { + clr_type = BGP_CLEAR_SOFT_BOTH; + idx_afi = idx_soft_in_out - 2; + idx_safi = idx_soft_in_out - 1; + } + else if (strmatch(argv[idx_soft_in_out]->text, "prefix-filter")) + { + clr_type = BGP_CLEAR_SOFT_IN_ORF_PREFIX; + idx_afi = idx_soft_in_out - 3; + idx_safi = idx_soft_in_out - 2; + } + else + { + clr_type = BGP_CLEAR_SOFT_NONE; + idx_afi = idx_soft_in_out - 1; + idx_safi = idx_soft_in_out; } - if (argv[idx_view_vrf]->type == WORD_TKN) - vrf = argv[idx_vrf]->arg; + /* afi safi */ + if (strmatch(argv[idx_afi]->text, "ipv4")) + { + afi = AFI_IP; + + if (strmatch(argv[idx_safi]->text, "unicast")) + safi = SAFI_UNICAST; + else if (strmatch(argv[idx_safi]->text, "multicast")) + safi = SAFI_MULTICAST; + } + else if (strmatch(argv[idx_afi]->text, "ipv6")) + { + afi = AFI_IP6; + + if (strmatch(argv[idx_safi]->text, "unicast")) + safi = SAFI_UNICAST; + else if (strmatch(argv[idx_safi]->text, "multicast")) + safi = SAFI_MULTICAST; + } + else if (strmatch(argv[idx_afi]->text, "encap")) + { + afi = AFI_IP; + safi = SAFI_ENCAP; + } + else if (strmatch(argv[idx_afi]->text, "vpnv4")) + { + afi = AFI_IP; + safi = SAFI_MPLS_VPN; + } - return bgp_clear_vty (vty, vrf, 0, 0, clear_external, BGP_CLEAR_SOFT_NONE, NULL); + return bgp_clear_vty (vty, vrf, afi, safi, clr_sort, clr_type, clr_arg); } DEFUN (clear_ip_bgp_prefix, @@ -6380,2576 +6459,73 @@ DEFUN (clear_ip_bgp_prefix, return bgp_clear_prefix (vty, vrf, argv[idx_ipv4_prefixlen]->arg, AFI_IP, SAFI_UNICAST, NULL); } -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * need ipv6 options - * - * "clear bgp ipv6 (1-4294967295)", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * - * "clear bgp WORD ipv6 (1-4294967295)", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - */ -DEFUN (clear_ip_bgp_as, - clear_ip_bgp_as_cmd, - "clear [ip] bgp [ WORD] (1-4294967295)", +DEFUN (clear_bgp_ipv6_safi_prefix, + clear_bgp_ipv6_safi_prefix_cmd, + "clear bgp ipv6 prefix X:X::X:X/M", CLEAR_STR - IP_STR BGP_STR - BGP_INSTANCE_HELP_STR - "Clear peers with the AS number\n") + "Address family\n" + "Address Family Modifier\n" + "Clear bestpath and re-advertise\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") { - int idx_ip = 1; - int idx_view_vrf = 3; - int idx_vrf = 4; - int idx_number = 3; - char *vrf = NULL; - - if (!strmatch(argv[idx_ip]->text, "ip")) - { - idx_view_vrf--; - idx_vrf--; - idx_number--; - } - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; + int idx_safi = 3; + int idx_ipv6_prefixlen = 5; + if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) + return bgp_clear_prefix (vty, NULL, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_MULTICAST, NULL); else - idx_number -= 2; - - return bgp_clear_vty (vty, vrf, 0, 0, clear_as, BGP_CLEAR_SOFT_NONE, argv[idx_number]->arg); + return bgp_clear_prefix (vty, NULL, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, NULL); } -/* Outbound soft-reconfiguration */ -DEFUN (clear_ip_bgp_all_soft_out, - clear_ip_bgp_all_soft_out_cmd, - "clear ip bgp [ WORD] * [soft] out", +DEFUN (clear_bgp_instance_ipv6_safi_prefix, + clear_bgp_instance_ipv6_safi_prefix_cmd, + "clear bgp WORD ipv6 prefix X:X::X:X/M", CLEAR_STR - IP_STR BGP_STR BGP_INSTANCE_HELP_STR - "Clear all peers\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_all, BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_all_ipv4_soft_out, - clear_ip_bgp_all_ipv4_soft_out_cmd, - "clear ip bgp * ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) + "Address Family Modifier\n" + "Clear bestpath and re-advertise\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") { + int idx_word = 3; int idx_safi = 5; + int idx_ipv6_prefixlen = 7; if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); + return bgp_clear_prefix (vty, argv[idx_word]->arg, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_MULTICAST, NULL); + else + return bgp_clear_prefix (vty, argv[idx_word]->arg, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, NULL); } -DEFUN (clear_ip_bgp_instance_all_ipv4_soft_out, - clear_ip_bgp_instance_all_ipv4_soft_out_cmd, - "clear ip bgp WORD * ipv4 [soft] out", - CLEAR_STR - IP_STR +DEFUN (show_bgp_views, + show_bgp_views_cmd, + "show bgp views", + SHOW_STR BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_OUT_STR) + "Show the defined BGP views\n") { - int idx_view_vrf = 3; - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); + struct list *inst = bm->bgp; + struct listnode *node; + struct bgp *bgp; - return bgp_clear_vty (vty, argv[idx_view_vrf]->arg, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_all_vpnv4_soft_out, - clear_ip_bgp_all_vpnv4_soft_out_cmd, - "clear ip bgp * vpnv4 unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_all_encap_soft_out, - clear_ip_bgp_all_encap_soft_out_cmd, - "clear ip bgp * encap unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); -} - -/* neither 'ipv6' or 'soft' do anything here */ -DEFUN (clear_bgp_all_soft_out, - clear_bgp_all_soft_out_cmd, - "clear bgp [ WORD] [ipv6] * [soft] out", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - IPV6_STR - "Clear all peers\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_OUT, NULL); -} - - -DEFUN (clear_bgp_ipv6_safi_prefix, - clear_bgp_ipv6_safi_prefix_cmd, - "clear bgp ipv6 prefix X:X::X:X/M", - CLEAR_STR - BGP_STR - "Address family\n" - "Address Family Modifier\n" - "Clear bestpath and re-advertise\n" - "IPv6 prefix /, e.g., 3ffe::/16\n") -{ - int idx_safi = 3; - int idx_ipv6_prefixlen = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_prefix (vty, NULL, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_MULTICAST, NULL); - else - return bgp_clear_prefix (vty, NULL, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, NULL); -} - -DEFUN (clear_bgp_instance_ipv6_safi_prefix, - clear_bgp_instance_ipv6_safi_prefix_cmd, - "clear bgp WORD ipv6 prefix X:X::X:X/M", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Address family\n" - "Address Family Modifier\n" - "Clear bestpath and re-advertise\n" - "IPv6 prefix /, e.g., 3ffe::/16\n") -{ - int idx_word = 3; - int idx_safi = 5; - int idx_ipv6_prefixlen = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_prefix (vty, argv[idx_word]->arg, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_MULTICAST, NULL); - else - return bgp_clear_prefix (vty, argv[idx_word]->arg, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, NULL); -} - -DEFUN (clear_ip_bgp_peer_soft_out, - clear_ip_bgp_peer_soft_out_cmd, - "clear ip bgp [ WORD] [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - int idx_ipv4_word = 5; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_ipv4_word -= 2; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_ipv4_soft_out, - clear_ip_bgp_peer_ipv4_soft_out_cmd, - "clear ip bgp ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_ipv4_word = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_ipv4_soft_out, - clear_ip_bgp_instance_peer_ipv4_soft_out_cmd, - "clear ip bgp WORD ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_word = 4; - int idx_ipv4_word = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); -} - -/* NOTE: WORD peers have not been tested for vpnv4 */ -DEFUN (clear_ip_bgp_peer_vpnv4_soft_out, - clear_ip_bgp_peer_vpnv4_soft_out_cmd, - "clear ip bgp vpnv4 unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_ipv4_word = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_encap_soft_out, - clear_ip_bgp_peer_encap_soft_out_cmd, - "clear ip bgp A.B.C.D encap unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") -{ - int idx_ipv4 = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_ipv4]->arg); -} - -DEFUN (clear_bgp_peer_soft_out, - clear_bgp_peer_soft_out_cmd, - "clear bgp [ WORD] [ipv6] [soft] out", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - IPV6_STR - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_ipv6 = 4; - int idx_peer = 5; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - { - idx_peer -= 2; - idx_ipv6 -= 2; - } - - if (! strmatch(argv[idx_ipv6]->text, "ipv6")) - idx_peer--; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_OUT, argv[idx_peer]->arg); -} - -DEFUN (clear_ip_bgp_peer_group_soft_out, - clear_ip_bgp_peer_group_soft_out_cmd, - "clear ip bgp [ WORD] peer-group WORD [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_word = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_word -= 2; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_group_ipv4_soft_out, - clear_ip_bgp_peer_group_ipv4_soft_out_cmd, - "clear ip bgp peer-group WORD ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_word = 4; - int idx_safi = 6; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_group_ipv4_soft_out, - clear_ip_bgp_instance_peer_group_ipv4_soft_out_cmd, - "clear ip bgp WORD peer-group WORD ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_word = 4; - int idx_word_2 = 6; - int idx_safi = 8; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word_2]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word_2]->arg); -} - -DEFUN (clear_bgp_peer_group_soft_out, - clear_bgp_peer_group_soft_out_cmd, - "clear bgp [ WORD] [ipv6] peer-group WORD [soft] out", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_ipv6 = 4; - int idx_word = 6; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - { - idx_ipv6 -= 2; - idx_word -= 2; - } - - if (!strmatch(argv[idx_ipv6]->text, "ipv6")) - idx_word--; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_OUT, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_external_soft_out, - clear_ip_bgp_external_soft_out_cmd, - "clear ip bgp [ WORD] external [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_external_ipv4_soft_out, - clear_ip_bgp_external_ipv4_soft_out_cmd, - "clear ip bgp external ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_instance_external_ipv4_soft_out, - clear_ip_bgp_instance_external_ipv4_soft_out_cmd, - "clear ip bgp WORD external ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_bgp_external_soft_out, - clear_bgp_external_soft_out_cmd, - "clear bgp [ WORD] [ipv6] external [soft] out", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_OUT, NULL); -} - -DEFUN (clear_ip_bgp_as_soft_out, - clear_ip_bgp_as_soft_out_cmd, - "clear ip bgp [ WORD] (1-4294967295) [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - int idx_asn = 5; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_asn -= 2; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_asn]->arg); -} - -DEFUN (clear_ip_bgp_as_ipv4_soft_out, - clear_ip_bgp_as_ipv4_soft_out_cmd, - "clear ip bgp (1-4294967295) ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_number = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_instance_as_ipv4_soft_out, - clear_ip_bgp_instance_as_ipv4_soft_out_cmd, - "clear ip bgp WORD (1-4294967295) ipv4 [soft] out", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_word = 4; - int idx_number = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_vpnv4_soft_out, - clear_ip_bgp_as_vpnv4_soft_out_cmd, - "clear ip bgp (1-4294967295) vpnv4 unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_encap_soft_out, - clear_ip_bgp_as_encap_soft_out_cmd, - "clear ip bgp (1-4294967295) encap unicast [soft] out", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig outbound update\n") -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_number]->arg); -} - -DEFUN (clear_bgp_as_soft_out, - clear_bgp_as_soft_out_cmd, - "clear bgp [ WORD] [ipv6] (1-4294967295) [soft] out", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - IPV6_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR - BGP_SOFT_OUT_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_asn = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_asn -= 2; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_OUT, argv[idx_asn]->arg); -} - - -/* Inbound soft-reconfiguration */ -DEFUN (clear_ip_bgp_all_soft_in, - clear_ip_bgp_all_soft_in_cmd, - "clear ip bgp [ WORD] * [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - - -DEFUN (clear_ip_bgp_all_in_prefix_filter, - clear_ip_bgp_all_in_prefix_filter_cmd, - "clear ip bgp [ WORD] * in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_view_vrf = 3; - int idx_vrf = 4; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - -DEFUN (clear_ip_bgp_all_ipv4_soft_in, - clear_ip_bgp_all_ipv4_soft_in_cmd, - "clear ip bgp * ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - -DEFUN (clear_ip_bgp_instance_all_ipv4_soft_in, - clear_ip_bgp_instance_all_ipv4_soft_in_cmd, - "clear ip bgp WORD * ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - - - -DEFUN (clear_ip_bgp_all_ipv4_in_prefix_filter, - clear_ip_bgp_all_ipv4_in_prefix_filter_cmd, - "clear ip bgp * ipv4 in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - -DEFUN (clear_ip_bgp_all_vpnv4_soft_in, - clear_ip_bgp_all_vpnv4_soft_in_cmd, - "clear ip bgp * vpnv4 unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - -DEFUN (clear_ip_bgp_all_encap_soft_in, - clear_ip_bgp_all_encap_soft_in_cmd, - "clear ip bgp * encap unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - -DEFUN (clear_bgp_all_soft_in, - clear_bgp_all_soft_in_cmd, - "clear bgp [ WORD] [ipv6] * [soft] in", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - // dwalton - int idx_view_vrf = 2; - int idx_vrf = 3; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN, NULL); -} - -DEFUN (clear_bgp_all_in_prefix_filter, - clear_bgp_all_in_prefix_filter_cmd, - "clear bgp [ipv6] * in prefix-filter", - CLEAR_STR - BGP_STR - IPV6_STR - "Clear all peers\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - -DEFUN (clear_ip_bgp_peer_soft_in, - clear_ip_bgp_peer_soft_in_cmd, - "clear ip bgp [ WORD] [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_ipv4_word = 3; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_ipv4_word -= 2; - - return bgp_clear_vty (vty, vrf, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); -} - - -DEFUN (clear_ip_bgp_peer_in_prefix_filter, - clear_ip_bgp_peer_in_prefix_filter_cmd, - "clear ip bgp in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_IN_STR - "Push out the existing ORF prefix-list\n") -{ - int idx_ipv4_word = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_ipv4_soft_in, - clear_ip_bgp_peer_ipv4_soft_in_cmd, - "clear ip bgp ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_ipv4_word = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_ipv4_soft_in, - clear_ip_bgp_instance_peer_ipv4_soft_in_cmd, - "clear ip bgp WORD ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_ipv4_word = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); -} - - - -DEFUN (clear_ip_bgp_peer_ipv4_in_prefix_filter, - clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd, - "clear ip bgp ipv4 in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_IN_STR - "Push out the existing ORF prefix-list\n") -{ - int idx_ipv4_word = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_vpnv4_soft_in, - clear_ip_bgp_peer_vpnv4_soft_in_cmd, - "clear ip bgp vpnv4 unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_ipv4_word = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_encap_soft_in, - clear_ip_bgp_peer_encap_soft_in_cmd, - "clear ip bgp A.B.C.D encap unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") -{ - int idx_ipv4 = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_ipv4]->arg); -} - -DEFUN (clear_bgp_peer_soft_in, - clear_bgp_peer_soft_in_cmd, - "clear bgp [ WORD] [ipv6] [soft] in", - CLEAR_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_view_vrf = 2; - int idx_vrf = 3; - int idx_ipv6 = 4; - int idx_peer = 5; - char *vrf = NULL; - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - { - idx_ipv6 -= 2; - idx_peer -= 2; - } - - if (!strmatch(argv[idx_ipv6]->text, "ipv6")) - idx_peer--; - - return bgp_clear_vty (vty, vrf, AFI_IP6, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN, argv[idx_peer]->arg); -} - - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 (A.B.C.D|X:X::X:X|WORD) in prefix-filter", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "BGP neighbor address to clear\n" - * "BGP IPv6 neighbor to clear\n" - * "BGP neighbor on interface to clear\n" - * BGP_SOFT_IN_STR - * "Push out the existing ORF prefix-list\n" - * - */ -DEFUN (clear_bgp_peer_in_prefix_filter, - clear_bgp_peer_in_prefix_filter_cmd, - "clear bgp in prefix-filter", - CLEAR_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_IN_STR - "Push out the existing ORF prefix-list\n") -{ - int idx_peer = 2; - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_peer]->arg); -} - - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD peer-group WORD soft in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear ip bgp peer-group WORD in", - * CLEAR_STR - * IP_STR - * BGP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - * "clear ip bgp WORD peer-group WORD in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_ip_bgp_peer_group_soft_in, - clear_ip_bgp_peer_group_soft_in_cmd, - "clear ip bgp peer-group WORD soft in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word]->arg); -} - - - - -DEFUN (clear_ip_bgp_peer_group_in_prefix_filter, - clear_ip_bgp_peer_group_in_prefix_filter_cmd, - "clear ip bgp peer-group WORD in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_word = 4; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_group_ipv4_soft_in, - clear_ip_bgp_peer_group_ipv4_soft_in_cmd, - "clear ip bgp peer-group WORD ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_safi = 6; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_group_ipv4_soft_in, - clear_ip_bgp_instance_peer_group_ipv4_soft_in_cmd, - "clear ip bgp WORD peer-group WORD ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_word_2 = 6; - int idx_safi = 8; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word_2]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word_2]->arg); -} - - - -DEFUN (clear_ip_bgp_peer_group_ipv4_in_prefix_filter, - clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd, - "clear ip bgp peer-group WORD ipv4 in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_word = 4; - int idx_safi = 6; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_word]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 peer-group WORD in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 peer-group WORD soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp WORD peer-group WORD soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp peer-group WORD in", - * CLEAR_STR - * BGP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD peer-group WORD in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - * "clear bgp ipv6 peer-group WORD soft in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 peer-group WORD in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_bgp_peer_group_soft_in, - clear_bgp_peer_group_soft_in_cmd, - "clear bgp peer-group WORD soft in", - CLEAR_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 3; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN, argv[idx_word]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 peer-group WORD in prefix-filter", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_IN_STR - * "Push out prefix-list ORF and do inbound soft reconfig\n" - * - */ -DEFUN (clear_bgp_peer_group_in_prefix_filter, - clear_bgp_peer_group_in_prefix_filter_cmd, - "clear bgp peer-group WORD in prefix-filter", - CLEAR_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_word = 3; - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_word]->arg); -} - - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp external in", - * CLEAR_STR - * IP_STR - * BGP_STR - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - * "clear ip bgp WORD external in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - * "clear ip bgp WORD external soft in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_ip_bgp_external_soft_in, - clear_ip_bgp_external_soft_in_cmd, - "clear ip bgp external soft in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); -} - - - - -DEFUN (clear_ip_bgp_external_in_prefix_filter, - clear_ip_bgp_external_in_prefix_filter_cmd, - "clear ip bgp external in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - -DEFUN (clear_ip_bgp_external_ipv4_soft_in, - clear_ip_bgp_external_ipv4_soft_in_cmd, - "clear ip bgp external ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); -} - -DEFUN (clear_ip_bgp_instance_external_ipv4_soft_in, - clear_ip_bgp_instance_external_ipv4_soft_in_cmd, - "clear ip bgp WORD external ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); -} - - - -DEFUN (clear_ip_bgp_external_ipv4_in_prefix_filter, - clear_ip_bgp_external_ipv4_in_prefix_filter_cmd, - "clear ip bgp external ipv4 in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp WORD external in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 external soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp WORD external soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 external WORD in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - * "clear bgp ipv6 external soft in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp ipv6 external WORD in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - * "clear bgp external in", - * CLEAR_STR - * BGP_STR - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_bgp_external_soft_in, - clear_bgp_external_soft_in_cmd, - "clear bgp external soft in", - CLEAR_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN, NULL); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 external in prefix-filter", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_IN_STR - * "Push out prefix-list ORF and do inbound soft reconfig\n" - * - */ -DEFUN (clear_bgp_external_in_prefix_filter, - clear_bgp_external_in_prefix_filter_cmd, - "clear bgp external in prefix-filter", - CLEAR_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, NULL); -} - - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp (1-4294967295) in", - * CLEAR_STR - * IP_STR - * BGP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear ip bgp WORD (1-4294967295) in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear ip bgp WORD (1-4294967295) soft in", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_ip_bgp_as_soft_in, - clear_ip_bgp_as_soft_in_cmd, - "clear ip bgp (1-4294967295) soft in", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_number = 3; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_in_prefix_filter, - clear_ip_bgp_as_in_prefix_filter_cmd, - "clear ip bgp (1-4294967295) in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_ipv4_soft_in, - clear_ip_bgp_as_ipv4_soft_in_cmd, - "clear ip bgp (1-4294967295) ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_number = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_instance_as_ipv4_soft_in, - clear_ip_bgp_instance_as_ipv4_soft_in_cmd, - "clear ip bgp WORD (1-4294967295) ipv4 [soft] in", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_word = 4; - int idx_number = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_ipv4_in_prefix_filter, - clear_ip_bgp_as_ipv4_in_prefix_filter_cmd, - "clear ip bgp (1-4294967295) ipv4 in prefix-filter", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_number = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_number]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_vpnv4_soft_in, - clear_ip_bgp_as_vpnv4_soft_in_cmd, - "clear ip bgp (1-4294967295) vpnv4 unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_encap_soft_in, - clear_ip_bgp_as_encap_soft_in_cmd, - "clear ip bgp (1-4294967295) encap unicast [soft] in", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family modifier\n" - "Soft reconfig\n" - "Soft reconfig inbound update\n") -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 (1-4294967295) in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD (1-4294967295) in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 (1-4294967295) in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear bgp ipv6 (1-4294967295) soft in", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp WORD (1-4294967295) soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - * "clear bgp (1-4294967295) in", - * CLEAR_STR - * BGP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * - * "clear bgp WORD ipv6 (1-4294967295) soft in", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * BGP_SOFT_IN_STR - * - */ -DEFUN (clear_bgp_as_soft_in, - clear_bgp_as_soft_in_cmd, - "clear bgp (1-4294967295) soft in", - CLEAR_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR - BGP_SOFT_IN_STR) -{ - int idx_number = 2; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN, argv[idx_number]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 (1-4294967295) in prefix-filter", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_IN_STR - * "Push out prefix-list ORF and do inbound soft reconfig\n" - * - */ -DEFUN (clear_bgp_as_in_prefix_filter, - clear_bgp_as_in_prefix_filter_cmd, - "clear bgp (1-4294967295) in prefix-filter", - CLEAR_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_IN_STR - "Push out prefix-list ORF and do inbound soft reconfig\n") -{ - int idx_number = 2; - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_IN_ORF_PREFIX, argv[idx_number]->arg); -} - - -/* Both soft-reconfiguration */ -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD * soft", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all peers\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_ip_bgp_all_soft, - clear_ip_bgp_all_soft_cmd, - "clear ip bgp * soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - BGP_SOFT_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -DEFUN (clear_ip_bgp_all_ipv4_soft, - clear_ip_bgp_all_ipv4_soft_cmd, - "clear ip bgp * ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -DEFUN (clear_ip_bgp_instance_all_ipv4_soft, - clear_ip_bgp_instance_all_ipv4_soft_cmd, - "clear ip bgp WORD * ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -DEFUN (clear_ip_bgp_all_vpnv4_soft, - clear_ip_bgp_all_vpnv4_soft_cmd, - "clear ip bgp * vpnv4 unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all, - BGP_CLEAR_SOFT_BOTH, argv[0]); -} - -DEFUN (clear_ip_bgp_all_encap_soft, - clear_ip_bgp_all_encap_soft_cmd, - "clear ip bgp * encap unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all peers\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") -{ - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_all, - BGP_CLEAR_SOFT_BOTH, argv[0]); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 * soft", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all peers\n" - * BGP_SOFT_STR - * - * "clear bgp WORD * soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all peers\n" - * BGP_SOFT_STR - * - * "clear bgp WORD ipv6 * soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all peers\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_bgp_all_soft, - clear_bgp_all_soft_cmd, - "clear bgp * soft", - CLEAR_STR - BGP_STR - "Clear all peers\n" - BGP_SOFT_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_all, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD (A.B.C.D|WORD) soft", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "BGP neighbor address to clear\n" - * "BGP neighbor on interface to clear\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_ip_bgp_peer_soft, - clear_ip_bgp_peer_soft_cmd, - "clear ip bgp soft", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR) -{ - int idx_ipv4_word = 3; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); -} - - -DEFUN (clear_ip_bgp_peer_ipv4_soft, - clear_ip_bgp_peer_ipv4_soft_cmd, - "clear ip bgp ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_ipv4_word = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_ipv4_soft, - clear_ip_bgp_instance_peer_ipv4_soft_cmd, - "clear ip bgp WORD ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_ipv4_word = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_vpnv4_soft, - clear_ip_bgp_peer_vpnv4_soft_cmd, - "clear ip bgp vpnv4 unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP neighbor on interface to clear\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_ipv4_word = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4_word]->arg); -} - -DEFUN (clear_ip_bgp_peer_encap_soft, - clear_ip_bgp_peer_encap_soft_cmd, - "clear ip bgp A.B.C.D encap unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "BGP neighbor address to clear\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") -{ - int idx_ipv4 = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_ipv4]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 (A.B.C.D|X:X::X:X|WORD) soft", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "BGP neighbor address to clear\n" - * "BGP IPv6 neighbor to clear\n" - * "BGP neighbor on interface to clear\n" - * BGP_SOFT_STR - * - * "clear bgp WORD ipv6 (A.B.C.D|X:X::X:X|WORD) soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "BGP neighbor address to clear\n" - * "BGP IPv6 neighbor to clear\n" - * "BGP neighbor on interface to clear\n" - * BGP_SOFT_STR - * - * "clear bgp WORD (A.B.C.D|X:X::X:X|WORD) soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "BGP neighbor address to clear\n" - * "BGP IPv6 neighbor to clear\n" - * "BGP neighbor on interface to clear\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_bgp_peer_soft, - clear_bgp_peer_soft_cmd, - "clear bgp soft", - CLEAR_STR - BGP_STR - "BGP neighbor address to clear\n" - "BGP IPv6 neighbor to clear\n" - "BGP neighbor on interface to clear\n" - BGP_SOFT_STR) -{ - int idx_peer = 2; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer, - BGP_CLEAR_SOFT_BOTH, argv[idx_peer]->arg); -} - - - - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD peer-group WORD soft", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_ip_bgp_peer_group_soft, - clear_ip_bgp_peer_group_soft_cmd, - "clear ip bgp peer-group WORD soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word]->arg); -} - - -DEFUN (clear_ip_bgp_peer_group_ipv4_soft, - clear_ip_bgp_peer_group_ipv4_soft_cmd, - "clear ip bgp peer-group WORD ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_safi = 6; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word]->arg); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word]->arg); -} - -DEFUN (clear_ip_bgp_instance_peer_group_ipv4_soft, - clear_ip_bgp_instance_peer_group_ipv4_soft_cmd, - "clear ip bgp WORD peer-group WORD ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_word_2 = 6; - int idx_safi = 8; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word_2]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word_2]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp WORD ipv6 peer-group WORD soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * - * "clear bgp WORD peer-group WORD soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * - * "clear bgp ipv6 peer-group WORD soft", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all members of peer-group\n" - * "BGP peer-group name\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_bgp_peer_group_soft, - clear_bgp_peer_group_soft_cmd, - "clear bgp peer-group WORD soft", - CLEAR_STR - BGP_STR - "Clear all members of peer-group\n" - "BGP peer-group name\n" - BGP_SOFT_STR) -{ - int idx_word = 3; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group, - BGP_CLEAR_SOFT_BOTH, argv[idx_word]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD external soft", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_ip_bgp_external_soft, - clear_ip_bgp_external_soft_cmd, - "clear ip bgp external soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); -} - - -DEFUN (clear_ip_bgp_external_ipv4_soft, - clear_ip_bgp_external_ipv4_soft_cmd, - "clear ip bgp external ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR) -{ - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -DEFUN (clear_ip_bgp_instance_external_ipv4_soft, - clear_ip_bgp_instance_external_ipv4_soft_cmd, - "clear ip bgp WORD external ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear all external peers\n" - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp WORD external soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear all external peers\n" - * BGP_SOFT_STR - * - * "clear bgp WORD ipv6 external soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_STR - * - * "clear bgp ipv6 external soft", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear all external peers\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_bgp_external_soft, - clear_bgp_external_soft_cmd, - "clear bgp external soft", - CLEAR_STR - BGP_STR - "Clear all external peers\n" - BGP_SOFT_STR) -{ - if (argc == 2) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external, - BGP_CLEAR_SOFT_BOTH, NULL); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear ip bgp WORD (1-4294967295) soft", - * CLEAR_STR - * IP_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_ip_bgp_as_soft, - clear_ip_bgp_as_soft_cmd, - "clear ip bgp (1-4294967295) soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR) -{ - int idx_number = 3; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - - -DEFUN (clear_ip_bgp_as_ipv4_soft, - clear_ip_bgp_as_ipv4_soft_cmd, - "clear ip bgp (1-4294967295) ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_number = 3; - int idx_safi = 5; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); - - return bgp_clear_vty (vty, NULL,AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_instance_as_ipv4_soft, - clear_ip_bgp_instance_as_ipv4_soft_cmd, - "clear ip bgp WORD (1-4294967295) ipv4 soft", - CLEAR_STR - IP_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_word = 4; - int idx_number = 5; - int idx_safi = 7; - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_clear_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); - - return bgp_clear_vty (vty, argv[idx_word]->arg,AFI_IP, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_vpnv4_soft, - clear_ip_bgp_as_vpnv4_soft_cmd, - "clear ip bgp (1-4294967295) vpnv4 unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - BGP_SOFT_STR) -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - -DEFUN (clear_ip_bgp_as_encap_soft, - clear_ip_bgp_as_encap_soft_cmd, - "clear ip bgp (1-4294967295) encap unicast soft", - CLEAR_STR - IP_STR - BGP_STR - "Clear peers with the AS number\n" - "Address family\n" - "Address Family Modifier\n" - "Soft reconfig\n") -{ - int idx_number = 3; - return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_ENCAP, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "clear bgp ipv6 (1-4294967295) soft", - * CLEAR_STR - * BGP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * - * "clear bgp WORD ipv6 (1-4294967295) soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * - * "clear bgp WORD (1-4294967295) soft", - * CLEAR_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Clear peers with the AS number\n" - * BGP_SOFT_STR - * - */ -DEFUN (clear_bgp_as_soft, - clear_bgp_as_soft_cmd, - "clear bgp (1-4294967295) soft", - CLEAR_STR - BGP_STR - "Clear peers with the AS number\n" - BGP_SOFT_STR) -{ - int idx_number = 2; - if (argc == 3) - return bgp_clear_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[2]); - - return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as, - BGP_CLEAR_SOFT_BOTH, argv[idx_number]->arg); -} - - - - -DEFUN (show_bgp_views, - show_bgp_views_cmd, - "show bgp views", - SHOW_STR - BGP_STR - "Show the defined BGP views\n") -{ - struct list *inst = bm->bgp; - struct listnode *node; - struct bgp *bgp; - - if (!bgp_option_check (BGP_OPT_MULTIPLE_INSTANCE)) - { - vty_out (vty, "BGP Multiple Instance is not enabled%s", VTY_NEWLINE); - return CMD_WARNING; - } - - vty_out (vty, "Defined BGP views:%s", VTY_NEWLINE); - for (ALL_LIST_ELEMENTS_RO(inst, node, bgp)) - { - /* Skip VRFs. */ - if (bgp->inst_type == BGP_INSTANCE_TYPE_VRF) - continue; - vty_out (vty, "\t%s (AS%u)%s", - bgp->name ? bgp->name : "(null)", - bgp->as, VTY_NEWLINE); - } - - return CMD_SUCCESS; + if (!bgp_option_check (BGP_OPT_MULTIPLE_INSTANCE)) + { + vty_out (vty, "BGP Multiple Instance is not enabled%s", VTY_NEWLINE); + return CMD_WARNING; + } + + vty_out (vty, "Defined BGP views:%s", VTY_NEWLINE); + for (ALL_LIST_ELEMENTS_RO(inst, node, bgp)) + { + /* Skip VRFs. */ + if (bgp->inst_type == BGP_INSTANCE_TYPE_VRF) + continue; + vty_out (vty, "\t%s (AS%u)%s", + bgp->name ? bgp->name : "(null)", + bgp->as, VTY_NEWLINE); + } + + return CMD_SUCCESS; } DEFUN (show_bgp_vrfs, @@ -14401,115 +11977,12 @@ bgp_vty_init (void) /* "clear ip bgp commands" */ install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_cmd); - - - /* "clear ip bgp neighbor soft in" */ - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_group_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_external_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_as_ipv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_in_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_all_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_all_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_group_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_bgp_external_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_external_in_prefix_filter_cmd); - install_element (ENABLE_NODE, &clear_bgp_as_soft_in_cmd); - install_element (ENABLE_NODE, &clear_bgp_as_in_prefix_filter_cmd); /* clear ip bgp prefix */ install_element (ENABLE_NODE, &clear_ip_bgp_prefix_cmd); install_element (ENABLE_NODE, &clear_bgp_ipv6_safi_prefix_cmd); install_element (ENABLE_NODE, &clear_bgp_instance_ipv6_safi_prefix_cmd); - /* "clear ip bgp neighbor soft out" */ - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_group_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_external_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_as_ipv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_out_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_out_cmd); - install_element (ENABLE_NODE, &clear_bgp_all_soft_out_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_out_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_out_cmd); - install_element (ENABLE_NODE, &clear_bgp_external_soft_out_cmd); - install_element (ENABLE_NODE, &clear_bgp_as_soft_out_cmd); - - /* "clear ip bgp neighbor soft" */ - install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_group_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_external_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_instance_as_ipv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_cmd); - install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_cmd); - install_element (ENABLE_NODE, &clear_bgp_all_soft_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_soft_cmd); - install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_cmd); - install_element (ENABLE_NODE, &clear_bgp_external_soft_cmd); - install_element (ENABLE_NODE, &clear_bgp_as_soft_cmd); - /* "show ip bgp summary" commands. */ install_element (VIEW_NODE, &show_ip_bgp_summary_cmd); install_element (VIEW_NODE, &show_ip_bgp_updgrps_cmd);