diff -ru --new-file 2.3.40.clean/net/ipv4/ipconfig.c 2.3.40/net/ipv4/ipconfig.c --- 2.3.40.clean/net/ipv4/ipconfig.c Sun Jan 9 05:36:20 2000 +++ 2.3.40/net/ipv4/ipconfig.c Sun Jan 23 01:07:11 2000 @@ -534,7 +534,14 @@ /* Construct BOOTP header */ b->op = BOOTP_REQUEST; - b->htype = dev->type; + if (dev->type < 256) /* check for false types */ + b->htype = dev->type; + else if (dev->type == ARPHRD_IEEE802_TR) /* fix for token ring */ + b->htype = ARPHRD_IEEE802; + else { + printk("Unknown ARP type 0x%04x for device %s\n", dev->type, dev->name); + b->htype = dev->type; /* can cause undefined behavior */ + } b->hlen = dev->addr_len; memcpy(b->hw_addr, dev->dev_addr, dev->addr_len); b->secs = htons(jiffies / HZ);