[ovs-dev] [PATCH 03/11] ovn-nbctl: Don't die in lsp_to_ls().

Jakub Sitnicki jkbs at redhat.com
Tue Jul 17 13:34:07 UTC 2018


Let the caller handle the error. This prepares us for reporting errors
in daemon mode.

Signed-off-by: Jakub Sitnicki <jkbs at redhat.com>
---
 ovn/utilities/ovn-nbctl.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c
index df35d11d6..19e99670b 100644
--- a/ovn/utilities/ovn-nbctl.c
+++ b/ovn/utilities/ovn-nbctl.c
@@ -952,22 +952,26 @@ lsp_by_name_or_uuid(struct ctl_context *ctx, const char *id,
 }
 
 /* Returns the logical switch that contains 'lsp'. */
-static const struct nbrec_logical_switch *
+static char * OVS_WARN_UNUSED_RESULT
 lsp_to_ls(const struct ovsdb_idl *idl,
-               const struct nbrec_logical_switch_port *lsp)
+          const struct nbrec_logical_switch_port *lsp,
+          const struct nbrec_logical_switch **ls_p)
 {
     const struct nbrec_logical_switch *ls;
+    *ls_p = NULL;
+
     NBREC_LOGICAL_SWITCH_FOR_EACH (ls, idl) {
         for (size_t i = 0; i < ls->n_ports; i++) {
             if (ls->ports[i] == lsp) {
-                return ls;
+                *ls_p = ls;
+                return NULL;
             }
         }
     }
 
     /* Can't happen because of the database schema */
-    ctl_fatal("logical port %s is not part of any logical switch",
-              lsp->name);
+    return xasprintf("logical port %s is not part of any logical switch",
+                     lsp->name);
 }
 
 static const char *
@@ -1027,7 +1031,11 @@ nbctl_lsp_add(struct ctl_context *ctx)
         }
 
         const struct nbrec_logical_switch *lsw;
-        lsw = lsp_to_ls(ctx->idl, lsp);
+        error = lsp_to_ls(ctx->idl, lsp, &lsw);
+        if (error) {
+            ctx->error = error;
+            return;
+        }
         if (lsw != ls) {
             char uuid_s[UUID_LEN + 1];
             ctl_error(ctx, "%s: port already exists but in switch %s",
-- 
2.14.4



More information about the dev mailing list