From 37a93ef857ad49bee2059a5a52f50190b7bf040f Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 7 Aug 2012 15:57:42 +0200 Subject: [PATCH] ppp: noauth server option (import from sources) --- sys/man/8/ppp | 72 +++++++++++++++++++++------------------- sys/src/cmd/ip/ppp/ppp.c | 12 +++++-- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/sys/man/8/ppp b/sys/man/8/ppp index d8595983e..2ca24b1db 100644 --- a/sys/man/8/ppp +++ b/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 diff --git a/sys/src/cmd/ip/ppp/ppp.c b/sys/src/cmd/ip/ppp/ppp.c index da27dec26..29962a1b3 100644 --- a/sys/src/cmd/ip/ppp/ppp.c +++ b/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)