The dhcp request field for hardware type is hardcoded to 1 (ethernet), which may cause the server to ignore the requests on other media, such as token ring. The correction is simple - use the if reported family to set the hw type. The following patch has been tested to fix the problem on a token ring net, without affecting ethernet operation. dave safford ---------------------------------------------------------------------- *** dhcp.c.old Fri Nov 12 15:37:03 1999 --- dhcp.c Fri Nov 12 15:23:47 1999 *************** *** 492,498 **** if (ioctl(sock, SIOCGIFHWADDR, &req)) return perrorstr("SIOCSIFHWADDR"); ! breq->hw = 1; /* ethernet */ breq->hwlength = IFHWADDRLEN; memcpy(breq->hwaddr, req.ifr_hwaddr.sa_data, IFHWADDRLEN); --- 492,500 ---- if (ioctl(sock, SIOCGIFHWADDR, &req)) return perrorstr("SIOCSIFHWADDR"); ! /*breq->hw = 1;*/ /* ethernet */ ! breq->hw = req.ifr_hwaddr.sa_family; ! breq->hwlength = IFHWADDRLEN; memcpy(breq->hwaddr, req.ifr_hwaddr.sa_data, IFHWADDRLEN);
Thanks for the patch -- this will be fixed in the next version of pump. Does pump now work on token ring?