[haiku-commits] r41538 - haiku/trunk/src/servers/net

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 16 May 2011 18:00:19 +0200 (CEST)

Author: phoudoin
Date: 2011-05-16 18:00:18 +0200 (Mon, 16 May 2011)
New Revision: 41538
Changeset: https://dev.haiku-os.org/changeset/41538

Modified:
   haiku/trunk/src/servers/net/DHCPClient.cpp
Log:
There is no point trying to request back from DHCP a link-local
auto-configured address...


Modified: haiku/trunk/src/servers/net/DHCPClient.cpp
===================================================================
--- haiku/trunk/src/servers/net/DHCPClient.cpp  2011-05-16 15:19:02 UTC (rev 
41537)
+++ haiku/trunk/src/servers/net/DHCPClient.cpp  2011-05-16 16:00:18 UTC (rev 
41538)
@@ -446,6 +446,13 @@
                        BNetworkAddress address = interfaceAddress.Address();
                        const sockaddr_in& addr = 
(sockaddr_in&)address.SockAddr();
                        fAssignedAddress = addr.sin_addr.s_addr;
+
+                       if ((ntohl(fAssignedAddress) & IN_CLASSB_NET) == 
0xa9fe0000) {
+                               // previous auto-configured address is a 
link-local one:
+                               // there is no point asking a DHCP server to 
renew such
+                               // server-less assigned address...
+                               fAssignedAddress = 0;
+                       }
                }
        }
 
@@ -561,8 +568,8 @@
 
                        _SendMessage(socket, state == INIT ? discover : request,
                                state != RENEWING ? broadcast : fServer);
+                       continue;
 
-                       continue;
                } else if (bytesReceived < 0)
                        break;
 
@@ -845,7 +852,7 @@
                                        (uint32)server.sin_addr.s_addr);
                        }
 
-                       if (state == INIT || state == INIT_REBOOT 
+                       if (state == INIT || state == INIT_REBOOT
                                || state == REQUESTING) {
                                next = message.PutOption(next, 
OPTION_REQUEST_IP_ADDRESS,
                                        (uint32)fAssignedAddress);
@@ -928,12 +935,12 @@
        message_type type = message.Type();
        BString text;
        text << dhcp_message::TypeToString(type);
- 
+
        const uint8* requestAddress = 
message.FindOption(OPTION_REQUEST_IP_ADDRESS);
        if (type == DHCP_REQUEST && requestAddress != NULL)
                text << " for " << _AddressToString(requestAddress).String();
-       
-       syslog(LOG_DEBUG, "%s: Send %s to %s\n", Device(), text.String(), 
+
+       syslog(LOG_DEBUG, "%s: Send %s to %s\n", Device(), text.String(),
                address.ToString().String());
 
        ssize_t bytesSent = sendto(socket, &message, message.Size(),


Other related posts:

  • » [haiku-commits] r41538 - haiku/trunk/src/servers/net - philippe . houdoin