From: Justin Pettit Date: Sat, 29 Aug 2009 23:02:56 +0000 (-0700) Subject: dpif: Add dpif_port_get_name call X-Git-Tag: v0.90.5~9 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=bd193a0abafc249745ceb1a14165b54abbf6497c;p=sliver-openvswitch.git dpif: Add dpif_port_get_name call Add ability to lookup a device name by its dpif port number. --- diff --git a/lib/dpif.c b/lib/dpif.c index 80f6ed6cd..4475913ce 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -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) diff --git a/lib/dpif.h b/lib/dpif.h index 1e5412a4d..f31fb3b9a 100644 --- a/lib/dpif.h +++ b/lib/dpif.h @@ -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,