SGI
Open Source
FAM OSS on IRIX

These are notes on compatibility issues between the open-source version of fam and existing fam clients on IRIX, such as the desktop, the File Manager, mediad, MediaMail, and others.

The open-source fam is the same fam that will be included in IRIX 6.5.8. The good news is that you can build & run it now; the bad news is that you might not actually want to do that. Here's why:

The versions of libfam distributed with all versions of IRIX through 6.5.7 do not perform any authentication. That is, an application talking to fam through libfam doesn't prove to the fam daemon that it is who it says it is. That wouldn't matter, except that the previous version of libfam was only available as a static archive, not a shared library. That means every client application which was compiled with libfam has the non-authenticating fam communication built in.

That means when you install the new fam (which treats clients as untrusted until they authenticate themselves), your existing fam clients (like everything in the desktop) won't attempt to authenticate themselves, and will only be able to monitor files which can be stat'ed by "nobody" (or whoever you set as the untrusted user in your fam.conf). This means either you need to make your files stat'able by "nobody" (in which case any client will be able to fam them, so there's not much reason to switch to the new version), or your existing fam clients will pretty much be broken (in which case... there's not much reason to switch to the new version). "So what the heck can I do with this version of fam on IRIX?"

Even if you can't recompile your fam clients, there is one way which you might want to set up fam if your machine isn't behind a firewall. Basically the idea is that you'll set up fam to run in insecure-compatibility mode so that your old clients will continue to work, but you'll have it run local-only so that the only way people can talk to fam is if they're able to log in to your machine.

Before doing this, though, be aware that you will break one of the neat things about fam. Normally, when you try to monitor a file which is mounted from a remote host, your local fam will ask the remote fam to monitor the file rather than polling over the network. That means less work and less network traffic for everybody. The instructions below will break this. If you're not in an environment where you make much use of NFS-mounted filesystems, then proceed.

First, comment out or remove fam from your /etc/inetd.conf and make sure there is no running fam or fam clients. (Note that killing fam without first stopping its clients can cause unhappiness. MediaMail, for example, will croak.)

Next, make an init script which starts fam. It needs to be started after the portmapper. Make sure fam is started with the "-T 0" flag so that it doesn't exit when its last client disconnects. (You want it to hang around so that if another fam client starts up, fam is already there.) Also, make fam run local-only and in compatibility mode, either by passing it the -L and -C command-line flags, or by setting the local_only and insecure_compatibility options in the config file. (See the fam(1M) man page included with this version.)

Finally, verify again that fam isn't running, run the init script, verify that fam is running, and try it out.

I haven't actually tried this myself; if you have an approach which works (or which fails in an intersting way), share with the mailing list.