Attempt to address the problem described in issue #166; that nodes fail
to go from PXEBOOTING (pxewakeup) to actually booting, but we do not know that for a really long time cause we send a BOOTING event from bootinfo right after PXEBOOTING, since that was the only place to hook it in. Well Mike discovered the "on commit" support in dhcpd, and so that is what we are going to use now. Note that uboot nodes have been using on commit, now all nodes will when BOOTINFO_EVENTS=0. Mike's reportboot program is now a daemon, renamed to report_daemon. The original reportboot program is a little script that writes the arguments from dhcpd to a unix socket to be picked up by the daemon, which does the original work of mapping the IP/Mac to a node id and sending an event. The code has also been modified to run on a subboss using the same node mapping given to to dhcpd, reconstituted as DBM file by subboss_dhcpd_makeconf. The reason for using a daemon this way is so that we do not hang up dhcpd in case we cannot get to the event system. The unix domain socket will give us some amount of buffering, but I suspect that any event problem will eat that space up quickly, and I will be back to revisit this (probably want reportboot to not block on its write to the socket). pxeboot changed to not send PXEBOOTING or BOOTING when BOOTINFO_EVENTS=0.
Showing with 529 additions and 283 deletions