]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_mpls_openbsd.c
Merge pull request #2788 from ton31337/fix/print_ipv6_route_if_afi
[mirror_frr.git] / zebra / zebra_mpls_openbsd.c
index 33f0d49d4d5babd9a299f318675295b7158a1e8d..412fe7d3dd3f440b4cc9667b3aefa1f523838efe 100644 (file)
@@ -35,7 +35,7 @@
 extern struct zebra_privs_t zserv_privs;
 
 struct {
-       u_int32_t rtseq;
+       uint32_t rtseq;
        int fd;
        int ioctl_fd;
 } kr_state;
@@ -279,65 +279,68 @@ static int kernel_lsp_cmd(int action, zebra_lsp_t *lsp)
                        default:
                                break;
                        }
-                       if (action == RTM_ADD || action == RTM_CHANGE) {
-                               SET_FLAG(nhlfe->flags, NHLFE_FLAG_INSTALLED);
-                               SET_FLAG(nexthop->flags, NEXTHOP_FLAG_FIB);
-                       } else {
-                               UNSET_FLAG(nhlfe->flags, NHLFE_FLAG_INSTALLED);
-                               UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_FIB);
-                       }
                }
        }
 
        return (0);
 }
 
-int kernel_add_lsp(zebra_lsp_t *lsp)
+enum dp_req_result kernel_add_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
-       if (!lsp || !lsp->best_nhlfe) // unexpected
-               return -1;
+       if (!lsp || !lsp->best_nhlfe) { // unexpected
+               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
+               return DP_REQUEST_FAILURE;
+       }
 
-       UNSET_FLAG(lsp->flags, LSP_FLAG_CHANGED);
        ret = kernel_lsp_cmd(RTM_ADD, lsp);
-       if (!ret)
-               SET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
 
-       return ret;
+       kernel_lsp_pass_fail(lsp,
+                            (!ret) ? DP_INSTALL_SUCCESS
+                                   : DP_INSTALL_FAILURE);
+
+       return DP_REQUEST_SUCCESS;
 }
 
-int kernel_upd_lsp(zebra_lsp_t *lsp)
+enum dp_req_result kernel_upd_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
-       if (!lsp || !lsp->best_nhlfe) // unexpected
-               return -1;
+       if (!lsp || !lsp->best_nhlfe) { // unexpected
+               kernel_lsp_pass_fail(lsp, DP_INSTALL_FAILURE);
+               return DP_REQUEST_FAILURE;
+       }
 
-       UNSET_FLAG(lsp->flags, LSP_FLAG_CHANGED);
-       UNSET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
        ret = kernel_lsp_cmd(RTM_CHANGE, lsp);
-       if (!ret)
-               SET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
 
-       return ret;
+       kernel_lsp_pass_fail(lsp,
+                            (!ret) ? DP_INSTALL_SUCCESS
+                                   : DP_INSTALL_FAILURE);
+       return DP_REQUEST_SUCCESS;
 }
 
-int kernel_del_lsp(zebra_lsp_t *lsp)
+enum dp_req_result kernel_del_lsp(zebra_lsp_t *lsp)
 {
        int ret;
 
-       if (!lsp) // unexpected
-               return -1;
+       if (!lsp) { // unexpected
+               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
+               return DP_REQUEST_FAILURE;
+       }
 
-       if (!CHECK_FLAG(lsp->flags, LSP_FLAG_INSTALLED))
-               return -1;
+       if (!CHECK_FLAG(lsp->flags, LSP_FLAG_INSTALLED)) {
+               kernel_lsp_pass_fail(lsp, DP_DELETE_FAILURE);
+               return DP_REQUEST_FAILURE;
+       }
 
        ret = kernel_lsp_cmd(RTM_DELETE, lsp);
-       if (!ret)
-               UNSET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
 
-       return ret;
+       kernel_lsp_pass_fail(lsp,
+                            (!ret) ? DP_DELETE_SUCCESS
+                                   : DP_DELETE_FAILURE);
+
+       return DP_REQUEST_SUCCESS;
 }
 
 static int kmpw_install(struct zebra_pw *pw)