[ovs-dev] [PATCH v2 1/2] ofp-util: New function ofputil_port_to_string().
Ansis Atteka
aatteka at nicira.com
Mon Jun 24 19:48:25 UTC 2013
On Wed, Jun 12, 2013 at 11:38 AM, Ben Pfaff <blp at nicira.com> wrote:
> This function is more convenient than ofputil_format_port() when a "struct
> ds" is not already in use. This commit converts one caller for which this
> was already true, and the following commit will add another.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> lib/ofp-util.c | 32 ++++++++++++++++++++++----------
> lib/ofp-util.h | 2 ++
> 2 files changed, 24 insertions(+), 10 deletions(-)
>
> diff --git a/lib/ofp-util.c b/lib/ofp-util.c
> index 26da477..3cc4026 100644
> --- a/lib/ofp-util.c
> +++ b/lib/ofp-util.c
> @@ -4144,14 +4144,12 @@ ofputil_port_from_string(const char *s, uint16_t
> *portp)
> *portp = port32;
> return true;
> } else if (port32 <= OFPP_LAST_RESV) {
> - struct ds msg;
> + char name[OFP_MAX_PORT_NAME_LEN];
>
> - ds_init(&msg);
> - ofputil_format_port(port32, &msg);
> + ofputil_port_to_string(port32, name, sizeof name);
> VLOG_WARN_ONCE("referring to port %s as %u is deprecated for "
> "compatibility with future versions of
> OpenFlow",
> - ds_cstr(&msg), port32);
> - ds_destroy(&msg);
> + name, port32);
>
> *portp = port32;
> return true;
> @@ -4192,18 +4190,32 @@ ofputil_port_from_string(const char *s, uint16_t
> *portp)
> void
> ofputil_format_port(uint16_t port, struct ds *s)
>
{
- const char *name;
> + char name[OFP_MAX_PORT_NAME_LEN];
>
> + ofputil_port_to_string(port, name, sizeof name);
> + ds_put_cstr(s, name);
> +}
> +
> +/* Puts in the 'bufsize' byte in 'buf' a null-terminated string
> representation
>
Did you mean something like this instead:
Puts in the 'namebuf' buffer that is of size 'bufsize' a null terminated
string representation...
> + * of OpenFlow port number 'port'. Most ports are represented as just
> the port
> + * number, but special ports, e.g. OFPP_LOCAL, are represented by name,
> + * e.g. "LOCAL". */
> +void
> +ofputil_port_to_string(uint16_t port,
> + char namebuf[OFP_MAX_PORT_NAME_LEN], size_t
> bufsize)
> +{
> switch (port) {
> -#define OFPUTIL_NAMED_PORT(NAME) case OFPP_##NAME: name = #NAME; break;
> +#define OFPUTIL_NAMED_PORT(NAME) \
> + case OFPP_##NAME: \
> + ovs_strlcpy(namebuf, #NAME, bufsize); \
> + break;
> OFPUTIL_NAMED_PORTS
> #undef OFPUTIL_NAMED_PORT
>
> default:
> - ds_put_format(s, "%"PRIu16, port);
> - return;
> + snprintf(namebuf, bufsize, "%"PRIu16, port);
> + break;
> }
> - ds_put_cstr(s, name);
> }
>
> /* Given a buffer 'b' that contains an array of OpenFlow ports of type
> diff --git a/lib/ofp-util.h b/lib/ofp-util.h
> index 1c8d6cd..424bb73 100644
> --- a/lib/ofp-util.h
> +++ b/lib/ofp-util.h
> @@ -38,6 +38,8 @@ ovs_be32 ofputil_port_to_ofp11(uint16_t ofp10_port);
> enum ofperr ofputil_check_output_port(uint16_t ofp_port, int max_ports);
> bool ofputil_port_from_string(const char *, uint16_t *portp);
> void ofputil_format_port(uint16_t port, struct ds *);
> +void ofputil_port_to_string(uint16_t port, char
> namebuf[OFP_MAX_PORT_NAME_LEN],
> + size_t bufsize);
>
Also, It seems that now there is trivial conflict where uint16_t has
changed to ofp_port_t.
Otherwise looks good to me.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20130624/5476e62a/attachment-0003.html>
More information about the dev
mailing list