From aa26396ed5b3e28c06fba8f2453b9d7541bf5a97 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 30 Jul 2008 15:45:38 -0700 Subject: [PATCH] dhcp: New function dhcp_option_equals(). --- include/dhcp.h | 7 +++++-- lib/dhcp.c | 9 +++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/dhcp.h b/include/dhcp.h index 2d00f0261..f44c4c652 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 5021d5e0b..3c0ed82a6 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. */ -- 2.45.2