From 3fcc0814db3773e1295a372ea7a4194e19c62e52 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Fri, 3 Jan 2014 12:51:49 +0100 Subject: [PATCH] derive ipv6 static lease from ipv4 if no hostid is given --- src/dhcpv6-ia.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c index 3d6b786..e5a7c0b 100644 --- a/src/dhcpv6-ia.c +++ b/src/dhcpv6-ia.c @@ -87,7 +87,12 @@ int setup_dhcpv6_ia_interface(struct interface *iface, bool enable) a->clid_len = lease->duid_len; a->length = 128; - a->assigned = lease->hostid; + if (lease->hostid) { + a->assigned = lease->hostid; + } else { + uint32_t i4a = ntohl(lease->ipaddr.s_addr) & 0xff; + a->assigned = ((i4a / 100) << 8) | (((i4a % 100) / 10) << 4) | (i4a % 10); + } odhcpd_urandom(a->key, sizeof(a->key)); memcpy(a->clid_data, lease->duid, a->clid_len); memcpy(a->mac, lease->mac.ether_addr_octet, sizeof(a->mac)); -- 2.25.1