dpif: Add dpif_port_get_name call
authorJustin Pettit <jpettit@nicira.com>
Sat, 29 Aug 2009 23:02:56 +0000 (16:02 -0700)
committerJustin Pettit <jpettit@nicira.com>
Tue, 1 Sep 2009 21:48:34 +0000 (14:48 -0700)
Add ability to lookup a device name by its dpif port number.

lib/dpif.c
lib/dpif.h

index 80f6ed6cd9a454f0f9e08241a77e84b60d6be573..4475913cea42037780271697f938d9c311c2c70e 100644 (file)
@@ -352,6 +352,28 @@ dpif_port_query_by_name(const struct dpif *dpif, const char *devname,
     }
 }
 
+/* Looks up port number 'port_no' in 'dpif'.  On success, returns 0 and copies
+ * the port's name into the 'name_size' bytes in 'name', ensuring that the
+ * result is null-terminated.  On failure, returns a positive errno value and
+ * makes 'name' the empty string. */
+int
+dpif_port_get_name(struct dpif *dpif, uint16_t port_no,
+                   char *name, size_t name_size)
+{
+    struct odp_port port;
+    int error;
+
+    assert(name_size > 0);
+
+    error = dpif_port_query_by_number(dpif, port_no, &port);
+    if (!error) {
+        ovs_strlcpy(name, port.devname, name_size);
+    } else {
+        *name = '\0';
+    }
+    return error;
+}
+
 int
 dpif_port_list(const struct dpif *dpif,
                struct odp_port **ports, size_t *n_ports)
index 1e5412a4d481b336146b006dab49d9e2657598d4..f31fb3b9a0fe97ff83359a87794793fbb1561d78 100644 (file)
@@ -62,6 +62,8 @@ int dpif_port_query_by_number(const struct dpif *, uint16_t port_no,
                               struct odp_port *);
 int dpif_port_query_by_name(const struct dpif *, const char *devname,
                             struct odp_port *);
+int dpif_port_get_name(struct dpif *dpif, uint16_t port_no,
+                       char *name, size_t name_size);
 int dpif_port_list(const struct dpif *, struct odp_port **, size_t *n_ports);
 
 int dpif_port_group_set(struct dpif *, uint16_t group,