]> git.puffer.fish Git - mirror/frr.git/commitdiff
Revert of PR 4078 and PR 4315 4455/head
authorLakshman Krishnamoorthy <lkrishnamoor@vmware.com>
Mon, 3 Jun 2019 22:36:02 +0000 (15:36 -0700)
committerLakshman Krishnamoorthy <lkrishnamoor@vmware.com>
Mon, 3 Jun 2019 22:43:02 +0000 (15:43 -0700)
Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
18 files changed:
bgpd/bgp_evpn.c
bgpd/bgp_route.c
bgpd/bgp_routemap.c
bgpd/bgp_rpki.c
bgpd/bgp_updgrp_adv.c
eigrpd/eigrp_routemap.c
isisd/isis_routemap.c
lib/routemap.c
lib/routemap.h
ospf6d/ospf6_asbr.c
ospfd/ospf_routemap.c
ospfd/ospf_zebra.c
ripd/rip_routemap.c
ripngd/ripng_routemap.c
zebra/redistribute.c
zebra/zebra_nhg.c
zebra/zebra_rnh.c
zebra/zebra_routemap.c

index a58fca0cc2d85a6ab1564a298b0e671b08b11008..c4b2a606c58e96d260766607ef06c982f6c4bf1f 100644 (file)
@@ -4411,7 +4411,7 @@ void bgp_evpn_advertise_type5_routes(struct bgp *bgp_vrf, afi_t afi,
 
                                /* apply the route-map */
                                if (bgp_vrf->adv_cmd_rmap[afi][safi].map) {
-                                       route_map_result_t ret;
+                                       int ret = 0;
 
                                        ret = route_map_apply(
                                                bgp_vrf->adv_cmd_rmap[afi][safi]
index 543df2b048c4e5c3b2691ae510126e0eea8bd2c7..31243c899dc2219e6709b8998d54d99fd58aa6ac 100644 (file)
@@ -1236,12 +1236,10 @@ static int bgp_cluster_filter(struct peer *peer, struct attr *attr)
 
 static int bgp_input_modifier(struct peer *peer, struct prefix *p,
                              struct attr *attr, afi_t afi, safi_t safi,
-                             const char *rmap_name, mpls_label_t *label,
-                             uint32_t num_labels)
+                             const char *rmap_name)
 {
        struct bgp_filter *filter;
-       struct bgp_path_info rmap_path = { 0 };
-       struct bgp_path_info_extra extra = { 0 };
+       struct bgp_path_info rmap_path;
        route_map_result_t ret;
        struct route_map *rmap = NULL;
 
@@ -1271,11 +1269,6 @@ static int bgp_input_modifier(struct peer *peer, struct prefix *p,
                /* Duplicate current value to new strucutre for modification. */
                rmap_path.peer = peer;
                rmap_path.attr = attr;
-               rmap_path.extra = &extra;
-               extra.num_labels = num_labels;
-               if (label && num_labels && num_labels <= BGP_MAX_LABELS)
-                       memcpy(extra.label, label,
-                               num_labels * sizeof(mpls_label_t));
 
                SET_FLAG(peer->rmap_type, PEER_RMAP_TYPE_IN);
 
@@ -1465,7 +1458,7 @@ int subgroup_announce_check(struct bgp_node *rn, struct bgp_path_info *pi,
        struct bgp *bgp;
        struct attr *piattr;
        char buf[PREFIX_STRLEN];
-       route_map_result_t ret;
+       int ret;
        int transparent;
        int reflect;
        afi_t afi;
@@ -2533,12 +2526,12 @@ static void bgp_process_main_one(struct bgp *bgp, struct bgp_node *rn,
 
                        /* apply the route-map */
                        if (bgp->adv_cmd_rmap[afi][safi].map) {
-                               route_map_result_t ret;
+                               int ret = 0;
 
                                ret = route_map_apply(
                                        bgp->adv_cmd_rmap[afi][safi].map,
                                        &rn->p, RMAP_BGP, new_select);
-                               if (ret == RMAP_PERMITMATCH)
+                               if (ret == RMAP_MATCH)
                                        bgp_evpn_advertise_type5_route(
                                                bgp, &rn->p, new_select->attr,
                                                afi, safi);
@@ -3131,8 +3124,8 @@ int bgp_update(struct peer *peer, struct prefix *p, uint32_t addpath_id,
         * commands, so we need bgp_attr_flush in the error paths, until we
         * intern
         * the attr (which takes over the memory references) */
-       if (bgp_input_modifier(peer, p, &new_attr, afi, safi, NULL,
-               label, num_labels) == RMAP_DENY) {
+       if (bgp_input_modifier(peer, p, &new_attr, afi, safi, NULL)
+           == RMAP_DENY) {
                reason = "route-map;";
                bgp_attr_flush(&new_attr);
                goto filtered;
@@ -4564,7 +4557,7 @@ void bgp_static_update(struct bgp *bgp, struct prefix *p,
        struct bgp_path_info rmap_path;
        struct attr attr;
        struct attr *attr_new;
-       route_map_result_t ret;
+       int ret;
 #if ENABLE_BGP_VNC
        int vnc_implicit_withdraw = 0;
 #endif
@@ -4912,7 +4905,7 @@ static void bgp_static_update_safi(struct bgp *bgp, struct prefix *p,
        if (bgp_static->rmap.name) {
                struct attr attr_tmp = attr;
                struct bgp_path_info rmap_path;
-               route_map_result_t ret;
+               int ret;
 
                rmap_path.peer = bgp->peer_self;
                rmap_path.attr = &attr_tmp;
@@ -6574,7 +6567,7 @@ void bgp_redistribute_add(struct bgp *bgp, struct prefix *p,
        struct attr attr;
        struct attr *new_attr;
        afi_t afi;
-       route_map_result_t ret;
+       int ret;
        struct bgp_redist *red;
 
        /* Make default attribute. */
@@ -9089,7 +9082,7 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
                                struct route_map *rmap = output_arg;
                                struct bgp_path_info path;
                                struct attr dummy_attr;
-                               route_map_result_t ret;
+                               int ret;
 
                                bgp_attr_dup(&dummy_attr, pi->attr);
 
@@ -11198,7 +11191,7 @@ static void show_adj_route(struct vty *vty, struct peer *peer, afi_t afi,
 
                                /* Filter prefix using route-map */
                                ret = bgp_input_modifier(peer, &rn->p, &attr,
-                                               afi, safi, rmap_name, NULL, 0);
+                                                       afi, safi, rmap_name);
 
                                if (type == bgp_show_adj_route_filtered &&
                                        !route_filtered && ret != RMAP_DENY) {
index 8c3a0242950ee4f128562d4d4c69e18c36655bb3..28a763ed5e51ed17f21f67f68ee61acb827eb44a 100644 (file)
@@ -60,7 +60,6 @@
 #include "bgpd/bgp_evpn_private.h"
 #include "bgpd/bgp_evpn_vty.h"
 #include "bgpd/bgp_mplsvpn.h"
-#include "bgpd/bgp_encap_types.h"
 
 #if ENABLE_BGP_VNC
 #include "bgpd/rfapi/bgp_rfapi_cfg.h"
@@ -238,9 +237,10 @@ struct bgp_match_peer_compiled {
 /* Compares the peer specified in the 'match peer' clause with the peer
     received in bgp_path_info->peer. If it is the same, or if the peer structure
     received is a peer_group containing it, returns RMAP_MATCH. */
-static enum route_map_match_result_t
-route_match_peer(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_match_peer(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        struct bgp_match_peer_compiled *pc;
        union sockunion *su;
@@ -333,9 +333,10 @@ struct route_map_rule_cmd route_match_peer_cmd = {"peer", route_match_peer,
                                                  route_match_peer_free};
 
 #if defined(HAVE_LUA)
-static enum route_map_match_result_t
-route_match_command(void *rule, const struct prefix *prefix,
-                   route_map_object_t type, void *object)
+static route_map_result_t route_match_command(void *rule,
+                                             const struct prefix *prefix,
+                                             route_map_object_t type,
+                                             void *object)
 {
        int status = RMAP_NOMATCH;
        u_int32_t locpref = 0;
@@ -431,9 +432,10 @@ struct route_map_rule_cmd route_match_command_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_ip_address(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_address(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct access_list *alist;
 
@@ -470,9 +472,10 @@ struct route_map_rule_cmd route_match_ip_address_cmd = {
 /* `match ip next-hop IP_ADDRESS' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_ip_next_hop(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_next_hop(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct access_list *alist;
        struct bgp_path_info *path;
@@ -516,9 +519,10 @@ struct route_map_rule_cmd route_match_ip_next_hop_cmd = {
 /* `match ip route-source ACCESS-LIST' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_ip_route_source(void *rule, const struct prefix *pfx,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_route_source(void *rule,
+                                                     const struct prefix *pfx,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        struct access_list *alist;
        struct bgp_path_info *path;
@@ -567,7 +571,7 @@ struct route_map_rule_cmd route_match_ip_route_source_cmd = {
 
 /* `match ip address prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -602,7 +606,7 @@ struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
 
 /* `match ip next-hop prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_prefix_list(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -644,7 +648,7 @@ struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = {
 
 /* `match ip next-hop type <blackhole>' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_type(void *rule, const struct prefix *prefix,
                             route_map_object_t type, void *object)
 {
@@ -683,7 +687,7 @@ static struct route_map_rule_cmd route_match_ip_next_hop_type_cmd = {
 
 /* `match ip route-source prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_route_source_prefix_list(void *rule,
                                        const struct prefix *prefix,
                                        route_map_object_t type, void *object)
@@ -733,9 +737,10 @@ struct route_map_rule_cmd route_match_ip_route_source_prefix_list_cmd = {
 /* `match evpn default-route' */
 
 /* Match function should return 1 if match is success else 0 */
-static enum route_map_match_result_t
-route_match_evpn_default_route(void *rule, const struct prefix *p,
-                              route_map_object_t type, void *object)
+static route_map_result_t route_match_evpn_default_route(void *rule,
+                                                        const struct prefix *p,
+                                                        route_map_object_t
+                                                        type, void *object)
 {
        if (type == RMAP_BGP && is_evpn_prefix_default(p))
                return RMAP_MATCH;
@@ -751,9 +756,10 @@ struct route_map_rule_cmd route_match_evpn_default_route_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_mac_address(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_match_mac_address(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct access_list *alist;
        struct prefix p;
@@ -796,49 +802,26 @@ struct route_map_rule_cmd route_match_mac_address_cmd = {
        "mac address", route_match_mac_address, route_match_mac_address_compile,
        route_match_mac_address_free};
 
-/*
- * Match function returns:
- * ...RMAP_MATCH if match is found.
- * ...RMAP_NOMATCH if match is not found.
- * ...RMAP_NOOP to ignore this match check.
- */
-static enum route_map_match_result_t
-route_match_vni(void *rule, const struct prefix *prefix,
-               route_map_object_t type, void *object)
+/* `match vni' */
+
+/* Match function should return 1 if match is success else return
+   zero. */
+static route_map_result_t route_match_vni(void *rule,
+                                         const struct prefix *prefix,
+                                         route_map_object_t type, void *object)
 {
        vni_t vni = 0;
-       unsigned int label_cnt = 0;
        struct bgp_path_info *path = NULL;
-       struct prefix_evpn *evp = (struct prefix_evpn *) prefix;
 
        if (type == RMAP_BGP) {
                vni = *((vni_t *)rule);
                path = (struct bgp_path_info *)object;
 
-               /*
-                * This rmap filter is valid for vxlan tunnel type only.
-                * For any other tunnel type, return noop to ignore
-                * this check.
-                */
-               if (path->attr && path->attr->encap_tunneltype !=
-                       BGP_ENCAP_TYPE_VXLAN)
-                       return RMAP_NOOP;
-
-               /*
-                * We do not want to filter type 3 routes because
-                * they do not have vni associated with them.
-                */
-               if (evp && evp->prefix.route_type == BGP_EVPN_IMET_ROUTE)
-                       return RMAP_NOOP;
-
                if (path->extra == NULL)
                        return RMAP_NOMATCH;
 
-               for ( ; label_cnt < BGP_MAX_LABELS &&
-                       label_cnt < path->extra->num_labels; label_cnt++) {
-                       if (vni == label2vni(&path->extra->label[label_cnt]))
-                               return RMAP_MATCH;
-               }
+               if (vni == label2vni(&path->extra->label[0]))
+                       return RMAP_MATCH;
        }
 
        return RMAP_NOMATCH;
@@ -876,9 +859,10 @@ struct route_map_rule_cmd route_match_evpn_vni_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_evpn_route_type(void *rule, const struct prefix *pfx,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_match_evpn_route_type(void *rule,
+                                                     const struct prefix *pfx,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        uint8_t route_type = 0;
 
@@ -921,7 +905,7 @@ struct route_map_rule_cmd route_match_evpn_route_type_cmd = {
        route_match_evpn_route_type_compile, route_match_evpn_route_type_free};
 
 /* Route map commands for VRF route leak with source vrf matching */
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_vrl_source_vrf(void *rule, const struct prefix *prefix,
                           route_map_object_t type, void *object)
 {
@@ -970,9 +954,10 @@ struct route_map_rule_cmd route_match_vrl_source_vrf_cmd = {
 /* `match local-preference LOCAL-PREF' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_local_pref(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_local_pref(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        uint32_t *local_pref;
        struct bgp_path_info *path;
@@ -1026,9 +1011,10 @@ struct route_map_rule_cmd route_match_local_pref_cmd = {
 /* `match metric METRIC' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_metric(void *rule, const struct prefix *prefix,
-                  route_map_object_t type, void *object)
+static route_map_result_t route_match_metric(void *rule,
+                                            const struct prefix *prefix,
+                                            route_map_object_t type,
+                                            void *object)
 {
        struct rmap_value *rv;
        struct bgp_path_info *path;
@@ -1049,9 +1035,10 @@ struct route_map_rule_cmd route_match_metric_cmd = {
 /* `match as-path ASPATH' */
 
 /* Match function for as-path match.  I assume given object is */
-static enum route_map_match_result_t
-route_match_aspath(void *rule, const struct prefix *prefix,
-                  route_map_object_t type, void *object)
+static route_map_result_t route_match_aspath(void *rule,
+                                            const struct prefix *prefix,
+                                            route_map_object_t type,
+                                            void *object)
 {
 
        struct as_list *as_list;
@@ -1098,9 +1085,10 @@ struct rmap_community {
 };
 
 /* Match function for community match. */
-static enum route_map_match_result_t
-route_match_community(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_community(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct community_list *list;
        struct bgp_path_info *path;
@@ -1167,9 +1155,10 @@ struct route_map_rule_cmd route_match_community_cmd = {
        route_match_community_free};
 
 /* Match function for lcommunity match. */
-static enum route_map_match_result_t
-route_match_lcommunity(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_lcommunity(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct community_list *list;
        struct bgp_path_info *path;
@@ -1229,9 +1218,10 @@ struct route_map_rule_cmd route_match_lcommunity_cmd = {
 
 
 /* Match function for extcommunity match. */
-static enum route_map_match_result_t
-route_match_ecommunity(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ecommunity(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct community_list *list;
        struct bgp_path_info *path;
@@ -1282,9 +1272,10 @@ struct route_map_rule_cmd route_match_ecommunity_cmd = {
    and `address-family vpnv4'.  */
 
 /* `match origin' */
-static enum route_map_match_result_t
-route_match_origin(void *rule, const struct prefix *prefix,
-                  route_map_object_t type, void *object)
+static route_map_result_t route_match_origin(void *rule,
+                                            const struct prefix *prefix,
+                                            route_map_object_t type,
+                                            void *object)
 {
        uint8_t *origin;
        struct bgp_path_info *path;
@@ -1329,9 +1320,10 @@ struct route_map_rule_cmd route_match_origin_cmd = {
 
 /* match probability  { */
 
-static enum route_map_match_result_t
-route_match_probability(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_match_probability(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        long r = random();
 
@@ -1383,9 +1375,10 @@ struct route_map_rule_cmd route_match_probability_cmd = {
 /* `match interface IFNAME' */
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_interface(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_interface(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct interface *ifp;
        struct bgp_path_info *path;
@@ -1429,9 +1422,9 @@ struct route_map_rule_cmd route_match_interface_cmd = {
 /* `set ip next-hop IP_ADDRESS' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_tag(void *rule, const struct prefix *prefix,
-               route_map_object_t type, void *object)
+static route_map_result_t route_match_tag(void *rule,
+                                         const struct prefix *prefix,
+                                         route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct bgp_path_info *path;
@@ -1461,9 +1454,10 @@ struct rmap_ip_nexthop_set {
        int unchanged;
 };
 
-static enum route_map_match_result_t
-route_set_ip_nexthop(void *rule, const struct prefix *prefix,
-                    route_map_object_t type, void *object)
+static route_map_result_t route_set_ip_nexthop(void *rule,
+                                              const struct prefix *prefix,
+                                              route_map_object_t type,
+                                              void *object)
 {
        struct rmap_ip_nexthop_set *rins = rule;
        struct bgp_path_info *path;
@@ -1566,9 +1560,10 @@ struct route_map_rule_cmd route_set_ip_nexthop_cmd = {
 /* `set local-preference LOCAL_PREF' */
 
 /* Set local preference. */
-static enum route_map_match_result_t
-route_set_local_pref(void *rule, const struct prefix *prefix,
-                    route_map_object_t type, void *object)
+static route_map_result_t route_set_local_pref(void *rule,
+                                              const struct prefix *prefix,
+                                              route_map_object_t type,
+                                              void *object)
 {
        struct rmap_value *rv;
        struct bgp_path_info *path;
@@ -1600,9 +1595,10 @@ struct route_map_rule_cmd route_set_local_pref_cmd = {
 /* `set weight WEIGHT' */
 
 /* Set weight. */
-static enum route_map_match_result_t
-route_set_weight(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_weight(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        struct rmap_value *rv;
        struct bgp_path_info *path;
@@ -1627,9 +1623,10 @@ struct route_map_rule_cmd route_set_weight_cmd = {
 /* `set metric METRIC' */
 
 /* Set metric to attribute. */
-static enum route_map_match_result_t
-route_set_metric(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_metric(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        struct rmap_value *rv;
        struct bgp_path_info *path;
@@ -1657,9 +1654,10 @@ struct route_map_rule_cmd route_set_metric_cmd = {
 /* `set as-path prepend ASPATH' */
 
 /* For AS path prepend mechanism. */
-static enum route_map_match_result_t
-route_set_aspath_prepend(void *rule, const struct prefix *prefix,
-                        route_map_object_t type, void *object)
+static route_map_result_t route_set_aspath_prepend(void *rule,
+                                                  const struct prefix *prefix,
+                                                  route_map_object_t type,
+                                                  void *object)
 {
        struct aspath *aspath;
        struct aspath *new;
@@ -1719,9 +1717,10 @@ struct route_map_rule_cmd route_set_aspath_prepend_cmd = {
  * one.
  * Make a deep copy of existing AS_PATH, but for the first ASn only.
  */
-static enum route_map_match_result_t
-route_set_aspath_exclude(void *rule, const struct prefix *dummy,
-                        route_map_object_t type, void *object)
+static route_map_result_t route_set_aspath_exclude(void *rule,
+                                                  const struct prefix *dummy,
+                                                  route_map_object_t type,
+                                                  void *object)
 {
        struct aspath *new_path, *exclude_path;
        struct bgp_path_info *path;
@@ -1753,9 +1752,10 @@ struct rmap_com_set {
 };
 
 /* For community set mechanism. */
-static enum route_map_match_result_t
-route_set_community(void *rule, const struct prefix *prefix,
-                   route_map_object_t type, void *object)
+static route_map_result_t route_set_community(void *rule,
+                                             const struct prefix *prefix,
+                                             route_map_object_t type,
+                                             void *object)
 {
        struct rmap_com_set *rcs;
        struct bgp_path_info *path;
@@ -1868,9 +1868,10 @@ struct rmap_lcom_set {
 
 
 /* For lcommunity set mechanism. */
-static enum route_map_match_result_t
-route_set_lcommunity(void *rule, const struct prefix *prefix,
-                    route_map_object_t type, void *object)
+static route_map_result_t route_set_lcommunity(void *rule,
+                                              const struct prefix *prefix,
+                                              route_map_object_t type,
+                                              void *object)
 {
        struct rmap_lcom_set *rcs;
        struct bgp_path_info *path;
@@ -1980,9 +1981,10 @@ struct route_map_rule_cmd route_set_lcommunity_cmd = {
 /* `set large-comm-list (<1-99>|<100-500>|WORD) delete' */
 
 /* For large community set mechanism. */
-static enum route_map_match_result_t
-route_set_lcommunity_delete(void *rule, const struct prefix *pfx,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_set_lcommunity_delete(void *rule,
+                                                     const struct prefix *pfx,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        struct community_list *list;
        struct lcommunity *merge;
@@ -2063,9 +2065,11 @@ struct route_map_rule_cmd route_set_lcommunity_delete_cmd = {
 /* `set comm-list (<1-99>|<100-500>|WORD) delete' */
 
 /* For community set mechanism. */
-static enum route_map_match_result_t
-route_set_community_delete(void *rule, const struct prefix *prefix,
-                          route_map_object_t type, void *object)
+static route_map_result_t route_set_community_delete(
+       void *rule,
+       const struct prefix *prefix,
+       route_map_object_t type,
+       void *object)
 {
        struct community_list *list;
        struct community *merge;
@@ -2145,9 +2149,10 @@ struct route_map_rule_cmd route_set_community_delete_cmd = {
 /* `set extcommunity rt COMMUNITY' */
 
 /* For community set mechanism.  Used by _rt and _soo. */
-static enum route_map_match_result_t
-route_set_ecommunity(void *rule, const struct prefix *prefix,
-                    route_map_object_t type, void *object)
+static route_map_result_t route_set_ecommunity(void *rule,
+                                              const struct prefix *prefix,
+                                              route_map_object_t type,
+                                              void *object)
 {
        struct ecommunity *ecom;
        struct ecommunity *new_ecom;
@@ -2232,9 +2237,10 @@ struct route_map_rule_cmd route_set_ecommunity_soo_cmd = {
 /* `set origin ORIGIN' */
 
 /* For origin set. */
-static enum route_map_match_result_t
-route_set_origin(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_origin(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        uint8_t *origin;
        struct bgp_path_info *path;
@@ -2281,9 +2287,10 @@ struct route_map_rule_cmd route_set_origin_cmd = {
 /* `set atomic-aggregate' */
 
 /* For atomic aggregate set. */
-static enum route_map_match_result_t
-route_set_atomic_aggregate(void *rule, const struct prefix *pfx,
-                          route_map_object_t type, void *object)
+static route_map_result_t route_set_atomic_aggregate(void *rule,
+                                                    const struct prefix *pfx,
+                                                    route_map_object_t type,
+                                                    void *object)
 {
        struct bgp_path_info *path;
 
@@ -2319,9 +2326,10 @@ struct aggregator {
        struct in_addr address;
 };
 
-static enum route_map_match_result_t
-route_set_aggregator_as(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_set_aggregator_as(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct bgp_path_info *path;
        struct aggregator *aggregator;
@@ -2372,9 +2380,9 @@ struct route_map_rule_cmd route_set_aggregator_as_cmd = {
 };
 
 /* Set tag to object. object must be pointer to struct bgp_path_info */
-static enum route_map_match_result_t
-route_set_tag(void *rule, const struct prefix *prefix,
-             route_map_object_t type, void *object)
+static route_map_result_t route_set_tag(void *rule,
+                                       const struct prefix *prefix,
+                                       route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct bgp_path_info *path;
@@ -2397,9 +2405,10 @@ static struct route_map_rule_cmd route_set_tag_cmd = {
 };
 
 /* Set label-index to object. object must be pointer to struct bgp_path_info */
-static enum route_map_match_result_t
-route_set_label_index(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_set_label_index(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct rmap_value *rv;
        struct bgp_path_info *path;
@@ -2429,9 +2438,10 @@ static struct route_map_rule_cmd route_set_label_index_cmd = {
 
 /* `match ipv6 address IP_ACCESS_LIST' */
 
-static enum route_map_match_result_t
-route_match_ipv6_address(void *rule, const struct prefix *prefix,
-                        route_map_object_t type, void *object)
+static route_map_result_t route_match_ipv6_address(void *rule,
+                                                  const struct prefix *prefix,
+                                                  route_map_object_t type,
+                                                  void *object)
 {
        struct access_list *alist;
 
@@ -2464,9 +2474,10 @@ struct route_map_rule_cmd route_match_ipv6_address_cmd = {
 
 /* `match ipv6 next-hop IP_ADDRESS' */
 
-static enum route_map_match_result_t
-route_match_ipv6_next_hop(void *rule, const struct prefix *prefix,
-                         route_map_object_t type, void *object)
+static route_map_result_t route_match_ipv6_next_hop(void *rule,
+                                                   const struct prefix *prefix,
+                                                   route_map_object_t type,
+                                                   void *object)
 {
        struct in6_addr *addr = rule;
        struct bgp_path_info *path;
@@ -2515,7 +2526,7 @@ struct route_map_rule_cmd route_match_ipv6_next_hop_cmd = {
 
 /* `match ipv6 address prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ipv6_address_prefix_list(void *rule, const struct prefix *prefix,
                                     route_map_object_t type, void *object)
 {
@@ -2550,9 +2561,9 @@ struct route_map_rule_cmd route_match_ipv6_address_prefix_list_cmd = {
 
 /* `match ipv6 next-hop type <TYPE>' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ipv6_next_hop_type(void *rule, const struct prefix *prefix,
-                              route_map_object_t type, void *object)
+                             route_map_object_t type, void *object)
 {
        struct bgp_path_info *path;
        struct in6_addr *addr = rule;
@@ -2598,9 +2609,10 @@ struct route_map_rule_cmd route_match_ipv6_next_hop_type_cmd = {
 /* `set ipv6 nexthop global IP_ADDRESS' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_ipv6_nexthop_global(void *rule, const struct prefix *p,
-                             route_map_object_t type, void *object)
+static route_map_result_t route_set_ipv6_nexthop_global(void *rule,
+                                                       const struct prefix *p,
+                                                       route_map_object_t type,
+                                                       void *object)
 {
        struct in6_addr *address;
        struct bgp_path_info *path;
@@ -2656,7 +2668,7 @@ struct route_map_rule_cmd route_set_ipv6_nexthop_global_cmd = {
        route_set_ipv6_nexthop_global_free};
 
 /* Set next-hop preference value. */
-static enum route_map_match_result_t
+static route_map_result_t
 route_set_ipv6_nexthop_prefer_global(void *rule, const struct prefix *prefix,
                                     route_map_object_t type, void *object)
 {
@@ -2710,9 +2722,10 @@ struct route_map_rule_cmd route_set_ipv6_nexthop_prefer_global_cmd = {
 /* `set ipv6 nexthop local IP_ADDRESS' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_ipv6_nexthop_local(void *rule, const struct prefix *p,
-                            route_map_object_t type, void *object)
+static route_map_result_t route_set_ipv6_nexthop_local(void *rule,
+                                                      const struct prefix *p,
+                                                      route_map_object_t type,
+                                                      void *object)
 {
        struct in6_addr *address;
        struct bgp_path_info *path;
@@ -2772,9 +2785,10 @@ struct route_map_rule_cmd route_set_ipv6_nexthop_local_cmd = {
 /* `set ipv6 nexthop peer-address' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_ipv6_nexthop_peer(void *rule, const struct prefix *pfx,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_set_ipv6_nexthop_peer(void *rule,
+                                                     const struct prefix *pfx,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        struct in6_addr peer_address;
        struct bgp_path_info *path;
@@ -2849,9 +2863,10 @@ struct route_map_rule_cmd route_set_ipv6_nexthop_peer_cmd = {
 
 /* `set ipv4 vpn next-hop A.B.C.D' */
 
-static enum route_map_match_result_t
-route_set_vpnv4_nexthop(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_set_vpnv4_nexthop(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct in_addr *address;
        struct bgp_path_info *path;
@@ -2888,9 +2903,10 @@ static void *route_set_vpnv4_nexthop_compile(const char *arg)
 
 /* `set ipv6 vpn next-hop A.B.C.D' */
 
-static enum route_map_match_result_t
-route_set_vpnv6_nexthop(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_set_vpnv6_nexthop(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct in6_addr *address;
        struct bgp_path_info *path;
@@ -2943,9 +2959,10 @@ struct route_map_rule_cmd route_set_vpnv6_nexthop_cmd = {
 /* `set originator-id' */
 
 /* For origin set. */
-static enum route_map_match_result_t
-route_set_originator_id(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_set_originator_id(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct in_addr *address;
        struct bgp_path_info *path;
index ab93ade5629138cfd10b18f7877f6f832ef221a2..063772399055feeb04ac6706417e2417d5ced7cf 100644 (file)
@@ -129,10 +129,8 @@ static void print_record(const struct pfx_record *record, struct vty *vty);
 static int is_synchronized(void);
 static int is_running(void);
 static void route_match_free(void *rule);
-static enum route_map_match_result_t route_match(void *rule,
-                                                const struct prefix *prefix,
-                                                route_map_object_t type,
-                                                void *object);
+static route_map_result_t route_match(void *rule, const struct prefix *prefix,
+                                     route_map_object_t type, void *object);
 static void *route_match_compile(const char *arg);
 static void revalidate_bgp_node(struct bgp_node *bgp_node, afi_t afi,
                                safi_t safi);
@@ -215,10 +213,8 @@ static void ipv6_addr_to_host_byte_order(const uint32_t *src, uint32_t *dest)
                dest[i] = ntohl(src[i]);
 }
 
-static enum route_map_match_result_t route_match(void *rule,
-                                                const struct prefix *prefix,
-                                                route_map_object_t type,
-                                                void *object)
+static route_map_result_t route_match(void *rule, const struct prefix *prefix,
+                                     route_map_object_t type, void *object)
 {
        int *rpki_status = rule;
        struct bgp_path_info *path;
index 21f1dff60df2b1776f00f4989caa7091318cfef0..b64c51f34140aef2caad45f8ec96aa954cb4dcbf 100644 (file)
@@ -716,7 +716,7 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
        struct bgp_node *rn;
        struct bgp_path_info *ri;
        struct peer *peer;
-       route_map_result_t ret = RMAP_DENYMATCH;
+       int ret = RMAP_DENYMATCH;
        afi_t afi;
        safi_t safi;
 
index 961556d432931903111ff1b5b29ee15ec84fe5d9..0a00497d5a18d043bda909b265a81d8af8332672 100644 (file)
@@ -251,9 +251,9 @@ void eigrp_route_map_update(const char *notused)
 
 /* `match metric METRIC' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_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)
 {
        //  uint32_t *metric;
        //  uint32_t  check;
@@ -311,9 +311,10 @@ struct route_map_rule_cmd route_match_metric_cmd = {
 
 /* `match interface IFNAME' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_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;
@@ -359,9 +360,10 @@ struct route_map_rule_cmd route_match_interface_cmd = {
 /* `match ip next-hop IP_ACCESS_LIST' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_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;
@@ -405,7 +407,7 @@ static struct route_map_rule_cmd route_match_ip_next_hop_cmd = {
 
 /* `match ip next-hop prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_prefix_list(void *rule, struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -450,9 +452,10 @@ static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_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;
 
@@ -488,7 +491,7 @@ static struct route_map_rule_cmd route_match_ip_address_cmd = {
 
 /* `match ip address prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -523,9 +526,8 @@ static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
 
 /* `match tag TAG' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_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)
 {
        //  unsigned short *tag;
        //  struct rip_info *rinfo;
@@ -566,9 +568,9 @@ 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 enum route_map_match_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)
        //    {
@@ -660,9 +662,10 @@ static struct route_map_rule_cmd route_set_metric_cmd = {
 /* `set ip next-hop IP_ADDRESS' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_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;
@@ -715,9 +718,8 @@ static struct route_map_rule_cmd route_set_ip_nexthop_cmd = {
 /* `set tag TAG' */
 
 /* Set tag to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_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)
 {
        //  unsigned short *tag;
        //  struct rip_info *rinfo;
index 69694f26e4d91ae7fb6ea6daa35d3dd46c1832cd..d63676256b3b87944789b9b3027951b14ddeeea9 100644 (file)
 #include "isis_zebra.h"
 #include "isis_routemap.h"
 
-static enum route_map_match_result_t
-route_match_ip_address(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_address(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct access_list *alist;
 
@@ -80,7 +81,7 @@ static struct route_map_rule_cmd route_match_ip_address_cmd = {
 
 /* ------------------------------------------------------------*/
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -113,9 +114,10 @@ struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
 
 /* ------------------------------------------------------------*/
 
-static enum route_map_match_result_t
-route_match_ipv6_address(void *rule, const struct prefix *prefix,
-                        route_map_object_t type, void *object)
+static route_map_result_t route_match_ipv6_address(void *rule,
+                                                  const struct prefix *prefix,
+                                                  route_map_object_t type,
+                                                  void *object)
 {
        struct access_list *alist;
 
@@ -145,7 +147,7 @@ static struct route_map_rule_cmd route_match_ipv6_address_cmd = {
 
 /* ------------------------------------------------------------*/
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ipv6_address_prefix_list(void *rule, const struct prefix *prefix,
                                     route_map_object_t type, void *object)
 {
@@ -178,9 +180,10 @@ struct route_map_rule_cmd route_match_ipv6_address_prefix_list_cmd = {
 
 /* ------------------------------------------------------------*/
 
-static enum route_map_match_result_t
-route_set_metric(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_metric(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        uint32_t *metric;
        struct isis_ext_info *info;
index 5883307b9dbbbcb92a1a0b96f87ec9110800899c..9336154b1af5039b9c495c8e0ffaec78445cc6ac 100644 (file)
@@ -1531,14 +1531,14 @@ int route_map_delete_set(struct route_map_index *index, const char *set_name,
    (note, this includes the description for the "NEXT"
    and "GOTO" frobs now
 
-          |   Match   |   No Match   | No op
-          |-----------|--------------|-------
-    permit |   action  |     cont     | cont.
-          |           | default:deny | default:permit
-    -------------------+-----------------------
-          |   deny    |     cont     | cont.
-    deny   |           | default:deny | default:permit
-          |-----------|--------------|--------
+             Match   |   No Match
+                     |
+    permit    action  |     cont
+                     |
+    ------------------+---------------
+                     |
+    deny      deny    |     cont
+                     |
 
    action)
       -Apply Set statements, accept route
@@ -1572,12 +1572,12 @@ int route_map_delete_set(struct route_map_index *index, const char *set_name,
    We need to make sure our route-map processing matches the above
 */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_map_apply_match(struct route_map_rule_list *match_list,
                      const struct prefix *prefix, route_map_object_t type,
                      void *object)
 {
-       enum route_map_match_result_t ret = RMAP_NOMATCH;
+       route_map_result_t ret = RMAP_NOMATCH;
        struct route_map_rule *match;
 
 
@@ -1609,8 +1609,7 @@ route_map_result_t route_map_apply(struct route_map *map,
                                   route_map_object_t type, void *object)
 {
        static int recursion = 0;
-       enum route_map_match_result_t match_ret = RMAP_NOMATCH;
-       route_map_result_t ret = 0;
+       int ret = 0;
        struct route_map_index *index;
        struct route_map_rule *set;
 
@@ -1630,33 +1629,24 @@ route_map_result_t route_map_apply(struct route_map *map,
        for (index = map->head; index; index = index->next) {
                /* Apply this index. */
                index->applied++;
-               match_ret = route_map_apply_match(&index->match_list, prefix,
-                                                 type, object);
+               ret = route_map_apply_match(&index->match_list, prefix, type,
+                                           object);
 
                /* Now we apply the matrix from above */
-               if (match_ret == RMAP_NOMATCH || match_ret == RMAP_NOOP)
+               if (ret == RMAP_NOMATCH)
                        /* 'cont' from matrix - continue to next route-map
                         * sequence */
                        continue;
-               else if (match_ret == RMAP_MATCH) {
+               else if (ret == RMAP_MATCH) {
                        if (index->type == RMAP_PERMIT)
                        /* 'action' */
                        {
-                               /* Match succeeded, rmap is of type permit */
-                               ret = RMAP_PERMITMATCH;
-
                                /* permit+match must execute sets */
                                for (set = index->set_list.head; set;
                                     set = set->next)
-                                       /*
-                                        * We dont care abt the return value
-                                        * for set cmd.  Almost always,
-                                        * RMAP_OKAY is returned. Rarely
-                                        * do we see RMAP_ERROR
-                                        */
-                                       match_ret = (*set->cmd->func_apply)(
-                                                    set->value, prefix, type,
-                                                    object);
+                                       ret = (*set->cmd->func_apply)(
+                                               set->value, prefix, type,
+                                               object);
 
                                /* Call another route-map if available */
                                if (index->nextrm) {
@@ -1707,10 +1697,6 @@ route_map_result_t route_map_apply(struct route_map *map,
                        }
                }
        }
-
-       if (match_ret == RMAP_NOOP)
-               return RMAP_PERMITMATCH;
-
        /* Finally route-map does not match at all. */
        return RMAP_DENYMATCH;
 }
index d7acd7f3f7103657f0ebae21a68c00afd253969d..3781d227df8ae45e2557edfb712ec17dd9c46792 100644 (file)
@@ -34,36 +34,15 @@ DECLARE_MTYPE(ROUTE_MAP_NAME)
 DECLARE_MTYPE(ROUTE_MAP_RULE)
 DECLARE_MTYPE(ROUTE_MAP_COMPILED)
 
-/*
- * Route-map match or set result "Eg: match evpn vni xx"
- * route-map match cmd always returns match/nomatch/noop
- *    match--> found a match
- *    nomatch--> didnt find a match
- *    noop--> invalid
- * route-map set retuns okay/error
- *    okay --> set was successful
- *    error --> set was not successful
- */
-enum route_map_match_result_t {
-       /*
-        * route-map match cmd results
-        */
-       RMAP_MATCH,
-       RMAP_NOMATCH,
-       RMAP_NOOP,
-       /*
-        * route-map set cmd results
-        */
-       RMAP_OKAY,
-       RMAP_ERROR
-};
-
 /* Route map's type. */
 enum route_map_type { RMAP_PERMIT, RMAP_DENY, RMAP_ANY };
 
 typedef enum {
+       RMAP_MATCH,
        RMAP_DENYMATCH,
-       RMAP_PERMITMATCH
+       RMAP_NOMATCH,
+       RMAP_ERROR,
+       RMAP_OKAY
 } route_map_result_t;
 
 typedef enum {
@@ -112,10 +91,10 @@ struct route_map_rule_cmd {
        const char *str;
 
        /* Function for value set or match. */
-       enum route_map_match_result_t (*func_apply)(void *rule,
-                                                   const struct prefix *prefix,
-                                                   route_map_object_t type,
-                                                   void *object);
+       route_map_result_t (*func_apply)(void *rule,
+                                        const struct prefix *prefix,
+                                        route_map_object_t type,
+                                        void *object);
 
        /* Compile argument and return result as void *. */
        void *(*func_compile)(const char *);
index 4fbf70c9db94b34f7064f8cc7958f36ef5259149..946bbf8cc9423f8fb9a5309f2c79203b4f3f6a16 100644 (file)
@@ -1018,7 +1018,7 @@ void ospf6_asbr_redistribute_add(int type, ifindex_t ifindex,
                                 unsigned int nexthop_num,
                                 struct in6_addr *nexthop, route_tag_t tag)
 {
-       route_map_result_t ret;
+       int ret;
        struct ospf6_route troute;
        struct ospf6_external_info tinfo;
        struct ospf6_route *route, *match;
@@ -1355,7 +1355,7 @@ static void ospf6_redistribute_show_config(struct vty *vty)
 
 
 /* Routemap Functions */
-static enum route_map_match_result_t
+static route_map_result_t
 ospf6_routemap_rule_match_address_prefixlist(void *rule,
                                             const struct prefix *prefix,
                                             route_map_object_t type,
@@ -1395,7 +1395,7 @@ struct route_map_rule_cmd ospf6_routemap_rule_match_address_prefixlist_cmd = {
 /* `match interface IFNAME' */
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
+static route_map_result_t
 ospf6_routemap_rule_match_interface(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -1433,9 +1433,10 @@ struct route_map_rule_cmd ospf6_routemap_rule_match_interface_cmd = {
        ospf6_routemap_rule_match_interface_free};
 
 /* Match function for matching route tags */
-static enum route_map_match_result_t
-ospf6_routemap_rule_match_tag(void *rule, const struct prefix *p,
-                             route_map_object_t type, void *object)
+static route_map_result_t ospf6_routemap_rule_match_tag(void *rule,
+                                                       const struct prefix *p,
+                                                       route_map_object_t type,
+                                                       void *object)
 {
        route_tag_t *tag = rule;
        struct ospf6_route *route = object;
@@ -1452,7 +1453,7 @@ static struct route_map_rule_cmd ospf6_routemap_rule_match_tag_cmd = {
        route_map_rule_tag_free,
 };
 
-static enum route_map_match_result_t
+static route_map_result_t
 ospf6_routemap_rule_set_metric_type(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -1488,7 +1489,7 @@ struct route_map_rule_cmd ospf6_routemap_rule_set_metric_type_cmd = {
        ospf6_routemap_rule_set_metric_type_free,
 };
 
-static enum route_map_match_result_t
+static route_map_result_t
 ospf6_routemap_rule_set_metric(void *rule, const struct prefix *prefix,
                               route_map_object_t type, void *object)
 {
@@ -1523,7 +1524,7 @@ struct route_map_rule_cmd ospf6_routemap_rule_set_metric_cmd = {
        ospf6_routemap_rule_set_metric_free,
 };
 
-static enum route_map_match_result_t
+static route_map_result_t
 ospf6_routemap_rule_set_forwarding(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -1561,9 +1562,10 @@ struct route_map_rule_cmd ospf6_routemap_rule_set_forwarding_cmd = {
        ospf6_routemap_rule_set_forwarding_free,
 };
 
-static enum route_map_match_result_t
-ospf6_routemap_rule_set_tag(void *rule, const struct prefix *p,
-                           route_map_object_t type, void *object)
+static route_map_result_t ospf6_routemap_rule_set_tag(void *rule,
+                                                     const struct prefix *p,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        route_tag_t *tag = rule;
        struct ospf6_route *route = object;
index d725837fec5f46b197a309725507c70720b8f456..ab2d5ae5844cec5584445526bfb5a768baeb76f6 100644 (file)
@@ -126,9 +126,10 @@ static void ospf_route_map_event(const char *name)
 
 /* `match ip netxthop ' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_ip_nexthop(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_nexthop(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct access_list *alist;
        struct external_info *ei = object;
@@ -170,7 +171,7 @@ struct route_map_rule_cmd route_match_ip_nexthop_cmd = {
 
 /* `match ip next-hop prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_prefix_list(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -212,9 +213,10 @@ struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = {
 /* `match ip address IP_ACCESS_LIST' */
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_ip_address(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_address(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct access_list *alist;
        /* struct prefix_ipv4 match; */
@@ -250,7 +252,7 @@ struct route_map_rule_cmd route_match_ip_address_cmd = {
        route_match_ip_address_free};
 
 /* `match ip address prefix-list PREFIX_LIST' */
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -286,9 +288,10 @@ struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
 /* `match interface IFNAME' */
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_interface(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_interface(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct interface *ifp;
        struct external_info *ei;
@@ -324,9 +327,9 @@ struct route_map_rule_cmd route_match_interface_cmd = {
        route_match_interface_free};
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_tag(void *rule, const struct prefix *prefix,
-               route_map_object_t type, void *object)
+static route_map_result_t route_match_tag(void *rule,
+                                         const struct prefix *prefix,
+                                         route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct external_info *ei;
@@ -355,9 +358,10 @@ struct ospf_metric {
 
 /* `set metric METRIC' */
 /* Set metric to attribute. */
-static enum route_map_match_result_t
-route_set_metric(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_metric(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        struct ospf_metric *metric;
        struct external_info *ei;
@@ -435,9 +439,10 @@ struct route_map_rule_cmd route_set_metric_cmd = {
 
 /* `set metric-type TYPE' */
 /* Set metric-type to attribute. */
-static enum route_map_match_result_t
-route_set_metric_type(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_set_metric_type(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        uint32_t *metric_type;
        struct external_info *ei;
@@ -484,9 +489,8 @@ struct route_map_rule_cmd route_set_metric_type_cmd = {
        route_set_metric_type_free,
 };
 
-static enum route_map_match_result_t
-route_set_tag(void *rule, const struct prefix *prefix, route_map_object_t type,
-             void *object)
+static route_map_result_t route_set_tag(void *rule, const struct prefix *prefix,
+                                       route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct external_info *ei;
index 951402f47fa7b36530104e5f17037244d019563e..c178e367d390a032fcc37df14163950328d8ce69 100644 (file)
@@ -943,7 +943,7 @@ int ospf_redistribute_check(struct ospf *ospf, struct external_info *ei,
        /* apply route-map if needed */
        red = ospf_redist_lookup(ospf, type, instance);
        if (red && ROUTEMAP_NAME(red)) {
-               route_map_result_t ret;
+               int ret;
 
                ret = route_map_apply(ROUTEMAP(red), (struct prefix *)p,
                                      RMAP_OSPF, ei);
index 3c1c779bad6f0332cc10c2002f2987400a18c90f..3216b8f89fda9417eba84d1980cdc033d8e43378 100644 (file)
@@ -42,9 +42,10 @@ struct rip_metric_modifier {
 
 /* `match metric METRIC' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_metric(void *rule, const struct prefix *prefix,
-                  route_map_object_t type, void *object)
+static route_map_result_t route_match_metric(void *rule,
+                                            const struct prefix *prefix,
+                                            route_map_object_t type,
+                                            void *object)
 {
        uint32_t *metric;
        uint32_t check;
@@ -94,9 +95,10 @@ struct route_map_rule_cmd route_match_metric_cmd = {
 
 /* `match interface IFNAME' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_interface(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_interface(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct rip_info *rinfo;
        struct interface *ifp;
@@ -141,9 +143,10 @@ struct route_map_rule_cmd route_match_interface_cmd = {
 /* `match ip next-hop IP_ACCESS_LIST' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_ip_next_hop(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_next_hop(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct access_list *alist;
        struct rip_info *rinfo;
@@ -187,7 +190,7 @@ static struct route_map_rule_cmd route_match_ip_next_hop_cmd = {
 
 /* `match ip next-hop prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_prefix_list(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -232,9 +235,10 @@ static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_ip_address(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_address(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        struct access_list *alist;
 
@@ -270,7 +274,7 @@ static struct route_map_rule_cmd route_match_ip_address_cmd = {
 
 /* `match ip address prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -305,9 +309,8 @@ static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
 
 /* `match tag TAG' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_tag(void *rule, const struct prefix *p, route_map_object_t type,
-               void *object)
+static route_map_result_t route_match_tag(void *rule, const struct prefix *p,
+                                         route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct rip_info *rinfo;
@@ -336,9 +339,10 @@ static struct route_map_rule_cmd route_match_tag_cmd = {
 /* `set metric METRIC' */
 
 /* Set metric to attribute. */
-static enum route_map_match_result_t
-route_set_metric(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_metric(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        if (type == RMAP_RIP) {
                struct rip_metric_modifier *mod;
@@ -434,7 +438,7 @@ static struct route_map_rule_cmd route_set_metric_cmd = {
 /* `set ip next-hop IP_ADDRESS' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t route_set_ip_nexthop(void *rule,
+static route_map_result_t route_set_ip_nexthop(void *rule,
                                               const struct prefix *prefix,
                                               route_map_object_t type,
                                               void *object)
@@ -487,9 +491,8 @@ static struct route_map_rule_cmd route_set_ip_nexthop_cmd = {
 /* `set tag TAG' */
 
 /* Set tag to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_tag(void *rule, const struct prefix *prefix, route_map_object_t type,
-             void *object)
+static route_map_result_t route_set_tag(void *rule, const struct prefix *prefix,
+                                       route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct rip_info *rinfo;
index 671586cfd96f5d1691eaec9bd3328bfd06d4b2a5..0604e272cdfd6800b6318f3746841616de5c6c61 100644 (file)
@@ -38,9 +38,10 @@ struct rip_metric_modifier {
 
 /* `match metric METRIC' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_metric(void *rule, const struct prefix *prefix,
-                  route_map_object_t type, void *object)
+static route_map_result_t route_match_metric(void *rule,
+                                            const struct prefix *prefix,
+                                            route_map_object_t type,
+                                            void *object)
 {
        uint32_t *metric;
        struct ripng_info *rinfo;
@@ -85,9 +86,10 @@ static struct route_map_rule_cmd route_match_metric_cmd = {
 
 /* `match interface IFNAME' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_interface(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_interface(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct ripng_info *rinfo;
        struct interface *ifp;
@@ -127,10 +129,9 @@ static struct route_map_rule_cmd route_match_interface_cmd = {
 
 /* `match tag TAG' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t route_match_tag(void *rule,
-                                               const struct prefix *prefix,
-                                               route_map_object_t type,
-                                               void *object)
+static route_map_result_t route_match_tag(void *rule,
+                                         const struct prefix *prefix,
+                                         route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct ripng_info *rinfo;
@@ -158,9 +159,10 @@ static struct route_map_rule_cmd route_match_tag_cmd = {
 /* `set metric METRIC' */
 
 /* Set metric to attribute. */
-static enum route_map_match_result_t
-route_set_metric(void *rule, const struct prefix *prefix,
-                route_map_object_t type, void *object)
+static route_map_result_t route_set_metric(void *rule,
+                                          const struct prefix *prefix,
+                                          route_map_object_t type,
+                                          void *object)
 {
        if (type == RMAP_RIPNG) {
                struct rip_metric_modifier *mod;
@@ -254,9 +256,10 @@ static struct route_map_rule_cmd route_set_metric_cmd = {
 /* `set ipv6 next-hop local IP_ADDRESS' */
 
 /* Set nexthop to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_ipv6_nexthop_local(void *rule, const struct prefix *p,
-                            route_map_object_t type, void *object)
+static route_map_result_t route_set_ipv6_nexthop_local(void *rule,
+                                                      const struct prefix *p,
+                                                      route_map_object_t type,
+                                                      void *object)
 {
        struct in6_addr *address;
        struct ripng_info *rinfo;
@@ -307,9 +310,9 @@ static struct route_map_rule_cmd route_set_ipv6_nexthop_local_cmd = {
 /* `set tag TAG' */
 
 /* Set tag to object.  ojbect must be pointer to struct attr. */
-static enum route_map_match_result_t
-route_set_tag(void *rule, const struct prefix *prefix, route_map_object_t type,
-             void *object)
+static route_map_result_t route_set_tag(void *rule,
+                                       const struct prefix *prefix,
+                                       route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct ripng_info *rinfo;
index dfff76664c23803c949d5937619330f4c6970e07..b13f1170cd5defa3dc53c1d32b0b3d327b81961b 100644 (file)
@@ -574,7 +574,7 @@ int zebra_add_import_table_entry(struct route_node *rn, struct route_entry *re,
        struct route_entry *newre;
        struct route_entry *same;
        struct prefix p;
-       route_map_result_t ret = RMAP_PERMITMATCH;
+       route_map_result_t ret = RMAP_MATCH;
        afi_t afi;
 
        afi = family2afi(rn->p.family);
@@ -583,7 +583,7 @@ int zebra_add_import_table_entry(struct route_node *rn, struct route_entry *re,
                        afi, re->type, re->instance, &rn->p, re->ng.nexthop,
                        re->vrf_id, re->tag, rmap_name);
 
-       if (ret != RMAP_PERMITMATCH) {
+       if (ret != RMAP_MATCH) {
                UNSET_FLAG(re->flags, ZEBRA_FLAG_SELECTED);
                zebra_del_import_table_entry(rn, re);
                return 0;
index caab06d2ffca03e13993d61082b2bcf0ff4becab..f2a76d1c5297e8e1d8b3c77c016bfa3f50dc77e5 100644 (file)
@@ -338,7 +338,7 @@ static unsigned nexthop_active_check(struct route_node *rn,
                                     struct nexthop *nexthop)
 {
        struct interface *ifp;
-       route_map_result_t ret = RMAP_PERMITMATCH;
+       route_map_result_t ret = RMAP_MATCH;
        int family;
        char buf[SRCDEST2STR_BUFFER];
        const struct prefix *p, *src_p;
index a8389f2adf4bc36040396d307dfb9f6fa6e392a8..a63d015716030bfa308406daf06a78ac9aa9225b 100644 (file)
@@ -400,7 +400,7 @@ static int zebra_rnh_apply_nht_rmap(afi_t afi, struct zebra_vrf *zvrf,
 {
        int at_least_one = 0;
        struct nexthop *nexthop;
-       route_map_result_t ret;
+       int ret;
 
        if (prn && re) {
                for (nexthop = re->ng.nexthop; nexthop;
index 78804635fab0395b5238fc3eab5a461dba139530..dbfe695a00ac0acae7ee1953b22c94da1d5f9683 100644 (file)
@@ -136,9 +136,9 @@ static int zebra_route_match_delete(struct vty *vty, const char *command,
 /* 'match tag TAG'
  * Match function return 1 if match is success else return 0
  */
-static enum route_map_match_result_t
-route_match_tag(void *rule, const struct prefix *prefix,
-               route_map_object_t type, void *object)
+static route_map_result_t route_match_tag(void *rule,
+                                         const struct prefix *prefix,
+                                         route_map_object_t type, void *object)
 {
        route_tag_t *tag;
        struct nh_rmap_obj *nh_data;
@@ -162,9 +162,10 @@ static struct route_map_rule_cmd route_match_tag_cmd = {
 
 /* `match interface IFNAME' */
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_interface(void *rule, const struct prefix *prefix,
-                     route_map_object_t type, void *object)
+static route_map_result_t route_match_interface(void *rule,
+                                               const struct prefix *prefix,
+                                               route_map_object_t type,
+                                               void *object)
 {
        struct nh_rmap_obj *nh_data;
        char *ifname = rule;
@@ -1024,9 +1025,10 @@ DEFPY (show_ipv6_protocol_nht,
 /* `match ip next-hop IP_ACCESS_LIST' */
 
 /* Match function return 1 if match is success else return zero. */
-static enum route_map_match_result_t
-route_match_ip_next_hop(void *rule, const struct prefix *prefix,
-                       route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_next_hop(void *rule,
+                                                 const struct prefix *prefix,
+                                                 route_map_object_t type,
+                                                 void *object)
 {
        struct access_list *alist;
        struct nh_rmap_obj *nh_data;
@@ -1081,7 +1083,7 @@ static struct route_map_rule_cmd route_match_ip_next_hop_cmd = {
 
 /* `match ip next-hop prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_next_hop_prefix_list(void *rule, const struct prefix *prefix,
                                    route_map_object_t type, void *object)
 {
@@ -1137,9 +1139,10 @@ static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = {
 
 /* Match function should return 1 if match is success else return
    zero. */
-static enum route_map_match_result_t
-route_match_address(afi_t afi, void *rule, const struct prefix *prefix,
-                   route_map_object_t type, void *object)
+static route_map_result_t route_match_address(afi_t afi, void *rule,
+                                             const struct prefix *prefix,
+                                             route_map_object_t type,
+                                             void *object)
 {
        struct access_list *alist;
 
@@ -1155,16 +1158,19 @@ route_match_address(afi_t afi, void *rule, const struct prefix *prefix,
        return RMAP_NOMATCH;
 }
 
-static enum route_map_match_result_t
-route_match_ip_address(void *rule, const struct prefix *prefix,
-                      route_map_object_t type, void *object)
+static route_map_result_t route_match_ip_address(void *rule,
+                                                const struct prefix *prefix,
+                                                route_map_object_t type,
+                                                void *object)
 {
        return route_match_address(AFI_IP, rule, prefix, type, object);
 }
 
-static enum route_map_match_result_t
-route_match_ipv6_address(void *rule, const struct prefix *prefix,
-                        route_map_object_t type, void *object)
+static route_map_result_t route_match_ipv6_address(void *rule,
+                                                  const struct prefix *prefix,
+                                                  route_map_object_t type,
+                                                  void *object)
+
 {
        return route_match_address(AFI_IP6, rule, prefix, type, object);
 }
@@ -1194,7 +1200,7 @@ static struct route_map_rule_cmd route_match_ipv6_address_cmd = {
 
 /* `match ip address prefix-list PREFIX_LIST' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_address_prefix_list(void *rule, const struct prefix *prefix,
                        route_map_object_t type, void *object, afi_t afi)
 {
@@ -1212,7 +1218,7 @@ route_match_address_prefix_list(void *rule, const struct prefix *prefix,
        return RMAP_NOMATCH;
 }
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_address_prefix_list(void *rule, const struct prefix *prefix,
                                   route_map_object_t type, void *object)
 {
@@ -1235,7 +1241,7 @@ static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = {
        route_match_address_prefix_list_compile,
        route_match_address_prefix_list_free};
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ipv6_address_prefix_list(void *rule, const struct prefix *prefix,
                                        route_map_object_t type, void *object)
 {
@@ -1250,7 +1256,7 @@ static struct route_map_rule_cmd route_match_ipv6_address_prefix_list_cmd = {
 
 /* `match ip address prefix-len PREFIXLEN' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_address_prefix_len(void *rule, const struct prefix *prefix,
                               route_map_object_t type, void *object)
 {
@@ -1301,7 +1307,7 @@ static struct route_map_rule_cmd route_match_ipv6_address_prefix_len_cmd = {
 
 /* `match ip nexthop prefix-len PREFIXLEN' */
 
-static enum route_map_match_result_t
+static route_map_result_t
 route_match_ip_nexthop_prefix_len(void *rule, const struct prefix *prefix,
                                  route_map_object_t type, void *object)
 {
@@ -1341,9 +1347,10 @@ static struct route_map_rule_cmd route_match_ip_nexthop_prefix_len_cmd = {
 
 /* `match source-protocol PROTOCOL' */
 
-static enum route_map_match_result_t
-route_match_source_protocol(void *rule, const struct prefix *p,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_match_source_protocol(void *rule,
+                                                     const struct prefix *p,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        uint32_t *rib_type = (uint32_t *)rule;
        struct nh_rmap_obj *nh_data;
@@ -1382,9 +1389,10 @@ static struct route_map_rule_cmd route_match_source_protocol_cmd = {
        route_match_source_protocol_compile, route_match_source_protocol_free};
 
 /* `source-instance` */
-static enum route_map_match_result_t
-route_match_source_instance(void *rule, const struct prefix *p,
-                           route_map_object_t type, void *object)
+static route_map_result_t route_match_source_instance(void *rule,
+                                                     const struct prefix *p,
+                                                     route_map_object_t type,
+                                                     void *object)
 {
        uint8_t *instance = (uint8_t *)rule;
        struct nh_rmap_obj *nh_data;
@@ -1424,9 +1432,8 @@ static struct route_map_rule_cmd route_match_source_instance_cmd = {
 /* `set src A.B.C.D' */
 
 /* Set src. */
-static enum route_map_match_result_t
-route_set_src(void *rule, const struct prefix *prefix, route_map_object_t type,
-             void *object)
+static route_map_result_t route_set_src(void *rule, const struct prefix *prefix,
+                                       route_map_object_t type, void *object)
 {
        struct nh_rmap_obj *nh_data;
 
@@ -1692,7 +1699,7 @@ zebra_route_map_check(int family, int rib_type, uint8_t instance,
                      struct zebra_vrf *zvrf, route_tag_t tag)
 {
        struct route_map *rmap = NULL;
-       route_map_result_t ret = RMAP_PERMITMATCH;
+       route_map_result_t ret = RMAP_MATCH;
        struct nh_rmap_obj nh_obj;
 
        nh_obj.nexthop = nexthop;
@@ -1738,7 +1745,7 @@ zebra_import_table_route_map_check(int family, int re_type, uint8_t instance,
                                   const char *rmap_name)
 {
        struct route_map *rmap = NULL;
-       enum route_map_match_result_t ret = RMAP_DENYMATCH;
+       route_map_result_t ret = RMAP_DENYMATCH;
        struct nh_rmap_obj nh_obj;
 
        nh_obj.nexthop = nexthop;
@@ -1764,7 +1771,7 @@ route_map_result_t zebra_nht_route_map_check(afi_t afi, int client_proto,
                                             struct nexthop *nexthop)
 {
        struct route_map *rmap = NULL;
-       route_map_result_t ret = RMAP_PERMITMATCH;
+       route_map_result_t ret = RMAP_MATCH;
        struct nh_rmap_obj nh_obj;
 
        nh_obj.nexthop = nexthop;