From: Ben Pfaff Date: Wed, 30 Jul 2008 22:45:38 +0000 (-0700) Subject: dhcp: New function dhcp_option_equals(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa26396ed5b3e28c06fba8f2453b9d7541bf5a97;p=openvswitch dhcp: New function dhcp_option_equals(). --- diff --git a/include/dhcp.h b/include/dhcp.h index 2d00f026..f44c4c65 100644 --- a/include/dhcp.h +++ b/include/dhcp.h @@ -218,6 +218,11 @@ struct dhcp_option { void *data; /* Data. */ }; +const char *dhcp_option_to_string(const struct dhcp_option *, int code, + struct ds *); +bool dhcp_option_equals(const struct dhcp_option *, + const struct dhcp_option *); + /* Abstracted DHCP protocol message, to make them easier to manipulate than * through raw protocol buffers. */ struct dhcp_msg { @@ -266,8 +271,6 @@ bool dhcp_msg_get_uint8(const struct dhcp_msg *, int code, size_t offset, uint8_t *); bool dhcp_msg_get_uint16(const struct dhcp_msg *, int code, size_t offset, uint16_t *); -const char *dhcp_option_to_string(const struct dhcp_option *, int code, - struct ds *); const char *dhcp_msg_to_string(const struct dhcp_msg *, bool multiline, struct ds *); int dhcp_parse(struct dhcp_msg *, const struct buffer *); diff --git a/lib/dhcp.c b/lib/dhcp.c index 5021d5e0..3c0ed82a 100644 --- a/lib/dhcp.c +++ b/lib/dhcp.c @@ -488,6 +488,15 @@ dhcp_option_to_string(const struct dhcp_option *opt, int code, struct ds *ds) return ds_cstr(ds); } +/* Returns true if 'a' and 'b' have the same content, false otherwise. */ +bool +dhcp_option_equals(const struct dhcp_option *a, const struct dhcp_option *b) +{ + return ((a->data != NULL) == (b->data != NULL) + && a->n == b->n + && !memcmp(a->data, b->data, a->n)); +} + /* Replaces 'ds' by a string representation of 'msg'. If 'multiline' is * false, 'ds' receives a single-line representation of 'msg', otherwise a * multiline representation. */