X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdpif-linux.c;h=fa8eea6e7a26c3c5ac4ceaa1869a7a774c5f3a73;hb=2c360fbb2777fba6d35599e4b53287e2ecb26fa9;hp=10ddd511c41dd45ef86df22c1ffd7082f258d08f;hpb=773cd53821425ae2380fb741c85172a0ff8cb478;p=openvswitch diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 10ddd511..fa8eea6e 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -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)); } @@ -1282,6 +1282,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);