diff options
author | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-10-21 02:45:17 +0200 |
---|---|---|
committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-10-21 02:45:17 +0200 |
commit | 630a298ca76a0e37c263dc1d2c3053cbddc9ccb3 (patch) | |
tree | e68a7f14db0c32e1a6cab40178db1e6b97d75c4b | |
parent | lib: Add helper function for working with argv, update bgpd to use it (diff) | |
download | frr-630a298ca76a0e37c263dc1d2c3053cbddc9ccb3.tar.xz frr-630a298ca76a0e37c263dc1d2c3053cbddc9ccb3.zip |
lib: Clean up some bgp show functions
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
-rw-r--r-- | bgpd/bgp_vty.c | 58 |
1 files changed, 19 insertions, 39 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index cd61252a0..b22dcfac1 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -6003,6 +6003,7 @@ DEFUN (clear_ip_bgp_all, BGP_SOFT_OUT_STR) { char *vrf = NULL; + afi_t afi = AFI_IP6; safi_t safi = SAFI_UNICAST; enum clear_sort clr_sort = clear_peer; @@ -6115,25 +6116,18 @@ DEFUN (clear_ip_bgp_prefix, "Clear bestpath and re-advertise\n" "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") { - int idx_ip = 1; - int idx_view_vrf = 3; - int idx_vrf = 4; - int idx_ipv4_prefixlen = 6; char *vrf = NULL; + char *prefix = NULL; - if (!strmatch(argv[idx_ip]->text, "ip")) - { - idx_view_vrf--; - idx_vrf--; - idx_ipv4_prefixlen--; - } + int idx = 0; - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; - else - idx_ipv4_prefixlen -= 2; + /* [<view|vrf> WORD] */ + if (argv_find (argv, argc, "WORD", &idx)) + vrf = argv[idx]->arg; + + prefix = argv[argc-1]->arg; - return bgp_clear_prefix (vty, vrf, argv[idx_ipv4_prefixlen]->arg, AFI_IP, SAFI_UNICAST, NULL); + return bgp_clear_prefix (vty, vrf, prefix, AFI_IP, SAFI_UNICAST, NULL); } DEFUN (clear_bgp_ipv6_safi_prefix, @@ -8758,39 +8752,25 @@ DEFUN (show_ip_bgp_neighbors, "Neighbor on bgp configured interface\n" "JavaScript Object Notation\n") { - int idx_ip = 1; - int idx_view_vrf = 3; - int idx_vrf = 4; - int idx_peer; char *vrf = NULL; char *sh_arg = NULL; enum show_type sh_type; u_char uj = use_json(argc, argv); - if (!strmatch(argv[idx_ip]->text, "ip")) - { - idx_view_vrf--; - idx_vrf--; - } - - if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) - vrf = argv[idx_vrf]->arg; + int idx = 0; - if (uj) - idx_peer = argc - 2; - else - idx_peer = argc - 1; + if (argv_find (argv, argc, "WORD", &idx)) + vrf = argv[idx]->arg; - if (strmatch(argv[idx_peer]->text, "neighbors")) - { - sh_type = show_all; - } + if (argv_find (argv, argc, "A.B.C.D", &idx) || argv_find (argv, argc, "X:X::X:X", &idx) || + argv_find (argv, argc, "WORD", &idx)) + { + sh_type = show_peer; + sh_arg = argv[idx]->arg; + } else - { - sh_type = show_peer; - sh_arg = argv[idx_peer]->arg; - } + sh_type = show_all; return bgp_show_neighbor_vty (vty, vrf, sh_type, sh_arg, uj); } |