dpif-linux: Avoid logging error on ENOENT in dpif_linux_is_internal_device().
[sliver-openvswitch.git] / lib / dpif-linux.c
index 75cff0c..fed81b7 100644 (file)
@@ -1072,7 +1072,7 @@ dpif_linux_is_internal_device(const char *name)
     error = dpif_linux_vport_get(name, &reply, &buf);
     if (!error) {
         ofpbuf_delete(buf);
-    } else if (error != ENODEV) {
+    } else if (error != ENODEV && error != ENOENT) {
         VLOG_WARN_RL(&error_rl, "%s: vport query failed (%s)",
                      name, strerror(error));
     }
@@ -1254,6 +1254,15 @@ dpif_linux_vport_transact(const struct dpif_linux_vport *request,
 
     assert((reply != NULL) == (bufp != NULL));
 
+    error = dpif_linux_init();
+    if (error) {
+        if (reply) {
+            *bufp = NULL;
+            dpif_linux_vport_init(reply);
+        }
+        return error;
+    }
+
     request_buf = ofpbuf_new(1024);
     dpif_linux_vport_to_ofpbuf(request, request_buf);
     error = nl_sock_transact(genl_sock, request_buf, bufp);