]> git.ipfire.org Git - people/ms/dnsmasq.git/commitdiff
Don't reply to DHCPv6 SOLICIT messages when not configured for statefull DHCPv6.
authorWin King Wan <pinwing+dnsmasq@gmail.com>
Wed, 21 Jan 2015 20:41:48 +0000 (20:41 +0000)
committerSimon Kelley <simon@thekelleys.org.uk>
Wed, 21 Jan 2015 20:41:48 +0000 (20:41 +0000)
CHANGELOG
src/rfc3315.c

index 0076b557e95edaed61e1d0af1e1e84e4cc35e3d6..a4cb901e83aed72a86a2d1c9f47a5b20d7bddfe4 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -59,6 +59,10 @@ version 2.73
            cheaply than having dnsmasq re-read all its existing
            configuration each time. 
        
+           Don't reply to DHCPv6 SOLICIT messages if we're not 
+           configured to do stateful DHCPv6. Thanks to Win King Wan 
+           for the patch.
+
        
 version 2.72
             Add ra-advrouter mode, for RFC-3775 mobile IPv6 support.
index ddb390bf11360081c5ea7d577f34df343f15fe72..e593ec9c362c686099fdb7da3b6cec5a22c3cee1 100644 (file)
@@ -824,6 +824,19 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_
          }
        else
          { 
+           /* Windows 8 always requests an address even if the Managed bit
+              in RA is 0 and it keeps retrying if it receives a reply
+              stating that no addresses are available. We solve this 
+              by not replying at all if we're not configured to give any 
+              addresses by DHCPv6. RFC 3315 17.2.1. appears to allow this. */
+           
+           for (c = state->context; c; c = c->current)
+             if (!(c->flags & CONTEXT_RA_STATELESS))
+               break;
+           
+           if (!c)
+             return 0;
+           
            /* no address, return error */
            o1 = new_opt6(OPTION6_STATUS_CODE);
            put_opt6_short(DHCP6NOADDRS);