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 {
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 *);
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. */