Browse Source

Plan 9 from Bell Labs 2012-08-07

David du Colombier 11 years ago
parent
commit
2af1de0c65
4 changed files with 56 additions and 44 deletions
  1. 38 34
      sys/man/8/ppp
  2. 9 3
      sys/src/cmd/ip/ppp/ppp.c
  3. 6 6
      sys/src/cmd/vac/vacfs.c
  4. 3 1
      sys/src/libventi/server.c

+ 38 - 34
sys/man/8/ppp

@@ -4,7 +4,7 @@ ppp, pppoe, pptp, pptpd \- point-to-point protocol
 .SH SYNOPSIS
 .B ip/ppp
 [
-.B -CPScdfu
+.B -CPSacdfu
 ] [
 .B -b
 .I baud
@@ -112,11 +112,21 @@ This is useful if a program wants to use
 in a communications stream.  However, the normal mode is to
 specify a communications device, usually a serial line with a modem.
 .PP
-PPP supports the following options:
+.I Ppp
+supports the following options:
+.TP 3
+.B a
+as server, don't request authentication from the client
 .TP
 .B b
 set the baud rate on the communications device
 .TP
+.B c
+disallow packet compression
+.TP
+.B C
+disallow IP header compression
+.TP
 .B f
 make PPP add HDLC framing.  This is necessary when using
 PPP over a serial line or a TCP connection
@@ -133,6 +143,11 @@ for authentication; the default key pattern is
 .B m
 set the maximum transfer unit (default 1450)
 .TP
+.B M
+chat with the modem as specified in the chat file.  Each line in
+the chat file contains a string that is transmitted to the modem
+and the response expected (e.g. 'AT' 'OK')
+.TP
 .B P
 use this as the primary IP interface; set the default
 route through this interface and write its configuration
@@ -144,6 +159,14 @@ communicate over
 .I dev
 instead of standard I/O
 .TP
+.B S
+run as a server
+.TP
+.B t
+before starting the PPP protocol, write
+.I modemcmd
+to the device
+.TP
 .B u
 before starting the PPP protocol with the remote end, shuttle
 bytes between the device and standard I/O until an EOF on standard
@@ -153,28 +176,9 @@ and then type commands at a modem before
 .I ppp
 takes over
 .TP
-.B S
-run as a server
-.TP
-.B t
-before starting the PPP protocol, write
-.I modemcmd
-to the device
-.TP
 .B x
 use the IP stack mounted at
 .I netmntpt
-.TP
-.B M
-chat with the modem as specified in the chat file.  Each line in
-the chat file contains a string that is transmitted to the modem
-and the response expected (e.g. 'AT' 'OK')
-.TP
-.B c
-disallow packet compression
-.TP
-.B C
-disallow ip header compression
 .PD
 .PP
 If both the
@@ -196,25 +200,25 @@ the ethernet device mounted at
 (default
 .BR /net/ether0 ).
 The 
-.I pppoe -specific
+.IR pppoe -specific
 options are:
-.TP
+.TP 3
 .B A
 insist on an access concentrator named
 .I acname
 during PPPoE discovery
 .TP
-.B S
-insist on a service named
-.I srvname
-during PPPoE discovery
-.TP
 .B d
 write debugging output to standard error,
 and pass
 .B -d
 to 
 .I ppp
+.TP
+.B S
+insist on a service named
+.I srvname
+during PPPoE discovery
 .PD
 .PP
 The other options are relayed to 
@@ -245,10 +249,15 @@ The TCP connection is used to control the tunnel while
 packets are sent back and forth using PPP inside of
 GRE packets.
 The options are:
-.TP
+.TP 3
 .B d
 write debugging output to standard error.
 .TP
+.B D
+drop
+.I fraction
+of the received packets.  This is used for testing.
+.TP
 .B p
 use the IP stack mounted at
 .I pppnetmtpt
@@ -257,11 +266,6 @@ to terminate the PPP connection.
 .B w
 set the receive window to
 .IR window .
-.TP
-.B D
-drop
-.I fraction
-of the received packets.  This is used for testing.
 .PD
 .SH SOURCE
 .B /sys/src/cmd/ip/ppp

+ 9 - 3
sys/src/cmd/ip/ppp/ppp.c

@@ -17,6 +17,7 @@ static	int	nocompress;
 static 	int	pppframing = 1;
 static	int	noipcompress;
 static	int	server;
+static	int noauth;
 static	int	nip;		/* number of ip interfaces */
 static	int	dying;		/* flag to signal to all threads its time to go */
 static	int	primary;	/* this is the primary IP interface */
@@ -332,7 +333,7 @@ newstate(PPP *ppp, Pstate *p, int state)
 
 	if(p->proto == Plcp) {
 		if(state == Sopened)
-			setphase(ppp, Pauth);
+			setphase(ppp, noauth? Pnet : Pauth);
 		else if(state == Sclosed)
 			setphase(ppp, Pdead);
 		else if(p->state == Sopened)
@@ -355,7 +356,7 @@ newstate(PPP *ppp, Pstate *p, int state)
 	}
 
 	if(p->proto == Pipcp && state == Sopened) {
-		if(server && ppp->chap->state != Cauthok)
+		if(server && !noauth && ppp->chap->state != Cauthok)
 			abort();
 
 		err = ipopen(ppp);
@@ -2658,7 +2659,9 @@ int interactive;
 void
 usage(void)
 {
-	fprint(2, "usage: ppp [-cCdfPSu] [-b baud] [-k keyspec] [-m mtu] [-p dev] [-s username] [-x netmntpt] [-t modemcmd] [local-addr [remote-addr]]\n");
+	fprint(2, "usage: ppp [-CPSacdfu] [-b baud] [-k keyspec] [-m mtu] "
+		"[-M chatfile] [-p dev] [-x netmntpt] [-t modemcmd] "
+		"[local-addr [remote-addr]]\n");
 	exits("usage");
 }
 
@@ -2691,6 +2694,9 @@ main(int argc, char **argv)
 	modemcmd = nil;
 
 	ARGBEGIN{
+	case 'a':
+		noauth = 1;
+		break;
 	case 'b':
 		baud = atoi(EARGF(usage()));
 		if(baud < 0)

+ 6 - 6
sys/src/cmd/vac/vacfs.c

@@ -200,12 +200,6 @@ threadmain(int argc, char *argv[])
 		mfd[0] = p[0];
 		mfd[1] = p[0];
 		srvfd = p[1];
-	}
-
-	procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG);
-
-	if(!stdio){
-		close(p[0]);
 		if(defsrv){
 			srvname = smprint("/srv/%s", defsrv);
 			fd = create(srvname, OWRITE|ORCLOSE, 0666);
@@ -215,6 +209,12 @@ threadmain(int argc, char *argv[])
 				sysfatal("write %s: %r", srvname);
 			free(srvname);
 		}
+	}
+
+	procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG);
+
+	if(!stdio){
+		close(p[0]);
 		if(defmnt){
 			if(mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0)
 				sysfatal("mount %s: %r", defmnt);

+ 3 - 1
sys/src/libventi/server.c

@@ -180,7 +180,9 @@ vtgetreq(VtSrv *srv)
 	VtReq *r;
 	
 	r = _vtqrecv(srv->q);
-	vtlog(VtServerLog, "<font size=-1>%T %s:</font> vtgetreq %F<br>\n", ((VtSconn*)r->sc)->c->addr, &r->tx);
+	if (r != nil)
+		vtlog(VtServerLog, "<font size=-1>%T %s:</font> vtgetreq %F<br>\n",
+			((VtSconn*)r->sc)->c->addr, &r->tx);
 	return r;
 }