From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <47d3cbd4463e137227523e39b75b97ee@collyer.net> To: 9fans@cse.psu.edu Subject: Re: [9fans] Small patch to tftpd; command line announce strings. From: geoff@collyer.net In-Reply-To: <200301222255.h0MMtFw01079@augusta.math.psu.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Date: Wed, 22 Jan 2003 17:22:21 -0800 Topicbox-Message-UUID: 46000a18-eacb-11e9-9e20-41e7f4b1d025 Listen doesn't need a -x; its last argument is the network directory to use: aux/listen -t /bin/service.auth -d /bin/service.alt /net.alt/tcp Initialising additional interfaces isn't conveniently packaged up, so I wrote `ifup', which does the job. I use it like this in cpurc: # network services aux/listen -q -t /bin/service.auth -d /bin/service tcp ip/tftpd ip/dhcpd # alternate interfaces & their services switch ($sysname) { case cpu ifup alt 1 $sysname external service.alt ifup gig 2 $sysname-gig local service timesync /net.alt/udp!^((ntp1 ntp2)^.mainecoon.com openbsd) case cpub ifup alt 1 $sysname external service.alt case cpuc ifup gig 1 $sysname-gig local service } The first interface (/net) is handled specially; it often is already configured when cpurc starts. This is ifup: --- #!/bin/rc # ifup mtsfx etherno sysnm ndbfile svcdir - configure /net.$mtsfx # TODO: share a protocol stack between ether0 and gig ether # and just add a route to the other gig host if (! ~ $#* 5) { echo usage: $0 mtsfx etherno sysnm ndbfile svcdir exit usage } rfork e mtsfx=$1 etherno=$2 sysnm=$3 ndbfile=$4 svcdir=$5 mtpt=/net.^$mtsfx ndbf=/lib/ndb/^$ndbfile # merge protocol stack and ethernet interface at mount point bind -b '#l'^$etherno $mtpt bind -b '#I'^$etherno $mtpt # figure out ip, ipgw & ipmask ipgw=dummy # in case ndb doesn't list one for (attr in ip ipgw ipmask) eval `{ndb/ipquery -f $ndbf sys $sysnm $attr | tr ' ' '\12' | sed 1q} # configure interface and set up out-calling machinery # first arg can be "ether" or "gbe" iff it can handle jumbo packets ip/ipconfig -x .$mtsfx -g $ipgw ether $mtpt/ether$etherno $ip $ipmask ndb/cs -x $mtpt -f $ndbf if (! ~ $mtsfx gig) ndb/dns -sx $mtpt -f $ndbf # start up listeners aux/listen -t /bin/service.auth -d /bin/^$svcdir $mtpt^/tcp if (! ~ $mtsfx gig) { ip/dhcpd -x $mtpt -f $ndbf # for the printer ip/rip -x $mtpt } if (~ $mtsfx alt) auth/secstored -x $mtpt ---