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

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 23 Apr 2011 03:56:02 +0200 (CEST)

Author: phoudoin
Date: 2011-04-23 03:56:02 +0200 (Sat, 23 Apr 2011)
New Revision: 41279
Changeset: https://dev.haiku-os.org/changeset/41279

Modified:
   haiku/trunk/src/servers/net/AutoconfigLooper.cpp
   haiku/trunk/src/servers/net/DHCPClient.cpp
   haiku/trunk/src/servers/net/DHCPClient.h
Log:
Revert files that were commit by mistake in previous commit. Sorry.


Modified: haiku/trunk/src/servers/net/AutoconfigLooper.cpp
===================================================================
--- haiku/trunk/src/servers/net/AutoconfigLooper.cpp    2011-04-23 01:52:16 UTC 
(rev 41278)
+++ haiku/trunk/src/servers/net/AutoconfigLooper.cpp    2011-04-23 01:56:02 UTC 
(rev 41279)
@@ -58,19 +58,21 @@
 void
 AutoconfigLooper::_Configure()
 {
-       // start with DHCP
-       
-       if (fCurrentClient == NULL) {
-               fCurrentClient = new DHCPClient(fTarget, fDevice.String());
-               AddHandler(fCurrentClient);
-       }
-       
        // set IFF_CONFIGURING flag on interface
 
        BNetworkInterface interface(fDevice.String());
        int32 flags = interface.Flags() & ~IFF_AUTO_CONFIGURED;
        interface.SetFlags(flags | IFF_CONFIGURING);
 
+       // remove current handler
+
+       _RemoveClient();
+
+       // start with DHCP
+
+       fCurrentClient = new DHCPClient(fTarget, fDevice.String());
+       AddHandler(fCurrentClient);
+
        if (fCurrentClient->Initialize() == B_OK)
                return;
 
@@ -89,7 +91,7 @@
 
        BMessage message(kMsgConfigureInterface);
        message.AddString("device", fDevice.String());
-       message.AddBool("auto_configured", true);
+       message.AddBool("auto", true);
 
        BNetworkAddress link;
        uint8 last = 56;

Modified: haiku/trunk/src/servers/net/DHCPClient.cpp
===================================================================
--- haiku/trunk/src/servers/net/DHCPClient.cpp  2011-04-23 01:52:16 UTC (rev 
41278)
+++ haiku/trunk/src/servers/net/DHCPClient.cpp  2011-04-23 01:56:02 UTC (rev 
41279)
@@ -422,7 +422,6 @@
        fConfiguration(kMsgConfigureInterface),
        fResolverConfiguration(kMsgConfigureResolver),
        fRunner(NULL),
-       fAssignedAddress(0),
        fServer(AF_INET, NULL, DHCP_SERVER_PORT),
        fLeaseTime(0)
 {
@@ -437,18 +436,6 @@
 
        memcpy(fMAC, link.LinkLevelAddress(), sizeof(fMAC));
 
-       if ((interface.Flags() & IFF_AUTO_CONFIGURED) != 0) {
-               // Check for interface previous auto-configured address, if any.
-               BNetworkInterfaceAddress interfaceAddress;
-               int index = interface.FindFirstAddress(AF_INET);
-               if (index >= 0
-                       && interface.GetAddressAt(index, interfaceAddress) == 
B_OK) {
-                       BNetworkAddress address = interfaceAddress.Address();
-                       const sockaddr_in& addr = 
(sockaddr_in&)address.SockAddr();
-                       fAssignedAddress = addr.sin_addr.s_addr;
-               }
-       }
-
        openlog_thread("DHCP", 0, LOG_DAEMON);
 }
 
@@ -479,8 +466,8 @@
 status_t
 DHCPClient::Initialize()
 {
-       fStatus = _Negotiate(fAssignedAddress == 0 ? INIT : INIT_REBOOT);
-       syslog(LOG_DEBUG, "%s: DHCP status = %s\n", Device(), 
strerror(fStatus));
+       fStatus = _Negotiate(INIT);
+       syslog(LOG_DEBUG, "DHCP for %s, status: %s\n", Device(), 
strerror(fStatus));
        return fStatus;
 }
 
@@ -540,15 +527,13 @@
 
        // send discover/request message
        _SendMessage(socket, state == INIT ? discover : request,
-               state != RENEWING ? broadcast : fServer);
+               state != RENEWAL ? broadcast : fServer);
                // no need to check the status; in case of an error we'll just 
send
                // the message again
 
        // receive loop until we've got an offer and acknowledged it
 
-       while (state != BOUND) {
-               printf("DHCPClient::_Negotiate(%d)\n", (int)state);
-
+       while (state != ACKNOWLEDGED) {
                char buffer[2048];
                struct sockaddr_in from;
                socklen_t fromLength = sizeof(from);
@@ -561,8 +546,12 @@
                                return B_TIMED_OUT;
                        }
 
-                       _SendMessage(socket, state == INIT ? discover : request,
-                               state != RENEWING ? broadcast : fServer);
+                       if (state == INIT)
+                               _SendMessage(socket, discover, broadcast);
+                       else {
+                               _SendMessage(socket, request,
+                                       state != RENEWAL ? broadcast : fServer);
+                       }
 
                        continue;
                } else if (bytesReceived < 0)
@@ -577,16 +566,10 @@
                        continue;
                }
 
-               // advance from startup state
-               if (state == INIT)
-                       state = SELECTING;
-               else if (state == INIT_REBOOT)
-                       state = REBOOTING;
+               syslog(LOG_DEBUG, "Received %s from %s for %s\n",
+                       dhcp_message::TypeToString(message->Type()),
+                               
_AddressToString(from.sin_addr.s_addr).String(), Device());
 
-               syslog(LOG_DEBUG, "%s: Received %s from %s\n",
-                       Device(), dhcp_message::TypeToString(message->Type()),
-                       _AddressToString(from.sin_addr.s_addr).String());
-
                switch (message->Type()) {
                        case DHCP_NONE:
                        default:
@@ -596,7 +579,7 @@
                        case DHCP_OFFER:
                        {
                                // first offer wins
-                               if (state != SELECTING)
+                               if (state != INIT)
                                        break;
 
                                // collect interface options
@@ -607,7 +590,7 @@
 
                                fConfiguration.MakeEmpty();
                                fConfiguration.AddString("device", Device());
-                               fConfiguration.AddBool("auto_configured", true);
+                               fConfiguration.AddBool("auto", true);
 
                                BMessage address;
                                address.AddString("family", "inet");
@@ -631,10 +614,8 @@
 
                        case DHCP_ACK:
                        {
-                               if (state != REQUESTING
-                                       && state != REBOOTING
-                                       && state != REBINDING
-                                       && state != RENEWING)
+                               if (state != REQUESTING && state != REBINDING
+                                       && state != RENEWAL)
                                        continue;
 
                                // TODO: we might want to configure the stuff, 
don't we?
@@ -645,7 +626,7 @@
                                        // way
 
                                // our address request has been acknowledged
-                               state = BOUND;
+                               state = ACKNOWLEDGED;
 
                                // configure interface
                                BMessage reply;
@@ -663,18 +644,9 @@
                        }
 
                        case DHCP_NACK:
-                               if (state != REQUESTING
-                                       && state != REBOOTING
-                                       && state != REBINDING
-                                       && state != RENEWING)
+                               if (state != REQUESTING)
                                        continue;
 
-                               if (state == REBOOTING) {
-                                       // server reject our request on 
previous assigned address
-                                       // back to square one...
-                                       fAssignedAddress = 0;
-                               }
-
                                // try again (maybe we should prefer other 
servers if this
                                // happens more than once)
                                status = _SendMessage(socket, discover, 
broadcast);
@@ -847,8 +819,7 @@
                                        (uint32)server.sin_addr.s_addr);
                        }
 
-                       if (state == INIT || state == INIT_REBOOT 
-                               || state == REQUESTING) {
+                       if (state == INIT || state == REQUESTING) {
                                next = message.PutOption(next, 
OPTION_REQUEST_IP_ADDRESS,
                                        (uint32)fAssignedAddress);
                        } else
@@ -895,7 +866,7 @@
                if (++tries > 2)
                        return false;
        }
-       syslog(LOG_DEBUG, "%s: Timeout shift: %lu secs (try %lu)\n",
+       syslog(LOG_DEBUG, "Timeout shift for %s: %lu secs (try %lu)\n",
                Device(), timeout, tries);
 
        struct timeval value;
@@ -927,16 +898,9 @@
 DHCPClient::_SendMessage(int socket, dhcp_message& message,
        const BNetworkAddress& address) const
 {
-       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(), 
-               address.ToString().String());
+       syslog(LOG_DEBUG, "Send %s to %s on %s\n",
+               dhcp_message::TypeToString(message.Type()),
+                       address.ToString().String(), Device());
 
        ssize_t bytesSent = sendto(socket, &message, message.Size(),
                address.IsBroadcast() ? MSG_BCAST : 0, address, 
address.Length());
@@ -957,7 +921,7 @@
        if (now >= fRebindingTime)
                return REBINDING;
        if (now >= fRenewalTime)
-               return RENEWING;
+               return RENEWAL;
 
        return BOUND;
 }
@@ -974,7 +938,7 @@
                        bigtime_t next;
                        if (_Negotiate(state) == B_OK) {
                                switch (state) {
-                                       case RENEWING:
+                                       case RENEWAL:
                                                next = fRebindingTime;
                                                break;
                                        case REBINDING:
@@ -984,7 +948,7 @@
                                }
                        } else {
                                switch (state) {
-                                       case RENEWING:
+                                       case RENEWAL:
                                                next = (fLeaseTime - 
fRebindingTime) / 4 + system_time();
                                                break;
                                        case REBINDING:

Modified: haiku/trunk/src/servers/net/DHCPClient.h
===================================================================
--- haiku/trunk/src/servers/net/DHCPClient.h    2011-04-23 01:52:16 UTC (rev 
41278)
+++ haiku/trunk/src/servers/net/DHCPClient.h    2011-04-23 01:56:02 UTC (rev 
41279)
@@ -22,13 +22,11 @@
 
 enum dhcp_state {
        INIT,
-       SELECTING,
-       INIT_REBOOT,
-       REBOOTING,
        REQUESTING,
        BOUND,
-       RENEWING,
+       RENEWAL,
        REBINDING,
+       ACKNOWLEDGED,
 };
 
 
@@ -57,9 +55,9 @@
                        bool                            _TimeoutShift(int 
socket, time_t& timeout,
                                                                        uint32& 
tries);
                        void                            _RestartLease(bigtime_t 
lease);
-
+                       
        static  BString                         _AddressToString(const uint8* 
data);
-       static  BString                         _AddressToString(in_addr_t 
address);
+       static  BString                         _AddressToString(in_addr_t 
address);
 
 private:
                        BMessage                        fConfiguration;


Other related posts:

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