version 1.1.1.2, 2013/07/21 23:54:40
|
version 1.1.1.3, 2016/11/02 10:09:12
|
Line 531 struct route_map_rule_cmd route_set_metric_type_cmd =
|
Line 531 struct route_map_rule_cmd route_set_metric_type_cmd =
|
route_set_metric_type_free, |
route_set_metric_type_free, |
}; |
}; |
|
|
|
/* `set ip next-hop IP_ADDRESS' */ |
|
/* Set nexthop to object. */ |
|
static route_map_result_t |
|
route_set_ip_nexthop (void *rule, struct prefix *prefix, |
|
route_map_object_t type, void *object) |
|
{ |
|
struct in_addr *address; |
|
struct external_info *ei; |
|
|
|
if (type == RMAP_OSPF) |
|
{ |
|
/* Fetch routemap's rule information. */ |
|
address = rule; |
|
ei = object; |
|
|
|
/* Set metric out value. */ |
|
ei->route_map_set.nexthop = *address; |
|
} |
|
return RMAP_OKAY; |
|
} |
|
|
|
/* set ip next-hop compilation. */ |
|
static void * |
|
route_set_ip_nexthop_compile (const char *arg) |
|
{ |
|
struct in_addr *address = NULL; |
|
int ret; |
|
|
|
address = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (struct in_addr)); |
|
ret = inet_aton (arg, address); |
|
|
|
if (ret == 0) |
|
{ |
|
XFREE (MTYPE_ROUTE_MAP_COMPILED, address); |
|
return NULL; |
|
} |
|
|
|
return address; |
|
} |
|
|
|
/* Free route map's compiled `set ip next-hop' value. */ |
|
static void |
|
route_set_ip_nexthop_free (void *rule) |
|
{ |
|
XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); |
|
} |
|
|
|
/* Set ip next-hop rule structure. */ |
|
struct route_map_rule_cmd route_set_ip_nexthop_cmd = |
|
{ |
|
"ip next-hop", |
|
route_set_ip_nexthop, |
|
route_set_ip_nexthop_compile, |
|
route_set_ip_nexthop_free, |
|
}; |
|
|
DEFUN (match_ip_nexthop, |
DEFUN (match_ip_nexthop, |
match_ip_nexthop_cmd, |
match_ip_nexthop_cmd, |
"match ip next-hop (<1-199>|<1300-2699>|WORD)", |
"match ip next-hop (<1-199>|<1300-2699>|WORD)", |
Line 785 ALIAS (no_set_metric_type,
|
Line 841 ALIAS (no_set_metric_type,
|
"OSPF[6] external type 1 metric\n" |
"OSPF[6] external type 1 metric\n" |
"OSPF[6] external type 2 metric\n") |
"OSPF[6] external type 2 metric\n") |
|
|
|
DEFUN (set_ip_nexthop, |
|
set_ip_nexthop_cmd, |
|
"set ip next-hop A.B.C.D", |
|
SET_STR |
|
IP_STR |
|
"Next hop address\n" |
|
"IP address of next hop\n") |
|
{ |
|
union sockunion su; |
|
int ret; |
|
|
|
ret = str2sockunion (argv[0], &su); |
|
if (ret < 0) |
|
{ |
|
vty_out (vty, "%% Malformed Next-hop address%s", VTY_NEWLINE); |
|
return CMD_WARNING; |
|
} |
|
|
|
return ospf_route_set_add (vty, vty->index, "ip next-hop", argv[0]); |
|
} |
|
|
|
DEFUN (no_set_ip_nexthop, |
|
no_set_ip_nexthop_cmd, |
|
"no set ip next-hop", |
|
NO_STR |
|
SET_STR |
|
"Next hop address\n") |
|
{ |
|
if (argc == 0) |
|
return ospf_route_set_delete (vty, vty->index, "ip next-hop", NULL); |
|
|
|
return ospf_route_set_delete (vty, vty->index, "ip next-hop", argv[0]); |
|
} |
|
|
|
ALIAS (no_set_ip_nexthop, |
|
no_set_ip_nexthop_val_cmd, |
|
"no set ip next-hop A.B.C.D", |
|
NO_STR |
|
SET_STR |
|
IP_STR |
|
"Next hop address\n" |
|
"IP address of next hop\n") |
|
|
/* Route-map init */ |
/* Route-map init */ |
void |
void |
ospf_route_map_init (void) |
ospf_route_map_init (void) |
Line 804 ospf_route_map_init (void)
|
Line 903 ospf_route_map_init (void)
|
|
|
route_map_install_set (&route_set_metric_cmd); |
route_map_install_set (&route_set_metric_cmd); |
route_map_install_set (&route_set_metric_type_cmd); |
route_map_install_set (&route_set_metric_type_cmd); |
|
route_map_install_set (&route_set_ip_nexthop_cmd); |
|
|
install_element (RMAP_NODE, &match_ip_nexthop_cmd); |
install_element (RMAP_NODE, &match_ip_nexthop_cmd); |
install_element (RMAP_NODE, &no_match_ip_nexthop_cmd); |
install_element (RMAP_NODE, &no_match_ip_nexthop_cmd); |
Line 827 ospf_route_map_init (void)
|
Line 927 ospf_route_map_init (void)
|
install_element (RMAP_NODE, &set_metric_type_cmd); |
install_element (RMAP_NODE, &set_metric_type_cmd); |
install_element (RMAP_NODE, &no_set_metric_type_cmd); |
install_element (RMAP_NODE, &no_set_metric_type_cmd); |
install_element (RMAP_NODE, &no_set_metric_type_val_cmd); |
install_element (RMAP_NODE, &no_set_metric_type_val_cmd); |
|
install_element (RMAP_NODE, &set_ip_nexthop_cmd); |
|
install_element (RMAP_NODE, &no_set_ip_nexthop_cmd); |
|
install_element (RMAP_NODE, &no_set_ip_nexthop_val_cmd); |
} |
} |