summaryrefslogtreecommitdiffstats
path: root/dhcp.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-03-23 22:02:37 +0000
committerRoy Marples <roy@marples.name>2009-03-23 22:02:37 +0000
commit4a4bcf7cf5fa713dd62912f0c1c7c2e1ef543e4b (patch)
treee98d97c8e1e83686cc6ae8c2e956d9fc6c8a6ea9 /dhcp.c
parenta43ccb9f89972786e75b2140edf109af72bd8467 (diff)
downloaddhcpcd-4a4bcf7cf5fa713dd62912f0c1c7c2e1ef543e4b.tar.xz
Improve PTP INFORM support some more.
Diffstat (limited to 'dhcp.c')
-rw-r--r--dhcp.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/dhcp.c b/dhcp.c
index 203dc939..c5feccad 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -759,6 +759,31 @@ encode_rfc1035(const char *src, uint8_t *dst)
memcpy(p, &_val.s_addr, 4); \
p += 4; \
}
+
+int
+dhcp_message_add_addr(struct dhcp_message *dhcp,
+ uint8_t type, struct in_addr addr)
+{
+ uint8_t *p;
+ size_t len;
+
+ p = dhcp->options;
+ while (*p != DHO_END) {
+ p++;
+ p += *p + 1;
+ }
+
+ len = p - (uint8_t *)dhcp;
+ if (len + 6 > sizeof(*dhcp)) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ PUTADDR(type, addr);
+ *p = DHO_END;
+ return 0;
+}
+
ssize_t
make_message(struct dhcp_message **message,
const struct interface *iface,