In an effort to avoid spending all day messing with computers, I left my laptop at home today. However, I then came down with a fever, and haven't been able to do any of the things I wanted to do other than play with a computer. (Ever try conjugating verbs at 105 degrees? Wow, talk about trippy. I actually thought I was in Moscow at one point.) I decided during the course of the day that I'd really like to pull from sources, but couldn't do that because my file server isn't currently hooked up to the Internet. However, my girlfriend's laptop is, and is running MacOS X, and has X11 and drawterm installed. So, I sat down and wrote a quick clone of aux/trampoline for Unix. This did the trick. Here's how it works: her airport card provides the connection to the Internet. The built-in ethernet connects to the network with the file and CPU server and gets assigned the name, ``rudra''. I run trampoline on her laptop twice to forward connections for both 9fs and ticket to sources. I run drawterm and connect to the CPU server, where I sweep a window, fudge with my namespace a little, and run an ndb/cs that returns rudra when queried for the auth server for the outside.plan9.bell-labs.com domain. Then I start a factotum and just: srv -m tcp!rudra sources /n/sources It works like a charm; sources is now mounted on /n/sources. If I: bind /n/sources /n/dist mount -c /srv/boot /n/inst replica/pull -v /n/dist/dist/replica/inst I end up updating from sources more or less normally. Note, that's a handy way to do an update if you're on a fileserver. You could throw: #!/bin/rc rfork n srv -m tcp!sources.cs.bell-labs.com sources /n/dist mount -c /srv/boot /n/inst replica/pull -v /n/dist/dist/replica/inst Into a script and you're good to go; that's how I update my system. Anyway, I'm including the Unix version of trampoline here for those who might find it useful. Note that I turn off nagle everywhere I possibly can (probably more places than I need), and I also don't worry about a xfer9p function. Since (most) versions of Unix don't do il, and il is going away anyway, it's not needed. TCP already deals with coalescing packets; xfer9p is only needed for 9p over il, where message delimiters are preseved by individual read and write calls. It's also interesting to look at the hoops I jump through to avoid using select(). I fork a couple of processes to handle the I/O, which is okay, but synchronize them using process groups; Unix process groups are cheesey. Any comments are appreciated. I've compiled it under MacOS X and Solaris 8, but only tested it on the Mac. - Dan C.