]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: Create zebra_dplane.c and .h
authorMark Stapp <mjs@voltanet.io>
Wed, 12 Sep 2018 18:42:03 +0000 (14:42 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 19 Sep 2018 22:29:55 +0000 (18:29 -0400)
Add first sketchy 'dplane' files.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
15 files changed:
zebra/rt.h
zebra/rt_netlink.c
zebra/rt_socket.c
zebra/rule_netlink.c
zebra/rule_socket.c
zebra/subdir.am
zebra/zebra_dplane.c [new file with mode: 0644]
zebra/zebra_dplane.h [new file with mode: 0644]
zebra/zebra_mpls.c
zebra/zebra_mpls_netlink.c
zebra/zebra_mpls_null.c
zebra/zebra_mpls_openbsd.c
zebra/zebra_pbr.c
zebra/zebra_pbr.h
zebra/zebra_rib.c

index e40bae3a3e475f37a271d21f988ae2106a938984..90ee6f64180d4336d32c5a2e8702bd6116eb0df3 100644 (file)
 #include "zebra/rib.h"
 #include "zebra/zebra_ns.h"
 #include "zebra/zebra_mpls.h"
-
-/*
- * Philosophy Note:
- *
- * Flags being SET/UNSET do not belong in the South Bound
- * Interface.  This Setting belongs at the calling level
- * because we can and will have multiple different interfaces
- * and we will have potentially multiple different
- * modules/filters to call.  As such Setting/Unsetting
- * success failure should be handled by the caller.
- */
-
-
-enum dp_results {
-       DP_INSTALL_SUCCESS,
-       DP_INSTALL_FAILURE,
-       DP_DELETE_SUCCESS,
-       DP_DELETE_FAILURE,
-};
-
-enum dp_req_result {
-       DP_REQUEST_QUEUED,
-       DP_REQUEST_SUCCESS,
-       DP_REQUEST_FAILURE,
-};
+#include "zebra/zebra_dplane.h"
 
 /*
  * Install/delete the specified prefix p from the kernel
@@ -66,11 +42,11 @@ enum dp_req_result {
  * semantics so we will end up with a delete than
  * a re-add.
  */
-extern enum dp_req_result kernel_route_rib(struct route_node *rn,
-                                          const struct prefix *p,
-                                          const struct prefix *src_p,
-                                          struct route_entry *old,
-                                          struct route_entry *new);
+extern enum zebra_dplane_result kernel_route_rib(struct route_node *rn,
+                                                const struct prefix *p,
+                                                const struct prefix *src_p,
+                                                struct route_entry *old,
+                                                struct route_entry *new);
 
 /*
  * So route install/failure may not be immediately known
@@ -80,7 +56,7 @@ extern enum dp_req_result kernel_route_rib(struct route_node *rn,
 extern void kernel_route_rib_pass_fail(struct route_node *rn,
                                       const struct prefix *p,
                                       struct route_entry *re,
-                                      enum dp_results res);
+                                      enum zebra_dplane_status res);
 
 extern int kernel_address_add_ipv4(struct interface *, struct connected *);
 extern int kernel_address_delete_ipv4(struct interface *, struct connected *);
@@ -91,9 +67,9 @@ extern int kernel_neigh_update(int cmd, int ifindex, uint32_t addr, char *lla,
 extern int kernel_interface_set_master(struct interface *master,
                                       struct interface *slave);
 
-extern enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp);
-extern enum dp_req_result kernel_upd_lsp(zebra_lsp_t *lsp);
-extern enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp);
+extern enum zebra_dplane_result kernel_add_lsp(zebra_lsp_t *lsp);
+extern enum zebra_dplane_result kernel_upd_lsp(zebra_lsp_t *lsp);
+extern enum zebra_dplane_result kernel_del_lsp(zebra_lsp_t *lsp);
 
 /*
  * Add the ability to pass back up the lsp install/delete
@@ -104,7 +80,7 @@ extern enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp);
  * the install/failure to set/unset flags and to notify
  * as needed.
  */
-extern void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum dp_results res);
+extern void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum zebra_dplane_status res);
 
 extern int mpls_kernel_init(void);
 
index b600a7db50b6d1de1f6069e9eafa31686b789dae..fe42ab5be601376857fe4e6c807eddd278f9fabc 100644 (file)
@@ -1818,11 +1818,11 @@ int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
        return suc;
 }
 
-enum dp_req_result kernel_route_rib(struct route_node *rn,
-                                   const struct prefix *p,
-                                   const struct prefix *src_p,
-                                   struct route_entry *old,
-                                   struct route_entry *new)
+enum zebra_dplane_result kernel_route_rib(struct route_node *rn,
+                                         const struct prefix *p,
+                                         const struct prefix *src_p,
+                                         struct route_entry *old,
+                                         struct route_entry *new)
 {
        int ret = 0;
 
@@ -1852,20 +1852,20 @@ enum dp_req_result kernel_route_rib(struct route_node *rn,
                                                      new, 0);
                }
                kernel_route_rib_pass_fail(rn, p, new,
-                                          (!ret) ? DP_INSTALL_SUCCESS
-                                                 : DP_INSTALL_FAILURE);
-               return DP_REQUEST_SUCCESS;
+                                          (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                                 : ZEBRA_DPLANE_INSTALL_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_SUCCESS;
        }
 
        if (old) {
                ret = netlink_route_multipath(RTM_DELROUTE, p, src_p, old, 0);
 
                kernel_route_rib_pass_fail(rn, p, old,
-                                          (!ret) ? DP_DELETE_SUCCESS
-                                                 : DP_DELETE_FAILURE);
+                                          (!ret) ? ZEBRA_DPLANE_DELETE_SUCCESS
+                                                 : ZEBRA_DPLANE_DELETE_FAILURE);
        }
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 int kernel_neigh_update(int add, int ifindex, uint32_t addr, char *lla,
index a6de84d56fd97644c60eda1251cce9f18e35977c..333b6ce95e95df69917623671d0675ff07241ed1 100644 (file)
@@ -391,18 +391,18 @@ static int kernel_rtm(int cmd, const struct prefix *p, struct route_entry *re)
        return 0;
 }
 
-enum dp_req_result kernel_route_rib(struct route_node *rn,
-                                   const struct prefix *p,
-                                   const struct prefix *src_p,
-                                   struct route_entry *old,
-                                   struct route_entry *new)
+enum zebra_dplane_result kernel_route_rib(struct route_node *rn,
+                                         const struct prefix *p,
+                                         const struct prefix *src_p,
+                                         struct route_entry *old,
+                                         struct route_entry *new)
 {
        int route = 0;
 
        if (src_p && src_p->prefixlen) {
                flog_warn(EC_ZEBRA_UNSUPPORTED_V6_SRCDEST,
                          "%s: IPv6 sourcedest routes unsupported!", __func__);
-               return DP_REQUEST_FAILURE;
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        frr_elevate_privs(&zserv_privs) {
@@ -418,16 +418,16 @@ enum dp_req_result kernel_route_rib(struct route_node *rn,
        if (new) {
                kernel_route_rib_pass_fail(
                        rn, p, new,
-                       (!route) ? DP_INSTALL_SUCCESS
-                                : DP_INSTALL_FAILURE);
+                       (!route) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                : ZEBRA_DPLANE_INSTALL_FAILURE);
        } else {
                kernel_route_rib_pass_fail(rn, p, old,
                                           (!route)
-                                                  ? DP_DELETE_SUCCESS
-                                                  : DP_DELETE_FAILURE);
+                                                  ? ZEBRA_DPLANE_DELETE_SUCCESS
+                                                  : ZEBRA_DPLANE_DELETE_FAILURE);
        }
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 int kernel_neigh_update(int add, int ifindex, uint32_t addr, char *lla,
index 518d81dd6ebb29367c1eb2683d4493c82da52502..7686a0ac32bc6d22a2bf8c1b013dce83ffbd86b9 100644 (file)
@@ -143,31 +143,31 @@ static int netlink_rule_update(int cmd, struct zebra_pbr_rule *rule)
  * goes in the rule to denote relative ordering; it may or may not be the
  * same as the rule's user-defined sequence number.
  */
-enum dp_req_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule)
+enum zebra_dplane_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule)
 {
        int ret = 0;
 
        ret = netlink_rule_update(RTM_NEWRULE, rule);
        kernel_pbr_rule_add_del_status(rule,
-                                      (!ret) ? DP_INSTALL_SUCCESS
-                                             : DP_INSTALL_FAILURE);
+                                      (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                             : ZEBRA_DPLANE_INSTALL_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 /*
  * Uninstall specified rule for a specific interface.
  */
-enum dp_req_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule)
+enum zebra_dplane_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule)
 {
        int ret = 0;
 
        ret = netlink_rule_update(RTM_DELRULE, rule);
        kernel_pbr_rule_add_del_status(rule,
-                                      (!ret) ? DP_DELETE_SUCCESS
-                                             : DP_DELETE_FAILURE);
+                                      (!ret) ? ZEBRA_DPLANE_DELETE_SUCCESS
+                                             : ZEBRA_DPLANE_DELETE_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 /*
index 11d9e00ebb683c16f5ca359e583e5d485259fbf1..c5660abf3a6f5b8c86b38b79c93575a5bf15ae30 100644 (file)
 #include "zebra/zebra_pbr.h"
 #include "zebra/zebra_errors.h"
 
-enum dp_req_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule)
+enum zebra_dplane_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule)
 {
        flog_err(EC_LIB_UNAVAILABLE, "%s not Implemented for this platform",
                 __PRETTY_FUNCTION__);
-       return DP_REQUEST_FAILURE;
+       return ZEBRA_DPLANE_REQUEST_FAILURE;
 }
 
-enum dp_req_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule)
+enum zebra_dplane_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule)
 {
        flog_err(EC_LIB_UNAVAILABLE, "%s not Implemented for this platform",
                 __PRETTY_FUNCTION__);
-       return DP_REQUEST_FAILURE;
+       return ZEBRA_DPLANE_REQUEST_FAILURE;
 }
 
 #endif
index a87fcec41f0eda8200fd518d2fb63bc9de51a1c8..1d76ff65ca4729d47ad0c76dec7a4b9403e4ffed 100644 (file)
@@ -66,6 +66,7 @@ zebra_zebra_SOURCES = \
        zebra/rule_socket.c \
        zebra/zebra_l2.c \
        zebra/zebra_memory.c \
+       zebra/zebra_dplane.c \
        zebra/zebra_mpls.c \
        zebra/zebra_mpls_netlink.c \
        zebra/zebra_mpls_openbsd.c \
@@ -115,6 +116,7 @@ noinst_HEADERS += \
        zebra/rule_netlink.h \
        zebra/zebra_fpm_private.h \
        zebra/zebra_l2.h \
+       zebra/zebra_dplane.h \
        zebra/zebra_memory.h \
        zebra/zebra_mpls.h \
        zebra/zebra_mroute.h \
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
new file mode 100644 (file)
index 0000000..c0e4939
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Zebra dataplane layer.
+ * Copyright (c) 2018 Volta Networks, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <zebra.h>
+#include "zebra_dplane.h"
diff --git a/zebra/zebra_dplane.h b/zebra/zebra_dplane.h
new file mode 100644 (file)
index 0000000..27854e7
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Zebra dataplane layer api interfaces.
+ * Copyright (c) 2018 Volta Networks, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _ZEBRA_DPLANE_H
+#define _ZEBRA_DPLANE_H 1
+
+#include "zebra.h"
+#include "zserv.h"
+#include "prefix.h"
+#include "nexthop.h"
+#include "nexthop_group.h"
+
+
+/*
+ * API between the zebra dataplane system and the main zebra processing
+ * context.
+ */
+
+/*
+ * Enqueue a route install or update for the dataplane.
+ */
+
+/*
+ * Enqueue a route removal for the dataplane.
+ */
+
+/*
+ * Result codes used when returning status back to the main zebra context.
+ */
+
+/*
+ * Philosophy Note:
+ *
+ * Flags being SET/UNSET do not belong in the South Bound
+ * Interface.  This Setting belongs at the calling level
+ * because we can and will have multiple different interfaces
+ * and we will have potentially multiple different
+ * modules/filters to call.  As such Setting/Unsetting
+ * success failure should be handled by the caller.
+ */
+enum zebra_dplane_status {
+       ZEBRA_DPLANE_STATUS_NONE = 0,
+       ZEBRA_DPLANE_INSTALL_SUCCESS,
+       ZEBRA_DPLANE_INSTALL_FAILURE,
+       ZEBRA_DPLANE_DELETE_SUCCESS,
+       ZEBRA_DPLANE_DELETE_FAILURE,
+
+};
+
+enum zebra_dplane_result {
+       ZEBRA_DPLANE_REQUEST_QUEUED,
+       ZEBRA_DPLANE_REQUEST_SUCCESS,
+       ZEBRA_DPLANE_REQUEST_FAILURE,
+};
+
+#endif /* _ZEBRA_DPLANE_H */
index c19aeb626068a4dcb5e7029f1864eb6a6bfd6e1a..0d1ccdc5aa0c263ad899164b3616c7fef9fc9347 100644 (file)
@@ -917,14 +917,14 @@ static wq_item_status lsp_process(struct work_queue *wq, void *data)
 
                        UNSET_FLAG(lsp->flags, LSP_FLAG_CHANGED);
                        switch (kernel_add_lsp(lsp)) {
-                       case DP_REQUEST_QUEUED:
+                       case ZEBRA_DPLANE_REQUEST_QUEUED:
                                flog_err(
                                        EC_ZEBRA_DP_INVALID_RC,
                                        "No current DataPlane interfaces can return this, please fix");
                                break;
-                       case DP_REQUEST_FAILURE:
+                       case ZEBRA_DPLANE_REQUEST_FAILURE:
                                break;
-                       case DP_REQUEST_SUCCESS:
+                       case ZEBRA_DPLANE_REQUEST_SUCCESS:
                                zvrf->lsp_installs++;
                                break;
                        }
@@ -934,14 +934,14 @@ static wq_item_status lsp_process(struct work_queue *wq, void *data)
                if (!newbest) {
 
                        switch (kernel_del_lsp(lsp)) {
-                       case DP_REQUEST_QUEUED:
+                       case ZEBRA_DPLANE_REQUEST_QUEUED:
                                flog_err(
                                        EC_ZEBRA_DP_INVALID_RC,
                                        "No current DataPlane interfaces can return this, please fix");
                                break;
-                       case DP_REQUEST_FAILURE:
+                       case ZEBRA_DPLANE_REQUEST_FAILURE:
                                break;
-                       case DP_REQUEST_SUCCESS:
+                       case ZEBRA_DPLANE_REQUEST_SUCCESS:
                                zvrf->lsp_removals++;
                                break;
                        }
@@ -974,14 +974,14 @@ static wq_item_status lsp_process(struct work_queue *wq, void *data)
                        }
 
                        switch (kernel_upd_lsp(lsp)) {
-                       case DP_REQUEST_QUEUED:
+                       case ZEBRA_DPLANE_REQUEST_QUEUED:
                                flog_err(
                                        EC_ZEBRA_DP_INVALID_RC,
                                        "No current DataPlane interfaces can return this, please fix");
                                break;
-                       case DP_REQUEST_FAILURE:
+                       case ZEBRA_DPLANE_REQUEST_FAILURE:
                                break;
-                       case DP_REQUEST_SUCCESS:
+                       case ZEBRA_DPLANE_REQUEST_SUCCESS:
                                zvrf->lsp_installs++;
                                break;
                        }
@@ -1716,7 +1716,7 @@ static int mpls_processq_init(struct zebra_t *zebra)
 
 /* Public functions */
 
-void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum dp_results res)
+void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum zebra_dplane_status res)
 {
        struct nexthop *nexthop;
        zebra_nhlfe_t *nhlfe;
@@ -1725,13 +1725,13 @@ void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum dp_results res)
                return;
 
        switch (res) {
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                UNSET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
                clear_nhlfe_installed(lsp);
                flog_warn(EC_ZEBRA_LSP_INSTALL_FAILURE,
                          "LSP Install Failure: %u", lsp->ile.in_label);
                break;
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                SET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
                for (nhlfe = lsp->nhlfe_list; nhlfe; nhlfe = nhlfe->next) {
                        nexthop = nhlfe->nexthop;
@@ -1742,14 +1742,16 @@ void kernel_lsp_pass_fail(zebra_lsp_t *lsp, enum dp_results res)
                        SET_FLAG(nexthop->flags, NEXTHOP_FLAG_FIB);
                }
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                UNSET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
                clear_nhlfe_installed(lsp);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                flog_warn(EC_ZEBRA_LSP_DELETE_FAILURE,
                          "LSP Deletion Failure: %u", lsp->ile.in_label);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
index 245a7717845576692800f7c094cb3fa068b270c1..c4ab316d0b9ce388655c2642b9937a1a0531f8bf 100644 (file)
 /*
  * Install Label Forwarding entry into the kernel.
  */
-enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_add_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp || !lsp->best_nhlfe) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_INSTALL_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = netlink_mpls_multipath(RTM_NEWROUTE, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_INSTALL_SUCCESS
-                                   : DP_INSTALL_FAILURE);
+                            (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                   : ZEBRA_DPLANE_INSTALL_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 /*
@@ -58,48 +58,48 @@ enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp)
  * through the metric field (before kernel-MPLS). This shouldn't be an issue
  * any longer, so REPLACE can be reintroduced.
  */
-enum dp_req_result kernel_upd_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_upd_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp || !lsp->best_nhlfe) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_INSTALL_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = netlink_mpls_multipath(RTM_NEWROUTE, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_INSTALL_SUCCESS
-                                   : DP_INSTALL_FAILURE);
+                            (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                   : ZEBRA_DPLANE_INSTALL_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 /*
  * Delete Label Forwarding entry from the kernel.
  */
-enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_del_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_DELETE_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        if (!CHECK_FLAG(lsp->flags, LSP_FLAG_INSTALLED)) {
-               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_DELETE_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = netlink_mpls_multipath(RTM_DELROUTE, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_DELETE_SUCCESS
-                                   : DP_DELETE_FAILURE);
+                            (!ret) ? ZEBRA_DPLANE_DELETE_SUCCESS
+                                   : ZEBRA_DPLANE_DELETE_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 int mpls_kernel_init(void)
index d1371d3343b9fed90a0e9f1c82b0368b24eae715..02ec506d84604f641ecb1b86dbc5777fda341c17 100644 (file)
 
 #if !defined(HAVE_NETLINK) && !defined(OPEN_BSD)
 
-enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_add_lsp(zebra_lsp_t *lsp)
 {
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
-enum dp_req_result kernel_upd_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_upd_lsp(zebra_lsp_t *lsp)
 {
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
-enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_del_lsp(zebra_lsp_t *lsp)
 {
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 int mpls_kernel_init(void)
index 71679f26d6be3246ab022cdefdfa333d664fb8c6..60f944b8448f295de7247c7e3a06da1db09a9f2f 100644 (file)
@@ -285,62 +285,62 @@ static int kernel_lsp_cmd(int action, zebra_lsp_t *lsp)
        return (0);
 }
 
-enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_add_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp || !lsp->best_nhlfe) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_INSTALL_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = kernel_lsp_cmd(RTM_ADD, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_INSTALL_SUCCESS
-                                   : DP_INSTALL_FAILURE);
+                            (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                   : ZEBRA_DPLANE_INSTALL_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
-enum dp_req_result kernel_upd_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_upd_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp || !lsp->best_nhlfe) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_INSTALL_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = kernel_lsp_cmd(RTM_CHANGE, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_INSTALL_SUCCESS
-                                   : DP_INSTALL_FAILURE);
-       return DP_REQUEST_SUCCESS;
+                            (!ret) ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                   : ZEBRA_DPLANE_INSTALL_FAILURE);
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
-enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp)
+enum zebra_dplane_result kernel_del_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
        if (!lsp) { // unexpected
-               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_DELETE_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        if (!CHECK_FLAG(lsp->flags, LSP_FLAG_INSTALLED)) {
-               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
-               return DP_REQUEST_FAILURE;
+               kernel_lsp_pass_fail(lsp, ZEBRA_DPLANE_DELETE_FAILURE);
+               return ZEBRA_DPLANE_REQUEST_FAILURE;
        }
 
        ret = kernel_lsp_cmd(RTM_DELETE, lsp);
 
        kernel_lsp_pass_fail(lsp,
-                            (!ret) ? DP_DELETE_SUCCESS
-                                   : DP_DELETE_FAILURE);
+                            (!ret) ? ZEBRA_DPLANE_DELETE_SUCCESS
+                                   : ZEBRA_DPLANE_DELETE_FAILURE);
 
-       return DP_REQUEST_SUCCESS;
+       return ZEBRA_DPLANE_REQUEST_SUCCESS;
 }
 
 static int kmpw_install(struct zebra_pw *pw)
index 275e045d43bb454a7a5d0b9c15e881d7f9cd3891..40f97765da8c84dfa5fff208447a4a854a5b2c2f 100644 (file)
@@ -565,8 +565,8 @@ void zebra_pbr_create_ipset(struct zebra_ns *zns,
        ret = hook_call(zebra_pbr_ipset_wrap_script_update,
                  zns, 1, ipset);
        kernel_pbr_ipset_add_del_status(ipset,
-                                       ret ? DP_INSTALL_SUCCESS
-                                       : DP_INSTALL_FAILURE);
+                                       ret ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                       : ZEBRA_DPLANE_INSTALL_FAILURE);
 }
 
 void zebra_pbr_destroy_ipset(struct zebra_ns *zns,
@@ -650,8 +650,8 @@ void zebra_pbr_add_ipset_entry(struct zebra_ns *zns,
        ret = hook_call(zebra_pbr_ipset_entry_wrap_script_update,
                  zns, 1, ipset);
        kernel_pbr_ipset_entry_add_del_status(ipset,
-                                       ret ? DP_INSTALL_SUCCESS
-                                       : DP_INSTALL_FAILURE);
+                                       ret ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                       : ZEBRA_DPLANE_INSTALL_FAILURE);
 }
 
 void zebra_pbr_del_ipset_entry(struct zebra_ns *zns,
@@ -693,8 +693,8 @@ void zebra_pbr_add_iptable(struct zebra_ns *zns,
                       pbr_iptable_alloc_intern);
        ret = hook_call(zebra_pbr_iptable_wrap_script_update, zns, 1, iptable);
        kernel_pbr_iptable_add_del_status(iptable,
-                                         ret ? DP_INSTALL_SUCCESS
-                                         : DP_INSTALL_FAILURE);
+                                         ret ? ZEBRA_DPLANE_INSTALL_SUCCESS
+                                         : ZEBRA_DPLANE_INSTALL_FAILURE);
 }
 
 void zebra_pbr_del_iptable(struct zebra_ns *zns,
@@ -725,21 +725,23 @@ void zebra_pbr_del_iptable(struct zebra_ns *zns,
  * Handle success or failure of rule (un)install in the kernel.
  */
 void kernel_pbr_rule_add_del_status(struct zebra_pbr_rule *rule,
-                                   enum dp_results res)
+                                   enum zebra_dplane_status res)
 {
        switch (res) {
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                zsend_rule_notify_owner(rule, ZAPI_RULE_INSTALLED);
                break;
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                zsend_rule_notify_owner(rule, ZAPI_RULE_FAIL_INSTALL);
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                zsend_rule_notify_owner(rule, ZAPI_RULE_REMOVED);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                zsend_rule_notify_owner(rule, ZAPI_RULE_FAIL_REMOVE);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
@@ -747,21 +749,23 @@ void kernel_pbr_rule_add_del_status(struct zebra_pbr_rule *rule,
  * Handle success or failure of ipset (un)install in the kernel.
  */
 void kernel_pbr_ipset_add_del_status(struct zebra_pbr_ipset *ipset,
-                                   enum dp_results res)
+                                   enum zebra_dplane_status res)
 {
        switch (res) {
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                zsend_ipset_notify_owner(ipset, ZAPI_IPSET_INSTALLED);
                break;
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                zsend_ipset_notify_owner(ipset, ZAPI_IPSET_FAIL_INSTALL);
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                zsend_ipset_notify_owner(ipset, ZAPI_IPSET_REMOVED);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                zsend_ipset_notify_owner(ipset, ZAPI_IPSET_FAIL_REMOVE);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
@@ -770,25 +774,27 @@ void kernel_pbr_ipset_add_del_status(struct zebra_pbr_ipset *ipset,
  */
 void kernel_pbr_ipset_entry_add_del_status(
                        struct zebra_pbr_ipset_entry *ipset,
-                       enum dp_results res)
+                       enum zebra_dplane_status res)
 {
        switch (res) {
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                zsend_ipset_entry_notify_owner(ipset,
                                               ZAPI_IPSET_ENTRY_INSTALLED);
                break;
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                zsend_ipset_entry_notify_owner(ipset,
                                               ZAPI_IPSET_ENTRY_FAIL_INSTALL);
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                zsend_ipset_entry_notify_owner(ipset,
                                               ZAPI_IPSET_ENTRY_REMOVED);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                zsend_ipset_entry_notify_owner(ipset,
                                               ZAPI_IPSET_ENTRY_FAIL_REMOVE);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
@@ -796,23 +802,25 @@ void kernel_pbr_ipset_entry_add_del_status(
  * Handle success or failure of ipset (un)install in the kernel.
  */
 void kernel_pbr_iptable_add_del_status(struct zebra_pbr_iptable *iptable,
-                                      enum dp_results res)
+                                      enum zebra_dplane_status res)
 {
        switch (res) {
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                zsend_iptable_notify_owner(iptable, ZAPI_IPTABLE_INSTALLED);
                break;
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                zsend_iptable_notify_owner(iptable, ZAPI_IPTABLE_FAIL_INSTALL);
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                zsend_iptable_notify_owner(iptable,
                                           ZAPI_IPTABLE_REMOVED);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                zsend_iptable_notify_owner(iptable,
                                           ZAPI_IPTABLE_FAIL_REMOVE);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
index 0db33d1f8c1981fc3f05e6056bc93aa60c59cdcf..3311af4d2644eb7171b51b993f852835fc2119b7 100644 (file)
@@ -175,37 +175,36 @@ void zebra_pbr_del_iptable(struct zebra_ns *zns,
  * forwarding plane may not coincide, hence the API requires a separate
  * rule priority - maps to preference/FRA_PRIORITY on Linux.
  */
-extern enum dp_req_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule);
+extern enum zebra_dplane_result kernel_add_pbr_rule(struct zebra_pbr_rule *rule);
 
 /*
  * Uninstall specified rule for a specific interface.
  */
-extern enum dp_req_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule);
+extern enum zebra_dplane_result kernel_del_pbr_rule(struct zebra_pbr_rule *rule);
 
 /*
  * Get to know existing PBR rules in the kernel - typically called at startup.
  */
 extern void kernel_read_pbr_rules(struct zebra_ns *zns);
 
-enum dp_results;
 /*
  * Handle success or failure of rule (un)install in the kernel.
  */
 extern void kernel_pbr_rule_add_del_status(struct zebra_pbr_rule *rule,
-                                          enum dp_results res);
+                                          enum zebra_dplane_status res);
 
 /*
  * Handle success or failure of ipset kinds (un)install in the kernel.
  */
 extern void kernel_pbr_ipset_add_del_status(struct zebra_pbr_ipset *ipset,
-                                          enum dp_results res);
+                                          enum zebra_dplane_status res);
 
 extern void kernel_pbr_ipset_entry_add_del_status(
                                struct zebra_pbr_ipset_entry *ipset,
-                               enum dp_results res);
+                               enum zebra_dplane_status res);
 
 extern void kernel_pbr_iptable_add_del_status(struct zebra_pbr_iptable *iptable,
-                             enum dp_results res);
+                             enum zebra_dplane_status res);
 
 /*
  * Handle rule delete notification from kernel.
index 5853bdd4658737f2b38172a590d28c7cf9601c05..0e9693f0534acde67e2a8056597884de93abe677 100644 (file)
@@ -1060,7 +1060,7 @@ int zebra_rib_labeled_unicast(struct route_entry *re)
 
 void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
                                struct route_entry *re,
-                               enum dp_results res)
+                               enum zebra_dplane_status res)
 {
        struct nexthop *nexthop;
        char buf[PREFIX_STRLEN];
@@ -1069,7 +1069,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
        dest = rib_dest_from_rnode(rn);
 
        switch (res) {
-       case DP_INSTALL_SUCCESS:
+       case ZEBRA_DPLANE_INSTALL_SUCCESS:
                dest->selected_fib = re;
                for (ALL_NEXTHOPS(re->ng, nexthop)) {
                        if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_RECURSIVE))
@@ -1082,7 +1082,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
                }
                zsend_route_notify_owner(re, p, ZAPI_ROUTE_INSTALLED);
                break;
-       case DP_INSTALL_FAILURE:
+       case ZEBRA_DPLANE_INSTALL_FAILURE:
                /*
                 * I am not sure this is the right thing to do here
                 * but the code always set selected_fib before
@@ -1095,7 +1095,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
                         "%u:%s: Route install failed", re->vrf_id,
                         prefix2str(p, buf, sizeof(buf)));
                break;
-       case DP_DELETE_SUCCESS:
+       case ZEBRA_DPLANE_DELETE_SUCCESS:
                /*
                 * The case where selected_fib is not re is
                 * when we have received a system route
@@ -1110,7 +1110,7 @@ void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
 
                zsend_route_notify_owner(re, p, ZAPI_ROUTE_REMOVED);
                break;
-       case DP_DELETE_FAILURE:
+       case ZEBRA_DPLANE_DELETE_FAILURE:
                /*
                 * Should we set this to NULL if the
                 * delete fails?
@@ -1122,6 +1122,8 @@ void kernel_route_rib_pass_fail(struct route_node *rn, const struct prefix *p,
 
                zsend_route_notify_owner(re, p, ZAPI_ROUTE_REMOVE_FAIL);
                break;
+       case ZEBRA_DPLANE_STATUS_NONE:
+               break;
        }
 }
 
@@ -1172,17 +1174,17 @@ void rib_install_kernel(struct route_node *rn, struct route_entry *re,
         */
        hook_call(rib_update, rn, "installing in kernel");
        switch (kernel_route_rib(rn, p, src_p, old, re)) {
-       case DP_REQUEST_QUEUED:
+       case ZEBRA_DPLANE_REQUEST_QUEUED:
                flog_err(
                        EC_ZEBRA_DP_INVALID_RC,
                        "No current known DataPlane interfaces can return this, please fix");
                break;
-       case DP_REQUEST_FAILURE:
+       case ZEBRA_DPLANE_REQUEST_FAILURE:
                flog_err(
                        EC_ZEBRA_DP_INSTALL_FAIL,
                        "No current known Rib Install Failure cases, please fix");
                break;
-       case DP_REQUEST_SUCCESS:
+       case ZEBRA_DPLANE_REQUEST_SUCCESS:
                zvrf->installs++;
                break;
        }
@@ -1212,17 +1214,17 @@ void rib_uninstall_kernel(struct route_node *rn, struct route_entry *re)
         */
        hook_call(rib_update, rn, "uninstalling from kernel");
        switch (kernel_route_rib(rn, p, src_p, re, NULL)) {
-       case DP_REQUEST_QUEUED:
+       case ZEBRA_DPLANE_REQUEST_QUEUED:
                flog_err(
                        EC_ZEBRA_DP_INVALID_RC,
                        "No current known DataPlane interfaces can return this, please fix");
                break;
-       case DP_REQUEST_FAILURE:
+       case ZEBRA_DPLANE_REQUEST_FAILURE:
                flog_err(
                        EC_ZEBRA_DP_INSTALL_FAIL,
                        "No current known RIB Install Failure cases, please fix");
                break;
-       case DP_REQUEST_SUCCESS:
+       case ZEBRA_DPLANE_REQUEST_SUCCESS:
                if (zvrf)
                        zvrf->removals++;
                break;