dhcpcd and recent kernels: progress(?) report

dhcpcd and recent kernels: progress(?) report

Post by Allin Cottrel » Sat, 18 Apr 1998 04:00:00

I've posted some questions on this topic before, and not got an
answer. I thought I'd try to set down a brief report of my
experiences, for the record and in case anyone else runs into the
same problems.

When not experimenting I run Linux 2.0.33, on an IBM ThinkPad
380D. I'm in a campus network situation where I get an IP number
by talking to a DHCP server in the shape of an NT box. The dhcp
client daemon version 0.70 gets me onto the network fine.

I'm interested in trying the development kernels.  To date I've
had a stab at 2.1.70, 2.1.88 and 2.1.90.  In each case the kernel
compiled and booted no problem, but in each case I've given up
because I couldn't get onto the network: dhcp wouldn't work.

At first, with 2.1.70, I just tried re-compiling dhcpcd 0.70 when
I hit the problem.  After a fairly rigorous search of the usenet
archive and the web I see that this cannot be expected to work.
Recent development kernels embody a substantial revision of the
(ipv4) networking code, and the "production" dhcpcd is completely
broken with these kernels.  (It would be nice if there were some
mention of this in the kernel documentation; at present [well, up
to 2.1.90] there's not a hint.)

The story is (http://www.veryComputer.com/~vuksan/dhcp.html) that if
you want to operate as a dhcp client with a new kernel you can
(a) patch dhcpcd 0.65, or (b) go with a dhcpcd version from the
1.3.N series, written by Sergei Viznyuk.  It seems to me that
option (a) is now outdated.  After applying the recommended
patch, dhcpcd 0.65 would not compile (against glibc, and with the
2.1.90 headers): the slew of error messages suggested that fixing
this would be a fairly major undertaking.  That leaves the 1.3.N
versions of dhcpcd.  I compiled 1.3.3 OK, but could not actually
connect with it.  Running it with the "-d" (verbose) flag
revealed that it was * on "corrupt UDP messages" before
timing out.  I had some correspondence with Sergei V, who quickly
and kindly gave me some suggestions -- first, to update to
version 1.3.6 (ftp://phystech.dyn.ml.org/pub/) and then to
comment out some checksum code in dhcpcpd's "client.c". I tried
both of these things, but I was still unable to get a connection.
Repeated experimentation showed that I am able reliably to
connect with kernel 2.0.33 and dhcpcd 0.70, but unable to connect
with 2.1.N and dhcpcd 1.3.N.  I wish I were able to make a real
contribution to development in this respect, but I'm afraid it's
beyond my expertise.  I got as far as looking into the dhcpcd
1.3.N code to see what condition generated the error messages I
was seeing, but I couldn't do anything useful with this

In sum: if you do dhcp, and if it happens that dhcpcd 1.3.N
doesn't work for you with the newer kernels, then at present
you're on your own.  It's not a disaster, of course, that people
in my position are not able to contribute to the testing of new
kernels (though it seems unfortunate), but I'd like to suggest
that it's important that this be fixed before Linux 2.2 goes out
the door.  I suspect that an increasing number and proportion of
Linux users use dhcp.

I don't _think_ there's anything particularly funny about the
dhcp situation on our network.  Since the server is an NT box
it's quite likely that it's doing something contrary to agreed
standards, but (a) whether we like it or not (we don't!) NT is a
de facto standard, and (b) anyway, dhcpcd 0.70 can handle the
situation OK, with a 2.0 kernel.

Allin Cottrell
Department of Economics
Wake Forest University, NC