linux-mips
[Top] [All Lists]

Re: BOOTP problem

To: Alice Hennessy <ahennessy@mvista.com>
Subject: Re: BOOTP problem
From: "H . J . Lu" <hjl@lucon.org>
Date: Thu, 4 Oct 2001 11:25:48 -0700
Cc: linux-mips@oss.sgi.com
In-reply-to: <3BBCA8A8.23CA468F@mvista.com>; from ahennessy@mvista.com on Thu, Oct 04, 2001 at 11:21:28AM -0700
References: <3BBCA8A8.23CA468F@mvista.com>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.2.5i
On Thu, Oct 04, 2001 at 11:21:28AM -0700, Alice Hennessy wrote:
> Hello,
> 
> Just grabbed the latest code and BOOTP doesn't work with the latest
> net/ipv4/ipconfig.c
> (it does work with the ipconfig.c from a 6/11 snapshot).   Anyone else
> having problems?
> 

There was a problem. Try this patch. BTW, I was told it was fixed in
the current kernel.


H.J.
----
--- linux-2.4.5-ac3-ext3/net/ipv4/ipconfig.c.dhcp       Tue May  1 20:59:24 2001
+++ linux-2.4.5-ac3-ext3/net/ipv4/ipconfig.c    Tue May 29 09:30:16 2001
@@ -816,61 +816,63 @@ static int __init ic_bootp_recv(struct s
                u8 *ext;
 
 #ifdef IPCONFIG_DHCP
+               if (ic_proto_enabled & IC_USE_DHCP) {
 
-               u32 server_id = INADDR_NONE;
-               int mt = 0;
+                       u32 server_id = INADDR_NONE;
+                       int mt = 0;
 
-               ext = &b->exten[4];
-               while (ext < end && *ext != 0xff) {
-                       u8 *opt = ext++;
-                       if (*opt == 0)  /* Padding */
-                               continue;
-                       ext += *ext + 1;
-                       if (ext >= end)
-                               break;
-                       switch (*opt) {
-                       case 53:        /* Message type */
-                               if (opt[1])
-                                       mt = opt[2];
-                               break;
-                       case 54:        /* Server ID (IP address) */
-                               if (opt[1] >= 4)
-                                       memcpy(&server_id, opt + 2, 4);
-                               break;
+                       ext = &b->exten[4];
+                       while (ext < end && *ext != 0xff) {
+                               u8 *opt = ext++;
+                               if (*opt == 0)  /* Padding */
+                                       continue;
+                               ext += *ext + 1;
+                               if (ext >= end)
+                                       break;
+                               switch (*opt) {
+                               case 53:        /* Message type */
+                                       if (opt[1])
+                                               mt = opt[2];
+                                       break;
+                               case 54:        /* Server ID (IP address) */
+                                       if (opt[1] >= 4)
+                                               memcpy(&server_id, opt + 2, 4);
+                                       break;
+                               }
                        }
-               }
 
 #ifdef IPCONFIG_DEBUG
-               printk("DHCP: Got message type %d\n", mt);
+                       printk("DHCP: Got message type %d\n", mt);
 #endif
 
-               switch (mt) {
-                   case DHCPOFFER:
-                       /* While in the process of accepting one offer,
-                          ignore all others. */
-                       if (ic_myaddr != INADDR_NONE)
-                               goto drop;
-                       /* Let's accept that offer. */
-                       ic_myaddr = b->your_ip;
-                       ic_servaddr = server_id;
+                       switch (mt) {
+                       case DHCPOFFER:
+                               /* While in the process of accepting one offer,
+                                  ignore all others. */
+                               if (ic_myaddr != INADDR_NONE)
+                                       goto drop;
+                               /* Let's accept that offer. */
+                               ic_myaddr = b->your_ip;
+                               ic_servaddr = server_id;
 #ifdef IPCONFIG_DEBUG
-                       printk("DHCP: Offered address %u.%u.%u.%u", 
NIPQUAD(ic_myaddr));
-                       printk(" by server %u.%u.%u.%u\n", 
NIPQUAD(ic_servaddr));
+                               printk("DHCP: Offered address %u.%u.%u.%u", 
NIPQUAD(ic_myaddr));
+                               printk(" by server %u.%u.%u.%u\n", 
NIPQUAD(ic_servaddr));
 #endif
-                       break;
+                               break;
 
-                   case DHCPACK:
-                       /* Yeah! */
-                       break;
-
-                   default:
-                       /* Urque.  Forget it*/
-                       ic_myaddr = INADDR_NONE;
-                       ic_servaddr = INADDR_NONE;
-                       goto drop;
-               }
+                       case DHCPACK:
+                               /* Yeah! */
+                               break;
+
+                       default:
+                               /* Urque.  Forget it*/
+                               ic_myaddr = INADDR_NONE;
+                               ic_servaddr = INADDR_NONE;
+                               goto drop;
+                       }
 
-               ic_dhcp_msgtype = mt;
+                       ic_dhcp_msgtype = mt;
+               }
 
 #endif /* IPCONFIG_DHCP */
 

<Prev in Thread] Current Thread [Next in Thread>