summaryrefslogtreecommitdiff
path: root/bgpd/bgp_vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_vty.c')
-rw-r--r--bgpd/bgp_vty.c268
1 files changed, 123 insertions, 145 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 58aec8ed..412b91d7 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -9597,52 +9597,40 @@ community_list_set_vty (struct vty *vty, int argc, const char **argv,
return CMD_SUCCESS;
}
-/* Community-list delete with name. */
-int
-community_list_unset_all_vty (struct vty *vty, const char *name)
-{
- int ret;
-
- ret = community_list_unset (bgp_clist, name, NULL, 0, COMMUNITY_LIST_AUTO);
-
- if (ret < 0)
- {
- community_list_perror (vty, ret);
- return CMD_WARNING;
- }
- return CMD_SUCCESS;
-}
-
/* Communiyt-list entry delete. */
int
-community_list_unset_vty (struct vty *vty, int argc, const char **argv,
- int style)
+community_list_unset_vty (struct vty *vty, int argc, const char **argv,
+ int style)
{
int ret;
- int direct;
- char *str;
+ int direct = 0;
+ char *str = NULL;
- /* Check the list direct. */
- if (strncmp (argv[1], "p", 1) == 0)
- direct = COMMUNITY_PERMIT;
- else if (strncmp (argv[1], "d", 1) == 0)
- direct = COMMUNITY_DENY;
- else
+ if (argc > 1)
{
- vty_out (vty, "%% Matching condition must be permit or deny%s",
- VTY_NEWLINE);
- return CMD_WARNING;
- }
+ /* Check the list direct. */
+ if (strncmp (argv[1], "p", 1) == 0)
+ direct = COMMUNITY_PERMIT;
+ else if (strncmp (argv[1], "d", 1) == 0)
+ direct = COMMUNITY_DENY;
+ else
+ {
+ vty_out (vty, "%% Matching condition must be permit or deny%s",
+ VTY_NEWLINE);
+ return CMD_WARNING;
+ }
- /* Concat community string argument. */
- str = argv_concat (argv, argc, 2);
+ /* Concat community string argument. */
+ str = argv_concat (argv, argc, 2);
+ }
/* Unset community list. */
ret = community_list_unset (bgp_clist, argv[0], str, direct, style);
/* Free temporary community list string allocated by
argv_concat(). */
- XFREE (MTYPE_TMP, str);
+ if (str)
+ XFREE (MTYPE_TMP, str);
if (ret < 0)
{
@@ -9657,19 +9645,6 @@ community_list_unset_vty (struct vty *vty, int argc, const char **argv,
#define COMMUNITY_LIST_STR "Add a community list entry\n"
#define COMMUNITY_VAL_STR "Community number in aa:nn format or internet|local-AS|no-advertise|no-export\n"
-DEFUN (ip_community_list,
- ip_community_list_cmd,
- "ip community-list WORD (deny|permit) .AA:NN",
- IP_STR
- COMMUNITY_LIST_STR
- "Community list name\n"
- "Specify community to reject\n"
- "Specify community to accept\n"
- COMMUNITY_VAL_STR)
-{
- return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_AUTO, 1);
-}
-
DEFUN (ip_community_list_standard,
ip_community_list_standard_cmd,
"ip community-list <1-99> (deny|permit) .AA:NN",
@@ -9694,7 +9669,7 @@ ALIAS (ip_community_list_standard,
DEFUN (ip_community_list_expanded,
ip_community_list_expanded_cmd,
- "ip community-list <100-199> (deny|permit) .LINE",
+ "ip community-list <100-500> (deny|permit) .LINE",
IP_STR
COMMUNITY_LIST_STR
"Community list number (expanded)\n"
@@ -9743,44 +9718,50 @@ DEFUN (ip_community_list_name_expanded,
return community_list_set_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED, 1);
}
-DEFUN (no_ip_community_list_all,
- no_ip_community_list_all_cmd,
- "no ip community-list (WORD|<1-99>|<100-199>)",
+DEFUN (no_ip_community_list_standard_all,
+ no_ip_community_list_standard_all_cmd,
+ "no ip community-list <1-99>",
+ NO_STR
+ IP_STR
+ COMMUNITY_LIST_STR
+ "Community list number (standard)\n")
+{
+ return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
+}
+
+DEFUN (no_ip_community_list_expanded_all,
+ no_ip_community_list_expanded_all_cmd,
+ "no ip community-list <100-500>",
NO_STR
IP_STR
COMMUNITY_LIST_STR
- "Community list name\n"
- "Community list number (standard)\n"
"Community list number (expanded)\n")
{
- return community_list_unset_all_vty (vty, argv[0]);
+ return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
}
-DEFUN (no_ip_community_list_name_all,
- no_ip_community_list_name_all_cmd,
- "no ip community-list (standard|expanded) WORD",
+DEFUN (no_ip_community_list_name_standard_all,
+ no_ip_community_list_name_standard_all_cmd,
+ "no ip community-list standard WORD",
NO_STR
IP_STR
COMMUNITY_LIST_STR
"Add a standard community-list entry\n"
- "Add an expanded community-list entry\n"
"Community list name\n")
{
- return community_list_unset_all_vty (vty, argv[1]);
+ return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_STANDARD);
}
-DEFUN (no_ip_community_list,
- no_ip_community_list_cmd,
- "no ip community-list WORD (deny|permit) .AA:NN",
+DEFUN (no_ip_community_list_name_expanded_all,
+ no_ip_community_list_name_expanded_all_cmd,
+ "no ip community-list expanded WORD",
NO_STR
IP_STR
COMMUNITY_LIST_STR
- "Community list name\n"
- "Specify community to reject\n"
- "Specify community to accept\n"
- COMMUNITY_VAL_STR)
+ "Add an expanded community-list entry\n"
+ "Community list name\n")
{
- return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_AUTO);
+ return community_list_unset_vty (vty, argc, argv, COMMUNITY_LIST_EXPANDED);
}
DEFUN (no_ip_community_list_standard,
@@ -9799,7 +9780,7 @@ DEFUN (no_ip_community_list_standard,
DEFUN (no_ip_community_list_expanded,
no_ip_community_list_expanded_cmd,
- "no ip community-list <100-199> (deny|permit) .LINE",
+ "no ip community-list <100-500> (deny|permit) .LINE",
NO_STR
IP_STR
COMMUNITY_LIST_STR
@@ -9883,7 +9864,7 @@ DEFUN (show_ip_community_list,
struct community_list *list;
struct community_list_master *cm;
- cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_AUTO);
+ cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_MASTER);
if (! cm)
return CMD_SUCCESS;
@@ -9898,7 +9879,7 @@ DEFUN (show_ip_community_list,
DEFUN (show_ip_community_list_arg,
show_ip_community_list_arg_cmd,
- "show ip community-list (<1-199>|WORD)",
+ "show ip community-list (<1-500>|WORD)",
SHOW_STR
IP_STR
"List community-list\n"
@@ -9907,7 +9888,7 @@ DEFUN (show_ip_community_list_arg,
{
struct community_list *list;
- list = community_list_lookup (bgp_clist, argv[0], COMMUNITY_LIST_AUTO);
+ list = community_list_lookup (bgp_clist, argv[0], COMMUNITY_LIST_MASTER);
if (! list)
{
vty_out (vty, "%% Can't find communit-list%s", VTY_NEWLINE);
@@ -9968,49 +9949,38 @@ extcommunity_list_set_vty (struct vty *vty, int argc, const char **argv,
}
int
-extcommunity_list_unset_all_vty (struct vty *vty, const char *name)
+extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv,
+ int style)
{
int ret;
+ int direct = 0;
+ char *str = NULL;
- ret = extcommunity_list_unset (bgp_clist, name, NULL, 0, EXTCOMMUNITY_LIST_AUTO);
-
- if (ret < 0)
+ if (argc > 1)
{
- community_list_perror (vty, ret);
- return CMD_WARNING;
- }
- return CMD_SUCCESS;
-}
-
-int
-extcommunity_list_unset_vty (struct vty *vty, int argc, const char **argv,
- int style)
-{
- int ret;
- int direct;
- char *str;
+ /* Check the list direct. */
+ if (strncmp (argv[1], "p", 1) == 0)
+ direct = COMMUNITY_PERMIT;
+ else if (strncmp (argv[1], "d", 1) == 0)
+ direct = COMMUNITY_DENY;
+ else
+ {
+ vty_out (vty, "%% Matching condition must be permit or deny%s",
+ VTY_NEWLINE);
+ return CMD_WARNING;
+ }
- /* Check the list direct. */
- if (strncmp (argv[1], "p", 1) == 0)
- direct = COMMUNITY_PERMIT;
- else if (strncmp (argv[1], "d", 1) == 0)
- direct = COMMUNITY_DENY;
- else
- {
- vty_out (vty, "%% Matching condition must be permit or deny%s",
- VTY_NEWLINE);
- return CMD_WARNING;
+ /* Concat community string argument. */
+ str = argv_concat (argv, argc, 2);
}
- /* Concat community string argument. */
- str = argv_concat (argv, argc, 2);
-
/* Unset community list. */
ret = extcommunity_list_unset (bgp_clist, argv[0], str, direct, style);
/* Free temporary community list string allocated by
argv_concat(). */
- XFREE (MTYPE_TMP, str);
+ if (str)
+ XFREE (MTYPE_TMP, str);
if (ret < 0)
{
@@ -10049,7 +10019,7 @@ ALIAS (ip_extcommunity_list_standard,
DEFUN (ip_extcommunity_list_expanded,
ip_extcommunity_list_expanded_cmd,
- "ip extcommunity-list <100-199> (deny|permit) .LINE",
+ "ip extcommunity-list <100-500> (deny|permit) .LINE",
IP_STR
EXTCOMMUNITY_LIST_STR
"Extended Community list number (expanded)\n"
@@ -10098,29 +10068,50 @@ DEFUN (ip_extcommunity_list_name_expanded,
return extcommunity_list_set_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED, 1);
}
-DEFUN (no_ip_extcommunity_list_all,
- no_ip_extcommunity_list_all_cmd,
- "no ip extcommunity-list (<1-99>|<100-199>)",
+DEFUN (no_ip_extcommunity_list_standard_all,
+ no_ip_extcommunity_list_standard_all_cmd,
+ "no ip extcommunity-list <1-99>",
+ NO_STR
+ IP_STR
+ EXTCOMMUNITY_LIST_STR
+ "Extended Community list number (standard)\n")
+{
+ return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+}
+
+DEFUN (no_ip_extcommunity_list_expanded_all,
+ no_ip_extcommunity_list_expanded_all_cmd,
+ "no ip extcommunity-list <100-500>",
NO_STR
IP_STR
EXTCOMMUNITY_LIST_STR
- "Extended Community list number (standard)\n"
"Extended Community list number (expanded)\n")
{
- return extcommunity_list_unset_all_vty (vty, argv[0]);
+ return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
}
-DEFUN (no_ip_extcommunity_list_name_all,
- no_ip_extcommunity_list_name_all_cmd,
- "no ip extcommunity-list (standard|expanded) WORD",
+DEFUN (no_ip_extcommunity_list_name_standard_all,
+ no_ip_extcommunity_list_name_standard_all_cmd,
+ "no ip extcommunity-list standard WORD",
NO_STR
IP_STR
EXTCOMMUNITY_LIST_STR
"Specify standard extcommunity-list\n"
+ "Extended Community list name\n")
+{
+ return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_STANDARD);
+}
+
+DEFUN (no_ip_extcommunity_list_name_expanded_all,
+ no_ip_extcommunity_list_name_expanded_all_cmd,
+ "no ip extcommunity-list expanded WORD",
+ NO_STR
+ IP_STR
+ EXTCOMMUNITY_LIST_STR
"Specify expanded extcommunity-list\n"
"Extended Community list name\n")
{
- return extcommunity_list_unset_all_vty (vty, argv[1]);
+ return extcommunity_list_unset_vty (vty, argc, argv, EXTCOMMUNITY_LIST_EXPANDED);
}
DEFUN (no_ip_extcommunity_list_standard,
@@ -10139,7 +10130,7 @@ DEFUN (no_ip_extcommunity_list_standard,
DEFUN (no_ip_extcommunity_list_expanded,
no_ip_extcommunity_list_expanded_cmd,
- "no ip extcommunity-list <100-199> (deny|permit) .LINE",
+ "no ip extcommunity-list <100-500> (deny|permit) .LINE",
NO_STR
IP_STR
EXTCOMMUNITY_LIST_STR
@@ -10223,7 +10214,7 @@ DEFUN (show_ip_extcommunity_list,
struct community_list *list;
struct community_list_master *cm;
- cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_AUTO);
+ cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_MASTER);
if (! cm)
return CMD_SUCCESS;
@@ -10238,7 +10229,7 @@ DEFUN (show_ip_extcommunity_list,
DEFUN (show_ip_extcommunity_list_arg,
show_ip_extcommunity_list_arg_cmd,
- "show ip extcommunity-list (<1-199>|WORD)",
+ "show ip extcommunity-list (<1-500>|WORD)",
SHOW_STR
IP_STR
"List extended-community list\n"
@@ -10247,7 +10238,7 @@ DEFUN (show_ip_extcommunity_list_arg,
{
struct community_list *list;
- list = community_list_lookup (bgp_clist, argv[0], EXTCOMMUNITY_LIST_AUTO);
+ list = community_list_lookup (bgp_clist, argv[0], EXTCOMMUNITY_LIST_MASTER);
if (! list)
{
vty_out (vty, "%% Can't find extcommunit-list%s", VTY_NEWLINE);
@@ -10287,23 +10278,15 @@ community_list_config_write (struct vty *vty)
int write = 0;
/* Community-list. */
- cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_AUTO);
+ cm = community_list_master_lookup (bgp_clist, COMMUNITY_LIST_MASTER);
for (list = cm->num.head; list; list = list->next)
for (entry = list->head; entry; entry = entry->next)
{
- if (atol (list->name) < 200)
- vty_out (vty, "ip community-list %s %s %s%s",
- list->name, community_direct_str (entry->direct),
- community_list_config_str (entry),
- VTY_NEWLINE);
- else
- vty_out (vty, "ip community-list %s %s %s %s%s",
- entry->style == COMMUNITY_LIST_STANDARD
- ? "standard" : "expanded",
- list->name, community_direct_str (entry->direct),
- community_list_config_str (entry),
- VTY_NEWLINE);
+ vty_out (vty, "ip community-list %s %s %s%s",
+ list->name, community_direct_str (entry->direct),
+ community_list_config_str (entry),
+ VTY_NEWLINE);
write++;
}
for (list = cm->str.head; list; list = list->next)
@@ -10319,21 +10302,14 @@ community_list_config_write (struct vty *vty)
}
/* Extcommunity-list. */
- cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_AUTO);
+ cm = community_list_master_lookup (bgp_clist, EXTCOMMUNITY_LIST_MASTER);
for (list = cm->num.head; list; list = list->next)
for (entry = list->head; entry; entry = entry->next)
{
- if (atol (list->name) < 200)
- vty_out (vty, "ip extcommunity-list %s %s %s%s",
- list->name, community_direct_str (entry->direct),
- community_list_config_str (entry), VTY_NEWLINE);
- else
- vty_out (vty, "ip extcommunity-list %s %s %s %s%s",
- entry->style == EXTCOMMUNITY_LIST_STANDARD
- ? "standard" : "expanded",
- list->name, community_direct_str (entry->direct),
- community_list_config_str (entry), VTY_NEWLINE);
+ vty_out (vty, "ip extcommunity-list %s %s %s%s",
+ list->name, community_direct_str (entry->direct),
+ community_list_config_str (entry), VTY_NEWLINE);
write++;
}
for (list = cm->str.head; list; list = list->next)
@@ -10362,16 +10338,16 @@ community_list_vty ()
install_node (&community_list_node, community_list_config_write);
/* Community-list. */
- install_element (CONFIG_NODE, &ip_community_list_cmd);
install_element (CONFIG_NODE, &ip_community_list_standard_cmd);
install_element (CONFIG_NODE, &ip_community_list_standard2_cmd);
install_element (CONFIG_NODE, &ip_community_list_expanded_cmd);
install_element (CONFIG_NODE, &ip_community_list_name_standard_cmd);
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_all_cmd);
- install_element (CONFIG_NODE, &no_ip_community_list_name_all_cmd);
- install_element (CONFIG_NODE, &no_ip_community_list_cmd);
+ install_element (CONFIG_NODE, &no_ip_community_list_standard_all_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);
@@ -10388,8 +10364,10 @@ community_list_vty ()
install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard_cmd);
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_all_cmd);
- install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_all_cmd);
+ install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_all_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);