$Id$ The hslsd(8) configuration looks like this: hslsd [ -c extensions-socket ] [ -d ] [ -e extension-library ... ] [ -l log-flag ] [ -L log-flag ] [ -M metrics ] [ -o viz-dumpfile ] [ -O ls-dumpfile ] [ -R rt-dumpfile ] [ -s rib-socket ] -f address-family [ -t { ptmp | ptp | bcast | stub } ] -i interface [ -h hello-interval ] [ -m ] [ -w tickle-interval,watchdog-script ] [ -a interface-addr/masklen ] [ -A source-addr ] -q type,instance,value -p peer0-address -p peer1-address . . . -p peerN-address -t [ ptmp | ptp | bcast | stub ] -i interface ... -f address-family ... -a sets an interface's address. If -a is omitted, then the IPv6 link-local address is used (if the address family is IPv6). If the address family is IPv4, the interface address is set to the first address matching 169.254/16. -A sets the address to bind an interface on. If -A is omitted, then the first IPv6 link-local address is used (if the address family is IPv6). If the address family is IPv4, the first address matching 169.254/16. -c tells the name of a UNIX-domain socket where hslsd(8) and a client "rendezvous"; a client uses the socket to inject Opaque LSAs or HSLS packet extensions. -d tells hslsd not to daemonize. It is useful for debugging. -e tells hslsd to load the named extension library. The argument can either be an absolute pathname or it can be of the form ``lib.so[.xx[.yy]]'' in which case the normal library search rules apply. -f Address family indicates whether we want to "speak" IPv4 (inet) or IPv6 (inet6) on the interfaces that follow. XXX Maybe I should abbreviate with -4 and -6 options. -h sets an interface's Hello Interval in seconds. The default is to send a Hello once a second. -i tells which interface we're setting up. Any -t or -f ends the definition of an interface and its peers. -l enables a log message type. -L disables a log message type. Log message types include 'all', 'etx', 'ext', 'hello', and 'lsu'. -m indicates that an interface is the "master interface," that is, its address serves as the router's identity on the net. -M tells hslsd which metrics it should attempt to send when originating an LSA. A comma seperated list may be provided. The flag may be given multiple times. Currently available metrics are: etx, hopcount. -o viz-dumpfile tells hslsd where to dump link-states in the viz format when it receives a SIGUSR2 signal (also, dump them periodically) -O ls-dumpfile tells hslsd where to dump link-states in their "native" ASCII format when it receives a SIGUSR2 signal (also, dump them periodically) -p List an interface's static peers with an -i option. On multicast interfaces (the usual case), hslsd(8) will auto-detect peers (one-hop neighbors), however, on non-multicast interfaces, it will be necessary to name all of the peers that the operator expects to connect, using "-p peer-address". -q On the interface given by the last -i option, originate an Opaque LSA with the given type, instance number, and value. The value is an ASCII string. -R rt-dumpfile tells hslsd where to dump routes (destination+nexthop+metrics) when it receives a SIGUSR2 signal (also, dump them periodically) -t tells the HSLS operating mode on the interfaces that follow: point-to-multipoint (ptmp: the usual case on wireless), point-to-point (ptp: serial connection, maybe VSAT), broadcast (bcast: ethernet, 802.11 AP), or stub (stub: miscellaneous connected network). -w hslsd will execute the script watchdog-script when the interface given by the last -i option receives an HSLS Hello, if at least tickle-interval seconds have passed since hslsd last executed the script. XXX setting this on a stub interface, or any other "inactive" interface, is futile; the daemon really should exit with an error if the operator tries to do this. [Implementation note: I think that I will keep a short stack of the options in effect, and enforce a strict order that the options can get "pushed" onto the stack. Some options (e.g., a new -i option) will pop one or more options (-p, -m, -i, in that order).] $Id$