On Mon, May 14, 2001 at 12:02:48PM -0700, H . J . Lu wrote:
> 
> BTW, I cannot select both CONFIG_IP_PNP_DHCP and CONFIG_IP_PNP_BOOTP.
> BOOTP doesn' work even if I pass "ip=bootp" to kernel. I will take
> a look.
> 
> 

Here is a patch. We should do DHCP iff it is enabled.


H.J.
--- linux-2.4.4-ac9/net/ipv4/ipconfig.c.auto    Mon May 14 12:18:18 2001
+++ linux-2.4.4-ac9/net/ipv4/ipconfig.c Mon May 14 12:52:51 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 */
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to