Browse Source

Plan 9 from Bell Labs 2005-09-08

David du Colombier 18 years ago
parent
commit
2ad0620d40

+ 8 - 8
dist/replica/_plan9.db

@@ -254,7 +254,7 @@
 386/bin/games/mahjongg - 775 sys sys 1125345978 164288
 386/bin/games/memo - 775 sys sys 1125544173 156892
 386/bin/games/playlistfs - 775 sys sys 1105589129 148484
-386/bin/games/sokoban - 775 sys sys 1125345978 163379
+386/bin/games/sokoban - 775 sys sys 1126062686 164713
 386/bin/games/sudoku - 775 sys sys 1117249746 171666
 386/bin/getmap - 775 sys sys 1115950076 65180
 386/bin/gif - 775 sys sys 1125345979 158054
@@ -366,7 +366,7 @@
 386/bin/proof - 775 sys sys 1125346007 178401
 386/bin/ps - 775 sys sys 1125346007 67985
 386/bin/pwd - 775 sys sys 1115950105 36897
-386/bin/ramfs - 775 sys sys 1126005943 89803
+386/bin/ramfs - 775 sys sys 1126062687 89789
 386/bin/rc - 775 sys sys 1119496655 143226
 386/bin/rdbfs - 775 sys sys 1125346008 168500
 386/bin/read - 775 sys sys 1115950106 58046
@@ -7723,7 +7723,7 @@ sys/man/8/stub - 664 sys sys 1044830500 943
 sys/man/8/swap - 664 sys sys 944959679 880
 sys/man/8/timesync - 664 sys sys 1107606876 1717
 sys/man/8/tlssrv - 664 sys sys 1037580152 2594
-sys/man/8/trampoline - 664 sys sys 1094150519 1073
+sys/man/8/trampoline - 664 sys sys 1126104844 1199
 sys/man/8/udpecho - 664 sys sys 954305553 303
 sys/man/8/update - 664 sys sys 961259288 2336
 sys/man/8/venti - 664 sys sys 1069101926 5422
@@ -8076,7 +8076,7 @@ sys/src/9/port/fault.c - 664 sys sys 1123438654 7282
 sys/src/9/port/initcode.c - 664 sys sys 1055688491 574
 sys/src/9/port/latin1.c - 664 sys sys 1015278339 1418
 sys/src/9/port/latin1.h - 664 sys sys 1103633666 3563
-sys/src/9/port/lib.h - 664 sys sys 1091733556 5737
+sys/src/9/port/lib.h - 664 sys sys 1126103560 5770
 sys/src/9/port/log.c - 664 sys sys 1014931175 2860
 sys/src/9/port/master - 664 sys sys 1104430269 505
 sys/src/9/port/master.local - 664 sys sys 1063856961 130
@@ -9564,7 +9564,7 @@ sys/src/cmd/aux/reboot.c - 664 sys sys 1116769521 1429
 sys/src/cmd/aux/searchfs.c - 664 sys sys 1014925091 18176
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/timesync.c - 664 sys sys 1107448970 25758
-sys/src/cmd/aux/trampoline.c - 664 sys sys 1078840013 3521
+sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
 sys/src/cmd/aux/typepasswd.c - 664 sys sys 1014925091 1761
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/vga - 20000000775 sys sys 1018723175 0
@@ -11966,7 +11966,7 @@ sys/src/cmd/ip/imap4d/nodes.c - 664 sys sys 1015013077 3173
 sys/src/cmd/ip/imap4d/search.c - 664 sys sys 1015013077 4520
 sys/src/cmd/ip/imap4d/store.c - 664 sys sys 1066317059 1910
 sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
-sys/src/cmd/ip/ipconfig.c - 664 sys sys 1124936750 34907
+sys/src/cmd/ip/ipconfig.c - 664 sys sys 1126103921 34865
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1089739069 1232
 sys/src/cmd/ip/ping.c - 664 sys sys 1084471009 5651
@@ -14962,5 +14962,5 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-386/bin/games/sokoban - 775 sys sys 1126062686 164713
-386/bin/ramfs - 775 sys sys 1126062687 89789
+386/bin/aux/trampoline - 775 sys sys 1126148864 83645
+386/bin/ip/ipconfig - 775 sys sys 1126148865 137742

+ 6 - 6
dist/replica/plan9.db

@@ -145,7 +145,7 @@
 386/bin/aux/text2post - 775 sys sys 1104121986 78336
 386/bin/aux/timesync - 775 sys sys 1116126317 128213
 386/bin/aux/tr2post - 775 sys sys 1104121987 176578
-386/bin/aux/trampoline - 775 sys sys 1125345960 83284
+386/bin/aux/trampoline - 775 sys sys 1126148864 83645
 386/bin/aux/typepasswd - 775 sys sys 1115950050 69503
 386/bin/aux/vga - 775 sys sys 1125345961 333550
 386/bin/aux/vmmousepoll - 775 sys sys 1032480572 41434
@@ -294,7 +294,7 @@
 386/bin/ip/httpd/webls - 775 sys sys 1125345987 131217
 386/bin/ip/httpd/wikipost - 775 sys sys 1115950085 112655
 386/bin/ip/imap4d - 775 sys sys 1125345987 236488
-386/bin/ip/ipconfig - 775 sys sys 1125345988 137742
+386/bin/ip/ipconfig - 775 sys sys 1126148865 137742
 386/bin/ip/ping - 775 sys sys 1116126319 77010
 386/bin/ip/ppp - 775 sys sys 1125544173 218875
 386/bin/ip/pppoe - 775 sys sys 1125544173 77548
@@ -7723,7 +7723,7 @@ sys/man/8/stub - 664 sys sys 1044830500 943
 sys/man/8/swap - 664 sys sys 944959679 880
 sys/man/8/timesync - 664 sys sys 1107606876 1717
 sys/man/8/tlssrv - 664 sys sys 1037580152 2594
-sys/man/8/trampoline - 664 sys sys 1094150519 1073
+sys/man/8/trampoline - 664 sys sys 1126104844 1199
 sys/man/8/udpecho - 664 sys sys 954305553 303
 sys/man/8/update - 664 sys sys 961259288 2336
 sys/man/8/venti - 664 sys sys 1069101926 5422
@@ -8076,7 +8076,7 @@ sys/src/9/port/fault.c - 664 sys sys 1123438654 7282
 sys/src/9/port/initcode.c - 664 sys sys 1055688491 574
 sys/src/9/port/latin1.c - 664 sys sys 1015278339 1418
 sys/src/9/port/latin1.h - 664 sys sys 1103633666 3563
-sys/src/9/port/lib.h - 664 sys sys 1091733556 5737
+sys/src/9/port/lib.h - 664 sys sys 1126103560 5770
 sys/src/9/port/log.c - 664 sys sys 1014931175 2860
 sys/src/9/port/master - 664 sys sys 1104430269 505
 sys/src/9/port/master.local - 664 sys sys 1063856961 130
@@ -9564,7 +9564,7 @@ sys/src/cmd/aux/reboot.c - 664 sys sys 1116769521 1429
 sys/src/cmd/aux/searchfs.c - 664 sys sys 1014925091 18176
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/timesync.c - 664 sys sys 1107448970 25758
-sys/src/cmd/aux/trampoline.c - 664 sys sys 1078840013 3521
+sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
 sys/src/cmd/aux/typepasswd.c - 664 sys sys 1014925091 1761
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/vga - 20000000775 sys sys 1018723175 0
@@ -11966,7 +11966,7 @@ sys/src/cmd/ip/imap4d/nodes.c - 664 sys sys 1015013077 3173
 sys/src/cmd/ip/imap4d/search.c - 664 sys sys 1015013077 4520
 sys/src/cmd/ip/imap4d/store.c - 664 sys sys 1066317059 1910
 sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
-sys/src/cmd/ip/ipconfig.c - 664 sys sys 1124936750 34907
+sys/src/cmd/ip/ipconfig.c - 664 sys sys 1126103921 34865
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1089739069 1232
 sys/src/cmd/ip/ping.c - 664 sys sys 1084471009 5651

+ 6 - 0
dist/replica/plan9.log

@@ -21246,3 +21246,9 @@
 1126031509 0 c sys/src/cmd/sleep.c - 664 sys sys 1126031186 170
 1126063917 0 c 386/bin/games/sokoban - 775 sys sys 1126062686 164713
 1126063917 1 c 386/bin/ramfs - 775 sys sys 1126062687 89789
+1126105206 0 c sys/man/8/trampoline - 664 sys sys 1126104844 1199
+1126105206 1 c sys/src/9/port/lib.h - 664 sys sys 1126103560 5770
+1126105206 2 c sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
+1126105206 3 c sys/src/cmd/ip/ipconfig.c - 664 sys sys 1126103921 34865
+1126150216 0 c 386/bin/aux/trampoline - 775 sys sys 1126148864 83645
+1126150216 1 c 386/bin/ip/ipconfig - 775 sys sys 1126148865 137742

+ 24 - 10
sys/man/8/trampoline

@@ -4,10 +4,17 @@ trampoline \- forward incoming calls to another address
 .SH SYNOPSIS
 .B aux/trampoline
 [
-.B -m9
+.B -9
+]
+[
+.B -a
+.I altaddr
+]
+[
+.B -m
+.I netdir
 ]
 .I addr
-.RI [ netdir ]
 .SH DESCRIPTION
 .I Trampoline
 can be used in a service file (see
@@ -20,16 +27,22 @@ dials
 .I addr
 and copies data between that connection
 and its own standard input and output.
-Use the
+.PP
+The options are:
+.TP
 .B -9
-option if the connection carries only unencrypted 9P messages, to allow
+The connection carries only 9P messages.  In this case
 .I trampoline
-to size its buffer automatically.
-.PP
-Forwarding can be restricted to a particular calling machine,
-using the
-.B -m
-option.
+will relay whole messages at a time.
+.TP
+.BI -a " altaddr
+Dial
+.I altaddr
+and relay between the two network connections,
+ignoring standard input and output.
+.TP
+.BI -m " netdir
+Restrict forwarding to particular machines.
 .I Netdir
 must be the incoming call directory.
 .I Trampoline
@@ -42,6 +55,7 @@ contains an entry with
 and the attribute
 .BR trampok .
 If no such entry is found, the call is rejected.
+.PD
 .SH FILES
 .TF /sys/log/trampoline
 .TP

+ 1 - 0
sys/src/9/port/lib.h

@@ -43,6 +43,7 @@ extern	int	runetochar(char*, Rune*);
 extern	int	chartorune(Rune*, char*);
 extern	char*	utfrune(char*, long);
 extern	int	utflen(char*);
+extern	int	utfnlen(char*, long);
 extern	int	runelen(long);
 
 extern	int	abs(int);

+ 39 - 19
sys/src/cmd/aux/trampoline.c

@@ -26,31 +26,43 @@ void		freeendpoints(Endpoints*);
 char*		iptomac(char*, char*);
 int		macok(char*);
 
+void
+usage(void)
+{
+	fprint(2, "usage: trampoline [-9] [-a addr] [-m netdir] addr\n");
+	exits("usage");
+}
+
 void
 main(int argc, char **argv)
 {
-	int fd;
-	int checkmac = 0;
-	Endpoints *ep;
-	char *mac;
+	char *altaddr, *checkmac, *mac;
+	int fd, fd0, fd1;
 	void (*x)(int, int);
+	Endpoints *ep;
 
+	checkmac = nil;
+	altaddr = nil;
 	x = xfer;
 	ARGBEGIN{
-	case 'm':
-		checkmac = 1;
-		break;
 	case '9':
 		x = xfer9p;
 		break;
+	case 'a':
+		altaddr = EARGF(usage());
+		break;
+	case 'm':
+		checkmac = EARGF(usage());
+		break;
+	default:
+		usage();
 	}ARGEND;
 
-	if(argc < 1){
-		fprint(2, "usage: %s dialstring\n", argv0);
-		exits("usage");
-	}
-	if(checkmac && argc > 1){
-		ep = getendpoints(argv[1]);
+	if(argc != 1)
+		usage();
+
+	if(checkmac){
+		ep = getendpoints(checkmac);
 		mac = iptomac(ep->rsys, ep->net);
 		if(!macok(mac)){
 			syslog(0, "trampoline", "badmac %s from %s!%s for %s!%s on %s",
@@ -58,21 +70,29 @@ main(int argc, char **argv)
 			exits("bad mac");
 		}
 	}
-	fd = dial(argv[0], 0, 0, 0);
-	if(fd < 0){
-		fprint(2, "%s: dialing %s: %r\n", argv0, argv[0]);
-		exits("dial");
+	
+	fd0 = 0;
+	fd1 = 1;
+	if(altaddr){
+		fd0 = dial(altaddr, 0, 0, 0);
+		if(fd0 < 0)
+			sysfatal("dial %s: %r", altaddr);
+		fd1 = fd0;
 	}
+	fd = dial(argv[0], 0, 0, 0);
+	if(fd < 0)
+		sysfatal("dial %s: %r", argv[0]);
+
 	rfork(RFNOTEG);
 	switch(fork()){
 	case -1:
 		fprint(2, "%s: fork: %r\n", argv0);
 		exits("dial");
 	case 0:
-		(*x)(0, fd);
+		(*x)(fd0, fd);
 		break;
 	default:
-		(*x)(fd, 1);
+		(*x)(fd, fd1);
 		break;
 	}
 	postnote(PNGROUP, getpid(), "die yankee pig dog");

+ 0 - 1
sys/src/cmd/ip/ipconfig.c

@@ -37,7 +37,6 @@ struct {
 	char	*dev;
 	char	mpoint[32];
 	int	cfd;			// ifc control channel
-	int	dfd;			// ifc data channel (for ppp)
 	char	*cputype;
 	uchar	hwa[32];		// hardware address
 	int	hwatype;