From: Steven Barth Date: Fri, 3 Jan 2014 11:51:49 +0000 (+0100) Subject: derive ipv6 static lease from ipv4 if no hostid is given X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3fcc0814db3773e1295a372ea7a4194e19c62e52;p=oweals%2Fodhcpd.git derive ipv6 static lease from ipv4 if no hostid is given --- 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));