|
version 1.1.1.1, 2012/02/21 17:26:12
|
version 1.1.1.3, 2016/11/02 10:09:11
|
|
Line 34 struct hash *disthash;
|
Line 34 struct hash *disthash;
|
| /* Hook functions. */ |
/* Hook functions. */ |
| void (*distribute_add_hook) (struct distribute *); |
void (*distribute_add_hook) (struct distribute *); |
| void (*distribute_delete_hook) (struct distribute *); |
void (*distribute_delete_hook) (struct distribute *); |
| |
| static struct distribute * |
static struct distribute * |
| distribute_new (void) |
distribute_new (void) |
| { |
{ |
|
Line 133 distribute_cmp (const struct distribute *dist1, const
|
Line 133 distribute_cmp (const struct distribute *dist1, const
|
| return 1; |
return 1; |
| return 0; |
return 0; |
| } |
} |
| |
| /* Set access-list name to the distribute list. */ |
/* Set access-list name to the distribute list. */ |
| static struct distribute * |
static struct distribute * |
| distribute_list_set (const char *ifname, enum distribute_type type, |
distribute_list_set (const char *ifname, enum distribute_type type, |
|
Line 299 DEFUN (distribute_list_all,
|
Line 299 DEFUN (distribute_list_all,
|
| "Filter outgoing routing updates\n") |
"Filter outgoing routing updates\n") |
| { |
{ |
| enum distribute_type type; |
enum distribute_type type; |
| struct distribute *dist; |
|
| |
|
| /* Check of distribute list type. */ |
/* Check of distribute list type. */ |
| if (strncmp (argv[1], "i", 1) == 0) |
if (strncmp (argv[1], "i", 1) == 0) |
|
Line 314 DEFUN (distribute_list_all,
|
Line 313 DEFUN (distribute_list_all,
|
| } |
} |
| |
|
| /* Get interface name corresponding distribute list. */ |
/* Get interface name corresponding distribute list. */ |
| dist = distribute_list_set (NULL, type, argv[0]); | distribute_list_set (NULL, type, argv[0]); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 379 DEFUN (distribute_list,
|
Line 378 DEFUN (distribute_list,
|
| "Interface name\n") |
"Interface name\n") |
| { |
{ |
| enum distribute_type type; |
enum distribute_type type; |
| struct distribute *dist; |
|
| |
|
| /* Check of distribute list type. */ |
/* Check of distribute list type. */ |
| if (strncmp (argv[1], "i", 1) == 0) |
if (strncmp (argv[1], "i", 1) == 0) |
|
Line 393 DEFUN (distribute_list,
|
Line 391 DEFUN (distribute_list,
|
| } |
} |
| |
|
| /* Get interface name corresponding distribute list. */ |
/* Get interface name corresponding distribute list. */ |
| dist = distribute_list_set (argv[2], type, argv[0]); | distribute_list_set (argv[2], type, argv[0]); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 407 ALIAS (distribute_list,
|
Line 405 ALIAS (distribute_list,
|
| "Filter outgoing routing updates\n" |
"Filter outgoing routing updates\n" |
| "Interface name\n") |
"Interface name\n") |
| |
|
| DEFUN (no_districute_list, no_distribute_list_cmd, | DEFUN (no_distribute_list, no_distribute_list_cmd, |
| "no distribute-list WORD (in|out) WORD", |
"no distribute-list WORD (in|out) WORD", |
| NO_STR |
NO_STR |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 439 DEFUN (no_districute_list, no_distribute_list_cmd,
|
Line 437 DEFUN (no_districute_list, no_distribute_list_cmd,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (no_districute_list, no_ipv6_distribute_list_cmd, | ALIAS (no_distribute_list, no_ipv6_distribute_list_cmd, |
| "no distribute-list WORD (in|out) WORD", |
"no distribute-list WORD (in|out) WORD", |
| NO_STR |
NO_STR |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 448 ALIAS (no_districute_list, no_ipv6_distribute_list_cmd
|
Line 446 ALIAS (no_districute_list, no_ipv6_distribute_list_cmd
|
| "Filter outgoing routing updates\n" |
"Filter outgoing routing updates\n" |
| "Interface name\n") |
"Interface name\n") |
| |
|
| DEFUN (districute_list_prefix_all, | DEFUN (distribute_list_prefix_all, |
| distribute_list_prefix_all_cmd, |
distribute_list_prefix_all_cmd, |
| "distribute-list prefix WORD (in|out)", |
"distribute-list prefix WORD (in|out)", |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 458 DEFUN (districute_list_prefix_all,
|
Line 456 DEFUN (districute_list_prefix_all,
|
| "Filter outgoing routing updates\n") |
"Filter outgoing routing updates\n") |
| { |
{ |
| enum distribute_type type; |
enum distribute_type type; |
| struct distribute *dist; |
|
| |
|
| /* Check of distribute list type. */ |
/* Check of distribute list type. */ |
| if (strncmp (argv[1], "i", 1) == 0) |
if (strncmp (argv[1], "i", 1) == 0) |
|
Line 473 DEFUN (districute_list_prefix_all,
|
Line 470 DEFUN (districute_list_prefix_all,
|
| } |
} |
| |
|
| /* Get interface name corresponding distribute list. */ |
/* Get interface name corresponding distribute list. */ |
| dist = distribute_list_prefix_set (NULL, type, argv[0]); | distribute_list_prefix_set (NULL, type, argv[0]); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (districute_list_prefix_all, | ALIAS (distribute_list_prefix_all, |
| ipv6_distribute_list_prefix_all_cmd, |
ipv6_distribute_list_prefix_all_cmd, |
| "distribute-list prefix WORD (in|out)", |
"distribute-list prefix WORD (in|out)", |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 487 ALIAS (districute_list_prefix_all,
|
Line 484 ALIAS (districute_list_prefix_all,
|
| "Filter incoming routing updates\n" |
"Filter incoming routing updates\n" |
| "Filter outgoing routing updates\n") |
"Filter outgoing routing updates\n") |
| |
|
| DEFUN (no_districute_list_prefix_all, | DEFUN (no_distribute_list_prefix_all, |
| no_distribute_list_prefix_all_cmd, |
no_distribute_list_prefix_all_cmd, |
| "no distribute-list prefix WORD (in|out)", |
"no distribute-list prefix WORD (in|out)", |
| NO_STR |
NO_STR |
|
Line 521 DEFUN (no_districute_list_prefix_all,
|
Line 518 DEFUN (no_districute_list_prefix_all,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (no_districute_list_prefix_all, | ALIAS (no_distribute_list_prefix_all, |
| no_ipv6_distribute_list_prefix_all_cmd, |
no_ipv6_distribute_list_prefix_all_cmd, |
| "no distribute-list prefix WORD (in|out)", |
"no distribute-list prefix WORD (in|out)", |
| NO_STR |
NO_STR |
|
Line 531 ALIAS (no_districute_list_prefix_all,
|
Line 528 ALIAS (no_districute_list_prefix_all,
|
| "Filter incoming routing updates\n" |
"Filter incoming routing updates\n" |
| "Filter outgoing routing updates\n") |
"Filter outgoing routing updates\n") |
| |
|
| DEFUN (districute_list_prefix, distribute_list_prefix_cmd, | DEFUN (distribute_list_prefix, distribute_list_prefix_cmd, |
| "distribute-list prefix WORD (in|out) WORD", |
"distribute-list prefix WORD (in|out) WORD", |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
| "Filter prefixes in routing updates\n" |
"Filter prefixes in routing updates\n" |
|
Line 541 DEFUN (districute_list_prefix, distribute_list_prefix_
|
Line 538 DEFUN (districute_list_prefix, distribute_list_prefix_
|
| "Interface name\n") |
"Interface name\n") |
| { |
{ |
| enum distribute_type type; |
enum distribute_type type; |
| struct distribute *dist; |
|
| |
|
| /* Check of distribute list type. */ |
/* Check of distribute list type. */ |
| if (strncmp (argv[1], "i", 1) == 0) |
if (strncmp (argv[1], "i", 1) == 0) |
|
Line 556 DEFUN (districute_list_prefix, distribute_list_prefix_
|
Line 552 DEFUN (districute_list_prefix, distribute_list_prefix_
|
| } |
} |
| |
|
| /* Get interface name corresponding distribute list. */ |
/* Get interface name corresponding distribute list. */ |
| dist = distribute_list_prefix_set (argv[2], type, argv[0]); | distribute_list_prefix_set (argv[2], type, argv[0]); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (districute_list_prefix, ipv6_distribute_list_prefix_cmd, | ALIAS (distribute_list_prefix, ipv6_distribute_list_prefix_cmd, |
| "distribute-list prefix WORD (in|out) WORD", |
"distribute-list prefix WORD (in|out) WORD", |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
| "Filter prefixes in routing updates\n" |
"Filter prefixes in routing updates\n" |
|
Line 570 ALIAS (districute_list_prefix, ipv6_distribute_list_pr
|
Line 566 ALIAS (districute_list_prefix, ipv6_distribute_list_pr
|
| "Filter outgoing routing updates\n" |
"Filter outgoing routing updates\n" |
| "Interface name\n") |
"Interface name\n") |
| |
|
| DEFUN (no_districute_list_prefix, no_distribute_list_prefix_cmd, | DEFUN (no_distribute_list_prefix, no_distribute_list_prefix_cmd, |
| "no distribute-list prefix WORD (in|out) WORD", |
"no distribute-list prefix WORD (in|out) WORD", |
| NO_STR |
NO_STR |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 604 DEFUN (no_districute_list_prefix, no_distribute_list_p
|
Line 600 DEFUN (no_districute_list_prefix, no_distribute_list_p
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (no_districute_list_prefix, no_ipv6_distribute_list_prefix_cmd, | ALIAS (no_distribute_list_prefix, no_ipv6_distribute_list_prefix_cmd, |
| "no distribute-list prefix WORD (in|out) WORD", |
"no distribute-list prefix WORD (in|out) WORD", |
| NO_STR |
NO_STR |
| "Filter networks in routing updates\n" |
"Filter networks in routing updates\n" |
|
Line 762 distribute_list_init (int node)
|
Line 758 distribute_list_init (int node)
|
| (int (*) (const void *, const void *)) distribute_cmp); |
(int (*) (const void *, const void *)) distribute_cmp); |
| |
|
| if(node==RIP_NODE) { |
if(node==RIP_NODE) { |
| install_element (RIP_NODE, &distribute_list_all_cmd); | install_element (node, &distribute_list_all_cmd); |
| install_element (RIP_NODE, &no_distribute_list_all_cmd); | install_element (node, &no_distribute_list_all_cmd); |
| install_element (RIP_NODE, &distribute_list_cmd); | install_element (node, &distribute_list_cmd); |
| install_element (RIP_NODE, &no_distribute_list_cmd); | install_element (node, &no_distribute_list_cmd); |
| install_element (RIP_NODE, &distribute_list_prefix_all_cmd); | install_element (node, &distribute_list_prefix_all_cmd); |
| install_element (RIP_NODE, &no_distribute_list_prefix_all_cmd); | install_element (node, &no_distribute_list_prefix_all_cmd); |
| install_element (RIP_NODE, &distribute_list_prefix_cmd); | install_element (node, &distribute_list_prefix_cmd); |
| install_element (RIP_NODE, &no_distribute_list_prefix_cmd); | install_element (node, &no_distribute_list_prefix_cmd); |
| } else { | } else if (node == RIPNG_NODE || node == BABEL_NODE) { |
| install_element (RIPNG_NODE, &ipv6_distribute_list_all_cmd); | /* WARNING: two identical commands installed do a crash, so be worry with |
| install_element (RIPNG_NODE, &no_ipv6_distribute_list_all_cmd); | aliases. For this reason, and because all these commands are aliases, Babel |
| install_element (RIPNG_NODE, &ipv6_distribute_list_cmd); | is not set with RIP. */ |
| install_element (RIPNG_NODE, &no_ipv6_distribute_list_cmd); | install_element (node, &ipv6_distribute_list_all_cmd); |
| install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_all_cmd); | install_element (node, &no_ipv6_distribute_list_all_cmd); |
| install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_all_cmd); | install_element (node, &ipv6_distribute_list_cmd); |
| install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_cmd); | install_element (node, &no_ipv6_distribute_list_cmd); |
| install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_cmd); | install_element (node, &ipv6_distribute_list_prefix_all_cmd); |
| | install_element (node, &no_ipv6_distribute_list_prefix_all_cmd); |
| | install_element (node, &ipv6_distribute_list_prefix_cmd); |
| | install_element (node, &no_ipv6_distribute_list_prefix_cmd); |
| } |
} |
| } |
} |