Date: Tue, 13 Feb 1996 08:32:24 -0700 From: Nate Williams <nate@sri.MT.net> To: "Jay L. West" <jlwest@tseinc.com> Cc: nate@sri.MT.net, freebsd-questions@freebsd.org Subject: Auto-dial iijppp (was Re: Several misc. questions on user mode PPP) Message-ID: <199602131532.IAA22359@rocky.sri.MT.net> In-Reply-To: <199602130741.HAA06766@bsd.tseinc.com> References: <199602130741.HAA06766@bsd.tseinc.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> >> I think he was just looking for a somewhat more elegant way to > >> starting the interface, as opposed to editing /etc/netstart, which is > >> now supposed to be sacrosanct. Try the following: > > > >Hmm, that's not the impression I got. He was using -auto already, but > >needed to pint the remote host to get things started. > > I was wanting to have the system bring up the link (ie. dial) upon bootup > without haveing to do the ping command to 'fudge' an outgoing packet. But I > do think the start_if.interface script is rather elegant, and will do it > that way. (Albeit, that doesn't solve the original question). OK, here are my 'ddial' patches updated to the most recent version of ppp in -stable. If you use 'ppp -ddial host', it will do it's darndest to keep the link up *all* the time, no matter if there is traffic needing to be sent. Nate --------- Index: command.c =================================================================== RCS file: /home/CVS/src/usr.sbin/ppp/command.c,v retrieving revision 1.5.4.3 diff -c -r1.5.4.3 command.c *** command.c 1996/02/05 17:02:52 1.5.4.3 --- command.c 1996/02/13 15:26:28 *************** *** 99,105 **** { char *mes = NULL; ! if (mode & MODE_AUTO) mes = "Working in auto mode."; else if (mode & MODE_DIRECT) mes = "Working in direct mode."; --- 99,107 ---- { char *mes = NULL; ! if (mode & MODE_DDIAL) ! mes = "Working in dedicated dial mode."; ! else if (mode & MODE_AUTO) mes = "Working in auto mode."; else if (mode & MODE_DIRECT) mes = "Working in direct mode."; Index: defs.h =================================================================== RCS file: /home/CVS/src/usr.sbin/ppp/defs.h,v retrieving revision 1.2.4.2 diff -c -r1.2.4.2 defs.h *** defs.h 1996/02/05 17:02:54 1.2.4.2 --- defs.h 1996/02/13 15:26:29 *************** *** 59,64 **** --- 59,65 ---- #define MODE_AUTO 2 /* Auto calling mode */ #define MODE_DIRECT 4 /* Direct connection mode */ #define MODE_DEDICATED 8 /* Dedicated line mode */ + #define MODE_DDIAL 16 /* Dedicated dialing line mode */ #define EX_NORMAL 0 #define EX_START 1 Index: ip.c =================================================================== RCS file: /home/CVS/src/usr.sbin/ppp/ip.c,v retrieving revision 1.4.4.2 diff -c -r1.4.4.2 ip.c *** ip.c 1996/02/05 17:03:02 1.4.4.2 --- ip.c 1996/02/13 15:26:33 *************** *** 53,59 **** void StartIdleTimer() { ! if (!(mode & MODE_DEDICATED)) { StopTimer(&IdleTimer); IdleTimer.func = IdleTimeout; IdleTimer.load = VarIdleTimeout * SECTICKS; --- 53,59 ---- void StartIdleTimer() { ! if (!(mode & MODE_DEDICATED|MODE_DDIAL)) { StopTimer(&IdleTimer); IdleTimer.func = IdleTimeout; IdleTimer.load = VarIdleTimeout * SECTICKS; *************** *** 74,80 **** static void RestartIdleTimer() { ! if (!(mode & MODE_DEDICATED) && ipKeepAlive ) { StartTimer(&IdleTimer); ipIdleSecs = 0; } --- 74,80 ---- static void RestartIdleTimer() { ! if (!(mode & MODE_DEDICATED|MODE_DDIAL) && ipKeepAlive ) { StartTimer(&IdleTimer); ipIdleSecs = 0; } Index: main.c =================================================================== RCS file: /home/CVS/src/usr.sbin/ppp/main.c,v retrieving revision 1.5.4.3 diff -c -r1.5.4.3 main.c *** main.c 1996/02/05 17:03:09 1.5.4.3 --- main.c 1996/02/13 15:26:39 *************** *** 204,210 **** void Usage() { ! fprintf(stderr, "Usage: ppp [-auto | -direct | -dedicated] [system]\n"); exit(EX_START); } --- 204,211 ---- void Usage() { ! fprintf(stderr, ! "Usage: ppp [-auto | -direct | -dedicated | -ddial ] [system]\n"); exit(EX_START); } *************** *** 223,228 **** --- 224,231 ---- mode |= MODE_DIRECT; else if (strcmp(cp, "dedicated") == 0) mode |= MODE_DEDICATED; + else if (strcmp(cp, "ddial") == 0) + mode |= MODE_DDIAL|MODE_AUTO; else Usage(); optc++; *************** *** 294,302 **** printf("Interactive mode\n"); netfd = 0; } else if (mode & MODE_AUTO) { ! printf("Automatic mode\n"); if (dstsystem == NULL) { ! fprintf(stderr, "Destination system must be specified in auto mode.\n"); exit(EX_START); } } --- 297,306 ---- printf("Interactive mode\n"); netfd = 0; } else if (mode & MODE_AUTO) { ! printf("Automatic Dialer mode\n"); if (dstsystem == NULL) { ! fprintf(stderr, ! "Destination system must be specified in auto or ddial mode.\n"); exit(EX_START); } } *************** *** 335,341 **** Cleanup(EX_START); } if ((mode & MODE_AUTO) && DefHisAddress.ipaddr.s_addr == INADDR_ANY) { ! fprintf(stderr, "Must specify dstaddr with auto mode.\n"); Cleanup(EX_START); } } --- 339,345 ---- Cleanup(EX_START); } if ((mode & MODE_AUTO) && DefHisAddress.ipaddr.s_addr == INADDR_ANY) { ! fprintf(stderr, "Must specify dstaddr with auto or ddial mode.\n"); Cleanup(EX_START); } } *************** *** 639,644 **** --- 643,655 ---- tries = 0; for (;;) { FD_ZERO(&rfds); FD_ZERO(&wfds); FD_ZERO(&efds); + + /* + * If the link is down and we're in DDIAL mode, bring it back + * up. + */ + if (mode & MODE_DDIAL && LcpFsm.state <= ST_CLOSED) + dial_up = TRUE; /* * If Ip packet for output is enqueued and require dial up, Index: ppp.8 =================================================================== RCS file: /home/CVS/src/usr.sbin/ppp/ppp.8,v retrieving revision 1.8.4.3 diff -c -r1.8.4.3 ppp.8 *** ppp.8 1996/02/05 17:03:17 1.8.4.3 --- ppp.8 1996/02/13 15:26:44 *************** *** 9,15 **** Point to Point Protocol (aka iijppp) .Sh SYNOPSIS .Nm ! .Op Fl auto \*(Ba Fl direct Fl dedicated .Sh DESCRIPTION This is a user process .Em PPP --- 9,15 ---- Point to Point Protocol (aka iijppp) .Sh SYNOPSIS .Nm ! .Op Fl auto \*(Ba Fl direct \*(Ba Fl dedicated \*(Ba Fl ddial .Sh DESCRIPTION This is a user process .Em PPP *************** *** 52,57 **** --- 52,64 ---- link. When this happens, the daemon automatically dials and establishes the connection. + In almost the same manner ddial mode (dedicated dialing or demon dialing) + also automatically dials and establishes the connection. However, it + differs in that it will dial the remote site any time it detects the + link is down, even if there are no packets to be sent. This mode is + useful for full-time connections who worry less about line charges + and more about being connected full time. + .It Supports server-side PPP connections. Can act as server which accepts incoming .Em PPP *************** *** 274,279 **** --- 281,288 ---- To play with demand dialing, you must use the .Fl auto + or + .Fl ddial option. You must also specify the destination label in .Pa /etc/ppp/ppp.conf to use. It should contain the *************** *** 287,292 **** --- 296,303 ---- When .Fl auto + or + .Fl ddial is specified, .Nm runs as a daemon but you can still configure or examine its
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602131532.IAA22359>