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); |
} |
} |
} |
} |