From 8b371b91e441655a541d256be048962f22b296fa Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 7 Feb 2012 18:14:21 -0600 Subject: [PATCH] NetServer: Prevent duplicate v6 link local addresses * Check to ensure the address doesn't already exist on card * In the future we will want to check interface address flags for any local scoped addresses on a card. --- src/servers/net/NetServer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/servers/net/NetServer.cpp b/src/servers/net/NetServer.cpp index 7b59ec42f4..000bec7470 100644 --- a/src/servers/net/NetServer.cpp +++ b/src/servers/net/NetServer.cpp @@ -911,6 +911,17 @@ NetServer::_ConfigureIPv6LinkLocal(const char* name) BNetworkAddress localLinkMask("ffff:ffff:ffff:ffff::"); // 64 BNetworkAddress localLinkBroadcast("fe80::ffff:ffff:ffff:ffff"); + if (interface.FindAddress(localLinkAddress) >= 0) { + // uhoh... already has a local link address + + /* TODO: Check for any local link scope addresses assigned to card + There isn't any flag at the moment though for address scope + */ + syslog(LOG_DEBUG, "%s: Local Link address already assigned to %s\n", + __func__, name); + return; + } + BNetworkInterfaceAddress interfaceAddress; interfaceAddress.SetAddress(localLinkAddress); interfaceAddress.SetMask(localLinkMask);