## Last updated : Tue Dec 15 03:57:57 1998

When the bootpc code fails to find a suitable server or reply it
prints a message like:

>  Unable to locate an IP address for this host.
>      ***Please report this problem**
> 
>           [Unable to continue]
> 

The client then goes into a loop forwever sleeping.  The reason for
this is that carrying on is probably foolish so it waits for a human
to interrupt it and sort out the problem.  If you really know what you
are doing then you can set --returniffail to cause it to return.
Using bootpc like this you can tell if your machine is connected to
the network.  I use this for machines which are sometimes on the net,
but get taken home by their users sometimes.

If it fails try running --debug --verbose to see if this sheds any
light on the problem.

The reasons it can fail that I've encountered are:

 o  You are running on a 2.1.x Linux kernel which will not pass the
    bootp reply back to the client since the dest address doesn't match
    ours (yet).
 x  Try the --serverbcast flag.  It is a hack but seems to work with
    most of the common bootp servers and gets round the problem for now.
    A proper fix would either require kernel changes (which AC and ANK
    disaprove of), or reading the packets at a lower level and
    re-implementing most of the IP/UDP stuff in userland.  If the
    --serverbcast flag doesn't work you *might* want to try using the
    kernel REDIRECT code from the firewall.  I've not tested this.

 o  No bootp server is serving this client on this network
 x  Set one up.  If you want to disable networking if there is no
    reply to bootp see the --returniffails option.  There is support
    for this in rc.bootp now.

 o  Your default network card doesn't get you to the local network, or is
    filtered or firewalled and not letting bootp packets through.
 x  Try using --server IPaddress of the server, check the routes
    you have set allow all broadcast route to the local network.

 o  You are using --server to point to a server which doesn't run a
    bootp server
 x  Try not using it.

 o  Packets from bootpc don't reach the server, watching the network
    they seem to go somewhere else.
 x  You have a default route set up which doesn't reach the bootp
    server.  E.g. testing bootpc on a live system with the default
    route pointing at your external router.
    The rc.bootp script sets up a simple default route to the local
    net.  If you can't see the bootp server from this you need a
    router which understands the bootp gateway protocol.  For testing,
    just set --server to point at your local subnet's broadcast
    address.  e.g. I use 131.111.16.255.

 o  You are using --hwaddr and the bootp server responds directly to
    the MAC address quoted not to the machine generating the request.
 x  Try not using it.  In modern bootp servers you can tell it to
    broadcast the replies or reply to a known other address, this can
    be helpful for debugging.

 o  The server doesn't understand RFC1497 cookies (you get not all the
    information back and a "WARNING bp_xid mismatch" probably.)
 x  Install a newer bootp server, or make do with the information you
    can get from the old one.

If these don't seem to be the problem, use strace to trace the
execution with --debug and --verbose and mail me the output, repeat
also with --server IPaddress so I can try to see what went wrong.

e-mail them to J.S.Peatfield@damtp.cam.ac.uk, I'll try to reply with
suggestions or more questions pretty soon.

-- Jon
