diff options
Diffstat (limited to 'eigrpd/eigrp_routemap.c')
| -rw-r--r-- | eigrpd/eigrp_routemap.c | 1427 |
1 files changed, 663 insertions, 764 deletions
diff --git a/eigrpd/eigrp_routemap.c b/eigrpd/eigrp_routemap.c index 1d85e76469..b645ed1987 100644 --- a/eigrpd/eigrp_routemap.c +++ b/eigrpd/eigrp_routemap.c @@ -45,7 +45,7 @@ #include "command.h" #include "filter.h" #include "log.h" -#include "sockunion.h" /* for inet_aton () */ +#include "sockunion.h" /* for inet_aton () */ #include "plist.h" #include "eigrpd/eigrpd.h" @@ -54,774 +54,699 @@ #include "eigrpd/eigrp_macros.h" #include "eigrpd/eigrp_routemap.h" -void -eigrp_if_rmap_update (struct if_rmap *if_rmap) +void eigrp_if_rmap_update(struct if_rmap *if_rmap) { - struct interface *ifp; - struct eigrp_interface *ei, *ei2; - struct listnode *node, *nnode; - struct route_map *rmap; - struct eigrp *e; - - ifp = if_lookup_by_name (if_rmap->ifname); - if (ifp == NULL) - return; - - ei = NULL; - e = eigrp_lookup(); - for (ALL_LIST_ELEMENTS (e->eiflist, node, nnode, ei2)) - { - if(strcmp(ei2->ifp->name,ifp->name) == 0){ - ei = ei2; - break; - } - } - - if (if_rmap->routemap[IF_RMAP_IN]) - { - rmap = route_map_lookup_by_name (if_rmap->routemap[IF_RMAP_IN]); - if (rmap) - ei->routemap[IF_RMAP_IN] = rmap; - else - ei->routemap[IF_RMAP_IN] = NULL; - } - else - ei->routemap[EIGRP_FILTER_IN] = NULL; - - if (if_rmap->routemap[IF_RMAP_OUT]) - { - rmap = route_map_lookup_by_name (if_rmap->routemap[IF_RMAP_OUT]); - if (rmap) - ei->routemap[IF_RMAP_OUT] = rmap; - else - ei->routemap[IF_RMAP_OUT] = NULL; - } - else - ei->routemap[EIGRP_FILTER_OUT] = NULL; + struct interface *ifp; + struct eigrp_interface *ei, *ei2; + struct listnode *node, *nnode; + struct route_map *rmap; + struct eigrp *e; + + ifp = if_lookup_by_name(if_rmap->ifname); + if (ifp == NULL) + return; + + ei = NULL; + e = eigrp_lookup(); + for (ALL_LIST_ELEMENTS(e->eiflist, node, nnode, ei2)) { + if (strcmp(ei2->ifp->name, ifp->name) == 0) { + ei = ei2; + break; + } + } + + if (if_rmap->routemap[IF_RMAP_IN]) { + rmap = route_map_lookup_by_name(if_rmap->routemap[IF_RMAP_IN]); + if (rmap) + ei->routemap[IF_RMAP_IN] = rmap; + else + ei->routemap[IF_RMAP_IN] = NULL; + } else + ei->routemap[EIGRP_FILTER_IN] = NULL; + + if (if_rmap->routemap[IF_RMAP_OUT]) { + rmap = route_map_lookup_by_name(if_rmap->routemap[IF_RMAP_OUT]); + if (rmap) + ei->routemap[IF_RMAP_OUT] = rmap; + else + ei->routemap[IF_RMAP_OUT] = NULL; + } else + ei->routemap[EIGRP_FILTER_OUT] = NULL; } -void -eigrp_if_rmap_update_interface (struct interface *ifp) +void eigrp_if_rmap_update_interface(struct interface *ifp) { - struct if_rmap *if_rmap; + struct if_rmap *if_rmap; - if_rmap = if_rmap_lookup (ifp->name); - if (if_rmap) - eigrp_if_rmap_update (if_rmap); + if_rmap = if_rmap_lookup(ifp->name); + if (if_rmap) + eigrp_if_rmap_update(if_rmap); } -void -eigrp_routemap_update_redistribute (void) +void eigrp_routemap_update_redistribute(void) { - int i; - struct eigrp *e; - - e = eigrp_lookup(); - - if (e) - { - for (i = 0; i < ZEBRA_ROUTE_MAX; i++) - { - if (e->route_map[i].name) - e->route_map[i].map = - route_map_lookup_by_name (e->route_map[i].name); - } - } + int i; + struct eigrp *e; + + e = eigrp_lookup(); + + if (e) { + for (i = 0; i < ZEBRA_ROUTE_MAX; i++) { + if (e->route_map[i].name) + e->route_map[i].map = route_map_lookup_by_name( + e->route_map[i].name); + } + } } /* ARGSUSED */ -void -eigrp_rmap_update (const char *notused) +void eigrp_rmap_update(const char *notused) { - struct interface *ifp; - struct listnode *node, *nnode; + struct interface *ifp; + struct listnode *node, *nnode; - for (ALL_LIST_ELEMENTS (iflist, node, nnode, ifp)) - eigrp_if_rmap_update_interface (ifp); + for (ALL_LIST_ELEMENTS(iflist, node, nnode, ifp)) + eigrp_if_rmap_update_interface(ifp); - eigrp_routemap_update_redistribute (); + eigrp_routemap_update_redistribute(); } /* Add eigrp route map rule. */ -static int -eigrp_route_match_add (struct vty *vty, struct route_map_index *index, - const char *command, const char *arg) +static int eigrp_route_match_add(struct vty *vty, struct route_map_index *index, + const char *command, const char *arg) { - int ret; - ret = route_map_add_match (index, command, arg); - if (ret) - { - switch (ret) - { - case RMAP_RULE_MISSING: - vty_out (vty, "%% Can't find rule.\n"); - return CMD_WARNING_CONFIG_FAILED; - case RMAP_COMPILE_ERROR: - vty_out (vty, "%% Argument is malformed.\n"); - return CMD_WARNING_CONFIG_FAILED; - } - } - return CMD_SUCCESS; + int ret; + ret = route_map_add_match(index, command, arg); + if (ret) { + switch (ret) { + case RMAP_RULE_MISSING: + vty_out(vty, "%% Can't find rule.\n"); + return CMD_WARNING_CONFIG_FAILED; + case RMAP_COMPILE_ERROR: + vty_out(vty, "%% Argument is malformed.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + } + return CMD_SUCCESS; } /* Delete rip route map rule. */ -static int -eigrp_route_match_delete (struct vty *vty, struct route_map_index *index, - const char *command, const char *arg) +static int eigrp_route_match_delete(struct vty *vty, + struct route_map_index *index, + const char *command, const char *arg) { - int ret; - ret = route_map_delete_match (index, command, arg); - if (ret) - { - switch (ret) - { - case RMAP_RULE_MISSING: - vty_out (vty, "%% Can't find rule.\n"); - return CMD_WARNING_CONFIG_FAILED; - case RMAP_COMPILE_ERROR: - vty_out (vty, "%% Argument is malformed.\n"); - return CMD_WARNING_CONFIG_FAILED; - } - } - return CMD_SUCCESS; + int ret; + ret = route_map_delete_match(index, command, arg); + if (ret) { + switch (ret) { + case RMAP_RULE_MISSING: + vty_out(vty, "%% Can't find rule.\n"); + return CMD_WARNING_CONFIG_FAILED; + case RMAP_COMPILE_ERROR: + vty_out(vty, "%% Argument is malformed.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + } + return CMD_SUCCESS; } /* Add eigrp route map rule. */ -static int -eigrp_route_set_add (struct vty *vty, struct route_map_index *index, - const char *command, const char *arg) +static int eigrp_route_set_add(struct vty *vty, struct route_map_index *index, + const char *command, const char *arg) { - int ret; - - ret = route_map_add_set (index, command, arg); - if (ret) - { - switch (ret) - { - case RMAP_RULE_MISSING: - vty_out (vty, "%% Can't find rule.\n"); - return CMD_WARNING_CONFIG_FAILED; - case RMAP_COMPILE_ERROR: - /* rip, ripng and other protocols share the set metric command - but only values from 0 to 16 are valid for rip and ripng - if metric is out of range for rip and ripng, it is not for - other protocols. Do not return an error */ - if (strcmp(command, "metric")) { - vty_out (vty, "%% Argument is malformed.\n"); - return CMD_WARNING_CONFIG_FAILED; - } - } - } - return CMD_SUCCESS; + int ret; + + ret = route_map_add_set(index, command, arg); + if (ret) { + switch (ret) { + case RMAP_RULE_MISSING: + vty_out(vty, "%% Can't find rule.\n"); + return CMD_WARNING_CONFIG_FAILED; + case RMAP_COMPILE_ERROR: + /* rip, ripng and other protocols share the set metric + command + but only values from 0 to 16 are valid for rip and + ripng + if metric is out of range for rip and ripng, it is + not for + other protocols. Do not return an error */ + if (strcmp(command, "metric")) { + vty_out(vty, "%% Argument is malformed.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + } + } + return CMD_SUCCESS; } /* Delete eigrp route map rule. */ -static int -eigrp_route_set_delete (struct vty *vty, struct route_map_index *index, - const char *command, const char *arg) +static int eigrp_route_set_delete(struct vty *vty, + struct route_map_index *index, + const char *command, const char *arg) { - int ret; - - ret = route_map_delete_set (index, command, arg); - if (ret) - { - switch (ret) - { - case RMAP_RULE_MISSING: - vty_out (vty, "%% Can't find rule.\n"); - return CMD_WARNING_CONFIG_FAILED; - case RMAP_COMPILE_ERROR: - vty_out (vty, "%% Argument is malformed.\n"); - return CMD_WARNING_CONFIG_FAILED; - } - } - return CMD_SUCCESS; + int ret; + + ret = route_map_delete_set(index, command, arg); + if (ret) { + switch (ret) { + case RMAP_RULE_MISSING: + vty_out(vty, "%% Can't find rule.\n"); + return CMD_WARNING_CONFIG_FAILED; + case RMAP_COMPILE_ERROR: + vty_out(vty, "%% Argument is malformed.\n"); + return CMD_WARNING_CONFIG_FAILED; + } + } + return CMD_SUCCESS; } /* Hook function for updating route_map assignment. */ /* ARGSUSED */ -void -eigrp_route_map_update (const char *notused) +void eigrp_route_map_update(const char *notused) { - int i; - struct eigrp *e; - e = eigrp_lookup(); - - if (e) - { - for (i = 0; i < ZEBRA_ROUTE_MAX; i++) - { - if (e->route_map[i].name) - e->route_map[i].map = - route_map_lookup_by_name (e->route_map[i].name); - } - } + int i; + struct eigrp *e; + e = eigrp_lookup(); + + if (e) { + for (i = 0; i < ZEBRA_ROUTE_MAX; i++) { + if (e->route_map[i].name) + e->route_map[i].map = route_map_lookup_by_name( + e->route_map[i].name); + } + } } - /* `match metric METRIC' */ /* Match function return 1 if match is success else return zero. */ -static route_map_result_t -route_match_metric (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_match_metric(void *rule, struct prefix *prefix, + route_map_object_t type, + void *object) { - // u_int32_t *metric; - // u_int32_t check; - // struct rip_info *rinfo; - // struct eigrp_neighbor_entry *te; - // struct eigrp_prefix_entry *pe; - // struct listnode *node, *node2, *nnode, *nnode2; - // struct eigrp *e; - // - // e = eigrp_lookup(); - // - // if (type == RMAP_EIGRP) - // { - // metric = rule; - // rinfo = object; - // - // /* If external metric is available, the route-map should - // work on this one (for redistribute purpose) */ - // /*check = (rinfo->external_metric) ? rinfo->external_metric : - // rinfo->metric;*/ - // - // if (check == *metric) - // return RMAP_MATCH; - // else - // return RMAP_NOMATCH; - // } - return RMAP_NOMATCH; + // u_int32_t *metric; + // u_int32_t check; + // struct rip_info *rinfo; + // struct eigrp_neighbor_entry *te; + // struct eigrp_prefix_entry *pe; + // struct listnode *node, *node2, *nnode, *nnode2; + // struct eigrp *e; + // + // e = eigrp_lookup(); + // + // if (type == RMAP_EIGRP) + // { + // metric = rule; + // rinfo = object; + // + // /* If external metric is available, the route-map should + // work on this one (for redistribute purpose) */ + // /*check = (rinfo->external_metric) ? rinfo->external_metric : + // rinfo->metric;*/ + // + // if (check == *metric) + // return RMAP_MATCH; + // else + // return RMAP_NOMATCH; + // } + return RMAP_NOMATCH; } /* Route map `match metric' match statement. `arg' is METRIC value */ -static void * -route_match_metric_compile (const char *arg) +static void *route_match_metric_compile(const char *arg) { - // u_int32_t *metric; - // - // metric = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_int32_t)); - // *metric = atoi (arg); - // - // if(*metric > 0) - // return metric; - // - // XFREE (MTYPE_ROUTE_MAP_COMPILED, metric); - return NULL; + // u_int32_t *metric; + // + // metric = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_int32_t)); + // *metric = atoi (arg); + // + // if(*metric > 0) + // return metric; + // + // XFREE (MTYPE_ROUTE_MAP_COMPILED, metric); + return NULL; } /* Free route map's compiled `match metric' value. */ -static void -route_match_metric_free (void *rule) +static void route_match_metric_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for metric matching. */ -struct route_map_rule_cmd route_match_metric_cmd = -{ - "metric", - route_match_metric, - route_match_metric_compile, - route_match_metric_free -}; +struct route_map_rule_cmd route_match_metric_cmd = { + "metric", route_match_metric, route_match_metric_compile, + route_match_metric_free}; /* `match interface IFNAME' */ /* Match function return 1 if match is success else return zero. */ -static route_map_result_t -route_match_interface (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_match_interface(void *rule, + struct prefix *prefix, + route_map_object_t type, + void *object) { - // struct rip_info *rinfo; - // struct interface *ifp; - // char *ifname; - // - // if (type == RMAP_EIGRP) - // { - // ifname = rule; - // ifp = if_lookup_by_name(ifname); - // - // if (!ifp) - // return RMAP_NOMATCH; - // - // rinfo = object; - // - // /*if (rinfo->ifindex_out == ifp->ifindex || rinfo->ifindex == ifp->ifindex) - // return RMAP_MATCH; - // else - // return RMAP_NOMATCH;*/ - // } - return RMAP_NOMATCH; + // struct rip_info *rinfo; + // struct interface *ifp; + // char *ifname; + // + // if (type == RMAP_EIGRP) + // { + // ifname = rule; + // ifp = if_lookup_by_name(ifname); + // + // if (!ifp) + // return RMAP_NOMATCH; + // + // rinfo = object; + // + // /*if (rinfo->ifindex_out == ifp->ifindex || rinfo->ifindex == + // ifp->ifindex) + // return RMAP_MATCH; + // else + // return RMAP_NOMATCH;*/ + // } + return RMAP_NOMATCH; } /* Route map `match interface' match statement. `arg' is IFNAME value */ /* XXX I don`t know if I need to check does interface exist? */ -static void * -route_match_interface_compile (const char *arg) +static void *route_match_interface_compile(const char *arg) { - return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); + return XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `match interface' value. */ -static void -route_match_interface_free (void *rule) +static void route_match_interface_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for interface matching. */ -struct route_map_rule_cmd route_match_interface_cmd = -{ - "interface", - route_match_interface, - route_match_interface_compile, - route_match_interface_free -}; +struct route_map_rule_cmd route_match_interface_cmd = { + "interface", route_match_interface, route_match_interface_compile, + route_match_interface_free}; /* `match ip next-hop IP_ACCESS_LIST' */ /* Match function return 1 if match is success else return zero. */ -static route_map_result_t -route_match_ip_next_hop (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_match_ip_next_hop(void *rule, + struct prefix *prefix, + route_map_object_t type, + void *object) { - // struct access_list *alist; - // struct rip_info *rinfo; - // struct prefix_ipv4 p; - // - // if (type == RMAP_EIGRP) - // { - // rinfo = object; - // p.family = AF_INET; - // /*p.prefix = (rinfo->nexthop.s_addr) ? rinfo->nexthop : rinfo->from;*/ - // p.prefixlen = IPV4_MAX_BITLEN; - // - // alist = access_list_lookup (AFI_IP, (char *) rule); - // if (alist == NULL) - // return RMAP_NOMATCH; - // - // return (access_list_apply (alist, &p) == FILTER_DENY ? - // RMAP_NOMATCH : RMAP_MATCH); - // } - return RMAP_NOMATCH; + // struct access_list *alist; + // struct rip_info *rinfo; + // struct prefix_ipv4 p; + // + // if (type == RMAP_EIGRP) + // { + // rinfo = object; + // p.family = AF_INET; + // /*p.prefix = (rinfo->nexthop.s_addr) ? rinfo->nexthop : + // rinfo->from;*/ + // p.prefixlen = IPV4_MAX_BITLEN; + // + // alist = access_list_lookup (AFI_IP, (char *) rule); + // if (alist == NULL) + // return RMAP_NOMATCH; + // + // return (access_list_apply (alist, &p) == FILTER_DENY ? + // RMAP_NOMATCH : RMAP_MATCH); + // } + return RMAP_NOMATCH; } /* Route map `ip next-hop' match statement. `arg' should be access-list name. */ -static void * -route_match_ip_next_hop_compile (const char *arg) +static void *route_match_ip_next_hop_compile(const char *arg) { - return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); + return XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `. */ -static void -route_match_ip_next_hop_free (void *rule) +static void route_match_ip_next_hop_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip next-hop matching. */ -static struct route_map_rule_cmd route_match_ip_next_hop_cmd = - { - "ip next-hop", - route_match_ip_next_hop, - route_match_ip_next_hop_compile, - route_match_ip_next_hop_free - }; +static struct route_map_rule_cmd route_match_ip_next_hop_cmd = { + "ip next-hop", route_match_ip_next_hop, route_match_ip_next_hop_compile, + route_match_ip_next_hop_free}; /* `match ip next-hop prefix-list PREFIX_LIST' */ static route_map_result_t -route_match_ip_next_hop_prefix_list (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +route_match_ip_next_hop_prefix_list(void *rule, struct prefix *prefix, + route_map_object_t type, void *object) { - // struct prefix_list *plist; - // struct rip_info *rinfo; - // struct prefix_ipv4 p; - // - // if (type == RMAP_EIGRP) - // { - // rinfo = object; - // p.family = AF_INET; - // /*p.prefix = (rinfo->nexthop.s_addr) ? rinfo->nexthop : rinfo->from;*/ - // p.prefixlen = IPV4_MAX_BITLEN; - // - // plist = prefix_list_lookup (AFI_IP, (char *) rule); - // if (plist == NULL) - // return RMAP_NOMATCH; - // - // return (prefix_list_apply (plist, &p) == PREFIX_DENY ? - // RMAP_NOMATCH : RMAP_MATCH); - // } - return RMAP_NOMATCH; + // struct prefix_list *plist; + // struct rip_info *rinfo; + // struct prefix_ipv4 p; + // + // if (type == RMAP_EIGRP) + // { + // rinfo = object; + // p.family = AF_INET; + // /*p.prefix = (rinfo->nexthop.s_addr) ? rinfo->nexthop : + // rinfo->from;*/ + // p.prefixlen = IPV4_MAX_BITLEN; + // + // plist = prefix_list_lookup (AFI_IP, (char *) rule); + // if (plist == NULL) + // return RMAP_NOMATCH; + // + // return (prefix_list_apply (plist, &p) == PREFIX_DENY ? + // RMAP_NOMATCH : RMAP_MATCH); + // } + return RMAP_NOMATCH; } -static void * -route_match_ip_next_hop_prefix_list_compile (const char *arg) +static void *route_match_ip_next_hop_prefix_list_compile(const char *arg) { - return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); + return XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); } -static void -route_match_ip_next_hop_prefix_list_free (void *rule) +static void route_match_ip_next_hop_prefix_list_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } -static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = -{ - "ip next-hop prefix-list", - route_match_ip_next_hop_prefix_list, - route_match_ip_next_hop_prefix_list_compile, - route_match_ip_next_hop_prefix_list_free -}; +static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = { + "ip next-hop prefix-list", route_match_ip_next_hop_prefix_list, + route_match_ip_next_hop_prefix_list_compile, + route_match_ip_next_hop_prefix_list_free}; /* `match ip address IP_ACCESS_LIST' */ /* Match function should return 1 if match is success else return zero. */ -static route_map_result_t -route_match_ip_address (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_match_ip_address(void *rule, + struct prefix *prefix, + route_map_object_t type, + void *object) { - struct access_list *alist; - - if (type == RMAP_EIGRP) - { - alist = access_list_lookup (AFI_IP, (char *) rule); - if (alist == NULL) - return RMAP_NOMATCH; - - return (access_list_apply (alist, prefix) == FILTER_DENY ? - RMAP_NOMATCH : RMAP_MATCH); - } - return RMAP_NOMATCH; + struct access_list *alist; + + if (type == RMAP_EIGRP) { + alist = access_list_lookup(AFI_IP, (char *)rule); + if (alist == NULL) + return RMAP_NOMATCH; + + return (access_list_apply(alist, prefix) == FILTER_DENY + ? RMAP_NOMATCH + : RMAP_MATCH); + } + return RMAP_NOMATCH; } /* Route map `ip address' match statement. `arg' should be access-list name. */ -static void * -route_match_ip_address_compile (const char *arg) +static void *route_match_ip_address_compile(const char *arg) { - return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); + return XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `ip address' value. */ -static void -route_match_ip_address_free (void *rule) +static void route_match_ip_address_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip address matching. */ -static struct route_map_rule_cmd route_match_ip_address_cmd = - { - "ip address", - route_match_ip_address, - route_match_ip_address_compile, - route_match_ip_address_free - }; +static struct route_map_rule_cmd route_match_ip_address_cmd = { + "ip address", route_match_ip_address, route_match_ip_address_compile, + route_match_ip_address_free}; /* `match ip address prefix-list PREFIX_LIST' */ static route_map_result_t -route_match_ip_address_prefix_list (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +route_match_ip_address_prefix_list(void *rule, struct prefix *prefix, + route_map_object_t type, void *object) { - struct prefix_list *plist; - - if (type == RMAP_EIGRP) - { - plist = prefix_list_lookup (AFI_IP, (char *) rule); - if (plist == NULL) - return RMAP_NOMATCH; - - return (prefix_list_apply (plist, prefix) == PREFIX_DENY ? - RMAP_NOMATCH : RMAP_MATCH); - } - return RMAP_NOMATCH; + struct prefix_list *plist; + + if (type == RMAP_EIGRP) { + plist = prefix_list_lookup(AFI_IP, (char *)rule); + if (plist == NULL) + return RMAP_NOMATCH; + + return (prefix_list_apply(plist, prefix) == PREFIX_DENY + ? RMAP_NOMATCH + : RMAP_MATCH); + } + return RMAP_NOMATCH; } -static void * -route_match_ip_address_prefix_list_compile (const char *arg) +static void *route_match_ip_address_prefix_list_compile(const char *arg) { - return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); + return XSTRDUP(MTYPE_ROUTE_MAP_COMPILED, arg); } -static void -route_match_ip_address_prefix_list_free (void *rule) +static void route_match_ip_address_prefix_list_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } -static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = - { - "ip address prefix-list", - route_match_ip_address_prefix_list, - route_match_ip_address_prefix_list_compile, - route_match_ip_address_prefix_list_free - }; +static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = { + "ip address prefix-list", route_match_ip_address_prefix_list, + route_match_ip_address_prefix_list_compile, + route_match_ip_address_prefix_list_free}; /* `match tag TAG' */ /* Match function return 1 if match is success else return zero. */ -static route_map_result_t -route_match_tag (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_match_tag(void *rule, struct prefix *prefix, + route_map_object_t type, void *object) { - // u_short *tag; - // struct rip_info *rinfo; - // - // if (type == RMAP_EIGRP) - // { - // tag = rule; - // rinfo = object; - // - // /* The information stored by rinfo is host ordered. */ - // /*if (rinfo->tag == *tag) - // return RMAP_MATCH; - // else - // return RMAP_NOMATCH;*/ - // } - return RMAP_NOMATCH; + // u_short *tag; + // struct rip_info *rinfo; + // + // if (type == RMAP_EIGRP) + // { + // tag = rule; + // rinfo = object; + // + // /* The information stored by rinfo is host ordered. */ + // /*if (rinfo->tag == *tag) + // return RMAP_MATCH; + // else + // return RMAP_NOMATCH;*/ + // } + return RMAP_NOMATCH; } /* Route map `match tag' match statement. `arg' is TAG value */ -static void * -route_match_tag_compile (const char *arg) +static void *route_match_tag_compile(const char *arg) { - // u_short *tag; - // - // tag = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_short)); - // *tag = atoi (arg); - // - // return tag; + // u_short *tag; + // + // tag = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_short)); + // *tag = atoi (arg); + // + // return tag; } /* Free route map's compiled `match tag' value. */ -static void -route_match_tag_free (void *rule) +static void route_match_tag_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for tag matching. */ -struct route_map_rule_cmd route_match_tag_cmd = - { - "tag", - route_match_tag, - route_match_tag_compile, - route_match_tag_free - }; +struct route_map_rule_cmd route_match_tag_cmd = { + "tag", route_match_tag, route_match_tag_compile, route_match_tag_free}; /* Set metric to attribute. */ -static route_map_result_t -route_set_metric (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_set_metric(void *rule, struct prefix *prefix, + route_map_object_t type, + void *object) { - // if (type == RMAP_RIP) - // { - // struct rip_metric_modifier *mod; - // struct rip_info *rinfo; - // - // mod = rule; - // rinfo = object; - // - // /*if (mod->type == metric_increment) - // rinfo->metric_out += mod->metric; - // else if (mod->type == metric_decrement) - // rinfo->metric_out -= mod->metric; - // else if (mod->type == metric_absolute) - // rinfo->metric_out = mod->metric; - // - // if ((signed int)rinfo->metric_out < 1) - // rinfo->metric_out = 1; - // if (rinfo->metric_out > RIP_METRIC_INFINITY) - // rinfo->metric_out = RIP_METRIC_INFINITY;*/ - // - // rinfo->metric_set = 1; - // } - return RMAP_OKAY; + // if (type == RMAP_RIP) + // { + // struct rip_metric_modifier *mod; + // struct rip_info *rinfo; + // + // mod = rule; + // rinfo = object; + // + // /*if (mod->type == metric_increment) + // rinfo->metric_out += mod->metric; + // else if (mod->type == metric_decrement) + // rinfo->metric_out -= mod->metric; + // else if (mod->type == metric_absolute) + // rinfo->metric_out = mod->metric; + // + // if ((signed int)rinfo->metric_out < 1) + // rinfo->metric_out = 1; + // if (rinfo->metric_out > RIP_METRIC_INFINITY) + // rinfo->metric_out = RIP_METRIC_INFINITY;*/ + // + // rinfo->metric_set = 1; + // } + return RMAP_OKAY; } /* set metric compilation. */ -static void * -route_set_metric_compile (const char *arg) +static void *route_set_metric_compile(const char *arg) { - // int len; - // const char *pnt; - // int type; - // long metric; - // char *endptr = NULL; - // struct rip_metric_modifier *mod; - // - // len = strlen (arg); - // pnt = arg; - // - // if (len == 0) - // return NULL; - // - // /* Examine first character. */ - // if (arg[0] == '+') - // { - // //type = metric_increment; - // pnt++; - // } - // else if (arg[0] == '-') - // { - // //type = metric_decrement; - // pnt++; - // } - // /*else - // type = metric_absolute;*/ - // - // /* Check beginning with digit string. */ - // if (*pnt < '0' || *pnt > '9') - // return NULL; - // - // /* Convert string to integer. */ - // metric = strtol (pnt, &endptr, 10); - // - // if (metric == LONG_MAX || *endptr != '\0') - // return NULL; - // /*if (metric < 0 || metric > RIP_METRIC_INFINITY) - // return NULL;*/ - // - // mod = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, - // sizeof (struct rip_metric_modifier)); - // mod->type = type; - // mod->metric = metric; - - // return mod; + // int len; + // const char *pnt; + // int type; + // long metric; + // char *endptr = NULL; + // struct rip_metric_modifier *mod; + // + // len = strlen (arg); + // pnt = arg; + // + // if (len == 0) + // return NULL; + // + // /* Examine first character. */ + // if (arg[0] == '+') + // { + // //type = metric_increment; + // pnt++; + // } + // else if (arg[0] == '-') + // { + // //type = metric_decrement; + // pnt++; + // } + // /*else + // type = metric_absolute;*/ + // + // /* Check beginning with digit string. */ + // if (*pnt < '0' || *pnt > '9') + // return NULL; + // + // /* Convert string to integer. */ + // metric = strtol (pnt, &endptr, 10); + // + // if (metric == LONG_MAX || *endptr != '\0') + // return NULL; + // /*if (metric < 0 || metric > RIP_METRIC_INFINITY) + // return NULL;*/ + // + // mod = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, + // sizeof (struct rip_metric_modifier)); + // mod->type = type; + // mod->metric = metric; + + // return mod; } /* Free route map's compiled `set metric' value. */ -static void -route_set_metric_free (void *rule) +static void route_set_metric_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Set metric rule structure. */ -static struct route_map_rule_cmd route_set_metric_cmd = - { - "metric", - route_set_metric, - route_set_metric_compile, - route_set_metric_free, - }; +static struct route_map_rule_cmd route_set_metric_cmd = { + "metric", route_set_metric, route_set_metric_compile, + route_set_metric_free, +}; /* `set ip next-hop IP_ADDRESS' */ /* Set nexthop to object. ojbect must be pointer to struct attr. */ -static route_map_result_t -route_set_ip_nexthop (void *rule, struct prefix *prefix, - route_map_object_t type, void *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 rip_info *rinfo; - // - // if(type == RMAP_RIP) - // { - // /* Fetch routemap's rule information. */ - // address = rule; - // rinfo = object; - // - // /* Set next hop value. */ - // rinfo->nexthop_out = *address; - // } - - return RMAP_OKAY; + // struct in_addr *address; + // struct rip_info *rinfo; + // + // if(type == RMAP_RIP) + // { + // /* Fetch routemap's rule information. */ + // address = rule; + // rinfo = object; + // + // /* Set next hop value. */ + // rinfo->nexthop_out = *address; + // } + + return RMAP_OKAY; } /* Route map `ip nexthop' compile function. Given string is converted to struct in_addr structure. */ -static void * -route_set_ip_nexthop_compile (const char *arg) +static void *route_set_ip_nexthop_compile(const char *arg) { - // int ret; - // struct in_addr *address; - // - // 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; + // int ret; + // struct in_addr *address; + // + // 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 `ip nexthop' value. */ -static void -route_set_ip_nexthop_free (void *rule) +static void route_set_ip_nexthop_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip nexthop set. */ -static 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 - }; +static 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}; /* `set tag TAG' */ /* Set tag to object. ojbect must be pointer to struct attr. */ -static route_map_result_t -route_set_tag (void *rule, struct prefix *prefix, - route_map_object_t type, void *object) +static route_map_result_t route_set_tag(void *rule, struct prefix *prefix, + route_map_object_t type, void *object) { - // u_short *tag; - // struct rip_info *rinfo; - // - // if(type == RMAP_RIP) - // { - // /* Fetch routemap's rule information. */ - // tag = rule; - // rinfo = object; - // - // /* Set next hop value. */ - // rinfo->tag_out = *tag; - // } - - return RMAP_OKAY; + // u_short *tag; + // struct rip_info *rinfo; + // + // if(type == RMAP_RIP) + // { + // /* Fetch routemap's rule information. */ + // tag = rule; + // rinfo = object; + // + // /* Set next hop value. */ + // rinfo->tag_out = *tag; + // } + + return RMAP_OKAY; } /* Route map `tag' compile function. Given string is converted to u_short. */ -static void * -route_set_tag_compile (const char *arg) +static void *route_set_tag_compile(const char *arg) { - // u_short *tag; - // - // tag = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_short)); - // *tag = atoi (arg); - // - // return tag; + // u_short *tag; + // + // tag = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_short)); + // *tag = atoi (arg); + // + // return tag; } /* Free route map's compiled `ip nexthop' value. */ -static void -route_set_tag_free (void *rule) +static void route_set_tag_free(void *rule) { - XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); + XFREE(MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for tag set. */ -static struct route_map_rule_cmd route_set_tag_cmd = - { - "tag", - route_set_tag, - route_set_tag_compile, - route_set_tag_free - }; +static struct route_map_rule_cmd route_set_tag_cmd = { + "tag", route_set_tag, route_set_tag_compile, route_set_tag_free}; #define MATCH_STR "Match values from routing table\n" #define SET_STR "Set values in destination routing protocol\n" @@ -833,7 +758,7 @@ DEFUN (match_metric, "Match metric of route\n" "Metric value\n") { - return eigrp_route_match_add (vty, vty->index, "metric", argv[0]); + return eigrp_route_match_add(vty, vty->index, "metric", argv[0]); } DEFUN (no_match_metric, @@ -843,19 +768,17 @@ DEFUN (no_match_metric, MATCH_STR "Match metric of route\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "metric", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, "metric", + NULL); - return eigrp_route_match_delete (vty, vty->index, "metric", argv[0]); + return eigrp_route_match_delete(vty, vty->index, "metric", argv[0]); } -ALIAS (no_match_metric, - no_match_metric_val_cmd, - "no match metric <0-4294967295>", - NO_STR - MATCH_STR - "Match metric of route\n" - "Metric value\n") +ALIAS(no_match_metric, no_match_metric_val_cmd, + "no match metric <0-4294967295>", NO_STR MATCH_STR + "Match metric of route\n" + "Metric value\n") DEFUN (match_interface, match_interface_cmd, @@ -864,7 +787,7 @@ DEFUN (match_interface, "Match first hop interface of route\n" "Interface name\n") { - return eigrp_route_match_add (vty, vty->index, "interface", argv[0]); + return eigrp_route_match_add(vty, vty->index, "interface", argv[0]); } DEFUN (no_match_interface, @@ -874,19 +797,17 @@ DEFUN (no_match_interface, MATCH_STR "Match first hop interface of route\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "interface", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, "interface", + NULL); - return eigrp_route_match_delete (vty, vty->index, "interface", argv[0]); + return eigrp_route_match_delete(vty, vty->index, "interface", argv[0]); } -ALIAS (no_match_interface, - no_match_interface_val_cmd, - "no match interface WORD", - NO_STR - MATCH_STR - "Match first hop interface of route\n" - "Interface name\n") +ALIAS(no_match_interface, no_match_interface_val_cmd, "no match interface WORD", + NO_STR MATCH_STR + "Match first hop interface of route\n" + "Interface name\n") DEFUN (match_ip_next_hop, match_ip_next_hop_cmd, @@ -898,7 +819,7 @@ DEFUN (match_ip_next_hop, "IP access-list number (expanded range)\n" "IP Access-list name\n") { - return eigrp_route_match_add (vty, vty->index, "ip next-hop", argv[0]); + return eigrp_route_match_add(vty, vty->index, "ip next-hop", argv[0]); } DEFUN (no_match_ip_next_hop, @@ -909,22 +830,20 @@ DEFUN (no_match_ip_next_hop, IP_STR "Match next-hop address of route\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "ip next-hop", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, "ip next-hop", + NULL); - return eigrp_route_match_delete (vty, vty->index, "ip next-hop", argv[0]); + return eigrp_route_match_delete(vty, vty->index, "ip next-hop", + argv[0]); } -ALIAS (no_match_ip_next_hop, - no_match_ip_next_hop_val_cmd, - "no match ip next-hop (<1-199>|<1300-2699>|WORD)", - NO_STR - MATCH_STR - IP_STR - "Match next-hop address of route\n" - "IP access-list number\n" - "IP access-list number (expanded range)\n" - "IP Access-list name\n") +ALIAS(no_match_ip_next_hop, no_match_ip_next_hop_val_cmd, + "no match ip next-hop (<1-199>|<1300-2699>|WORD)", NO_STR MATCH_STR IP_STR + "Match next-hop address of route\n" + "IP access-list number\n" + "IP access-list number (expanded range)\n" + "IP Access-list name\n") DEFUN (match_ip_next_hop_prefix_list, match_ip_next_hop_prefix_list_cmd, @@ -935,7 +854,8 @@ DEFUN (match_ip_next_hop_prefix_list, "Match entries of prefix-lists\n" "IP prefix-list name\n") { - return eigrp_route_match_add (vty, vty->index, "ip next-hop prefix-list", argv[0]); + return eigrp_route_match_add(vty, vty->index, "ip next-hop prefix-list", + argv[0]); } DEFUN (no_match_ip_next_hop_prefix_list, @@ -947,21 +867,20 @@ DEFUN (no_match_ip_next_hop_prefix_list, "Match next-hop address of route\n" "Match entries of prefix-lists\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "ip next-hop prefix-list", NULL); + if (argc == 0) + return eigrp_route_match_delete( + vty, vty->index, "ip next-hop prefix-list", NULL); - return eigrp_route_match_delete (vty, vty->index, "ip next-hop prefix-list", argv[0]); + return eigrp_route_match_delete(vty, vty->index, + "ip next-hop prefix-list", argv[0]); } -ALIAS (no_match_ip_next_hop_prefix_list, - no_match_ip_next_hop_prefix_list_val_cmd, - "no match ip next-hop prefix-list WORD", - NO_STR - MATCH_STR - IP_STR - "Match next-hop address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") +ALIAS(no_match_ip_next_hop_prefix_list, + no_match_ip_next_hop_prefix_list_val_cmd, + "no match ip next-hop prefix-list WORD", NO_STR MATCH_STR IP_STR + "Match next-hop address of route\n" + "Match entries of prefix-lists\n" + "IP prefix-list name\n") DEFUN (match_ip_address, match_ip_address_cmd, @@ -973,7 +892,7 @@ DEFUN (match_ip_address, "IP access-list number (expanded range)\n" "IP Access-list name\n") { - return eigrp_route_match_add (vty, vty->index, "ip address", argv[0]); + return eigrp_route_match_add(vty, vty->index, "ip address", argv[0]); } DEFUN (no_match_ip_address, @@ -984,22 +903,19 @@ DEFUN (no_match_ip_address, IP_STR "Match address of route\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "ip address", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, "ip address", + NULL); - return eigrp_route_match_delete (vty, vty->index, "ip address", argv[0]); + return eigrp_route_match_delete(vty, vty->index, "ip address", argv[0]); } -ALIAS (no_match_ip_address, - no_match_ip_address_val_cmd, - "no match ip address (<1-199>|<1300-2699>|WORD)", - NO_STR - MATCH_STR - IP_STR - "Match address of route\n" - "IP access-list number\n" - "IP access-list number (expanded range)\n" - "IP Access-list name\n") +ALIAS(no_match_ip_address, no_match_ip_address_val_cmd, + "no match ip address (<1-199>|<1300-2699>|WORD)", NO_STR MATCH_STR IP_STR + "Match address of route\n" + "IP access-list number\n" + "IP access-list number (expanded range)\n" + "IP Access-list name\n") DEFUN (match_ip_address_prefix_list, match_ip_address_prefix_list_cmd, @@ -1010,7 +926,8 @@ DEFUN (match_ip_address_prefix_list, "Match entries of prefix-lists\n" "IP prefix-list name\n") { - return eigrp_route_match_add (vty, vty->index, "ip address prefix-list", argv[0]); + return eigrp_route_match_add(vty, vty->index, "ip address prefix-list", + argv[0]); } DEFUN (no_match_ip_address_prefix_list, @@ -1022,21 +939,19 @@ DEFUN (no_match_ip_address_prefix_list, "Match address of route\n" "Match entries of prefix-lists\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "ip address prefix-list", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, + "ip address prefix-list", NULL); - return eigrp_route_match_delete (vty, vty->index, "ip address prefix-list", argv[0]); + return eigrp_route_match_delete(vty, vty->index, + "ip address prefix-list", argv[0]); } -ALIAS (no_match_ip_address_prefix_list, - no_match_ip_address_prefix_list_val_cmd, - "no match ip address prefix-list WORD", - NO_STR - MATCH_STR - IP_STR - "Match address of route\n" - "Match entries of prefix-lists\n" - "IP prefix-list name\n") +ALIAS(no_match_ip_address_prefix_list, no_match_ip_address_prefix_list_val_cmd, + "no match ip address prefix-list WORD", NO_STR MATCH_STR IP_STR + "Match address of route\n" + "Match entries of prefix-lists\n" + "IP prefix-list name\n") DEFUN (match_tag, match_tag_cmd, @@ -1045,7 +960,7 @@ DEFUN (match_tag, "Match tag of route\n" "Metric value\n") { - return eigrp_route_match_add (vty, vty->index, "tag", argv[0]); + return eigrp_route_match_add(vty, vty->index, "tag", argv[0]); } DEFUN (no_match_tag, @@ -1055,19 +970,16 @@ DEFUN (no_match_tag, MATCH_STR "Match tag of route\n") { - if (argc == 0) - return eigrp_route_match_delete (vty, vty->index, "tag", NULL); + if (argc == 0) + return eigrp_route_match_delete(vty, vty->index, "tag", NULL); - return eigrp_route_match_delete (vty, vty->index, "tag", argv[0]); + return eigrp_route_match_delete(vty, vty->index, "tag", argv[0]); } -ALIAS (no_match_tag, - no_match_tag_val_cmd, - "no match tag <0-65535>", - NO_STR - MATCH_STR - "Match tag of route\n" - "Metric value\n") +ALIAS(no_match_tag, no_match_tag_val_cmd, "no match tag <0-65535>", + NO_STR MATCH_STR + "Match tag of route\n" + "Metric value\n") /* set functions */ @@ -1078,15 +990,12 @@ DEFUN (set_metric, "Metric value for destination routing protocol\n" "Metric value\n") { - return eigrp_route_set_add (vty, vty->index, "metric", argv[0]); + return eigrp_route_set_add(vty, vty->index, "metric", argv[0]); } -ALIAS (set_metric, - set_metric_addsub_cmd, - "set metric <+/-metric>", - SET_STR - "Metric value for destination routing protocol\n" - "Add or subtract metric\n") +ALIAS(set_metric, set_metric_addsub_cmd, "set metric <+/-metric>", SET_STR + "Metric value for destination routing protocol\n" + "Add or subtract metric\n") DEFUN (no_set_metric, no_set_metric_cmd, @@ -1095,20 +1004,17 @@ DEFUN (no_set_metric, SET_STR "Metric value for destination routing protocol\n") { - if (argc == 0) - return eigrp_route_set_delete (vty, vty->index, "metric", NULL); + if (argc == 0) + return eigrp_route_set_delete(vty, vty->index, "metric", NULL); - return eigrp_route_set_delete (vty, vty->index, "metric", argv[0]); + return eigrp_route_set_delete(vty, vty->index, "metric", argv[0]); } -ALIAS (no_set_metric, - no_set_metric_val_cmd, - "no set metric (<0-4294967295>|<+/-metric>)", - NO_STR - SET_STR - "Metric value for destination routing protocol\n" - "Metric value\n" - "Add or subtract metric\n") +ALIAS(no_set_metric, no_set_metric_val_cmd, + "no set metric (<0-4294967295>|<+/-metric>)", NO_STR SET_STR + "Metric value for destination routing protocol\n" + "Metric value\n" + "Add or subtract metric\n") DEFUN (set_ip_nexthop, set_ip_nexthop_cmd, @@ -1118,17 +1024,16 @@ DEFUN (set_ip_nexthop, "Next hop address\n" "IP address of next hop\n") { - union sockunion su; - int ret; + union sockunion su; + int ret; - ret = str2sockunion (argv[0], &su); - if (ret < 0) - { - vty_out (vty, "%% Malformed next-hop address\n"); - return CMD_WARNING_CONFIG_FAILED; - } + ret = str2sockunion(argv[0], &su); + if (ret < 0) { + vty_out(vty, "%% Malformed next-hop address\n"); + return CMD_WARNING_CONFIG_FAILED; + } - return eigrp_route_set_add (vty, vty->index, "ip next-hop", argv[0]); + return eigrp_route_set_add(vty, vty->index, "ip next-hop", argv[0]); } DEFUN (no_set_ip_nexthop, @@ -1139,20 +1044,17 @@ DEFUN (no_set_ip_nexthop, IP_STR "Next hop address\n") { - if (argc == 0) - return eigrp_route_set_delete (vty, vty->index, "ip next-hop", NULL); + if (argc == 0) + return eigrp_route_set_delete(vty, vty->index, "ip next-hop", + NULL); - return eigrp_route_set_delete (vty, vty->index, "ip next-hop", argv[0]); + return eigrp_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") +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") DEFUN (set_tag, set_tag_cmd, @@ -1161,7 +1063,7 @@ DEFUN (set_tag, "Tag value for routing protocol\n" "Tag value\n") { - return eigrp_route_set_add (vty, vty->index, "tag", argv[0]); + return eigrp_route_set_add(vty, vty->index, "tag", argv[0]); } DEFUN (no_set_tag, @@ -1171,72 +1073,69 @@ DEFUN (no_set_tag, SET_STR "Tag value for routing protocol\n") { - if (argc == 0) - return eigrp_route_set_delete (vty, vty->index, "tag", NULL); + if (argc == 0) + return eigrp_route_set_delete(vty, vty->index, "tag", NULL); - return eigrp_route_set_delete (vty, vty->index, "tag", argv[0]); + return eigrp_route_set_delete(vty, vty->index, "tag", argv[0]); } -ALIAS (no_set_tag, - no_set_tag_val_cmd, - "no set tag <0-65535>", - NO_STR - SET_STR - "Tag value for routing protocol\n" - "Tag value\n") +ALIAS(no_set_tag, no_set_tag_val_cmd, "no set tag <0-65535>", NO_STR SET_STR + "Tag value for routing protocol\n" + "Tag value\n") /* Route-map init */ -void -eigrp_route_map_init () +void eigrp_route_map_init() { - route_map_init (); - route_map_init_vty (); - route_map_add_hook (eigrp_route_map_update); - route_map_delete_hook (eigrp_route_map_update); - - /*route_map_install_match (&route_match_metric_cmd); - route_map_install_match (&route_match_interface_cmd);*/ - /*route_map_install_match (&route_match_ip_next_hop_cmd); - route_map_install_match (&route_match_ip_next_hop_prefix_list_cmd); - route_map_install_match (&route_match_ip_address_cmd); - route_map_install_match (&route_match_ip_address_prefix_list_cmd);*/ - /*route_map_install_match (&route_match_tag_cmd);*/ - - /*route_map_install_set (&route_set_metric_cmd); - route_map_install_set (&route_set_ip_nexthop_cmd); - route_map_install_set (&route_set_tag_cmd);*/ - - /*install_element (RMAP_NODE, &route_match_metric_cmd); - install_element (RMAP_NODE, &no_match_metric_cmd); - install_element (RMAP_NODE, &no_match_metric_val_cmd); - install_element (RMAP_NODE, &route_match_interface_cmd); - install_element (RMAP_NODE, &no_match_interface_cmd); - install_element (RMAP_NODE, &no_match_interface_val_cmd); - install_element (RMAP_NODE, &route_match_ip_next_hop_cmd); - install_element (RMAP_NODE, &no_match_ip_next_hop_cmd); - install_element (RMAP_NODE, &no_match_ip_next_hop_val_cmd); - install_element (RMAP_NODE, &route_match_ip_next_hop_prefix_list_cmd); - install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_cmd); - install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_val_cmd);*/ - /*install_element (RMAP_NODE, &route_match_ip_address_cmd); - install_element (RMAP_NODE, &no_match_ip_address_cmd); - install_element (RMAP_NODE, &no_match_ip_address_val_cmd); - install_element (RMAP_NODE, &route_match_ip_address_prefix_list_cmd); - install_element (RMAP_NODE, &no_match_ip_address_prefix_list_cmd); - install_element (RMAP_NODE, &no_match_ip_address_prefix_list_val_cmd);*/ - /*install_element (RMAP_NODE, &route_match_tag_cmd); - install_element (RMAP_NODE, &no_match_tag_cmd); - install_element (RMAP_NODE, &no_match_tag_val_cmd);*/ - - /*install_element (RMAP_NODE, &set_metric_cmd); - install_element (RMAP_NODE, &set_metric_addsub_cmd); - install_element (RMAP_NODE, &no_set_metric_cmd); - install_element (RMAP_NODE, &no_set_metric_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); - install_element (RMAP_NODE, &set_tag_cmd); - install_element (RMAP_NODE, &no_set_tag_cmd); - install_element (RMAP_NODE, &no_set_tag_val_cmd);*/ + route_map_init(); + route_map_init_vty(); + route_map_add_hook(eigrp_route_map_update); + route_map_delete_hook(eigrp_route_map_update); + + /*route_map_install_match (&route_match_metric_cmd); + route_map_install_match (&route_match_interface_cmd);*/ + /*route_map_install_match (&route_match_ip_next_hop_cmd); + route_map_install_match (&route_match_ip_next_hop_prefix_list_cmd); + route_map_install_match (&route_match_ip_address_cmd); + route_map_install_match (&route_match_ip_address_prefix_list_cmd);*/ + /*route_map_install_match (&route_match_tag_cmd);*/ + + /*route_map_install_set (&route_set_metric_cmd); + route_map_install_set (&route_set_ip_nexthop_cmd); + route_map_install_set (&route_set_tag_cmd);*/ + + /*install_element (RMAP_NODE, &route_match_metric_cmd); + install_element (RMAP_NODE, &no_match_metric_cmd); + install_element (RMAP_NODE, &no_match_metric_val_cmd); + install_element (RMAP_NODE, &route_match_interface_cmd); + install_element (RMAP_NODE, &no_match_interface_cmd); + install_element (RMAP_NODE, &no_match_interface_val_cmd); + install_element (RMAP_NODE, &route_match_ip_next_hop_cmd); + install_element (RMAP_NODE, &no_match_ip_next_hop_cmd); + install_element (RMAP_NODE, &no_match_ip_next_hop_val_cmd); + install_element (RMAP_NODE, &route_match_ip_next_hop_prefix_list_cmd); + install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_cmd); + install_element (RMAP_NODE, + &no_match_ip_next_hop_prefix_list_val_cmd);*/ + /*install_element (RMAP_NODE, &route_match_ip_address_cmd); + install_element (RMAP_NODE, &no_match_ip_address_cmd); + install_element (RMAP_NODE, &no_match_ip_address_val_cmd); + install_element (RMAP_NODE, &route_match_ip_address_prefix_list_cmd); + install_element (RMAP_NODE, &no_match_ip_address_prefix_list_cmd); + install_element (RMAP_NODE, + &no_match_ip_address_prefix_list_val_cmd);*/ + /*install_element (RMAP_NODE, &route_match_tag_cmd); + install_element (RMAP_NODE, &no_match_tag_cmd); + install_element (RMAP_NODE, &no_match_tag_val_cmd);*/ + + /*install_element (RMAP_NODE, &set_metric_cmd); + install_element (RMAP_NODE, &set_metric_addsub_cmd); + install_element (RMAP_NODE, &no_set_metric_cmd); + install_element (RMAP_NODE, &no_set_metric_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); + install_element (RMAP_NODE, &set_tag_cmd); + install_element (RMAP_NODE, &no_set_tag_cmd); + install_element (RMAP_NODE, &no_set_tag_val_cmd);*/ } |
