]> git.proxmox.com Git - mirror_frr.git/commitdiff
Should be able to "no" the full text of any config line
authorDaniel Walton <dwalton@cumulusnetworks.com>
Mon, 23 Nov 2015 18:05:03 +0000 (18:05 +0000)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Mon, 23 Nov 2015 18:05:03 +0000 (18:05 +0000)
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-5816

19 files changed:
bgpd/bgp_bfd.c
bgpd/bgp_clist.c
bgpd/bgp_clist.h
bgpd/bgp_ecommunity.c
bgpd/bgp_route.c
bgpd/bgp_vty.c
bgpd/bgpd.c
lib/vty.h
ospf6d/ospf6_area.c
ospf6d/ospf6_interface.c
ospf6d/ospf6_spf.c
ospfd/ospf_bfd.c
ospfd/ospf_te.c
ospfd/ospf_vty.c
zebra/router-id.c
zebra/rtadv.c
zebra/zebra_routemap.c
zebra/zebra_vty.c
zebra/zserv.c

index 011ccef941c32f8698357b725a7340c5d8eb3d30..177c4d0f070f2e97359eae10c49d28786c53e69f 100644 (file)
@@ -494,6 +494,17 @@ DEFUN (no_neighbor_bfd,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_neighbor_bfd,
+       no_neighbor_bfd_val_cmd,
+       NO_NEIGHBOR_CMD2 "bfd " BFD_CMD_DETECT_MULT_RANGE BFD_CMD_MIN_RX_RANGE BFD_CMD_MIN_TX_RANGE,
+       NO_STR
+       NEIGHBOR_STR
+       NEIGHBOR_ADDR_STR2
+       "Disables BFD support\n"
+       "Detect Multiplier\n"
+       "Required min receive interval\n"
+       "Desired min transmit interval\n")
+
 void
 bgp_bfd_init(void)
 {
@@ -505,4 +516,5 @@ bgp_bfd_init(void)
   install_element (BGP_NODE, &neighbor_bfd_cmd);
   install_element (BGP_NODE, &neighbor_bfd_param_cmd);
   install_element (BGP_NODE, &no_neighbor_bfd_cmd);
+  install_element (BGP_NODE, &no_neighbor_bfd_val_cmd);
 }
index 1d1d234c143334450b542ec516ea04b48c61fdb5..4beae4391e52479a3b27c36cd8a69ebb1be47a9f 100644 (file)
@@ -312,16 +312,16 @@ community_list_entry_lookup (struct community_list *list, const void *arg,
       switch (entry->style)
         {
         case COMMUNITY_LIST_STANDARD:
-          if (community_cmp (entry->u.com, arg))
+          if (entry->direct == direct && community_cmp (entry->u.com, arg))
             return entry;
           break;
         case EXTCOMMUNITY_LIST_STANDARD:
-          if (ecommunity_cmp (entry->u.ecom, arg))
+          if (entry->direct == direct && ecommunity_cmp (entry->u.ecom, arg))
             return entry;
           break;
         case COMMUNITY_LIST_EXPANDED:
         case EXTCOMMUNITY_LIST_EXPANDED:
-          if (strcmp (entry->config, arg) == 0)
+          if (entry->direct == direct && strcmp (entry->config, arg) == 0)
             return entry;
           break;
         default:
@@ -765,17 +765,15 @@ community_list_set (struct community_list_handler *ch,
   return 0;
 }
 
-/* Unset community-list.  When str is NULL, delete all of
-   community-list entry belongs to the specified name.  */
+/* Unset community-list */
 int
 community_list_unset (struct community_list_handler *ch,
                       const char *name, const char *str, 
-                      int direct, int style)
+                      int direct, int style, int delete_all)
 {
   struct community_entry *entry = NULL;
   struct community_list *list;
   struct community *com = NULL;
-  regex_t *regex = NULL;
 
   /* Lookup community list.  */
   list = community_list_lookup (ch, name, COMMUNITY_LIST_MASTER);
@@ -783,7 +781,7 @@ community_list_unset (struct community_list_handler *ch,
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   /* Delete all of entry belongs to this community-list.  */
-  if (!str)
+  if (delete_all)
     {
       community_list_delete (list);
       route_map_notify_dependencies(name, RMAP_EVENT_CLIST_DELETED);
@@ -791,23 +789,19 @@ community_list_unset (struct community_list_handler *ch,
     }
 
   if (style == COMMUNITY_LIST_STANDARD)
-    com = community_str2com (str);
-  else
-    regex = bgp_regcomp (str);
-
-  if (! com && ! regex)
-    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+    {
+      if (str)
+        com = community_str2com (str);
+    }
 
   if (com)
-    entry = community_list_entry_lookup (list, com, direct);
+    {
+      entry = community_list_entry_lookup (list, com, direct);
+      community_free (com);
+    }
   else
     entry = community_list_entry_lookup (list, str, direct);
 
-  if (com)
-    community_free (com);
-  if (regex)
-    bgp_regex_free (regex);
-
   if (!entry)
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
@@ -894,12 +888,11 @@ extcommunity_list_set (struct community_list_handler *ch,
 int
 extcommunity_list_unset (struct community_list_handler *ch,
                          const char *name, const char *str, 
-                         int direct, int style)
+                         int direct, int style, int delete_all)
 {
   struct community_entry *entry = NULL;
   struct community_list *list;
   struct ecommunity *ecom = NULL;
-  regex_t *regex = NULL;
 
   /* Lookup extcommunity list.  */
   list = community_list_lookup (ch, name, EXTCOMMUNITY_LIST_MASTER);
@@ -907,7 +900,7 @@ extcommunity_list_unset (struct community_list_handler *ch,
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
   /* Delete all of entry belongs to this extcommunity-list.  */
-  if (!str)
+  if (delete_all)
     {
       community_list_delete (list);
       route_map_notify_dependencies(name, RMAP_EVENT_ECLIST_DELETED);
@@ -915,23 +908,19 @@ extcommunity_list_unset (struct community_list_handler *ch,
     }
 
   if (style == EXTCOMMUNITY_LIST_STANDARD)
-    ecom = ecommunity_str2com (str, 0, 1);
-  else
-    regex = bgp_regcomp (str);
-
-  if (! ecom && ! regex)
-    return COMMUNITY_LIST_ERR_MALFORMED_VAL;
+    {
+      if (str)
+        ecom = ecommunity_str2com (str, 0, 1);
+    }
 
   if (ecom)
-    entry = community_list_entry_lookup (list, ecom, direct);
+    {
+      entry = community_list_entry_lookup (list, ecom, direct);
+      ecommunity_free (&ecom);
+    }
   else
     entry = community_list_entry_lookup (list, str, direct);
 
-  if (ecom)
-    ecommunity_free (&ecom);
-  if (regex)
-    bgp_regex_free (regex);
-
   if (!entry)
     return COMMUNITY_LIST_ERR_CANT_FIND_LIST;
 
index 5dcb3b4c1a59fd69bf2930ddef4de92a9bb27a00..277ab7226c53a528c11238adb31913cca1bb315b 100644 (file)
@@ -132,13 +132,13 @@ extern int community_list_set (struct community_list_handler *ch,
                               int style);
 extern int community_list_unset (struct community_list_handler *ch,
                                 const char *name, const char *str,
-                                int direct, int style);
+                                int direct, int style, int delete_all);
 extern int extcommunity_list_set (struct community_list_handler *ch,
                                  const char *name, const char *str,
                                  int direct, int style);
 extern int extcommunity_list_unset (struct community_list_handler *ch,
                                    const char *name, const char *str,
-                                   int direct, int style);
+                                   int direct, int style, int delete_all);
 
 extern struct community_list_master *
 community_list_master_lookup (struct community_list_handler *, int);
index de6d383174d4805fc24129ba13f6e35fc7ed79f8..2a6bb23b2fe50b4264729104e123cbef10f8b269 100644 (file)
@@ -260,6 +260,12 @@ ecommunity_cmp (const void *arg1, const void *arg2)
 {
   const struct ecommunity *ecom1 = arg1;
   const struct ecommunity *ecom2 = arg2;
+
+  if (ecom1 == NULL && ecom2 == NULL)
+    return 1;
+
+  if (ecom1 == NULL || ecom2 == NULL)
+    return 0;
   
   return (ecom1->size == ecom2->size
          && memcmp (ecom1->val, ecom2->val, ecom1->size * ECOMMUNITY_SIZE) == 0);
index c06d27f35147d529106a3db6c65807410eeff816..f48bdea5d89ebe231b07f41d79130e7fe8642d8e 100644 (file)
@@ -12990,6 +12990,14 @@ ALIAS (bgp_damp_unset,
        "Value to start suppressing a route\n"
        "Maximum duration to suppress a stable route\n")
 
+ALIAS (bgp_damp_unset,
+       bgp_damp_unset3_cmd,
+       "no bgp dampening <1-45>",
+       NO_STR
+       "BGP Specific commands\n"
+       "Enable route-flap dampening\n"
+       "Half-life time for the penalty\n")
+
 DEFUN (show_ip_bgp_dampened_paths,
        show_ip_bgp_dampened_paths_cmd,
        "show ip bgp dampened-paths",
@@ -14030,11 +14038,13 @@ bgp_route_init (void)
   install_element (BGP_NODE, &bgp_damp_set3_cmd);
   install_element (BGP_NODE, &bgp_damp_unset_cmd);
   install_element (BGP_NODE, &bgp_damp_unset2_cmd);
+  install_element (BGP_NODE, &bgp_damp_unset3_cmd);
   install_element (BGP_IPV4_NODE, &bgp_damp_set_cmd);
   install_element (BGP_IPV4_NODE, &bgp_damp_set2_cmd);
   install_element (BGP_IPV4_NODE, &bgp_damp_set3_cmd);
   install_element (BGP_IPV4_NODE, &bgp_damp_unset_cmd);
   install_element (BGP_IPV4_NODE, &bgp_damp_unset2_cmd);
+  install_element (BGP_IPV4_NODE, &bgp_damp_unset3_cmd);
 }
 
 void
index 2c75a6e7e3735b94ca6ba5fab28e529cb25d727f..0a94ff4699f775b266bad930210e21447861902a 100644 (file)
@@ -570,6 +570,15 @@ DEFUN (no_bgp_config_type,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_bgp_config_type,
+       no_bgp_config_type_val_cmd,
+       "no bgp config-type (cisco|zebra)",
+       NO_STR
+       BGP_STR
+       "Configuration type\n"
+       "cisco\n"
+       "zebra\n")
+
 DEFUN (no_synchronization,
        no_synchronization_cmd,
        "no synchronization",
@@ -846,13 +855,21 @@ DEFUN (no_bgp_cluster_id,
 }
 
 ALIAS (no_bgp_cluster_id,
-       no_bgp_cluster_id_arg_cmd,
+       no_bgp_cluster_id_ip_cmd,
        "no bgp cluster-id A.B.C.D",
        NO_STR
        BGP_STR
        "Configure Route-Reflector Cluster-id\n"
        "Route-Reflector Cluster-id in IP address format\n")
 
+ALIAS (no_bgp_cluster_id,
+       no_bgp_cluster_id_decimal_cmd,
+       "no bgp cluster-id <1-4294967295>",
+       NO_STR
+       BGP_STR
+       "Configure Route-Reflector Cluster-id\n"
+       "Route-Reflector Cluster-id as 32 bit quantity\n")
+
 DEFUN (bgp_confederation_identifier,
        bgp_confederation_identifier_cmd,
        "bgp confederation identifier " CMD_AS_RANGE,
@@ -2264,6 +2281,15 @@ DEFUN (no_bgp_default_subgroup_pkt_queue_max,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_bgp_default_subgroup_pkt_queue_max,
+       no_bgp_default_subgroup_pkt_queue_max_val_cmd,
+       "no bgp default subgroup-pkt-queue-max <20-100>",
+       NO_STR
+       "BGP specific commands\n"
+       "Configure BGP defaults\n"
+       "subgroup-pkt-queue-max\n"
+       "Configure subgroup packet queue max\n")
+
 DEFUN (bgp_rr_allow_outbound_policy,
        bgp_rr_allow_outbound_policy_cmd,
        "bgp route-reflector allow-outbound-policy",
@@ -2344,6 +2370,14 @@ DEFUN (no_bgp_listen_limit,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_bgp_listen_limit,
+       no_bgp_listen_limit_val_cmd,
+       "no bgp listen limit " DYNAMIC_NEIGHBOR_LIMIT_RANGE,
+       NO_STR
+       "BGP specific commands\n"
+       "Configure BGP defaults\n"
+       "maximum number of BGP Dynamic Neighbors that can be created\n"
+       "Configure Dynamic Neighbors listen limit value\n")
 
 /*
  * Check if this listen range is already configured. Check for exact
@@ -3025,6 +3059,15 @@ DEFUN (no_neighbor_password,
   return bgp_vty_return (vty, ret);
 }
 
+ALIAS (no_neighbor_password,
+       no_neighbor_password_val_cmd,
+       NO_NEIGHBOR_CMD2 "password LINE",
+       NO_STR
+       NEIGHBOR_STR
+       NEIGHBOR_ADDR_STR2
+       "Set a password\n"
+       "The password\n")
+
 DEFUN (neighbor_activate,
        neighbor_activate_cmd,
        NEIGHBOR_CMD2 "activate",
@@ -4639,6 +4682,16 @@ DEFUN (no_neighbor_timers,
   return peer_timers_unset_vty (vty, argv[0]);
 }
 
+ALIAS (no_neighbor_timers,
+       no_neighbor_timers_val_cmd,
+       NO_NEIGHBOR_CMD2 "timers <0-65535> <0-65535>",
+       NO_STR
+       NEIGHBOR_STR
+       NEIGHBOR_ADDR_STR2
+       "BGP per neighbor timers\n"
+       "Keepalive interval\n"
+       "Holdtime\n")
+
 static int
 peer_timers_connect_set_vty (struct vty *vty, const char *ip_str, 
                              const char *time_str)
@@ -5389,7 +5442,7 @@ ALIAS (no_neighbor_maximum_prefix,
 
 ALIAS (no_neighbor_maximum_prefix,
        no_neighbor_maximum_prefix_threshold_cmd,
-       NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> warning-only",
+       NO_NEIGHBOR_CMD2 "maximum-prefix <1-4294967295> <1-100>",
        NO_STR
        NEIGHBOR_STR
        NEIGHBOR_ADDR_STR2
@@ -5496,6 +5549,15 @@ DEFUN (no_neighbor_allowas_in,
   return bgp_vty_return (vty, ret);
 }
 
+ALIAS (no_neighbor_allowas_in,
+       no_neighbor_allowas_in_val_cmd,
+       NO_NEIGHBOR_CMD2 "allowas-in <1-10>",
+       NO_STR
+       NEIGHBOR_STR
+       NEIGHBOR_ADDR_STR2
+       "allow local ASN appears in aspath attribute\n"
+       "Number of occurances of AS number\n")
+
 DEFUN (neighbor_ttl_security,
        neighbor_ttl_security_cmd,
        NEIGHBOR_CMD2 "ttl-security hops <1-254>",
@@ -11910,7 +11972,7 @@ bgp_vty_init (void)
 
   /* "bgp config-type" commands. */
   install_element (CONFIG_NODE, &bgp_config_type_cmd);
-  install_element (CONFIG_NODE, &no_bgp_config_type_cmd);
+  install_element (CONFIG_NODE, &no_bgp_config_type_val_cmd);
 
   /* Dummy commands (Currently not supported) */
   install_element (BGP_NODE, &no_synchronization_cmd);
@@ -11934,7 +11996,8 @@ bgp_vty_init (void)
   install_element (BGP_NODE, &bgp_cluster_id_cmd);
   install_element (BGP_NODE, &bgp_cluster_id32_cmd);
   install_element (BGP_NODE, &no_bgp_cluster_id_cmd);
-  install_element (BGP_NODE, &no_bgp_cluster_id_arg_cmd);
+  install_element (BGP_NODE, &no_bgp_cluster_id_ip_cmd);
+  install_element (BGP_NODE, &no_bgp_cluster_id_decimal_cmd);
 
   /* "bgp confederation" commands. */
   install_element (BGP_NODE, &bgp_confederation_identifier_cmd);
@@ -12083,6 +12146,7 @@ bgp_vty_init (void)
   /* "bgp default subgroup-pkt-queue-max" commands. */
   install_element (BGP_NODE, &bgp_default_subgroup_pkt_queue_max_cmd);
   install_element (BGP_NODE, &no_bgp_default_subgroup_pkt_queue_max_cmd);
+  install_element (BGP_NODE, &no_bgp_default_subgroup_pkt_queue_max_val_cmd);
 
   /* bgp ibgp-allow-policy-mods command */
   install_element (BGP_NODE, &bgp_rr_allow_outbound_policy_cmd);
@@ -12091,6 +12155,7 @@ bgp_vty_init (void)
   /* "bgp listen limit" commands. */
   install_element (BGP_NODE, &bgp_listen_limit_cmd);
   install_element (BGP_NODE, &no_bgp_listen_limit_cmd);
+  install_element (BGP_NODE, &no_bgp_listen_limit_val_cmd);
 
   /* "bgp listen range" commands. */
   install_element (BGP_NODE, &bgp_listen_range_cmd);
@@ -12124,6 +12189,7 @@ bgp_vty_init (void)
   /* "neighbor password" commands. */
   install_element (BGP_NODE, &neighbor_password_cmd);
   install_element (BGP_NODE, &no_neighbor_password_cmd);
+  install_element (BGP_NODE, &no_neighbor_password_val_cmd);
 
   /* "neighbor activate" commands. */
   install_element (BGP_NODE, &neighbor_activate_cmd);
@@ -12585,6 +12651,7 @@ bgp_vty_init (void)
   /* "neighbor timers" commands. */
   install_element (BGP_NODE, &neighbor_timers_cmd);
   install_element (BGP_NODE, &no_neighbor_timers_cmd);
+  install_element (BGP_NODE, &no_neighbor_timers_val_cmd);
 
   /* "neighbor timers connect" commands. */
   install_element (BGP_NODE, &neighbor_timers_connect_cmd);
@@ -12754,21 +12821,27 @@ bgp_vty_init (void)
   install_element (BGP_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_NODE, &no_neighbor_allowas_in_val_cmd);
   install_element (BGP_IPV4_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_IPV4_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_IPV4_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_IPV4_NODE, &no_neighbor_allowas_in_val_cmd);
   install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_IPV4M_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_IPV4M_NODE, &no_neighbor_allowas_in_val_cmd);
   install_element (BGP_IPV6_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_IPV6_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_IPV6_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_IPV6_NODE, &no_neighbor_allowas_in_val_cmd);
   install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_IPV6M_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_IPV6M_NODE, &no_neighbor_allowas_in_val_cmd);
   install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_cmd);
   install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_arg_cmd);
   install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd);
+  install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_val_cmd);
 
   /* address-family commands. */
   install_element (BGP_NODE, &address_family_ipv4_cmd);
@@ -13307,7 +13380,7 @@ community_list_set_vty (struct vty *vty, int argc, const char **argv,
 /* Communiyt-list entry delete.  */
 static int
 community_list_unset_vty (struct vty *vty, int argc, const char **argv,
-                         int style)
+                         int style, int delete_all)
 {
   int ret;
   int direct = 0;
@@ -13332,7 +13405,7 @@ community_list_unset_vty (struct vty *vty, int argc, const char **argv,
     }
 
   /* Unset community list.  */
-  ret = community_list_unset (bgp_clist, argv[0], str, direct, style);
+  ret = community_list_unset (bgp_clist, argv[0], str, direct, style, delete_all);
 
   /* Free temporary community list string allocated by
      argv_concat().  */
@@ -13433,9 +13506,23 @@ DEFUN (no_ip_community_list_standard_all,
        COMMUNITY_LIST_STR
        "Community list number (standard)\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 1);
+}
+
+DEFUN (no_ip_community_list_standard_direction,
+       no_ip_community_list_standard_direction_cmd,
+       "no ip community-list <1-99> (deny|permit)",
+       NO_STR
+       IP_STR
+       COMMUNITY_LIST_STR
+       "Community list number (standard)\n"
+       "Specify community to reject\n"
+       "Specify community to accept\n")
+{
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 0);
 }
 
+
 DEFUN (no_ip_community_list_expanded_all,
        no_ip_community_list_expanded_all_cmd,
        "no ip community-list <100-500>",
@@ -13444,7 +13531,7 @@ DEFUN (no_ip_community_list_expanded_all,
        COMMUNITY_LIST_STR
        "Community list number (expanded)\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 1);
 }
 
 DEFUN (no_ip_community_list_name_standard_all,
@@ -13456,7 +13543,7 @@ DEFUN (no_ip_community_list_name_standard_all,
        "Add a standard community-list entry\n"
        "Community list name\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 1);
 }
 
 DEFUN (no_ip_community_list_name_expanded_all,
@@ -13468,7 +13555,7 @@ DEFUN (no_ip_community_list_name_expanded_all,
        "Add an expanded community-list entry\n"
        "Community list name\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 1);
 }
 
 DEFUN (no_ip_community_list_standard,
@@ -13482,7 +13569,7 @@ DEFUN (no_ip_community_list_standard,
        "Specify community to accept\n"
        COMMUNITY_VAL_STR)
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 0);
 }
 
 DEFUN (no_ip_community_list_expanded,
@@ -13496,7 +13583,7 @@ DEFUN (no_ip_community_list_expanded,
        "Specify community to accept\n"
        "An ordered list as a regular-expression\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 0);
 }
 
 DEFUN (no_ip_community_list_name_standard,
@@ -13511,7 +13598,21 @@ DEFUN (no_ip_community_list_name_standard,
        "Specify community to accept\n"
        COMMUNITY_VAL_STR)
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 0);
+}
+
+DEFUN (no_ip_community_list_name_standard_brief,
+       no_ip_community_list_name_standard_brief_cmd,
+       "no ip community-list standard WORD (deny|permit)",
+       NO_STR
+       IP_STR
+       COMMUNITY_LIST_STR
+       "Specify a standard community-list\n"
+       "Community list name\n"
+       "Specify community to reject\n"
+       "Specify community to accept\n")
+{
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD, 0);
 }
 
 DEFUN (no_ip_community_list_name_expanded,
@@ -13526,7 +13627,7 @@ DEFUN (no_ip_community_list_name_expanded,
        "Specify community to accept\n"
        "An ordered list as a regular-expression\n")
 {
-  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
+  return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 0);
 }
 
 static void
@@ -13657,7 +13758,7 @@ extcommunity_list_set_vty (struct vty *vty, int argc, const char **argv,
 
 static int
 extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv,
-                            int style)
+                            int style, int delete_all)
 {
   int ret;
   int direct = 0;
@@ -13682,7 +13783,7 @@ extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv,
     }
 
   /* Unset community list.  */
-  ret = extcommunity_list_unset (bgp_clist, argv[0], str, direct, style);
+  ret = extcommunity_list_unset (bgp_clist, argv[0], str, direct, style, delete_all);
 
   /* Free temporary community list string allocated by
      argv_concat().  */
@@ -13783,7 +13884,20 @@ DEFUN (no_ip_extcommunity_list_standard_all,
        EXTCOMMUNITY_LIST_STR
        "Extended Community list number (standard)\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 1);
+}
+
+DEFUN (no_ip_extcommunity_list_standard_direction,
+       no_ip_extcommunity_list_standard_direction_cmd,
+       "no ip extcommunity-list <1-99> (deny|permit)",
+       NO_STR
+       IP_STR
+       EXTCOMMUNITY_LIST_STR
+       "Extended Community list number (standard)\n"
+       "Specify community to reject\n"
+       "Specify community to accept\n")
+{
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 0);
 }
 
 DEFUN (no_ip_extcommunity_list_expanded_all,
@@ -13794,7 +13908,7 @@ DEFUN (no_ip_extcommunity_list_expanded_all,
        EXTCOMMUNITY_LIST_STR
        "Extended Community list number (expanded)\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 1);
 }
 
 DEFUN (no_ip_extcommunity_list_name_standard_all,
@@ -13806,7 +13920,7 @@ DEFUN (no_ip_extcommunity_list_name_standard_all,
        "Specify standard extcommunity-list\n"
        "Extended Community list name\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 1);
 }
 
 DEFUN (no_ip_extcommunity_list_name_expanded_all,
@@ -13818,7 +13932,7 @@ DEFUN (no_ip_extcommunity_list_name_expanded_all,
        "Specify expanded extcommunity-list\n"
        "Extended Community list name\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 1);
 }
 
 DEFUN (no_ip_extcommunity_list_standard,
@@ -13832,7 +13946,7 @@ DEFUN (no_ip_extcommunity_list_standard,
        "Specify community to accept\n"
        EXTCOMMUNITY_VAL_STR)
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 0);
 }
 
 DEFUN (no_ip_extcommunity_list_expanded,
@@ -13846,7 +13960,7 @@ DEFUN (no_ip_extcommunity_list_expanded,
        "Specify community to accept\n"
        "An ordered list as a regular-expression\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 0);
 }
 
 DEFUN (no_ip_extcommunity_list_name_standard,
@@ -13861,7 +13975,21 @@ DEFUN (no_ip_extcommunity_list_name_standard,
        "Specify community to accept\n"
        EXTCOMMUNITY_VAL_STR)
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 0);
+}
+
+DEFUN (no_ip_extcommunity_list_name_standard_brief,
+       no_ip_extcommunity_list_name_standard_brief_cmd,
+       "no ip extcommunity-list standard WORD (deny|permit)",
+       NO_STR
+       IP_STR
+       EXTCOMMUNITY_LIST_STR
+       "Specify standard extcommunity-list\n"
+       "Extended Community list name\n"
+       "Specify community to reject\n"
+       "Specify community to accept\n")
+{
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD, 0);
 }
 
 DEFUN (no_ip_extcommunity_list_name_expanded,
@@ -13876,7 +14004,7 @@ DEFUN (no_ip_extcommunity_list_name_expanded,
        "Specify community to accept\n"
        "An ordered list as a regular-expression\n")
 {
-  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
+  return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 0);
 }
 
 static void
@@ -14052,12 +14180,14 @@ community_list_vty (void)
   install_element (CONFIG_NODE, &ip_community_list_name_standard2_cmd);
   install_element (CONFIG_NODE, &ip_community_list_name_expanded_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_standard_all_cmd);
+  install_element (CONFIG_NODE, &no_ip_community_list_standard_direction_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_expanded_all_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_name_standard_all_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_all_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_standard_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_expanded_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_name_standard_cmd);
+  install_element (CONFIG_NODE, &no_ip_community_list_name_standard_brief_cmd);
   install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_cmd);
   install_element (VIEW_NODE, &show_ip_community_list_cmd);
   install_element (VIEW_NODE, &show_ip_community_list_arg_cmd);
@@ -14072,12 +14202,14 @@ community_list_vty (void)
   install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard2_cmd);
   install_element (CONFIG_NODE, &ip_extcommunity_list_name_expanded_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_all_cmd);
+  install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_direction_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_all_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_all_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_all_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_cmd);
+  install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_brief_cmd);
   install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_cmd);
   install_element (VIEW_NODE, &show_ip_extcommunity_list_cmd);
   install_element (VIEW_NODE, &show_ip_extcommunity_list_arg_cmd);
index 6ab70e630533ca83718fb92a8992ab6efaafe1a0..b11b62bbd1c55d4a0d82fd7b87ac711992790699 100644 (file)
@@ -6336,8 +6336,9 @@ bgp_config_write_peer_global (struct vty *vty, struct bgp *bgp,
     }
 
   /* advertisement-interval */
-  if (CHECK_FLAG (peer->config, PEER_CONFIG_ROUTEADV) &&
-      ! peer_group_active (peer))
+  if (CHECK_FLAG (peer->config, PEER_CONFIG_ROUTEADV)
+      && peer->v_routeadv != BGP_DEFAULT_EBGP_ROUTEADV
+      && ! peer_group_active (peer))
     {
       vty_out (vty, " neighbor %s advertisement-interval %d%s",
                addr, peer->v_routeadv, VTY_NEWLINE);
@@ -6345,6 +6346,7 @@ bgp_config_write_peer_global (struct vty *vty, struct bgp *bgp,
 
   /* timers */
   if (CHECK_FLAG (peer->config, PEER_CONFIG_TIMER)
+      && (peer->keepalive != BGP_DEFAULT_KEEPALIVE || peer->holdtime != BGP_DEFAULT_HOLDTIME)
       && ! peer_group_active (peer))
     {
       vty_out (vty, " neighbor %s timers %d %d%s", addr,
index e3ca3db038d6113cb9a031c028bc6076884e7c8d..3694106403a04edb5676b3d3193a5f18ec6ffc92 100644 (file)
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -158,9 +158,19 @@ do { \
   char *endptr = NULL; \
   errno = 0; \
   (V) = strtoul ((STR), &endptr, 10); \
-  if (*(STR) == '-' || *endptr != '\0' || errno) \
+  if (*(STR) == '-') \
     { \
-      vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE); \
+      vty_out (vty, "%% Invalid %s value (dash)%s", NAME, VTY_NEWLINE); \
+      return CMD_WARNING; \
+    } \
+  if (*endptr != '\0') \
+    { \
+      vty_out (vty, "%% Invalid %s value (%s)%s", NAME, endptr, VTY_NEWLINE); \
+      return CMD_WARNING; \
+    } \
+  if (errno) \
+    { \
+      vty_out (vty, "%% Invalid %s value (error %d)%s", NAME, errno, VTY_NEWLINE); \
       return CMD_WARNING; \
     } \
 } while (0)
@@ -171,9 +181,19 @@ do { \
   char *endptr = NULL; \
   errno = 0; \
   (V) = strtoull ((STR), &endptr, 10); \
-  if (*(STR) == '-' || *endptr != '\0' || errno) \
+  if (*(STR) == '-') \
+    { \
+      vty_out (vty, "%% Invalid %s value (dash)%s", NAME, VTY_NEWLINE); \
+      return CMD_WARNING; \
+    } \
+  if (*endptr != '\0') \
+    { \
+      vty_out (vty, "%% Invalid %s value (%s)%s", NAME, endptr, VTY_NEWLINE); \
+      return CMD_WARNING; \
+    } \
+  if (errno) \
     { \
-      vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE); \
+      vty_out (vty, "%% Invalid %s value (error %d)%s", NAME, errno, VTY_NEWLINE); \
       return CMD_WARNING; \
     } \
 } while (0)
index 71787541e641e2f1399388895ec2f7bc5474c8d8..7ac1fa36750f7d47c753858044cf87770c535bd9 100644 (file)
@@ -535,11 +535,11 @@ ALIAS (area_range,
 DEFUN (no_area_range,
        no_area_range_cmd,
        "no area A.B.C.D range X:X::X:X/M",
+       NO_STR
        "OSPF area parameters\n"
        OSPF6_AREA_ID_STR
        "Configured address range\n"
-       "Specify IPv6 prefix\n"
-       )
+       "Specify IPv6 prefix\n")
 {
   int ret;
   struct ospf6_area *oa;
@@ -584,6 +584,37 @@ DEFUN (no_area_range,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_area_range,
+       no_area_range_advertise_cmd,
+       "no area A.B.C.D range X:X::X:X/M (advertise|not-advertise)",
+       NO_STR
+       "OSPF area parameters\n"
+       OSPF6_AREA_ID_STR
+       "Configured address range\n"
+       "Specify IPv6 prefix\n")
+
+ALIAS (no_area_range,
+       no_area_range_cost_cmd,
+       "no area (A.B.C.D|<0-4294967295>) range X:X::X:X/M cost <0-16777215>",
+       NO_STR
+       "OSPF area parameters\n"
+       OSPF6_AREA_ID_STR
+       "Summarize routes matching address/mask (border routers only)\n"
+       "Area range prefix\n"
+       "User specified metric for this range\n"
+       "Advertised metric for this range\n")
+
+ALIAS (no_area_range,
+       no_area_range_advertise_cost_cmd,
+       "no area (A.B.C.D|<0-4294967295>) range X:X::X:X/M advertise cost <0-16777215>",
+       NO_STR
+       "OSPF area parameters\n"
+       OSPF6_AREA_ID_STR
+       "Summarize routes matching address/mask (border routers only)\n"
+       "Area range prefix\n"
+       "User specified metric for this range\n"
+       "Advertised metric for this range\n")
+
 void
 ospf6_area_config_write (struct vty *vty)
 {
@@ -598,7 +629,20 @@ ospf6_area_config_write (struct vty *vty)
            range = ospf6_route_next (range))
         {
           prefix2str (&range->prefix, buf, sizeof (buf));
-          vty_out (vty, " area %s range %s%s", oa->name, buf, VNL);
+          vty_out (vty, " area %s range %s", oa->name, buf);
+
+          if (CHECK_FLAG (range->flag, OSPF6_ROUTE_DO_NOT_ADVERTISE))
+            {
+              vty_out (vty, " not-advertise");
+            }
+          else
+            {
+              // "advertise" is the default so we do not display it
+              if (range->path.u.cost_config != OSPF_AREA_RANGE_COST_UNSPEC)
+                vty_out (vty, " cost %d", range->path.u.cost_config);
+            }
+          vty_out (vty, "%s", VNL);
+
         }
       if (IS_AREA_STUB (oa))
        {
@@ -1054,6 +1098,9 @@ ospf6_area_init (void)
   install_element (OSPF6_NODE, &area_range_cost_cmd);
   install_element (OSPF6_NODE, &area_range_advertise_cost_cmd);
   install_element (OSPF6_NODE, &no_area_range_cmd);
+  install_element (OSPF6_NODE, &no_area_range_advertise_cmd);
+  install_element (OSPF6_NODE, &no_area_range_cost_cmd);
+  install_element (OSPF6_NODE, &no_area_range_advertise_cost_cmd);
   install_element (OSPF6_NODE, &ospf6_area_stub_no_summary_cmd);
   install_element (OSPF6_NODE, &ospf6_area_stub_cmd);
   install_element (OSPF6_NODE, &no_ospf6_area_stub_no_summary_cmd);
index 4b7745a62551880d0ccdb86022f64da94e35c2a7..3bc6ded4377197cd5394426806d87d6a45d5cdc4 100644 (file)
@@ -1370,6 +1370,14 @@ DEFUN (no_auto_cost_reference_bandwidth,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_auto_cost_reference_bandwidth,
+       no_auto_cost_reference_bandwidth_val_cmd,
+       "no auto-cost reference-bandwidth <1-4294967>",
+       NO_STR
+       "Calculate OSPF interface cost according to bandwidth\n"
+       "Use reference bandwidth method to assign OSPF cost\n"
+       "The reference bandwidth in terms of Mbits per second\n")
+
 DEFUN (ipv6_ospf6_hellointerval,
        ipv6_ospf6_hellointerval_cmd,
        "ipv6 ospf6 hello-interval <1-65535>",
@@ -1933,6 +1941,7 @@ ospf6_interface_init (void)
   /* reference bandwidth commands */
   install_element (OSPF6_NODE, &auto_cost_reference_bandwidth_cmd);
   install_element (OSPF6_NODE, &no_auto_cost_reference_bandwidth_cmd);
+  install_element (OSPF6_NODE, &no_auto_cost_reference_bandwidth_val_cmd);
 }
 
 /* Clear the specified interface structure */
index 02fd14b76b94c865bfb772491e7ee7661d14051b..52b60f1e698d0c63e26c71a72b43efca7bddda5f 100644 (file)
@@ -911,6 +911,17 @@ DEFUN (no_ospf6_timers_throttle_spf,
                               OSPF_SPF_MAX_HOLDTIME_DEFAULT);
 }
 
+ALIAS (no_ospf6_timers_throttle_spf,
+       no_ospf6_timers_throttle_spf_val_cmd,
+       "no timers throttle spf <0-600000> <0-600000> <0-600000>",
+       NO_STR
+       "Adjust routing timers\n"
+       "Throttling adaptive timer\n"
+       "OSPF6 SPF timers\n"
+       "Delay (msec) from first change received till SPF calculation\n"
+       "Initial hold time (msec) between consecutive SPF calculations\n"
+       "Maximum hold time (msec)\n")
+
 int
 config_write_ospf6_debug_spf (struct vty *vty)
 {
@@ -958,4 +969,5 @@ ospf6_spf_init (void)
 {
   install_element (OSPF6_NODE, &ospf6_timers_throttle_spf_cmd);
   install_element (OSPF6_NODE, &no_ospf6_timers_throttle_spf_cmd);
+  install_element (OSPF6_NODE, &no_ospf6_timers_throttle_spf_val_cmd);
 }
index 6c0ef37efd3819539e1aaa756541d67935b8a1f7..12a63a4e20842691f419d6a772c9e8283b9d8f7a 100644 (file)
@@ -424,6 +424,17 @@ DEFUN (no_ip_ospf_bfd,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ip_ospf_bfd,
+       no_ip_ospf_bfd_param_cmd,
+       "no ip ospf bfd " BFD_CMD_DETECT_MULT_RANGE BFD_CMD_MIN_RX_RANGE BFD_CMD_MIN_TX_RANGE,
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Enables BFD support\n"
+       "Detect Multiplier\n"
+       "Required min receive interval\n"
+       "Desired min transmit interval\n")
+
 void
 ospf_bfd_init(void)
 {
@@ -435,4 +446,5 @@ ospf_bfd_init(void)
   install_element (INTERFACE_NODE, &ip_ospf_bfd_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_bfd_param_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_bfd_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_bfd_param_cmd);
 }
index e7e1a4362f292324db33296ec4b57d879dbbe586..6f19a28327422421434358cb7d6be0705cf4391f 100644 (file)
@@ -1417,8 +1417,8 @@ ospf_mpls_te_config_write_router (struct vty *vty)
 {
   if (OspfMplsTE.status == enabled)
     {
-      vty_out (vty, "  mpls-te%s", VTY_NEWLINE);
-      vty_out (vty, "  mpls-te router-address %s%s",
+      vty_out (vty, " mpls-te%s", VTY_NEWLINE);
+      vty_out (vty, " mpls-te router-address %s%s",
                inet_ntoa (OspfMplsTE.router_addr.value), VTY_NEWLINE);
     }
   return;
@@ -1536,6 +1536,13 @@ DEFUN (no_mpls_te,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_mpls_te,
+       no_mpls_te_val_cmd,
+       "no mpls-te on",
+       NO_STR
+       "Configure MPLS-TE parameters\n"
+       "Disable the MPLS-TE functionality\n")
+
 DEFUN (mpls_te_router_addr,
        mpls_te_router_addr_cmd,
        "mpls-te router-address A.B.C.D",
@@ -1908,6 +1915,7 @@ ospf_mpls_te_register_vty (void)
 
   install_element (OSPF_NODE, &mpls_te_cmd);
   install_element (OSPF_NODE, &no_mpls_te_cmd);
+  install_element (OSPF_NODE, &no_mpls_te_val_cmd);
   install_element (OSPF_NODE, &mpls_te_on_cmd);
   install_element (OSPF_NODE, &mpls_te_router_addr_cmd);
 
index 5132c7580a072c5fb994f1385de0f59b33d6d86f..18207ee23810089bd029527d31c2adc2b682d216 100644 (file)
@@ -1321,7 +1321,7 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_param1_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval)",
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_TIME_PARAM)
@@ -1338,8 +1338,8 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_param2_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval)",
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_TIME_PARAM
@@ -1359,9 +1359,9 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_param3_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval)",
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_TIME_PARAM
@@ -1384,10 +1384,10 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_param4_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) "
-       "(hello-interval|retransmit-interval|transmit-delay|dead-interval)",
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535> "
+       "(hello-interval|retransmit-interval|transmit-delay|dead-interval) <1-65535>",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_TIME_PARAM
@@ -1402,6 +1402,14 @@ ALIAS (ospf_area_vlink,
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_AUTHTYPE_ALL)
 
+ALIAS (no_ospf_area_vlink,
+       no_ospf_area_vlink_authtype_args_cmd,
+       "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
+       "(authentication|) (message-digest|null)",
+       NO_STR
+       VLINK_HELPSTR_IPADDR
+       VLINK_HELPSTR_AUTHTYPE_ALL)
+
 ALIAS (ospf_area_vlink,
        ospf_area_vlink_authtype_cmd,
        "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
@@ -1427,7 +1435,7 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_md5_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(message-digest-key|) <1-255>",
+       "(message-digest-key|) <1-255> md5 KEY",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_AUTH_MD5)
@@ -1442,7 +1450,7 @@ ALIAS (ospf_area_vlink,
 ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_authkey_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
-       "(authentication-key|)",
+       "(authentication-key|) AUTH_KEY",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_AUTH_SIMPLE)
@@ -1456,6 +1464,16 @@ ALIAS (ospf_area_vlink,
        VLINK_HELPSTR_AUTHTYPE_ALL
        VLINK_HELPSTR_AUTH_SIMPLE)
 
+ALIAS (no_ospf_area_vlink,
+       no_ospf_area_vlink_authtype_args_authkey_cmd,
+       "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
+       "(authentication|) (message-digest|null) "
+       "(authentication-key|) AUTH_KEY",
+       NO_STR
+       VLINK_HELPSTR_IPADDR
+       VLINK_HELPSTR_AUTHTYPE_ALL
+       VLINK_HELPSTR_AUTH_SIMPLE)
+
 ALIAS (ospf_area_vlink,
        ospf_area_vlink_authtype_authkey_cmd,
        "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
@@ -1469,7 +1487,7 @@ ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_authtype_authkey_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
        "(authentication|) "
-       "(authentication-key|)",
+       "(authentication-key|) AUTH_KEY",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_AUTHTYPE_SIMPLE
@@ -1484,6 +1502,16 @@ ALIAS (ospf_area_vlink,
        VLINK_HELPSTR_AUTHTYPE_ALL
        VLINK_HELPSTR_AUTH_MD5)
 
+ALIAS (no_ospf_area_vlink,
+       no_ospf_area_vlink_authtype_args_md5_cmd,
+       "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
+       "(authentication|) (message-digest|null) "
+       "(message-digest-key|) <1-255> md5 KEY",
+       NO_STR
+       VLINK_HELPSTR_IPADDR
+       VLINK_HELPSTR_AUTHTYPE_ALL
+       VLINK_HELPSTR_AUTH_MD5)
+
 ALIAS (ospf_area_vlink,
        ospf_area_vlink_authtype_md5_cmd,
        "area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
@@ -1497,7 +1525,7 @@ ALIAS (no_ospf_area_vlink,
        no_ospf_area_vlink_authtype_md5_cmd,
        "no area (A.B.C.D|<0-4294967295>) virtual-link A.B.C.D "
        "(authentication|) "
-       "(message-digest-key|)",
+       "(message-digest-key|) <1-255> md5 KEY",
        NO_STR
        VLINK_HELPSTR_IPADDR
        VLINK_HELPSTR_AUTHTYPE_SIMPLE
@@ -1813,28 +1841,18 @@ DEFUN (no_ospf_area_nssa,
   return CMD_SUCCESS;
 }
 
-DEFUN (no_ospf_area_nssa_no_summary,
+ALIAS (no_ospf_area_nssa,
        no_ospf_area_nssa_no_summary_cmd,
-       "no area (A.B.C.D|<0-4294967295>) nssa no-summary",
+       "no area (A.B.C.D|<0-4294967295>) nssa (translate-candidate|translate-never|translate-always|) {no-summary}",
        NO_STR
        "OSPF area parameters\n"
        "OSPF area ID in IP address format\n"
        "OSPF area ID as a decimal value\n"
        "Configure OSPF area as nssa\n"
+       "Configure NSSA-ABR for translate election (default)\n"
+       "Configure NSSA-ABR to never translate\n"
+       "Configure NSSA-ABR to always translate\n"
        "Do not inject inter-area routes into nssa\n")
-{
-  struct ospf *ospf = vty->index;
-  struct in_addr area_id;
-  int format;
-
-  if (!ospf)
-    return CMD_SUCCESS;
-
-  VTY_GET_OSPF_AREA_ID_NO_BB ("NSSA", area_id, format, argv[0]);
-  ospf_area_no_summary_unset (ospf, area_id);
-
-  return CMD_SUCCESS;
-}
 
 DEFUN (ospf_area_default_cost,
        ospf_area_default_cost_cmd,
@@ -2437,7 +2455,7 @@ DEFUN (ospf_timers_min_ls_interval,
        "Adjust routing timers\n"
        "Throttling adaptive timer\n"
        "LSA delay between transmissions\n"
-       NO_STR
+       "All LSA types\n"
        "Delay (msec) between sending LSAs\n")
 {
   struct ospf *ospf = vty->index;
@@ -2462,7 +2480,8 @@ DEFUN (no_ospf_timers_min_ls_interval,
        NO_STR
        "Adjust routing timers\n"
        "Throttling adaptive timer\n"
-       "LSA delay between transmissions\n")
+       "LSA delay between transmissions\n"
+       "All LSA types\n")
 {
   struct ospf *ospf = vty->index;
   ospf->min_ls_interval = OSPF_MIN_LS_INTERVAL;
@@ -2470,6 +2489,16 @@ DEFUN (no_ospf_timers_min_ls_interval,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ospf_timers_min_ls_interval,
+       no_ospf_timers_min_ls_interval_val_cmd,
+       "no timers throttle lsa all <0-5000>",
+       NO_STR
+       "Adjust routing timers\n"
+       "Throttling adaptive timer\n"
+       "LSA delay between transmissions\n"
+       "All LSA types\n"
+       "Delay (msec) between sending LSAs\n")
+
 DEFUN (ospf_timers_min_ls_arrival,
        ospf_timers_min_ls_arrival_cmd,
        "timers lsa arrival <0-1000>",
@@ -2508,6 +2537,15 @@ DEFUN (no_ospf_timers_min_ls_arrival,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ospf_timers_min_ls_arrival,
+       no_ospf_timers_min_ls_arrival_val_cmd,
+       "no timers lsa arrival <0-1000>",
+       NO_STR
+       "Adjust routing timers\n"
+       "Throttling link state advertisement delays\n"
+       "OSPF minimum arrival interval delay\n"
+       "Delay (msec) between accepted LSAs\n")
+
 DEFUN (ospf_timers_throttle_spf,
        ospf_timers_throttle_spf_cmd,
        "timers throttle spf <0-600000> <0-600000> <0-600000>",
@@ -2549,7 +2587,7 @@ DEFUN (no_ospf_timers_throttle_spf,
 
 ALIAS (no_ospf_timers_throttle_spf,
        no_ospf_timers_throttle_spf_val_cmd,
-       "no timers throttle spf <0-60000> <0-60000> <0-60000>",
+       "no timers throttle spf <0-600000> <0-600000> <0-600000>",
        NO_STR
        "Adjust routing timers\n"
        "Throttling adaptive timer\n"
@@ -2753,6 +2791,17 @@ ALIAS (no_ospf_neighbor,
        "Dead Neighbor Polling interval\n"
        "Seconds\n")
 
+ALIAS (no_ospf_neighbor,
+       no_ospf_neighbor_poll_interval_priority_cmd,
+       "no neighbor A.B.C.D poll-interval <1-65535> priority <0-255>",
+       NO_STR
+       NEIGHBOR_STR
+       "Neighbor IP address\n"
+       "Dead Neighbor Polling interval\n"
+       "Seconds\n"
+       "OSPF priority of non-broadcast neighbor\n"
+       "Priority\n")
+
 ALIAS (no_ospf_neighbor,
        no_ospf_neighbor_priority_pollinterval_cmd,
        "no neighbor A.B.C.D priority <0-255> poll-interval <1-65535>",
@@ -2764,7 +2813,6 @@ ALIAS (no_ospf_neighbor,
        "Dead Neighbor Polling interval\n"
        "Seconds\n")
 
-
 DEFUN (ospf_refresh_timer, ospf_refresh_timer_cmd,
        "refresh timer <10-1800>",
        "Adjust refresh parameters\n"
@@ -2877,6 +2925,14 @@ DEFUN (no_ospf_auto_cost_reference_bandwidth,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ospf_auto_cost_reference_bandwidth,
+       no_ospf_auto_cost_reference_bandwidth_val_cmd,
+       "no auto-cost reference-bandwidth <1-4294967>",
+       NO_STR
+       "Calculate OSPF interface cost according to bandwidth\n"
+       "Use reference bandwidth method to assign OSPF cost\n"
+       "The reference bandwidth in terms of Mbits per second\n")
+
 DEFUN (ospf_write_multiplier,
        ospf_write_multiplier_cmd,
        "ospf write-multiplier <1-100>",
@@ -2909,10 +2965,11 @@ ALIAS (ospf_write_multiplier,
 
 DEFUN (no_ospf_write_multiplier,
        no_ospf_write_multiplier_cmd,
-       "no ospf write-multiplier",
+       "no ospf write-multiplier <1-100>",
        NO_STR
        "OSPF specific commands\n"
-       "Write multiplier\n")
+       "Write multiplier\n"
+       "Maximum number of interface serviced per write\n")
 {
   struct ospf *ospf = vty->index;
 
@@ -2929,6 +2986,13 @@ ALIAS (no_ospf_write_multiplier,
        NO_STR
        "Write multiplier\n")
 
+ALIAS (no_ospf_write_multiplier,
+       no_write_multiplier_val_cmd,
+       "no write-multiplier <1-100>",
+       NO_STR
+       "Write multiplier\n"
+       "Maximum number of interface serviced per write\n")
+
 const char *ospf_abr_type_descr_str[] = 
 {
   "Unknown",
@@ -6123,6 +6187,12 @@ DEFUN (no_ip_ospf_authentication_args,
        * we need to find if we have any ip addresses underneath it that
        * correspond to the associated type.
        */
+      if (params->auth_type == auth_type)
+        {
+          params->auth_type = OSPF_AUTH_NOTSET;
+          UNSET_IF_PARAM (params, auth_type);
+        }
+
       for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn))
        {
          if ((params = rn->info))
@@ -6204,10 +6274,19 @@ DEFUN (no_ip_ospf_authentication,
        * We should remove all authentication types from
        * the interface.
        */
+      if ((params->auth_type == OSPF_AUTH_NULL) ||
+          (params->auth_type == OSPF_AUTH_CRYPTOGRAPHIC) ||
+          (params->auth_type == OSPF_AUTH_SIMPLE))
+        {
+          params->auth_type = OSPF_AUTH_NOTSET;
+          UNSET_IF_PARAM (params, auth_type);
+        }
+
       for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn))
        {
          if ((params = rn->info))
            {
+
              if ((params->auth_type == OSPF_AUTH_NULL) ||
                  (params->auth_type == OSPF_AUTH_CRYPTOGRAPHIC) ||
                  (params->auth_type == OSPF_AUTH_SIMPLE))
@@ -6266,7 +6345,6 @@ DEFUN (ip_ospf_authentication_key,
       ospf_if_update_params (ifp, addr);
     }
 
-
   memset (params->auth_simple, 0, OSPF_AUTH_SIMPLE_SIZE + 1);
   strncpy ((char *) params->auth_simple, argv[0], OSPF_AUTH_SIMPLE_SIZE);
   SET_IF_PARAM (params, auth_simple);
@@ -6290,25 +6368,25 @@ ALIAS (ip_ospf_authentication_key,
        "The OSPF password (key)")
 
 DEFUN (no_ip_ospf_authentication_key,
-       no_ip_ospf_authentication_key_addr_cmd,
-       "no ip ospf authentication-key A.B.C.D",
+       no_ip_ospf_authentication_key_authkey_addr_cmd,
+       "no ip ospf authentication-key AUTH_KEY A.B.C.D",
        NO_STR
        "IP Information\n"
        "OSPF interface commands\n"
        "Authentication password (key)\n"
-       "Address of interface")
+       "The OSPF password (key)")
 {
   struct interface *ifp;
   struct in_addr addr;
-  int ret;
   struct ospf_if_params *params;
+  int ret;
   
   ifp = vty->index;
   params = IF_DEF_PARAMS (ifp);
 
-  if (argc == 1)
+  if (argc == 2)
     {
-      ret = inet_aton(argv[0], &addr);
+      ret = inet_aton(argv[1], &addr);
       if (!ret)
        {
          vty_out (vty, "Please specify interface address by A.B.C.D%s",
@@ -6333,6 +6411,14 @@ DEFUN (no_ip_ospf_authentication_key,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ip_ospf_authentication_key,
+       no_ip_ospf_authentication_key_authkey_cmd,
+       "no ip ospf authentication-key AUTH_KEY",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Authentication password (key)\n")
+
 ALIAS (no_ip_ospf_authentication_key,
        no_ip_ospf_authentication_key_cmd,
        "no ip ospf authentication-key",
@@ -6348,6 +6434,23 @@ ALIAS (no_ip_ospf_authentication_key,
        "OSPF interface commands\n"
        "Authentication password (key)\n")
 
+ALIAS (no_ip_ospf_authentication_key,
+       no_ospf_authentication_key_authkey_cmd,
+       "no ospf authentication-key AUTH_KEY",
+       NO_STR
+       "OSPF interface commands\n"
+       "Authentication password (key)\n"
+       "The OSPF password (key)\n")
+
+ALIAS (no_ip_ospf_authentication_key,
+       no_ospf_authentication_key_authkey_ip_cmd,
+       "no ospf authentication-key AUTH_KEY A.B.C.D",
+       NO_STR
+       "OSPF interface commands\n"
+       "Authentication password (key)\n"
+       "The OSPF password (key)\n"
+       "Address of interface")
+
 DEFUN (ip_ospf_message_digest_key,
        ip_ospf_message_digest_key_addr_cmd,
        "ip ospf message-digest-key <1-255> md5 KEY A.B.C.D",
@@ -6420,6 +6523,73 @@ ALIAS (ip_ospf_message_digest_key,
        "Use MD5 algorithm\n"
        "The OSPF password (key)")
 
+DEFUN (no_ip_ospf_message_digest_key_md5,
+       no_ip_ospf_message_digest_key_md5_addr_cmd,
+       "no ip ospf message-digest-key <1-255> md5 KEY A.B.C.D",
+        NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Message digest authentication password (key)\n"
+       "Key ID\n"
+       "Use MD5 algorithm\n"
+       "The OSPF password (key)"
+       "Address of interface")
+{
+  struct interface *ifp;
+  struct crypt_key *ck;
+  int key_id;
+  struct in_addr addr;
+  int ret;
+  struct ospf_if_params *params;
+
+  ifp = vty->index;
+  params = IF_DEF_PARAMS (ifp);
+
+  if (argc == 3)
+    {
+      ret = inet_aton(argv[2], &addr);
+      if (!ret)
+       {
+         vty_out (vty, "Please specify interface address by A.B.C.D%s",
+                  VTY_NEWLINE);
+         return CMD_WARNING;
+       }
+
+      params = ospf_lookup_if_params (ifp, addr);
+      if (params == NULL)
+       return CMD_SUCCESS;
+    }
+
+  key_id = strtol (argv[0], NULL, 10);
+  ck = ospf_crypt_key_lookup (params->auth_crypt, key_id);
+  if (ck == NULL)
+    {
+      vty_out (vty, "OSPF: Key %d does not exist%s", key_id, VTY_NEWLINE);
+      return CMD_WARNING;
+    }
+
+  ospf_crypt_key_delete (params->auth_crypt, key_id);
+
+  if (params != IF_DEF_PARAMS (ifp))
+    {
+      ospf_free_if_params (ifp, addr);
+      ospf_if_update_params (ifp, addr);
+    }
+
+  return CMD_SUCCESS;
+}
+
+ALIAS (no_ip_ospf_message_digest_key_md5,
+       no_ip_ospf_message_digest_key_md5_cmd,
+       "no ip ospf message-digest-key <1-255> md5 KEY",
+        NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Message digest authentication password (key)\n"
+       "Key ID\n"
+       "Use MD5 algorithm\n"
+       "The OSPF password (key)")
+
 DEFUN (no_ip_ospf_message_digest_key,
        no_ip_ospf_message_digest_key_addr_cmd,
        "no ip ospf message-digest-key <1-255> A.B.C.D",
@@ -6961,6 +7131,29 @@ ALIAS (no_ip_ospf_dead_interval,
        "OSPF interface commands\n"
        "Interval after which a neighbor is declared dead\n")
 
+ALIAS (no_ip_ospf_dead_interval,
+       no_ip_ospf_dead_interval_minimal_addr_cmd,
+       "no ip ospf dead-interval minimal hello-multiplier <1-10> A.B.C.D",
+        NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Interval after which a neighbor is declared dead\n"
+       "Minimal 1s dead-interval with fast sub-second hellos\n"
+       "Hello multiplier factor\n"
+       "Number of Hellos to send each second\n"
+       "Address of interface\n")
+
+ALIAS (no_ip_ospf_dead_interval,
+       no_ip_ospf_dead_interval_minimal_cmd,
+       "no ip ospf dead-interval minimal hello-multiplier <1-10>",
+        NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Interval after which a neighbor is declared dead\n"
+       "Minimal 1s dead-interval with fast sub-second hellos\n"
+       "Hello multiplier factor\n"
+       "Number of Hellos to send each second\n")
+
 DEFUN (ip_ospf_hello_interval,
        ip_ospf_hello_interval_addr_cmd,
        "ip ospf hello-interval <1-65535> A.B.C.D",
@@ -7086,10 +7279,11 @@ ALIAS (no_ip_ospf_hello_interval,
 
 ALIAS (no_ip_ospf_hello_interval,
        no_ospf_hello_interval_cmd,
-       "no ospf hello-interval",
+       "no ospf hello-interval <1-65535>",
        NO_STR
        "OSPF interface commands\n"
-       "Time between HELLO packets\n")
+       "Time between HELLO packets\n"
+       "Seconds\n")
 
 DEFUN (ip_ospf_network,
        ip_ospf_network_cmd,
@@ -7191,6 +7385,18 @@ DEFUN (no_ip_ospf_network,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ip_ospf_network,
+       no_ip_ospf_network_val_cmd,
+       "no ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Network type\n"
+       "Specify OSPF broadcast multi-access network\n"
+       "Specify OSPF NBMA network\n"
+       "Specify OSPF point-to-multipoint network\n"
+       "Specify OSPF point-to-point network\n")
+
 ALIAS (no_ip_ospf_network,
        no_ospf_network_cmd,
        "no ospf network",
@@ -7198,6 +7404,17 @@ ALIAS (no_ip_ospf_network,
        "OSPF interface commands\n"
        "Network type\n")
 
+ALIAS (no_ip_ospf_network,
+       no_ospf_network_val_cmd,
+       "no ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)",
+       NO_STR
+       "OSPF interface commands\n"
+       "Network type\n"
+       "Specify OSPF broadcast multi-access network\n"
+       "Specify OSPF NBMA network\n"
+       "Specify OSPF point-to-multipoint network\n"
+       "Specify OSPF point-to-point network\n")
+
 DEFUN (ip_ospf_priority,
        ip_ospf_priority_addr_cmd,
        "ip ospf priority <0-255> A.B.C.D",
@@ -7277,11 +7494,12 @@ ALIAS (ip_ospf_priority,
 
 DEFUN (no_ip_ospf_priority,
        no_ip_ospf_priority_addr_cmd,
-       "no ip ospf priority A.B.C.D",
+       "no ip ospf priority <0-255> A.B.C.D",
        NO_STR
        "IP Information\n"
        "OSPF interface commands\n"
        "Router priority\n"
+       "Priority\n"
        "Address of interface")
 {
   struct interface *ifp = vty->index;
@@ -7293,9 +7511,9 @@ DEFUN (no_ip_ospf_priority,
   ifp = vty->index;
   params = IF_DEF_PARAMS (ifp);
 
-  if (argc == 1)
+  if (argc == 2)
     {
-      ret = inet_aton(argv[0], &addr);
+      ret = inet_aton(argv[1], &addr);
       if (!ret)
        {
          vty_out (vty, "Please specify interface address by A.B.C.D%s",
@@ -7337,18 +7555,20 @@ DEFUN (no_ip_ospf_priority,
 
 ALIAS (no_ip_ospf_priority,
        no_ip_ospf_priority_cmd,
-       "no ip ospf priority",
+       "no ip ospf priority <0-255>",
        NO_STR
        "IP Information\n"
        "OSPF interface commands\n"
-       "Router priority\n")
+       "Router priority\n"
+       "Priority\n")
 
 ALIAS (no_ip_ospf_priority,
        no_ospf_priority_cmd,
-       "no ospf priority",
+       "no ospf priority <0-255>",
        NO_STR
        "OSPF interface commands\n"
-       "Router priority\n")
+       "Router priority\n"
+       "Priority\n")
 
 
 DEFUN (ip_ospf_retransmit_interval,
@@ -7425,13 +7645,19 @@ DEFUN (no_ip_ospf_retransmit_interval,
   struct in_addr addr;
   int ret;
   struct ospf_if_params *params;
+  int addr_index;
   
   ifp = vty->index;
   params = IF_DEF_PARAMS (ifp);
 
-  if (argc == 1)
+  if (argc >= 1)
     {
-      ret = inet_aton(argv[0], &addr);
+      if (argc == 1)
+        addr_index = 0;
+      else
+        addr_index = 1;
+
+      ret = inet_aton(argv[addr_index], &addr);
       if (!ret)
        {
          vty_out (vty, "Please specify interface address by A.B.C.D%s",
@@ -7456,6 +7682,16 @@ DEFUN (no_ip_ospf_retransmit_interval,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ip_ospf_retransmit_interval,
+       no_ip_ospf_retransmit_interval_sec_addr_cmd,
+       "no ip ospf retransmit-interval <3-65535> A.B.C.D",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Time between retransmitting lost link state advertisements\n"
+       "Seconds\n"
+       "Address of interface")
+
 ALIAS (no_ip_ospf_retransmit_interval,
        no_ip_ospf_retransmit_interval_cmd,
        "no ip ospf retransmit-interval",
@@ -7471,6 +7707,28 @@ ALIAS (no_ip_ospf_retransmit_interval,
        "OSPF interface commands\n"
        "Time between retransmitting lost link state advertisements\n")
 
+DEFUN (no_ip_ospf_retransmit_interval_sec,
+       no_ip_ospf_retransmit_interval_sec_cmd,
+       "no ip ospf retransmit-interval <3-65535>",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Time between retransmitting lost link state advertisements\n"
+       "Seconds\n")
+{
+  struct interface *ifp = vty->index;
+  struct ospf_if_params *params;
+
+  ifp = vty->index;
+  params = IF_DEF_PARAMS (ifp);
+
+  UNSET_IF_PARAM (params, retransmit_interval);
+  params->retransmit_interval = OSPF_RETRANSMIT_INTERVAL_DEFAULT;
+
+  return CMD_SUCCESS;
+}
+
+
 DEFUN (ip_ospf_transmit_delay,
        ip_ospf_transmit_delay_addr_cmd,
        "ip ospf transmit-delay <1-65535> A.B.C.D",
@@ -7544,13 +7802,19 @@ DEFUN (no_ip_ospf_transmit_delay,
   struct in_addr addr;
   int ret;
   struct ospf_if_params *params;
+  int addr_index;
   
   ifp = vty->index;
   params = IF_DEF_PARAMS (ifp);
 
-  if (argc == 1)
+  if (argc >= 1)
     {
-      ret = inet_aton(argv[0], &addr);
+      if (argc == 1)
+        addr_index = 0;
+      else
+        addr_index = 1;
+
+      ret = inet_aton(argv[addr_index], &addr);
       if (!ret)
        {
          vty_out (vty, "Please specify interface address by A.B.C.D%s",
@@ -7575,6 +7839,16 @@ DEFUN (no_ip_ospf_transmit_delay,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ip_ospf_transmit_delay,
+       no_ip_ospf_transmit_delay_sec_addr_cmd,
+       "no ip ospf transmit-delay <1-65535> A.B.C.D",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Link state transmit delay\n"
+       "Seconds\n"
+       "Address of interface")
+
 ALIAS (no_ip_ospf_transmit_delay,
        no_ip_ospf_transmit_delay_cmd,
        "no ip ospf transmit-delay",
@@ -7590,6 +7864,28 @@ ALIAS (no_ip_ospf_transmit_delay,
        "OSPF interface commands\n"
        "Link state transmit delay\n")
 
+DEFUN (no_ip_ospf_transmit_delay_sec,
+       no_ip_ospf_transmit_delay_sec_cmd,
+       "no ip ospf transmit-delay <1-65535>",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Link state transmit delay\n"
+       "Seconds\n"
+       "Address of interface")
+{
+  struct interface *ifp = vty->index;
+  struct ospf_if_params *params;
+
+  ifp = vty->index;
+  params = IF_DEF_PARAMS (ifp);
+
+  UNSET_IF_PARAM (params, transmit_delay);
+  params->transmit_delay = OSPF_TRANSMIT_DELAY_DEFAULT;
+
+  return CMD_SUCCESS;
+}
+
 DEFUN (ip_ospf_area,
        ip_ospf_area_cmd,
        "ip ospf area (A.B.C.D|<0-4294967295>)",
@@ -7684,9 +7980,6 @@ DEFUN (no_ip_ospf_area,
   struct ospf_if_params *params;
   u_short instance = 0;
 
-  if (argc)
-    VTY_GET_INTEGER ("Instance", instance, argv[0]);
-
   if ((ospf = ospf_lookup_instance (instance)) == NULL)
     return CMD_SUCCESS;
 
@@ -7703,6 +7996,16 @@ DEFUN (no_ip_ospf_area,
 }
 
 ALIAS (no_ip_ospf_area,
+       no_ip_ospf_area_val_cmd,
+       "no ip ospf area (A.B.C.D|<0-4294967295>)",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Disable OSPF on this interface\n"
+       "OSPF area ID in IP address format\n"
+       "OSPF area ID as a decimal value\n")
+
+DEFUN (no_ip_ospf_instance_area,
        no_ip_ospf_instance_area_cmd,
        "no ip ospf <1-65535> area",
        NO_STR
@@ -7710,6 +8013,39 @@ ALIAS (no_ip_ospf_area,
        "OSPF interface commands\n"
        "Instance ID\n"
        "Disable OSPF on this interface\n")
+{
+  struct interface *ifp = vty->index;
+  struct ospf *ospf;
+  struct ospf_if_params *params;
+  u_short instance = 0;
+
+  VTY_GET_INTEGER ("Instance", instance, argv[0]);
+
+  if ((ospf = ospf_lookup_instance (instance)) == NULL)
+    return CMD_SUCCESS;
+
+  params = IF_DEF_PARAMS (ifp);
+  if (!OSPF_IF_PARAM_CONFIGURED(params, if_area))
+    {
+      vty_out (vty, "Can't find specified inteface area configuration.%s", VTY_NEWLINE);
+      return CMD_WARNING;
+    }
+
+  ospf_interface_unset (ifp);
+  ospf->if_ospf_cli_count--;
+  return CMD_SUCCESS;
+}
+
+ALIAS (no_ip_ospf_instance_area,
+       no_ip_ospf_instance_area_val_cmd,
+       "no ip ospf <1-65535> area (A.B.C.D|<0-4294967295>)",
+       NO_STR
+       "IP Information\n"
+       "OSPF interface commands\n"
+       "Instance ID\n"
+       "Disable OSPF on this interface\n"
+       "OSPF area ID in IP address format\n"
+       "OSPF area ID as a decimal value\n")
 
 DEFUN (ospf_redistribute_source,
        ospf_redistribute_source_cmd,
@@ -7764,10 +8100,18 @@ DEFUN (ospf_redistribute_source,
 
 DEFUN (no_ospf_redistribute_source,
        no_ospf_redistribute_source_cmd,
-       "no redistribute " QUAGGA_REDIST_STR_OSPFD,
+       "no redistribute " QUAGGA_REDIST_STR_OSPFD
+         " {metric <0-16777214>|metric-type (1|2)|route-map WORD}",
        NO_STR
        REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD)
+       QUAGGA_REDIST_HELP_STR_OSPFD
+       "Metric for redistributed routes\n"
+       "OSPF default metric\n"
+       "OSPF exterior metric type for redistributed routes\n"
+       "Set OSPF External Type 1 metrics\n"
+       "Set OSPF External Type 2 metrics\n"
+       "Route map reference\n"
+       "Pointer to route-map entries\n")
 {
   struct ospf *ospf = vty->index;
   int source;
@@ -8006,10 +8350,19 @@ DEFUN (ospf_default_information_originate,
 
 DEFUN (no_ospf_default_information_originate,
        no_ospf_default_information_originate_cmd,
-       "no default-information originate",
+       "no default-information originate"
+         "{always|metric <0-16777214>|metric-type (1|2)|route-map WORD}",
        NO_STR
        "Control distribution of default information\n"
-       "Distribute a default route\n")
+       "Distribute a default route\n"
+       "Always advertise default route\n"
+       "OSPF default metric\n"
+       "OSPF metric\n"
+       "OSPF metric type for default routes\n"
+       "Set OSPF External Type 1 metrics\n"
+       "Set OSPF External Type 2 metrics\n"
+       "Route map reference\n"
+       "Pointer to route-map entries\n")
 {
   struct ospf *ospf = vty->index;
   struct prefix_ipv4 p;
@@ -8117,14 +8470,16 @@ DEFUN (no_ospf_distance,
 
 DEFUN (no_ospf_distance_ospf,
        no_ospf_distance_ospf_cmd,
-       "no distance ospf {intra-area|inter-area|external}",
+       "no distance ospf {intra-area <1-255>|inter-area <1-255>|external <1-255>}",
        NO_STR
        "Define an administrative distance\n"
        "OSPF Administrative distance\n"
-       "OSPF Distance\n"
        "Intra-area routes\n"
+       "Distance for intra-area routes\n"
        "Inter-area routes\n"
-       "External routes\n")
+       "Distance for inter-area routes\n"
+       "External routes\n"
+       "Distance for external routes\n")
 {
   struct ospf *ospf = vty->index;
 
@@ -8157,7 +8512,7 @@ DEFUN (no_ospf_distance_ospf,
 DEFUN (ospf_distance_ospf,
        ospf_distance_ospf_cmd,
        "distance ospf "
-         "{intra-area <1-255>|inter-area <1-255>|external <1-255>}",
+         "(intra-area <1-255>|inter-area <1-255>|external <1-255>)",
        "Define an administrative distance\n"
        "OSPF Administrative distance\n"
        "Intra-area routes\n"
@@ -8450,11 +8805,12 @@ DEFUN (ospf_max_metric_router_lsa_startup,
 
 DEFUN (no_ospf_max_metric_router_lsa_startup,
        no_ospf_max_metric_router_lsa_startup_cmd,
-       "no max-metric router-lsa on-startup",
+       "no max-metric router-lsa on-startup <5-86400>",
        NO_STR
        "OSPF maximum / infinite-distance metric\n"
        "Advertise own Router-LSA with infinite distance (stub router)\n"
-       "Automatically advertise stub Router-LSA on startup of OSPF\n")
+       "Automatically advertise stub Router-LSA on startup of OSPF\n"
+       "Time (seconds) to advertise self as stub-router\n")
 {
   struct listnode *ln;
   struct ospf_area *area;
@@ -8509,11 +8865,12 @@ DEFUN (ospf_max_metric_router_lsa_shutdown,
 
 DEFUN (no_ospf_max_metric_router_lsa_shutdown,
        no_ospf_max_metric_router_lsa_shutdown_cmd,
-       "no max-metric router-lsa on-shutdown",
+       "no max-metric router-lsa on-shutdown <5-100>",
        NO_STR
        "OSPF maximum / infinite-distance metric\n"
        "Advertise own Router-LSA with infinite distance (stub router)\n"
-       "Advertise stub-router prior to full shutdown of OSPF\n")
+       "Advertise stub-router prior to full shutdown of OSPF\n"
+       "Time (seconds) to wait till full shutdown\n")
 {
   struct ospf *ospf = vty->index;
     
@@ -9706,7 +10063,8 @@ ospf_vty_if_init (void)
   install_element (INTERFACE_NODE, &no_ip_ospf_authentication_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_authentication_key_addr_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_authentication_key_cmd);
-  install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_authkey_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_authkey_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_cmd);
 
   /* "ip ospf message-digest-key" commands. */
@@ -9714,6 +10072,8 @@ ospf_vty_if_init (void)
   install_element (INTERFACE_NODE, &ip_ospf_message_digest_key_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_addr_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_md5_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_md5_cmd);
 
   /* "ip ospf cost" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_cost_u32_inet4_cmd);
@@ -9748,34 +10108,43 @@ ospf_vty_if_init (void)
   /* "ip ospf network" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_network_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_network_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_network_val_cmd);
 
   /* "ip ospf priority" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_priority_addr_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_priority_cmd);
-  install_element (INTERFACE_NODE, &no_ip_ospf_priority_addr_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_priority_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_priority_addr_cmd);
 
   /* "ip ospf retransmit-interval" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_addr_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_addr_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_sec_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_sec_cmd);
 
   /* "ip ospf transmit-delay" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_addr_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_addr_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_sec_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_sec_cmd);
 
   /* "ip ospf area" commands. */
   install_element (INTERFACE_NODE, &ip_ospf_area_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_area_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_area_val_cmd);
   install_element (INTERFACE_NODE, &ip_ospf_instance_area_cmd);
   install_element (INTERFACE_NODE, &no_ip_ospf_instance_area_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_instance_area_val_cmd);
 
   /* These commands are compatibitliy for previous version. */
   install_element (INTERFACE_NODE, &ospf_authentication_key_cmd);
   install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd);
+  install_element (INTERFACE_NODE, &no_ospf_authentication_key_authkey_cmd);
+  install_element (INTERFACE_NODE, &no_ospf_authentication_key_authkey_ip_cmd);
   install_element (INTERFACE_NODE, &ospf_message_digest_key_cmd);
   install_element (INTERFACE_NODE, &no_ospf_message_digest_key_cmd);
   install_element (INTERFACE_NODE, &ospf_cost_u32_cmd);
@@ -9786,10 +10155,13 @@ ospf_vty_if_init (void)
   install_element (INTERFACE_NODE, &no_ospf_cost_inet4_cmd);
   install_element (INTERFACE_NODE, &ospf_dead_interval_cmd);
   install_element (INTERFACE_NODE, &no_ospf_dead_interval_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_minimal_addr_cmd);
+  install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_minimal_cmd);
   install_element (INTERFACE_NODE, &ospf_hello_interval_cmd);
   install_element (INTERFACE_NODE, &no_ospf_hello_interval_cmd);
   install_element (INTERFACE_NODE, &ospf_network_cmd);
   install_element (INTERFACE_NODE, &no_ospf_network_cmd);
+  install_element (INTERFACE_NODE, &no_ospf_network_val_cmd);
   install_element (INTERFACE_NODE, &ospf_priority_cmd);
   install_element (INTERFACE_NODE, &no_ospf_priority_cmd);
   install_element (INTERFACE_NODE, &ospf_retransmit_interval_cmd);
@@ -9966,6 +10338,7 @@ ospf_vty_init (void)
   install_element (OSPF_NODE, &no_ospf_area_vlink_param4_cmd);
 
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_cmd);
+  install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_args_cmd);
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_cmd);
   install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_cmd);
 
@@ -9976,10 +10349,12 @@ ospf_vty_init (void)
   install_element (OSPF_NODE, &no_ospf_area_vlink_authkey_cmd);
 
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_authkey_cmd);
+  install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_args_authkey_cmd);
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_authkey_cmd);
   install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_authkey_cmd);
 
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_md5_cmd);
+  install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_args_md5_cmd);
   install_element (OSPF_NODE, &ospf_area_vlink_authtype_md5_cmd);
   install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_md5_cmd);
 
@@ -10020,8 +10395,10 @@ ospf_vty_init (void)
   /* LSA timers commands */
   install_element (OSPF_NODE, &ospf_timers_min_ls_interval_cmd);
   install_element (OSPF_NODE, &no_ospf_timers_min_ls_interval_cmd);
+  install_element (OSPF_NODE, &no_ospf_timers_min_ls_interval_val_cmd);
   install_element (OSPF_NODE, &ospf_timers_min_ls_arrival_cmd);
   install_element (OSPF_NODE, &no_ospf_timers_min_ls_arrival_cmd);
+  install_element (OSPF_NODE, &no_ospf_timers_min_ls_arrival_val_cmd);
   install_element (OSPF_NODE, &ospf_timers_lsa_cmd);
   install_element (OSPF_NODE, &no_ospf_timers_lsa_cmd);
   install_element (OSPF_NODE, &no_ospf_timers_lsa_val_cmd);
@@ -10042,6 +10419,7 @@ ospf_vty_init (void)
   /* reference bandwidth commands */
   install_element (OSPF_NODE, &ospf_auto_cost_reference_bandwidth_cmd);
   install_element (OSPF_NODE, &no_ospf_auto_cost_reference_bandwidth_cmd);
+  install_element (OSPF_NODE, &no_ospf_auto_cost_reference_bandwidth_val_cmd);
 
   /* "neighbor" commands. */
   install_element (OSPF_NODE, &ospf_neighbor_cmd);
@@ -10052,12 +10430,15 @@ ospf_vty_init (void)
   install_element (OSPF_NODE, &no_ospf_neighbor_cmd);
   install_element (OSPF_NODE, &no_ospf_neighbor_priority_cmd);
   install_element (OSPF_NODE, &no_ospf_neighbor_poll_interval_cmd);
+  install_element (OSPF_NODE, &no_ospf_neighbor_poll_interval_priority_cmd);
+  install_element (OSPF_NODE, &no_ospf_neighbor_priority_pollinterval_cmd);
 
   /* write multiplier commands */
   install_element (OSPF_NODE, &ospf_write_multiplier_cmd);
   install_element (OSPF_NODE, &no_ospf_write_multiplier_cmd);
   install_element (OSPF_NODE, &write_multiplier_cmd);
   install_element (OSPF_NODE, &no_write_multiplier_cmd);
+  install_element (OSPF_NODE, &no_write_multiplier_val_cmd);
 
   /* Init interface related vty commands. */
   ospf_vty_if_init ();
index 2b470c6dbe7c33fd10ac61a66e325024c08e9141..82f5a105f4a07f655d106f69de5eb0e8e366da36 100644 (file)
@@ -257,19 +257,27 @@ DEFUN (no_router_id,
   rid.prefixlen = 0;
   rid.family = AF_INET;
 
-  if (argc > 0)
-    VTY_GET_INTEGER ("VRF ID", vrf_id, argv[0]);
+  if (argc > 1)
+    VTY_GET_INTEGER ("VRF ID", vrf_id, argv[1]);
 
   router_id_set (&rid, vrf_id);
 
   return CMD_SUCCESS;
 }
 
+ALIAS (no_router_id,
+       no_router_id_val_cmd,
+       "no router-id A.B.C.D",
+       NO_STR
+       "Remove the manually configured router-id\n"
+       "IP address to use for router-id\n")
+
 ALIAS (no_router_id,
        no_router_id_vrf_cmd,
-       "no router-id " VRF_CMD_STR,
+       "no router-id A.B.C.D " VRF_CMD_STR,
        NO_STR
        "Remove the manually configured router-id\n"
+       "IP address to use for router-id\n"
        VRF_CMD_HELP_STR)
 
 static int
@@ -287,6 +295,7 @@ router_id_cmd_init (void)
   install_element (CONFIG_NODE, &router_id_cmd);
   install_element (CONFIG_NODE, &no_router_id_cmd);
   install_element (CONFIG_NODE, &router_id_vrf_cmd);
+  install_element (CONFIG_NODE, &no_router_id_val_cmd);
   install_element (CONFIG_NODE, &no_router_id_vrf_cmd);
 }
 
index 29a29c4044cdfbe7d825cd5fe0d13282a583bb77..30b4d749bdf3c20adeeb6070376cbdf076621bc8 100644 (file)
@@ -1495,6 +1495,160 @@ DEFUN (no_ipv6_nd_prefix,
   return CMD_SUCCESS;
 }
 
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_nortaddr_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (off-link|) (no-autoconfig|) (router-address|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for onlink determination\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Set Router Address flag\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_rev_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (no-autoconfig|) (off-link|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_rev_rtaddr_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (no-autoconfig|) (off-link|) (router-address|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Do not use prefix for onlink determination\n"
+       "Set Router Address flag\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_noauto_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (no-autoconfig|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for autoconfiguration")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_offlink_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (off-link|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_rtaddr_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite) (router-address|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Set Router Address flag\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_val_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) (<0-4294967295>|infinite)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_noval_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (no-autoconfig|) (off-link|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_noval_rev_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (off-link|) (no-autoconfig|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for onlink determination\n"
+       "Do not use prefix for autoconfiguration\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_noval_noauto_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (no-autoconfig|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for autoconfiguration\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_noval_offlink_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (off-link|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_noval_rtaddr_cmd,
+       "no ipv6 nd prefix X:X::X:X/M (router-address|)",
+       NO_STR
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Set Router Address flag\n")
+
 DEFUN (ipv6_nd_router_preference,
        ipv6_nd_router_preference_cmd,
        "ipv6 nd router-preference (high|medium|low)",
@@ -1797,6 +1951,18 @@ rtadv_cmd_init (void)
   install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_rtaddr_cmd);
   install_element (INTERFACE_NODE, &ipv6_nd_prefix_prefix_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_rev_rtaddr_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_nortaddr_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_rev_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_noauto_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_offlink_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_rtaddr_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_val_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_noval_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_noval_rev_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_noval_noauto_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_noval_offlink_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_noval_rtaddr_cmd);
   install_element (INTERFACE_NODE, &ipv6_nd_router_preference_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_router_preference_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_router_preference_val_cmd);
index 20ac1d0352f479295b94f4a29619d7862faa69ad..5d16dbba4f15e9a896aeb28f1956f67324133d3c 100644 (file)
@@ -746,6 +746,14 @@ DEFUN (no_zebra_route_map_timer,
   return (CMD_SUCCESS);
 }
 
+ALIAS (no_zebra_route_map_timer,
+       no_zebra_route_map_timer_val_cmd,
+       "no zebra route-map delay-timer <0-600>",
+       NO_STR
+       "Time to wait before route-map updates are processed\n"
+       "Reset delay-timer to default value, 30 secs\n"
+       "0 means event-driven updates are disabled\n")
+
 DEFUN (ip_protocol,
        ip_protocol_cmd,
        "ip protocol " QUAGGA_IP_PROTOCOL_MAP_STR_ZEBRA " route-map ROUTE-MAP",
@@ -1122,17 +1130,21 @@ DEFUN (no_ipv6_protocol_nht_rmap,
                VTY_NEWLINE);
      return CMD_WARNING;
     }
-  if (nht_rm[AFI_IP6][i])
-    XFREE (MTYPE_ROUTE_MAP_NAME, nht_rm[AFI_IP6][i]);
 
-  if ((argc == 2 && strcmp(argv[1], nht_rm[AFI_IP6][i]) == 0) ||
-      (argc < 2))
+  if (nht_rm[AFI_IP6][i] && argc == 2 && strcmp(argv[1], nht_rm[AFI_IP6][i]))
+    {
+      vty_out (vty, "invalid route-map \"%s\"%s", argv[1], VTY_NEWLINE);
+      return CMD_WARNING;
+    }
+
+  if (nht_rm[AFI_IP6][i])
     {
       XFREE (MTYPE_ROUTE_MAP_NAME, nht_rm[AFI_IP6][i]);
       nht_rm[AFI_IP6][i] = NULL;
-      zebra_evaluate_rnh(0, AF_INET6, 1, RNH_NEXTHOP_TYPE, NULL);
     }
 
+  zebra_evaluate_rnh(0, AF_INET6, 1, RNH_NEXTHOP_TYPE, NULL);
+
   return CMD_SUCCESS;
 }
 
@@ -1777,11 +1789,12 @@ zebra_route_map_init ()
   install_element (ENABLE_NODE, &show_ip_protocol_nht_cmd);
   install_element (CONFIG_NODE, &ipv6_protocol_nht_rmap_cmd);
   install_element (CONFIG_NODE, &no_ipv6_protocol_nht_rmap_cmd);
-  install_element (ENABLE_NODE, &no_ipv6_protocol_nht_rmap_val_cmd);
+  install_element (CONFIG_NODE, &no_ipv6_protocol_nht_rmap_val_cmd);
   install_element (VIEW_NODE, &show_ipv6_protocol_nht_cmd);
   install_element (ENABLE_NODE, &show_ipv6_protocol_nht_cmd);
   install_element (CONFIG_NODE, &zebra_route_map_timer_cmd);
   install_element (CONFIG_NODE, &no_zebra_route_map_timer_cmd);
+  install_element (CONFIG_NODE, &no_zebra_route_map_timer_val_cmd);
 
   route_map_init ();
   route_map_init_vty ();
index d786ae8e82f542f265b4642d18a67575a6afa805..21cb2aa5407ef5ebf131cfdbc328378795002621 100644 (file)
@@ -1341,37 +1341,40 @@ DEFUN (no_ip_route_vrf,
   return zebra_static_ipv4 (vty, 0, argv[0], NULL, argv[1], NULL, NULL, NULL, argv[2]);
 }
 
-DEFUN (no_ip_route_tag_vrf,
-       no_ip_route_tag_vrf_cmd,
-       "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-65535> " VRF_CMD_STR,
+DEFUN (no_ip_route_flags_vrf,
+       no_ip_route_flags_vrf_cmd,
+       "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) " VRF_CMD_STR,
        NO_STR
        IP_STR
        "Establish static routes\n"
        "IP destination prefix (e.g. 10.0.0.0/8)\n"
        "IP gateway address\n"
        "IP gateway interface name\n"
-       "Null interface\n"
-       "Tag of this route\n"
-       "Tag value\n"
+       "Emit an ICMP unreachable when matched\n"
+       "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], NULL, argv[1], NULL, argv[2], NULL, argv[3]);
+  return zebra_static_ipv4 (vty, 0, argv[0], NULL, argv[1], argv[2], NULL, NULL, argv[3]);
 }
 
-ALIAS (no_ip_route_vrf,
-       no_ip_route_flags_vrf_cmd,
-       "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) " VRF_CMD_STR,
+DEFUN (no_ip_route_tag_vrf,
+       no_ip_route_tag_vrf_cmd,
+       "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-65535> " VRF_CMD_STR,
        NO_STR
        IP_STR
        "Establish static routes\n"
        "IP destination prefix (e.g. 10.0.0.0/8)\n"
        "IP gateway address\n"
        "IP gateway interface name\n"
-       "Emit an ICMP unreachable when matched\n"
-       "Silently discard pkts when matched\n"
+       "Null interface\n"
+       "Tag of this route\n"
+       "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return zebra_static_ipv4 (vty, 0, argv[0], NULL, argv[1], NULL, argv[2], NULL, argv[3]);
+}
 
-ALIAS (no_ip_route_tag_vrf,
+DEFUN (no_ip_route_flags_tag_vrf,
        no_ip_route_flags_tag_vrf_cmd,
        "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-65535> " VRF_CMD_STR,
        NO_STR
@@ -1385,6 +1388,9 @@ ALIAS (no_ip_route_tag_vrf,
        "Tag of this route\n"
        "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return zebra_static_ipv4 (vty, 0, argv[0], NULL, argv[1], argv[2], argv[3], NULL, argv[4]);
+}
 
 DEFUN (no_ip_route_flags2_vrf,
        no_ip_route_flags2_vrf_cmd,
@@ -1397,7 +1403,7 @@ DEFUN (no_ip_route_flags2_vrf,
        "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], NULL, NULL, NULL, NULL, NULL, argv[1]);
+  return zebra_static_ipv4 (vty, 0, argv[0], NULL, NULL, argv[1], NULL, NULL, argv[2]);
 }
 
 DEFUN (no_ip_route_flags2_tag_vrf,
@@ -1413,7 +1419,7 @@ DEFUN (no_ip_route_flags2_tag_vrf,
        "Tag value\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], NULL, NULL, NULL, argv[1], NULL, argv[1]);
+  return zebra_static_ipv4 (vty, 0, argv[0], NULL, NULL, argv[1], argv[2], NULL, argv[3]);
 }
 
 DEFUN (no_ip_route_mask_vrf,
@@ -1432,9 +1438,9 @@ DEFUN (no_ip_route_mask_vrf,
   return zebra_static_ipv4 (vty, 0, argv[0], argv[1], argv[2], NULL, NULL, NULL, argv[3]);
 }
 
-DEFUN (no_ip_route_mask_tag_vrf,
-       no_ip_route_mask_tag_vrf_cmd,
-       "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-65535> " VRF_CMD_STR,
+DEFUN (no_ip_route_mask_flags_vrf,
+       no_ip_route_mask_flags_vrf_cmd,
+       "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) " VRF_CMD_STR,
        NO_STR
        IP_STR
        "Establish static routes\n"
@@ -1442,17 +1448,16 @@ DEFUN (no_ip_route_mask_tag_vrf,
        "IP destination prefix mask\n"
        "IP gateway address\n"
        "IP gateway interface name\n"
-       "Null interface\n"
-       "Tag of this route\n"
-       "Tag value\n"
+       "Emit an ICMP unreachable when matched\n"
+       "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], argv[2], NULL, argv[3], NULL, argv[4]);
+  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], argv[2], argv[3], NULL, NULL, argv[4]);
 }
 
-ALIAS (no_ip_route_mask_vrf,
-       no_ip_route_mask_flags_vrf_cmd,
-       "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) " VRF_CMD_STR,
+DEFUN (no_ip_route_mask_tag_vrf,
+       no_ip_route_mask_tag_vrf_cmd,
+       "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-65535> " VRF_CMD_STR,
        NO_STR
        IP_STR
        "Establish static routes\n"
@@ -1460,11 +1465,15 @@ ALIAS (no_ip_route_mask_vrf,
        "IP destination prefix mask\n"
        "IP gateway address\n"
        "IP gateway interface name\n"
-       "Emit an ICMP unreachable when matched\n"
-       "Silently discard pkts when matched\n"
+       "Null interface\n"
+       "Tag of this route\n"
+       "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], argv[2], NULL, argv[3], NULL, argv[4]);
+}
 
-ALIAS (no_ip_route_mask_tag_vrf,
+DEFUN (no_ip_route_mask_flags_tag_vrf,
        no_ip_route_mask_flags_tag_vrf_cmd,
        "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-65535> " VRF_CMD_STR,
        NO_STR
@@ -1479,6 +1488,9 @@ ALIAS (no_ip_route_mask_tag_vrf,
        "Tag of this route\n"
        "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], argv[2], argv[3], argv[4], NULL, argv[5]);
+}
 
 DEFUN (no_ip_route_mask_flags2_vrf,
        no_ip_route_mask_flags2_vrf_cmd,
@@ -1492,7 +1504,7 @@ DEFUN (no_ip_route_mask_flags2_vrf,
        "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], NULL, NULL, NULL, NULL, argv[2]);
+  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], NULL, argv[2], NULL, NULL, argv[3]);
 }
 
 DEFUN (no_ip_route_mask_flags2_tag_vrf,
@@ -1509,7 +1521,7 @@ DEFUN (no_ip_route_mask_flags2_tag_vrf,
        "Tag value\n"
        VRF_CMD_HELP_STR)
 {
-  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], NULL, NULL, argv[2], NULL, argv[3]);
+  return zebra_static_ipv4 (vty, 0, argv[0], argv[1], NULL, argv[2], argv[3], NULL, argv[4]);
 }
 
 
@@ -3505,7 +3517,7 @@ DEFUN (no_ipv6_route_tag,
   return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, NULL, argv[2], NULL, NULL);
 }
 
-ALIAS (no_ipv6_route,
+DEFUN (no_ipv6_route_flags,
        no_ipv6_route_flags_cmd,
        "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole)",
        NO_STR
@@ -3516,8 +3528,11 @@ ALIAS (no_ipv6_route,
        "IPv6 gateway interface name\n"
        "Emit an ICMP unreachable when matched\n"
        "Silently discard pkts when matched\n")
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, argv[2], NULL, NULL, NULL);
+}
 
-ALIAS (no_ipv6_route_tag,
+DEFUN (no_ipv6_route_flags_tag,
        no_ipv6_route_flags_tag_cmd,
        "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-65535>",
        NO_STR
@@ -3530,6 +3545,9 @@ ALIAS (no_ipv6_route_tag,
        "Silently discard pkts when matched\n"
        "Set tag for this route\n"
        "Tag value\n")
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, argv[2], argv[3], NULL, NULL);
+}
 
 DEFUN (no_ipv6_route_ifname,
        no_ipv6_route_ifname_cmd,
@@ -3559,7 +3577,7 @@ DEFUN (no_ipv6_route_ifname_tag,
   return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], NULL, argv[3], NULL, NULL);
 }
 
-ALIAS (no_ipv6_route_ifname,
+DEFUN (no_ipv6_route_ifname_flags,
        no_ipv6_route_ifname_flags_cmd,
        "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole)",
        NO_STR
@@ -3570,8 +3588,11 @@ ALIAS (no_ipv6_route_ifname,
        "IPv6 gateway interface name\n"
        "Emit an ICMP unreachable when matched\n"
        "Silently discard pkts when matched\n")
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], argv[3], NULL, NULL, NULL);
+}
 
-ALIAS (no_ipv6_route_ifname_tag,
+DEFUN (no_ipv6_route_ifname_flags_tag,
        no_ipv6_route_ifname_flags_tag_cmd,
        "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-65535>",
        NO_STR
@@ -3584,6 +3605,9 @@ ALIAS (no_ipv6_route_ifname_tag,
        "Silently discard pkts when matched\n"
        "Set tag for this route\n"
        "Tag value\n")
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], argv[3], argv[4], NULL, NULL);
+}
 
 DEFUN (no_ipv6_route_pref,
        no_ipv6_route_pref_cmd,
@@ -3992,7 +4016,7 @@ DEFUN (no_ipv6_route_tag_vrf,
   return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, NULL, argv[2], NULL, argv[3]);
 }
 
-ALIAS (no_ipv6_route_vrf,
+DEFUN (no_ipv6_route_flags_vrf,
        no_ipv6_route_flags_vrf_cmd,
        "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) " VRF_CMD_STR,
        NO_STR
@@ -4004,8 +4028,11 @@ ALIAS (no_ipv6_route_vrf,
        "Emit an ICMP unreachable when matched\n"
        "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, argv[2], NULL, NULL, argv[3]);
+}
 
-ALIAS (no_ipv6_route_tag_vrf,
+DEFUN (no_ipv6_route_flags_tag_vrf,
        no_ipv6_route_flags_tag_vrf_cmd,
        "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-65535> " VRF_CMD_STR,
        NO_STR
@@ -4019,6 +4046,9 @@ ALIAS (no_ipv6_route_tag_vrf,
        "Set tag for this route\n"
        "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], NULL, argv[2], argv[3], NULL, argv[4]);
+}
 
 DEFUN (no_ipv6_route_ifname_vrf,
        no_ipv6_route_ifname_vrf_cmd,
@@ -4050,7 +4080,7 @@ DEFUN (no_ipv6_route_ifname_tag_vrf,
   return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], NULL, argv[3], NULL, argv[4]);
 }
 
-ALIAS (no_ipv6_route_ifname_vrf,
+DEFUN (no_ipv6_route_ifname_flags_vrf,
        no_ipv6_route_ifname_flags_vrf_cmd,
        "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) " VRF_CMD_STR,
        NO_STR
@@ -4062,8 +4092,11 @@ ALIAS (no_ipv6_route_ifname_vrf,
        "Emit an ICMP unreachable when matched\n"
        "Silently discard pkts when matched\n"
        VRF_CMD_HELP_STR)
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], argv[3], NULL, NULL, argv[4]);
+}
 
-ALIAS (no_ipv6_route_ifname_tag_vrf,
+DEFUN (no_ipv6_route_ifname_flags_tag_vrf,
        no_ipv6_route_ifname_flags_tag_vrf_cmd,
        "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-65535> " VRF_CMD_STR,
        NO_STR
@@ -4077,6 +4110,9 @@ ALIAS (no_ipv6_route_ifname_tag_vrf,
        "Set tag for this route\n"
        "Tag value\n"
        VRF_CMD_HELP_STR)
+{
+  return static_ipv6_func (vty, 0, argv[0], argv[1], argv[2], argv[3], argv[4], NULL, argv[5]);
+}
 
 DEFUN (no_ipv6_route_pref_vrf,
        no_ipv6_route_pref_vrf_cmd,
index 87fa5ce49ccd0d7ae34e147d0546c938b0eeb659..8a66b3c99cf5dc241b1b25b9611132b3c507d002 100644 (file)
@@ -2285,6 +2285,17 @@ DEFUN (config_table,
   return CMD_SUCCESS;
 }
 
+DEFUN (no_config_table,
+       no_config_table_cmd,
+       "no table TABLENO",
+       NO_STR
+       "Configure target kernel routing table\n"
+       "TABLE integer\n")
+{
+  zebrad.rtm_table_default = 0;
+  return CMD_SUCCESS;
+}
+
 DEFUN (ip_forwarding,
        ip_forwarding_cmd,
        "ip forwarding",
@@ -2529,6 +2540,7 @@ zebra_init (void)
   install_element (VIEW_NODE, &show_table_cmd);
   install_element (ENABLE_NODE, &show_table_cmd);
   install_element (CONFIG_NODE, &config_table_cmd);
+  install_element (CONFIG_NODE, &no_config_table_cmd);
 #endif /* HAVE_NETLINK */
 
 #ifdef HAVE_IPV6