DEFUN (babel_distribute_list,
babel_distribute_list_cmd,
- "distribute-list [prefix] WORD <in|out> [WORD]",
+ "distribute-list [prefix] ACCESSLIST4_NAME <in|out> [WORD]",
"Filter networks in routing updates\n"
"Specify a prefix\n"
"Access-list name\n"
DEFUN (babel_no_distribute_list,
babel_no_distribute_list_cmd,
- "no distribute-list [prefix] WORD <in|out> [WORD]",
+ "no distribute-list [prefix] ACCESSLIST4_NAME <in|out> [WORD]",
NO_STR
"Filter networks in routing updates\n"
"Specify a prefix\n"
DEFUN (babel_ipv6_distribute_list,
babel_ipv6_distribute_list_cmd,
- "ipv6 distribute-list [prefix] WORD <in|out> [WORD]",
+ "ipv6 distribute-list [prefix] ACCESSLIST6_NAME <in|out> [WORD]",
"IPv6\n"
"Filter networks in routing updates\n"
"Specify a prefix\n"
DEFUN (babel_no_ipv6_distribute_list,
babel_no_ipv6_distribute_list_cmd,
- "no ipv6 distribute-list [prefix] WORD <in|out> [WORD]",
+ "no ipv6 distribute-list [prefix] ACCESSLIST6_NAME <in|out> [WORD]",
NO_STR
"IPv6\n"
"Filter networks in routing updates\n"
DEFUN_YANG (match_mac_address,
match_mac_address_cmd,
- "match mac address WORD",
+ "match mac address ACCESSLIST_MAC_NAME",
MATCH_STR
"mac address\n"
"Match address of route\n"
DEFUN_YANG (no_match_mac_address,
no_match_mac_address_cmd,
- "no match mac address WORD",
+ "no match mac address ACCESSLIST_MAC_NAME",
NO_STR
MATCH_STR
"mac\n"
DEFPY_YANG (match_ip_route_source,
match_ip_route_source_cmd,
- "match ip route-source WORD",
+ "match ip route-source ACCESSLIST4_NAME",
MATCH_STR
IP_STR
"Match advertising source address of route\n"
DEFUN_YANG (no_match_ip_route_source,
no_match_ip_route_source_cmd,
- "no match ip route-source [WORD]",
+ "no match ip route-source [ACCESSLIST4_NAME]",
NO_STR
MATCH_STR
IP_STR
DEFUN (neighbor_distribute_list,
neighbor_distribute_list_cmd,
- "neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list WORD <in|out>",
+ "neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list ACCESSLIST_NAME <in|out>",
NEIGHBOR_STR
NEIGHBOR_ADDR_STR2
"Filter updates to/from this neighbor\n"
ALIAS_HIDDEN(
neighbor_distribute_list, neighbor_distribute_list_hidden_cmd,
- "neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list WORD <in|out>",
+ "neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list ACCESSLIST_NAME <in|out>",
NEIGHBOR_STR NEIGHBOR_ADDR_STR2
"Filter updates to/from this neighbor\n"
"IP Access-list name\n"
DEFUN (no_neighbor_distribute_list,
no_neighbor_distribute_list_cmd,
- "no neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list WORD <in|out>",
+ "no neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list ACCESSLIST_NAME <in|out>",
NO_STR
NEIGHBOR_STR
NEIGHBOR_ADDR_STR2
ALIAS_HIDDEN(
no_neighbor_distribute_list, no_neighbor_distribute_list_hidden_cmd,
- "no neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list WORD <in|out>",
+ "no neighbor <A.B.C.D|X:X::X:X|WORD> distribute-list ACCESSLIST_NAME <in|out>",
NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2
"Filter updates to/from this neighbor\n"
"IP Access-list name\n"
DEFUN (match_ip_next_hop,
match_ip_next_hop_cmd,
- "match ip next-hop WORD",
+ "match ip next-hop ACCESSLIST4_NAME",
MATCH_STR
IP_STR
"Match next-hop address of route\n"
}
ALIAS(no_match_ip_next_hop, no_match_ip_next_hop_val_cmd,
- "no match ip next-hop WORD", NO_STR MATCH_STR IP_STR
+ "no match ip next-hop ACCESSLIST4_NAME", NO_STR MATCH_STR IP_STR
"Match next-hop address of route\n"
"IP Access-list name\n")
DEFUN (match_ip_address,
match_ip_address_cmd,
- "match ip address WORD",
+ "match ip address ACCESSLIST4_NAME",
MATCH_STR
IP_STR
"Match address of route\n"
}
ALIAS(no_match_ip_address, no_match_ip_address_val_cmd,
- "no match ip address WORD", NO_STR MATCH_STR IP_STR
+ "no match ip address ACCESSLIST4_NAME", NO_STR MATCH_STR IP_STR
"Match address of route\n"
"IP Access-list name\n")
DEFUN (eigrp_distribute_list,
eigrp_distribute_list_cmd,
- "distribute-list [prefix] WORD <in|out> [WORD]",
+ "distribute-list [prefix] ACCESSLIST_NAME <in|out> [WORD]",
"Filter networks in routing updates\n"
"Specify a prefix\n"
"Access-list name\n"
DEFUN (eigrp_no_distribute_list,
eigrp_no_distribute_list_cmd,
- "no distribute-list [prefix] WORD <in|out> [WORD]",
+ "no distribute-list [prefix] ACCESSLIST_NAME <in|out> [WORD]",
NO_STR
"Filter networks in routing updates\n"
"Specify a prefix\n"
* XPath: /frr-isisd:isis/instance/spf/prefix-priorities/medium/access-list-name
*/
DEFPY_YANG(spf_prefix_priority, spf_prefix_priority_cmd,
- "spf prefix-priority <critical|high|medium>$priority WORD$acl_name",
+ "spf prefix-priority <critical|high|medium>$priority ACCESSLIST_NAME$acl_name",
"SPF configuration\n"
"Configure a prefix priority list\n"
"Specify critical priority prefixes\n"
}
DEFPY_YANG(no_spf_prefix_priority, no_spf_prefix_priority_cmd,
- "no spf prefix-priority <critical|high|medium>$priority [WORD]",
+ "no spf prefix-priority <critical|high|medium>$priority [ACCESSLIST_NAME]",
NO_STR
"SPF configuration\n"
"Configure a prefix priority list\n"
DEFPY (ldp_discovery_targeted_hello_accept,
ldp_discovery_targeted_hello_accept_cmd,
- "[no] discovery targeted-hello accept [from WORD$from_acl]",
+ "[no] discovery targeted-hello accept [from ACCESSLIST_NAME$from_acl]",
NO_STR
"Configure discovery parameters\n"
"LDP Targeted Hellos\n"
DEFPY (ldp_label_local_advertise,
ldp_label_local_advertise_cmd,
- "[no] label local advertise [{to WORD$to_acl|for WORD$for_acl}]",
+ "[no] label local advertise [{to ACCESSLIST_NAME$to_acl|for ACCESSLIST_NAME$for_acl}]",
NO_STR
"Configure label control and policies\n"
"Configure local label control and policies\n"
DEFPY (ldp_label_local_advertise_explicit_null,
ldp_label_local_advertise_explicit_null_cmd,
- "[no] label local advertise explicit-null [for WORD$for_acl]",
+ "[no] label local advertise explicit-null [for ACCESSLIST_NAME$for_acl]",
NO_STR
"Configure label control and policies\n"
"Configure local label control and policies\n"
DEFPY (ldp_label_local_allocate,
ldp_label_local_allocate_cmd,
- "[no] label local allocate <host-routes$host_routes|for WORD$for_acl>",
+ "[no] label local allocate <host-routes$host_routes|for ACCESSLIST_NAME$for_acl>",
NO_STR
"Configure label control and policies\n"
"Configure local label control and policies\n"
DEFPY (ldp_label_remote_accept,
ldp_label_remote_accept_cmd,
- "[no] label remote accept {from WORD$from_acl|for WORD$for_acl}",
+ "[no] label remote accept {from ACCESSLIST_NAME$from_acl|for ACCESSLIST_NAME$for_acl}",
NO_STR
"Configure label control and policies\n"
"Configure remote/peer label control and policies\n"
DEFUN (show_mac_access_list_name,
show_mac_access_list_name_cmd,
- "show mac access-list WORD",
+ "show mac access-list ACCESSLIST_MAC_NAME",
SHOW_STR
"mac access lists\n"
"List mac access lists\n"
DEFUN (show_ip_access_list_name,
show_ip_access_list_name_cmd,
- "show ip access-list WORD [json]",
+ "show ip access-list ACCESSLIST4_NAME [json]",
SHOW_STR
IP_STR
"List IP access lists\n"
DEFUN (show_ipv6_access_list_name,
show_ipv6_access_list_name_cmd,
- "show ipv6 access-list WORD [json]",
+ "show ipv6 access-list ACCESSLIST6_NAME [json]",
SHOW_STR
IPV6_STR
"List IPv6 access lists\n"
install_element(ENABLE_NODE, &show_ip_access_list_name_cmd);
}
+static void access_list_autocomplete_afi(afi_t afi, vector comps,
+ struct cmd_token *token)
+{
+ struct access_list *access;
+ struct access_list *next;
+ struct access_master *master;
+
+ master = access_master_get(afi);
+ if (master == NULL)
+ return;
+
+ for (access = master->str.head; access; access = next) {
+ next = access->next;
+ vector_set(comps, XSTRDUP(MTYPE_COMPLETION, access->name));
+ }
+}
+
static struct cmd_node access_ipv6_node = {
.name = "ipv6 access list",
.node = ACCESS_IPV6_NODE,
.prompt = "",
};
+static void access_list_autocomplete(vector comps, struct cmd_token *token)
+{
+ access_list_autocomplete_afi(AFI_IP, comps, token);
+ access_list_autocomplete_afi(AFI_IP6, comps, token);
+ access_list_autocomplete_afi(AFI_L2VPN, comps, token);
+}
+
+static void access_list4_autocomplete(vector comps, struct cmd_token *token)
+{
+ access_list_autocomplete_afi(AFI_IP, comps, token);
+}
+
+static void access_list6_autocomplete(vector comps, struct cmd_token *token)
+{
+ access_list_autocomplete_afi(AFI_IP6, comps, token);
+}
+
+static void access_list_mac_autocomplete(vector comps, struct cmd_token *token)
+{
+ access_list_autocomplete_afi(AFI_L2VPN, comps, token);
+}
+
+static const struct cmd_variable_handler access_list_handlers[] = {
+ {.tokenname = "ACCESSLIST_NAME",
+ .completions = access_list_autocomplete},
+ {.tokenname = "ACCESSLIST4_NAME",
+ .completions = access_list4_autocomplete},
+ {.tokenname = "ACCESSLIST6_NAME",
+ .completions = access_list6_autocomplete},
+ {.tokenname = "ACCESSLIST_MAC_NAME",
+ .completions = access_list_mac_autocomplete},
+ {.completions = NULL}};
+
static void access_list_reset_ipv6(void)
{
struct access_list *access;
void access_list_init(void)
{
+ cmd_variable_handler_register(access_list_handlers);
+
access_list_init_ipv4();
access_list_init_ipv6();
access_list_init_mac();
ALIAS(
no_ipv6_access_list_remark, no_ipv6_access_list_remark_line_cmd,
- "no ipv6 access-list WORD$name remark LINE...",
+ "no ipv6 access-list ACCESSLIST6_NAME$name remark LINE...",
NO_STR
IPV6_STR
ACCESS_LIST_STR
DEFPY_YANG(
mac_access_list, mac_access_list_cmd,
- "mac access-list WORD$name [seq (1-4294967295)$seq] <deny|permit>$action <X:X:X:X:X:X$mac|any>",
+ "mac access-list ACCESSLIST_MAC_NAME$name [seq (1-4294967295)$seq] <deny|permit>$action <X:X:X:X:X:X$mac|any>",
MAC_STR
ACCESS_LIST_STR
ACCESS_LIST_ZEBRA_STR
DEFPY_YANG(
no_mac_access_list, no_mac_access_list_cmd,
- "no mac access-list WORD$name [seq (1-4294967295)$seq] <deny|permit>$action <X:X:X:X:X:X$mac|any>",
+ "no mac access-list ACCESSLIST_MAC_NAME$name [seq (1-4294967295)$seq] <deny|permit>$action <X:X:X:X:X:X$mac|any>",
NO_STR
MAC_STR
ACCESS_LIST_STR
DEFPY_YANG(
no_mac_access_list_all, no_mac_access_list_all_cmd,
- "no mac access-list WORD$name",
+ "no mac access-list ACCESSLIST_MAC_NAME$name",
NO_STR
MAC_STR
ACCESS_LIST_STR
DEFPY_YANG(
mac_access_list_remark, mac_access_list_remark_cmd,
- "mac access-list WORD$name remark LINE...",
+ "mac access-list ACCESSLIST_MAC_NAME$name remark LINE...",
MAC_STR
ACCESS_LIST_STR
ACCESS_LIST_ZEBRA_STR
DEFPY_YANG(
no_mac_access_list_remark, no_mac_access_list_remark_cmd,
- "no mac access-list WORD$name remark",
+ "no mac access-list ACCESSLIST_MAC_NAME$name remark",
NO_STR
MAC_STR
ACCESS_LIST_STR
ALIAS(
no_mac_access_list_remark, no_mac_access_list_remark_line_cmd,
- "no mac access-list WORD$name remark LINE...",
+ "no mac access-list ACCESSLIST_MAC_NAME$name remark LINE...",
NO_STR
MAC_STR
ACCESS_LIST_STR
DEFPY_YANG(
match_ip_address, match_ip_address_cmd,
- "match ip address WORD$name",
+ "match ip address ACCESSLIST4_NAME$name",
MATCH_STR
IP_STR
"Match address of route\n"
DEFPY_YANG(
no_match_ip_address, no_match_ip_address_cmd,
- "no match ip address [WORD]",
+ "no match ip address [ACCESSLIST4_NAME]",
NO_STR
MATCH_STR
IP_STR
DEFPY_YANG(
match_ip_next_hop, match_ip_next_hop_cmd,
- "match ip next-hop WORD$name",
+ "match ip next-hop ACCESSLIST4_NAME$name",
MATCH_STR
IP_STR
"Match next-hop address of route\n"
DEFPY_YANG(
no_match_ip_next_hop, no_match_ip_next_hop_cmd,
- "no match ip next-hop [WORD]",
+ "no match ip next-hop [ACCESSLIST4_NAME]",
NO_STR
MATCH_STR
IP_STR
DEFPY_YANG(
match_ipv6_address, match_ipv6_address_cmd,
- "match ipv6 address WORD$name",
+ "match ipv6 address ACCESSLIST6_NAME$name",
MATCH_STR
IPV6_STR
"Match IPv6 address of route\n"
DEFPY_YANG(
no_match_ipv6_address, no_match_ipv6_address_cmd,
- "no match ipv6 address [WORD]",
+ "no match ipv6 address [ACCESSLIST6_NAME]",
NO_STR
MATCH_STR
IPV6_STR
DEFUN (area_import_list,
area_import_list_cmd,
- "area <A.B.C.D|(0-4294967295)> import-list NAME",
+ "area <A.B.C.D|(0-4294967295)> import-list ACCESSLIST6_NAME",
"OSPF6 area parameters\n"
"OSPF6 area ID in IP address format\n"
"OSPF6 area ID as a decimal value\n"
"Set the filter for networks from other areas announced to the specified one\n"
- "Name of the acess-list\n")
+ "Name of the access-list\n")
{
int idx_ipv4 = 1;
int idx_name = 3;
DEFUN (no_area_import_list,
no_area_import_list_cmd,
- "no area <A.B.C.D|(0-4294967295)> import-list NAME",
+ "no area <A.B.C.D|(0-4294967295)> import-list ACCESSLIST6_NAME",
NO_STR
"OSPF6 area parameters\n"
"OSPF6 area ID in IP address format\n"
DEFUN (area_export_list,
area_export_list_cmd,
- "area <A.B.C.D|(0-4294967295)> export-list NAME",
+ "area <A.B.C.D|(0-4294967295)> export-list ACCESSLIST6_NAME",
"OSPF6 area parameters\n"
"OSPF6 area ID in IP address format\n"
"OSPF6 area ID as a decimal value\n"
"Set the filter for networks announced to other areas\n"
- "Name of the acess-list\n")
+ "Name of the access-list\n")
{
int idx_ipv4 = 1;
int idx_name = 3;
DEFUN (no_area_export_list,
no_area_export_list_cmd,
- "no area <A.B.C.D|(0-4294967295)> export-list NAME",
+ "no area <A.B.C.D|(0-4294967295)> export-list ACCESSLIST6_NAME",
NO_STR
"OSPF6 area parameters\n"
"OSPF6 area ID in IP address format\n"
DEFUN (ospf_area_export_list,
ospf_area_export_list_cmd,
- "area <A.B.C.D|(0-4294967295)> export-list NAME",
+ "area <A.B.C.D|(0-4294967295)> export-list ACCESSLIST4_NAME",
"OSPF area parameters\n"
"OSPF area ID in IP address format\n"
"OSPF area ID as a decimal value\n"
DEFUN (no_ospf_area_export_list,
no_ospf_area_export_list_cmd,
- "no area <A.B.C.D|(0-4294967295)> export-list NAME",
+ "no area <A.B.C.D|(0-4294967295)> export-list ACCESSLIST4_NAME",
NO_STR
"OSPF area parameters\n"
"OSPF area ID in IP address format\n"
DEFUN (ospf_area_import_list,
ospf_area_import_list_cmd,
- "area <A.B.C.D|(0-4294967295)> import-list NAME",
+ "area <A.B.C.D|(0-4294967295)> import-list ACCESSLIST4_NAME",
"OSPF area parameters\n"
"OSPF area ID in IP address format\n"
"OSPF area ID as a decimal value\n"
DEFUN (no_ospf_area_import_list,
no_ospf_area_import_list_cmd,
- "no area <A.B.C.D|(0-4294967295)> import-list NAME",
+ "no area <A.B.C.D|(0-4294967295)> import-list ACCESSLIST4_NAME",
NO_STR
"OSPF area parameters\n"
"OSPF area ID in IP address format\n"
DEFUN (ospf_distribute_list_out,
ospf_distribute_list_out_cmd,
- "distribute-list WORD out " FRR_REDIST_STR_OSPFD,
+ "distribute-list ACCESSLIST4_NAME out " FRR_REDIST_STR_OSPFD,
"Filter networks in routing updates\n"
"Access-list name\n"
OUT_STR
DEFUN (no_ospf_distribute_list_out,
no_ospf_distribute_list_out_cmd,
- "no distribute-list WORD out " FRR_REDIST_STR_OSPFD,
+ "no distribute-list ACCESSLIST4_NAME out " FRR_REDIST_STR_OSPFD,
NO_STR
"Filter networks in routing updates\n"
"Access-list name\n"
*/
DEFPY_YANG (rip_offset_list,
rip_offset_list_cmd,
- "[no] offset-list WORD$acl <in|out>$direction (0-16)$metric [IFNAME]",
+ "[no] offset-list ACCESSLIST4_NAME$acl <in|out>$direction (0-16)$metric [IFNAME]",
NO_STR
"Modify RIP metric\n"
"Access-list name\n"
DEFUN (rip_distribute_list,
rip_distribute_list_cmd,
- "distribute-list [prefix] WORD <in|out> [WORD]",
+ "distribute-list [prefix] ACCESSLIST4_NAME <in|out> [WORD]",
"Filter networks in routing updates\n"
"Specify a prefix\n"
"Access-list name\n"
DEFUN (rip_no_distribute_list,
rip_no_distribute_list_cmd,
- "no distribute-list [prefix] WORD <in|out> [WORD]",
+ "no distribute-list [prefix] ACCESSLIST4_NAME <in|out> [WORD]",
NO_STR
"Filter networks in routing updates\n"
"Specify a prefix\n"
*/
DEFPY_YANG (ripng_offset_list,
ripng_offset_list_cmd,
- "[no] offset-list WORD$acl <in|out>$direction (0-16)$metric [IFNAME]",
+ "[no] offset-list ACCESSLIST6_NAME$acl <in|out>$direction (0-16)$metric [IFNAME]",
NO_STR
"Modify RIPng metric\n"
"Access-list name\n"
DEFUN (ripng_ipv6_distribute_list,
ripng_ipv6_distribute_list_cmd,
- "ipv6 distribute-list [prefix] WORD <in|out> [WORD]",
+ "ipv6 distribute-list [prefix] ACCESSLIST6_NAME <in|out> [WORD]",
"IPv6\n"
"Filter networks in routing updates\n"
"Specify a prefix\n"
DEFUN (ripng_no_ipv6_distribute_list,
ripng_no_ipv6_distribute_list_cmd,
- "no ipv6 distribute-list [prefix] WORD <in|out> [WORD]",
+ "no ipv6 distribute-list [prefix] ACCESSLIST6_NAME <in|out> [WORD]",
NO_STR
"IPv6\n"
"Filter networks in routing updates\n"