Been busy with meetings and research. The meetings I won't bore you with, but the research is interesting.
We have quite a few routers and the number is expected to increase over the next year or so. There was also an incident two weeks ago where I got horribly confused over two T1s and it took a few hours to unravel exactly what addresses got assigned to which T1.
The problem: while I have copies of all the router configurations, I don't have said configurations under revision control, which means I only have a copy of the latest versions. Last week at a meeting, it was brought up that maybe, just maybe, we might want to consider keeping older versions of the configuration files.
There are a number of revision control systems to choose from—CVS [1], Subversion [2], darcs [3], GNU arch [4], git [5]. Yes, they're primarily used for source code, but any textual data can be historically saved using these systems. So there's no real problem with revision control of the configuration files.
It's also easy to get the configurations off the routers. All our routers support TFTP (Trivial File Transport Protocol). It was pretty straightforward to set up a TFTP server on our network to collect all the configurations and to secure it against any unwanted traffic (TFTP is a rather insecure protocol).
The real problem comes in marrying the TFTP server with a revision control system. What I'd like is for the TFTP server to accept the configuration from a router, and immediately dump it into the revision control system. I already have the habit of issuing both write and copy running-config tftp: on the router. I don't really want to have to log into the TFTP server to run revision-control-system-du-jour commit, regardless of how simple it is.
Especially since we're allowing another company to use our TFTP server to backup their routers (it's a partnership thang), and these other people are hard-core Windows users (not that there's anything wrong with that)—I'm sure the last thing they want to think about is logging into a Unix system to issue revision-control-system-du-jour commit.
So I'm looking into modifying an existing TFTP server. You would think that TFTP, a protocol so simple that it takes TCP/IP Illustrated, Volume I: The Protocols [6], a 576 page behemoth of a book, only five pages to cover, would be a simple program. Even in C. Nope. It's a horribly written maze of #ifdefs and gotos.
Joy.
[1] http://www.nongnu.org/cvs/
[2] http://subversion.tigris.org/
[4] http://www.gnu.org/software/gnu-arch/
[6] http://www.amazon.com/exec/obidos/ASIN/0201633469/conmanlaborat-20