]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: combine "clear bgp, clear ip bgp" commands into one DEFUN
authorDaniel Walton <dwalton@cumulusnetworks.com>
Mon, 26 Sep 2016 00:47:13 +0000 (00:47 +0000)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Mon, 26 Sep 2016 00:47:13 +0000 (00:47 +0000)
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
bgpd/bgp_vty.c

index ff5fc48f62068b09a9ab5d05f923ac7d861de9db..4788cd230af1e1bc8d0a3614f1ce54b472b9e2e9 100644 (file)
@@ -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 <view|vrf> 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 [<view|vrf> 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 [<view|vrf> WORD] <A.B.C.D|X:X::X:X|WORD|peer-group WORD>",
+       "clear [ip] bgp [<view|vrf> WORD] <*|A.B.C.D|X:X::X:X|WORD|(1-4294967295)|external|peer-group WORD> [<ipv4 unicast|ipv4 multicast|ipv6 unicast|vpnv4 unicast|encap unicast>] [<soft|soft in|soft out|in prefix-filter|in|out>]",
        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 <view|vrf> 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 [<view|vrf> 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 <view|vrf> 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 [<view|vrf> WORD] (1-4294967295)",
+DEFUN (clear_bgp_ipv6_safi_prefix,
+       clear_bgp_ipv6_safi_prefix_cmd,
+       "clear bgp ipv6 <unicast|multicast> 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 <network>/<length>,  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 [<view|vrf> WORD] * [soft] out",
+DEFUN (clear_bgp_instance_ipv6_safi_prefix,
+       clear_bgp_instance_ipv6_safi_prefix_cmd,
+       "clear bgp <view|vrf> WORD ipv6 <unicast|multicast> 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 <unicast|multicast> [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 <network>/<length>,  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 <view|vrf> WORD * ipv4 <unicast|multicast> [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 [<view|vrf> 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 <unicast|multicast> 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 <network>/<length>,  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 <view|vrf> WORD ipv6 <unicast|multicast> 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 <network>/<length>,  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 [<view|vrf> WORD] <A.B.C.D|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 <A.B.C.D|WORD> ipv4 <unicast|multicast> [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 <view|vrf> WORD <A.B.C.D|WORD> ipv4 <unicast|multicast> [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 <A.B.C.D|WORD> 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 [<view|vrf> WORD] [ipv6] <A.B.C.D|X:X::X:X|WORD> [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 [<view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD peer-group WORD ipv4 <unicast|multicast> [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 [<view|vrf> 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 [<view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD external ipv4 <unicast|multicast> [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 [<view|vrf> 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 [<view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD (1-4294967295) ipv4 <unicast|multicast> [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 [<view|vrf> 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 [<view|vrf> 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 [<view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD * ipv4 <unicast|multicast> [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 <unicast|multicast> 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 [<view|vrf> 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 [<view|vrf> WORD] <A.B.C.D|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 <A.B.C.D|WORD> 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 <A.B.C.D|WORD> ipv4 <unicast|multicast> [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 <view|vrf> WORD <A.B.C.D|WORD> ipv4 <unicast|multicast> [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 <A.B.C.D|WORD> ipv4 <unicast|multicast> 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 <A.B.C.D|WORD> 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 [<view|vrf> WORD] [ipv6] <A.B.C.D|X:X::X:X|WORD> [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 <A.B.C.D|X:X::X:X|WORD> 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 <view|vrf> 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 <view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD peer-group WORD ipv4 <unicast|multicast> [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 <unicast|multicast> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD external ipv4 <unicast|multicast> [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 <unicast|multicast> 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 <view|vrf> WORD external in",
- *     CLEAR_STR
- *     BGP_STR
- *     BGP_INSTANCE_HELP_STR
- *     "Clear all external peers\n"
- *     BGP_SOFT_IN_STR
- *
- * "clear bgp <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <unicast|multicast> [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 <view|vrf> WORD (1-4294967295) ipv4 <unicast|multicast> [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 <unicast|multicast> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <unicast|multicast> 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 <view|vrf> WORD * ipv4 <unicast|multicast> 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 <view|vrf> WORD * soft",
- *     CLEAR_STR
- *     BGP_STR
- *     BGP_INSTANCE_HELP_STR
- *     "Clear all peers\n"
- *     BGP_SOFT_STR
- *
- * "clear bgp <view|vrf> 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 <view|vrf> 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 <A.B.C.D|WORD> 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 <A.B.C.D|WORD> ipv4 <unicast|multicast> 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 <view|vrf> WORD <A.B.C.D|WORD> ipv4 <unicast|multicast> 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 <A.B.C.D|WORD> 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 <view|vrf> 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 <view|vrf> 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 <A.B.C.D|X:X::X:X|WORD> 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 <view|vrf> 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 <unicast|multicast> 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 <view|vrf> WORD peer-group WORD ipv4 <unicast|multicast> 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 <view|vrf> 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 <view|vrf> 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 <view|vrf> 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 <unicast|multicast> 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 <view|vrf> WORD external ipv4 <unicast|multicast> 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 <view|vrf> WORD external soft",
- *     CLEAR_STR
- *     BGP_STR
- *     BGP_INSTANCE_HELP_STR
- *     "Clear all external peers\n"
- *     BGP_SOFT_STR
- *
- * "clear bgp <view|vrf> 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 <view|vrf> 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 <unicast|multicast> 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 <view|vrf> WORD (1-4294967295) ipv4 <unicast|multicast> 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 <view|vrf> 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 <view|vrf> 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);