summaryrefslogtreecommitdiffstats
path: root/avahi-autoipd
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-08-05 15:53:23 +0200
committerLennart Poettering <lennart@poettering.net>2008-08-05 15:53:23 +0200
commitd6ce91c0b5258c2e107415704413f42edfab2c30 (patch)
tree5b171bd9850f5b1e554ea01d66ec723cff287eff /avahi-autoipd
parent73f43c964d30f2a293c4b79fa296a770d095d8e8 (diff)
guarantee that we never calculate an invalid ip address from the mac address
Diffstat (limited to 'avahi-autoipd')
-rw-r--r--avahi-autoipd/main.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/avahi-autoipd/main.c b/avahi-autoipd/main.c
index 01ccc79..ef529b9 100644
--- a/avahi-autoipd/main.c
+++ b/avahi-autoipd/main.c
@@ -1144,9 +1144,13 @@ static int loop(int iface, uint32_t addr) {
for (i = 0; i < ETHER_ADDRLEN; i++)
a += hw_address[i]*i;
+ a = (a % 0xFE00) + 0x0100;
+
addr = htonl(IPV4LL_NETWORK | (uint32_t) a);
}
+ assert(is_ll_address(addr));
+
set_state(st, 1, addr);
daemon_log(LOG_INFO, "Starting with address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf)));