Add versioning support. This has been a minor problem, and is going to
be a worse problem with remote nodes, where we will not be able to keep everyone up to date like we can in the local testbed case. I ran into this yesterday with the key distribution stuff for RON nodes, which require incompatable changes to the accounts info that is returned. So, tmcc now takes a [-v version] argument, which is passed through to tmcd in the request field. tmcd passes that version number (assumed to be an int) down, and the routines should look at that. We will need to make some structural changes in tmcd as we get more version skew, but for now this is fine. Anyway, tmcd/tmcc have a compiled in DEFAULT_VERSION (see decls.h). If no version is supplied, assume DEFAULT_VERSION (2), which covers all of the old images and yet to be updated current images. As the new tmcc makes it out, versions will be sent through. VERY IMPORTANT: The current version is placed in libsetup.pm. When you make incompatible changes, bump the version number is decls.h and libsetup.pm, recompile and install a new tmcc and the new libsetup.pm on the clients (and of course, tmcd on the server). Fixes to termination; Add signal handlers for HUP,INT,TERM, and make sure all the children get killed off before exiting. We still have some problems though; I think the children should wait until the current request is completed before exiting. I'll give that some more thought though since it easy to mess that stuff up (leave zombies). Add build_info to startup message to syslog. Good for debugging. Some minor cleanup and restructuring. Mike is gonna hate it.
Showing with 179 additions and 176 deletions