diff options
-rw-r--r-- | bgpd/bgp_bfd.c | 12 | ||||
-rw-r--r-- | bgpd/bgp_clist.c | 59 | ||||
-rw-r--r-- | bgpd/bgp_clist.h | 4 | ||||
-rw-r--r-- | bgpd/bgp_ecommunity.c | 6 | ||||
-rw-r--r-- | bgpd/bgp_route.c | 10 | ||||
-rw-r--r-- | bgpd/bgp_vty.c | 180 | ||||
-rw-r--r-- | bgpd/bgpd.c | 6 | ||||
-rw-r--r-- | lib/vty.h | 28 | ||||
-rw-r--r-- | ospf6d/ospf6_area.c | 53 | ||||
-rw-r--r-- | ospf6d/ospf6_interface.c | 9 | ||||
-rw-r--r-- | ospf6d/ospf6_spf.c | 12 | ||||
-rw-r--r-- | ospfd/ospf_bfd.c | 12 | ||||
-rw-r--r-- | ospfd/ospf_te.c | 12 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 525 | ||||
-rw-r--r-- | zebra/router-id.c | 15 | ||||
-rw-r--r-- | zebra/rtadv.c | 166 | ||||
-rw-r--r-- | zebra/zebra_routemap.c | 25 | ||||
-rw-r--r-- | zebra/zebra_vty.c | 112 | ||||
-rw-r--r-- | zebra/zserv.c | 12 |
19 files changed, 1067 insertions, 191 deletions
diff --git a/bgpd/bgp_bfd.c b/bgpd/bgp_bfd.c index 011ccef94..177c4d0f0 100644 --- a/bgpd/bgp_bfd.c +++ b/bgpd/bgp_bfd.c @@ -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); } diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c index 1d1d234c1..4beae4391 100644 --- a/bgpd/bgp_clist.c +++ b/bgpd/bgp_clist.c @@ -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; diff --git a/bgpd/bgp_clist.h b/bgpd/bgp_clist.h index 5dcb3b4c1..277ab7226 100644 --- a/bgpd/bgp_clist.h +++ b/bgpd/bgp_clist.h @@ -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); diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c index de6d38317..2a6bb23b2 100644 --- a/bgpd/bgp_ecommunity.c +++ b/bgpd/bgp_ecommunity.c @@ -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); diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index c06d27f35..f48bdea5d 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -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 diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 2c75a6e7e..0a94ff469 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -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); diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 6ab70e630..b11b62bbd 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -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, @@ -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) diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c index 71787541e..7ac1fa367 100644 --- a/ospf6d/ospf6_area.c +++ b/ospf6d/ospf6_area.c @@ -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); diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index 4b7745a62..3bc6ded43 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -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 */ diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c index 02fd14b76..52b60f1e6 100644 --- a/ospf6d/ospf6_spf.c +++ b/ospf6d/ospf6_spf.c @@ -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); } diff --git a/ospfd/ospf_bfd.c b/ospfd/ospf_bfd.c index 6c0ef37ef..12a63a4e2 100644 --- a/ospfd/ospf_bfd.c +++ b/ospfd/ospf_bfd.c @@ -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); } diff --git a/ospfd/ospf_te.c b/ospfd/ospf_te.c index e7e1a4362..6f19a2832 100644 --- a/ospfd/ospf_te.c +++ b/ospfd/ospf_te.c @@ -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); diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 5132c7580..18207ee23 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -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" @@ -2754,6 +2792,17 @@ ALIAS (no_ospf_neighbor, "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>", NO_STR @@ -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", @@ -6334,6 +6412,14 @@ DEFUN (no_ip_ospf_authentication_key, } 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", NO_STR @@ -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, @@ -7192,12 +7386,35 @@ DEFUN (no_ip_ospf_network, } 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", NO_STR "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", @@ -7457,6 +7683,16 @@ DEFUN (no_ip_ospf_retransmit_interval, } 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", NO_STR @@ -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", @@ -7576,6 +7840,16 @@ DEFUN (no_ip_ospf_transmit_delay, } 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", NO_STR @@ -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 (); diff --git a/zebra/router-id.c b/zebra/router-id.c index 2b470c6db..82f5a105f 100644 --- a/zebra/router-id.c +++ b/zebra/router-id.c @@ -257,8 +257,8 @@ 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); @@ -266,10 +266,18 @@ DEFUN (no_router_id, } 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); } diff --git a/zebra/rtadv.c b/zebra/rtadv.c index 29a29c404..30b4d749b 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -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); diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c index 20ac1d035..5d16dbba4 100644 --- a/zebra/zebra_routemap.c +++ b/zebra/zebra_routemap.c @@ -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 (); diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c index d786ae8e8..21cb2aa54 100644 --- a/zebra/zebra_vty.c +++ b/zebra/zebra_vty.c @@ -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, diff --git a/zebra/zserv.c b/zebra/zserv.c index 87fa5ce49..8a66b3c99 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -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 |