diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 406ecb1..7af4e81 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -4978,8 +4978,8 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
@@ -4996,7 +4996,7 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_ip_bgp_all_soft_out,
        clear_ip_bgp_instance_all_soft_out_cmd,
@@ -5007,8 +5007,8 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_all_ipv4_soft_out,
        clear_ip_bgp_all_ipv4_soft_out_cmd,
@@ -5020,8 +5020,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
@@ -5041,7 +5041,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_instance_all_ipv4_soft_out,
        clear_ip_bgp_instance_all_ipv4_soft_out_cmd,
@@ -5055,7 +5055,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
@@ -5074,8 +5074,8 @@
        "Clear all peers\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\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);
@@ -5090,7 +5090,7 @@
        "Clear all peers\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_all_encap_soft_out,
        clear_ip_bgp_all_encap_soft_out_cmd,
@@ -5125,8 +5125,8 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
@@ -5144,8 +5144,8 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_all_soft_out,
        clear_bgp_all_out_cmd,
@@ -5153,7 +5153,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_all_soft_out,
        clear_bgp_ipv6_all_soft_out_cmd,
@@ -5162,8 +5162,8 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_all_soft_out,
        clear_bgp_ipv6_all_out_cmd,
@@ -5172,7 +5172,7 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_bgp_ipv6_safi_prefix,
        clear_bgp_ipv6_safi_prefix_cmd,
@@ -5197,8 +5197,8 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5211,7 +5211,7 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_peer_ipv4_soft_out,
        clear_ip_bgp_peer_ipv4_soft_out_cmd,
@@ -5223,8 +5223,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
@@ -5244,7 +5244,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_peer_vpnv4_soft_out,
        clear_ip_bgp_peer_vpnv4_soft_out_cmd,
@@ -5255,8 +5255,8 @@
        "BGP neighbor address to clear\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5271,7 +5271,7 @@
        "BGP neighbor address to clear\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_peer_encap_soft_out,
        clear_ip_bgp_peer_encap_soft_out_cmd,
@@ -5307,8 +5307,8 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5322,8 +5322,8 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_peer_soft_out,
        clear_bgp_peer_out_cmd,
@@ -5332,7 +5332,7 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_peer_soft_out,
        clear_bgp_ipv6_peer_out_cmd,
@@ -5342,7 +5342,7 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_peer_group_soft_out,
        clear_ip_bgp_peer_group_soft_out_cmd, 
@@ -5352,8 +5352,8 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5367,7 +5367,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_peer_group_ipv4_soft_out,
        clear_ip_bgp_peer_group_ipv4_soft_out_cmd,
@@ -5380,8 +5380,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
@@ -5402,7 +5402,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_bgp_peer_group_soft_out,
        clear_bgp_peer_group_soft_out_cmd,
@@ -5411,8 +5411,8 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5426,8 +5426,8 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_peer_group_soft_out,
        clear_bgp_peer_group_out_cmd,
@@ -5436,7 +5436,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_peer_group_soft_out,
        clear_bgp_ipv6_peer_group_out_cmd,
@@ -5446,7 +5446,7 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_external_soft_out,
        clear_ip_bgp_external_soft_out_cmd, 
@@ -5455,8 +5455,8 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_OUT, NULL);
@@ -5469,7 +5469,7 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_external_ipv4_soft_out,
        clear_ip_bgp_external_ipv4_soft_out_cmd,
@@ -5481,8 +5481,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
@@ -5502,7 +5502,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_bgp_external_soft_out,
        clear_bgp_external_soft_out_cmd,
@@ -5510,8 +5510,8 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_OUT, NULL);
@@ -5524,8 +5524,8 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_external_soft_out,
        clear_bgp_external_out_cmd,
@@ -5533,7 +5533,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_external_soft_out,
        clear_bgp_ipv6_external_out_cmd,
@@ -5542,7 +5542,7 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_as_soft_out,
        clear_ip_bgp_as_soft_out_cmd,
@@ -5551,8 +5551,8 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5565,7 +5565,7 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_as_ipv4_soft_out,
        clear_ip_bgp_as_ipv4_soft_out_cmd,
@@ -5577,8 +5577,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
@@ -5598,7 +5598,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_as_vpnv4_soft_out,
        clear_ip_bgp_as_vpnv4_soft_out_cmd,
@@ -5609,8 +5609,8 @@
        "Clear peers with the AS number\n"
        "Address family\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5625,7 +5625,7 @@
        "Clear peers with the AS number\n"
        "Address family\n"
        "Address Family modifier\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 DEFUN (clear_ip_bgp_as_encap_soft_out,
        clear_ip_bgp_as_encap_soft_out_cmd,
@@ -5660,8 +5660,8 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_OUT, argv[0]);
@@ -5674,8 +5674,8 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_as_soft_out,
        clear_bgp_as_out_cmd,
@@ -5683,7 +5683,7 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 ALIAS (clear_bgp_as_soft_out,
        clear_bgp_ipv6_as_out_cmd,
@@ -5692,7 +5692,7 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig outbound update\n")
+       BGP_SOFT_OUT_STR)
 
 /* Inbound soft-reconfiguration */
 DEFUN (clear_ip_bgp_all_soft_in,
@@ -5702,8 +5702,8 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
@@ -5722,8 +5722,8 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_ip_bgp_all_soft_in,
        clear_ip_bgp_all_in_cmd,
@@ -5732,7 +5732,7 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_all_in_prefix_filter,
        clear_ip_bgp_all_in_prefix_filter_cmd,
@@ -5741,7 +5741,7 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (argc== 1)
@@ -5761,7 +5761,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 
 
@@ -5775,8 +5775,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
@@ -5796,7 +5796,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_instance_all_ipv4_soft_in,
        clear_ip_bgp_instance_all_ipv4_soft_in_cmd,
@@ -5810,8 +5810,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, clear_all,
@@ -5831,7 +5831,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (strncmp (argv[0], "m", 1) == 0)
@@ -5852,7 +5852,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (strncmp (argv[1], "m", 1) == 0)
@@ -5872,8 +5872,8 @@
        "Clear all peers\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\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);
@@ -5888,7 +5888,7 @@
        "Clear all peers\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_all_encap_soft_in,
        clear_ip_bgp_all_encap_soft_in_cmd,
@@ -5923,8 +5923,8 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
@@ -5942,8 +5942,8 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_all_soft_in,
        clear_bgp_ipv6_all_soft_in_cmd,
@@ -5952,8 +5952,8 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_all_soft_in,
        clear_bgp_all_in_cmd,
@@ -5961,7 +5961,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_all_soft_in,
        clear_bgp_ipv6_all_in_cmd,
@@ -5970,7 +5970,7 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_bgp_all_in_prefix_filter,
        clear_bgp_all_in_prefix_filter_cmd,
@@ -5978,7 +5978,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig inbound update\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,
@@ -5992,7 +5992,7 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 
 DEFUN (clear_ip_bgp_peer_soft_in,
@@ -6002,8 +6002,8 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6016,7 +6016,7 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
        
 DEFUN (clear_ip_bgp_peer_in_prefix_filter,
        clear_ip_bgp_peer_in_prefix_filter_cmd,
@@ -6025,7 +6025,7 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out the existing ORF prefix-list\n")
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
@@ -6042,8 +6042,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
@@ -6063,7 +6063,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_peer_ipv4_in_prefix_filter,
        clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd,
@@ -6075,7 +6075,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out the existing ORF prefix-list\n")
 {
   if (strncmp (argv[1], "m", 1) == 0)
@@ -6095,8 +6095,8 @@
        "BGP neighbor address to clear\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6111,7 +6111,7 @@
        "BGP neighbor address to clear\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_peer_encap_soft_in,
        clear_ip_bgp_peer_encap_soft_in_cmd,
@@ -6147,8 +6147,8 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6162,8 +6162,8 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_peer_soft_in,
        clear_bgp_peer_in_cmd,
@@ -6172,7 +6172,7 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_peer_soft_in,
        clear_bgp_ipv6_peer_in_cmd,
@@ -6182,7 +6182,7 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_bgp_peer_in_prefix_filter,
        clear_bgp_peer_in_prefix_filter_cmd,
@@ -6191,7 +6191,7 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out the existing ORF prefix-list\n")
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
@@ -6206,7 +6206,7 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out the existing ORF prefix-list\n")
 
 DEFUN (clear_ip_bgp_peer_group_soft_in,
@@ -6217,8 +6217,8 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6232,7 +6232,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_peer_group_in_prefix_filter,
        clear_ip_bgp_peer_group_in_prefix_filter_cmd,
@@ -6242,7 +6242,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\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_group,
@@ -6260,8 +6260,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
@@ -6282,7 +6282,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_peer_group_ipv4_in_prefix_filter,
        clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd,
@@ -6295,7 +6295,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (strncmp (argv[1], "m", 1) == 0)
@@ -6313,8 +6313,8 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6328,8 +6328,8 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_peer_group_soft_in,
        clear_bgp_peer_group_in_cmd,
@@ -6338,7 +6338,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_peer_group_soft_in,
        clear_bgp_ipv6_peer_group_in_cmd,
@@ -6348,7 +6348,7 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_bgp_peer_group_in_prefix_filter,
        clear_bgp_peer_group_in_prefix_filter_cmd,
@@ -6357,7 +6357,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\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_group,
@@ -6372,7 +6372,7 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 
 DEFUN (clear_ip_bgp_external_soft_in,
@@ -6382,8 +6382,8 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_IN, NULL);
@@ -6396,7 +6396,7 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_external_in_prefix_filter,
        clear_ip_bgp_external_in_prefix_filter_cmd,
@@ -6405,7 +6405,7 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig inbound update\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,
@@ -6422,8 +6422,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
@@ -6443,7 +6443,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_external_ipv4_in_prefix_filter,
        clear_ip_bgp_external_ipv4_in_prefix_filter_cmd,
@@ -6455,7 +6455,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (strncmp (argv[0], "m", 1) == 0)
@@ -6472,8 +6472,8 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_IN, NULL);
@@ -6486,8 +6486,8 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_external_soft_in,
        clear_bgp_external_in_cmd,
@@ -6495,7 +6495,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_external_soft_in,
        clear_bgp_ipv6_external_in_cmd,
@@ -6504,7 +6504,7 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_bgp_external_in_prefix_filter,
        clear_bgp_external_in_prefix_filter_cmd,
@@ -6512,7 +6512,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig inbound update\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,
@@ -6526,7 +6526,7 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 
 DEFUN (clear_ip_bgp_as_soft_in,
@@ -6536,8 +6536,8 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6550,7 +6550,7 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_as_in_prefix_filter,
        clear_ip_bgp_as_in_prefix_filter_cmd,
@@ -6559,7 +6559,7 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\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_as,
@@ -6576,8 +6576,8 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
@@ -6597,7 +6597,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_as_ipv4_in_prefix_filter,
        clear_ip_bgp_as_ipv4_in_prefix_filter_cmd,
@@ -6609,7 +6609,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 {
   if (strncmp (argv[1], "m", 1) == 0)
@@ -6629,8 +6629,8 @@
        "Clear peers with the AS number\n"
        "Address family\n"
        "Address Family modifier\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6645,7 +6645,7 @@
        "Clear peers with the AS number\n"
        "Address family\n"
        "Address Family modifier\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_ip_bgp_as_encap_soft_in,
        clear_ip_bgp_as_encap_soft_in_cmd,
@@ -6680,8 +6680,8 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_IN, argv[0]);
@@ -6694,8 +6694,8 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_STR
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_as_soft_in,
        clear_bgp_as_in_cmd,
@@ -6703,7 +6703,7 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 ALIAS (clear_bgp_as_soft_in,
        clear_bgp_ipv6_as_in_cmd,
@@ -6712,7 +6712,7 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\n")
+       BGP_SOFT_IN_STR)
 
 DEFUN (clear_bgp_as_in_prefix_filter,
        clear_bgp_as_in_prefix_filter_cmd,
@@ -6720,7 +6720,7 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\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_as,
@@ -6734,7 +6734,7 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig inbound update\n"
+       BGP_SOFT_IN_STR
        "Push out prefix-list ORF and do inbound soft reconfig\n")
 
 /* Both soft-reconfiguration */
@@ -6745,7 +6745,7 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
@@ -6764,7 +6764,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 
 DEFUN (clear_ip_bgp_all_ipv4_soft,
@@ -6777,7 +6777,7 @@
        "Address family\n"
        "Address Family Modifier\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
@@ -6799,7 +6799,7 @@
        "Address family\n"
        "Address Family Modifier\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_all,
@@ -6818,7 +6818,7 @@
        "Clear all peers\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_all,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -6845,7 +6845,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
@@ -6863,7 +6863,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 ALIAS (clear_bgp_all_soft,
        clear_bgp_ipv6_all_soft_cmd,
@@ -6872,7 +6872,7 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 DEFUN (clear_ip_bgp_peer_soft,
        clear_ip_bgp_peer_soft_cmd,
@@ -6881,7 +6881,7 @@
        IP_STR
        BGP_STR
        "BGP neighbor address to clear\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -6897,7 +6897,7 @@
        "Address family\n"
        "Address Family Modifier\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_peer,
@@ -6916,7 +6916,7 @@
        "BGP neighbor address to clear\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_peer,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -6944,7 +6944,7 @@
        BGP_STR
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_peer,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -6958,7 +6958,7 @@
        "Address family\n"
        "BGP neighbor address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 DEFUN (clear_ip_bgp_peer_group_soft,
        clear_ip_bgp_peer_group_soft_cmd,
@@ -6968,7 +6968,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -6985,7 +6985,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_group,
@@ -7002,7 +7002,7 @@
        BGP_STR
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_group,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -7016,7 +7016,7 @@
        "Address family\n"
        "Clear all members of peer-group\n"
        "BGP peer-group name\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 DEFUN (clear_ip_bgp_external_soft,
        clear_ip_bgp_external_soft_cmd,
@@ -7025,7 +7025,7 @@
        IP_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_BOTH, NULL);
@@ -7041,7 +7041,7 @@
        "Address family\n"
        "Address Family modifier\n"
        "Address Family modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[0], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_external,
@@ -7057,7 +7057,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all external peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_external,
 			BGP_CLEAR_SOFT_BOTH, NULL);
@@ -7070,7 +7070,7 @@
        BGP_STR
        "Address family\n"
        "Clear all external peers\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 DEFUN (clear_ip_bgp_as_soft,
        clear_ip_bgp_as_soft_cmd,
@@ -7079,7 +7079,7 @@
        IP_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -7095,7 +7095,7 @@
        "Address family\n"
        "Address Family Modifier\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   if (strncmp (argv[1], "m", 1) == 0)
     return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, clear_as,
@@ -7114,7 +7114,7 @@
        "Clear peers with the AS number\n"
        "Address family\n"
        "Address Family Modifier\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, clear_as,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -7141,7 +7141,7 @@
        CLEAR_STR
        BGP_STR
        "Clear peers with the AS number\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 {
   return bgp_clear_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, clear_as,
 			BGP_CLEAR_SOFT_BOTH, argv[0]);
@@ -7154,7 +7154,7 @@
        BGP_STR
        "Address family\n"
        "Clear peers with the AS number\n"
-       "Soft reconfig\n")
+       BGP_SOFT_STR)
 
 /* RS-client soft reconfiguration. */
 DEFUN (clear_bgp_all_rsclient,
@@ -7163,7 +7163,7 @@
        CLEAR_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_all,
@@ -7180,7 +7180,7 @@
        BGP_STR
        "Address family\n"
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 ALIAS (clear_bgp_all_rsclient,
        clear_bgp_instance_all_rsclient_cmd,
@@ -7190,7 +7190,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 ALIAS (clear_bgp_all_rsclient,
        clear_bgp_ipv6_instance_all_rsclient_cmd,
@@ -7201,7 +7201,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 DEFUN (clear_ip_bgp_all_rsclient,
        clear_ip_bgp_all_rsclient_cmd,
@@ -7210,7 +7210,7 @@
        IP_STR
        BGP_STR
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 {
   if (argc == 1)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_all,
@@ -7229,7 +7229,7 @@
        "BGP view\n"
        "view name\n"
        "Clear all peers\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 DEFUN (clear_bgp_peer_rsclient,
        clear_bgp_peer_rsclient_cmd,
@@ -7238,7 +7238,7 @@
        BGP_STR
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 {
   if (argc == 2)
     return bgp_clear_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, clear_peer,
@@ -7256,7 +7256,7 @@
        "Address family\n"
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 ALIAS (clear_bgp_peer_rsclient,
        clear_bgp_instance_peer_rsclient_cmd,
@@ -7267,7 +7267,7 @@
        "view name\n"
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 ALIAS (clear_bgp_peer_rsclient,
        clear_bgp_ipv6_instance_peer_rsclient_cmd,
@@ -7279,7 +7279,7 @@
        "view name\n"
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 DEFUN (clear_ip_bgp_peer_rsclient,
        clear_ip_bgp_peer_rsclient_cmd,
@@ -7289,7 +7289,7 @@
        BGP_STR
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 {
   if (argc == 2)
     return bgp_clear_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, clear_peer,
@@ -7309,7 +7309,7 @@
        "view name\n"
        "BGP neighbor IP address to clear\n"
        "BGP IPv6 neighbor to clear\n"
-       "Soft reconfig for rsclient RIB\n")
+       BGP_SOFT_RSCLIENT_RIB_STR)
 
 DEFUN (show_bgp_views,
        show_bgp_views_cmd,
diff --git a/lib/command.h b/lib/command.h
index 2c3b1a9..cc5dd08 100644
--- a/lib/command.h
+++ b/lib/command.h
@@ -485,6 +485,10 @@
 #define CLEAR_STR "Reset functions\n"
 #define RIP_STR "RIP information\n"
 #define BGP_STR "BGP information\n"
+#define BGP_SOFT_STR "Soft reconfig inbound and outbound updates\n"
+#define BGP_SOFT_IN_STR "Send route-refresh unless using 'soft-reconfiguration inbound'\n"
+#define BGP_SOFT_OUT_STR "Resend all outbound updates\n"
+#define BGP_SOFT_RSCLIENT_RIB_STR "Soft reconfig for rsclient RIB\n"
 #define OSPF_STR "OSPF information\n"
 #define NEIGHBOR_STR "Specify neighbor router\n"
 #define DEBUG_STR "Debugging functions (see also 'undebug')\n"
