ppp.8 revision 96324
1changequote({,})dnl 2changecom(,)dnl 3.\" 4.\" Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> 5.\" All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD: head/usr.sbin/ppp/ppp.8.m4 96324 2002-05-10 03:11:35Z brian $ 29.\" 30.Dd September 20, 1995 31.Dt PPP 8 32.Os 33.Sh NAME 34.Nm ppp 35.Nd Point to Point Protocol (a.k.a. user-ppp) 36.Sh SYNOPSIS 37.Nm 38.Op Fl Va mode 39.Op Fl nat 40.Op Fl quiet 41.Op Fl unit Ns Ar N 42.Op Ar system ... 43.Sh DESCRIPTION 44This is a user process 45.Em PPP 46software package. 47Normally, 48.Em PPP 49is implemented as a part of the kernel (e.g., as managed by 50.Xr pppd 8 ) 51and it's thus somewhat hard to debug and/or modify its behaviour. 52However, in this implementation 53.Em PPP 54is done as a user process with the help of the 55tunnel device driver (tun). 56.Pp 57The 58.Fl nat 59flag does the equivalent of a 60.Dq nat enable yes , 61enabling 62.Nm Ns No 's 63network address translation features. 64This allows 65.Nm 66to act as a NAT or masquerading engine for all machines on an internal 67LAN. 68ifdef({LOCALNAT},{},{Refer to 69.Xr libalias 3 70for details on the technical side of the NAT engine. 71})dnl 72Refer to the 73.Sx NETWORK ADDRESS TRANSLATION (PACKET ALIASING) 74section of this manual page for details on how to configure NAT in 75.Nm . 76.Pp 77The 78.Fl quiet 79flag tells 80.Nm 81to be silent at startup rather than displaying the mode and interface 82to standard output. 83.Pp 84The 85.Fl unit 86flag tells 87.Nm 88to only attempt to open 89.Pa /dev/tun Ns Ar N . 90Normally, 91.Nm 92will start with a value of 0 for 93.Ar N , 94and keep trying to open a tunnel device by incrementing the value of 95.Ar N 96by one each time until it succeeds. 97If it fails three times in a row 98because the device file is missing, it gives up. 99.Pp 100The following 101.Va mode Ns No s 102are understood by 103.Nm : 104.Bl -tag -width XXX -offset XXX 105.It Fl auto 106.Nm 107opens the tun interface, configures it then goes into the background. 108The link isn't brought up until outgoing data is detected on the tun 109interface at which point 110.Nm 111attempts to bring up the link. 112Packets received (including the first one) while 113.Nm 114is trying to bring the link up will remain queued for a default of 1152 minutes. 116See the 117.Dq set choked 118command below. 119.Pp 120In 121.Fl auto 122mode, at least one 123.Dq system 124must be given on the command line (see below) and a 125.Dq set ifaddr 126must be done in the system profile that specifies a peer IP address to 127use when configuring the interface. 128Something like 129.Dq 10.0.0.1/0 130is usually appropriate. 131See the 132.Dq pmdemand 133system in 134.Pa /usr/share/examples/ppp/ppp.conf.sample 135for an example. 136.It Fl background 137Here, 138.Nm 139attempts to establish a connection with the peer immediately. 140If it succeeds, 141.Nm 142goes into the background and the parent process returns an exit code 143of 0. 144If it fails, 145.Nm 146exits with a non-zero result. 147.It Fl foreground 148In foreground mode, 149.Nm 150attempts to establish a connection with the peer immediately, but never 151becomes a daemon. 152The link is created in background mode. 153This is useful if you wish to control 154.Nm Ns No 's 155invocation from another process. 156.It Fl direct 157This is used for receiving incoming connections. 158.Nm 159ignores the 160.Dq set device 161line and uses descriptor 0 as the link. 162.Pp 163If callback is configured, 164.Nm 165will use the 166.Dq set device 167information when dialing back. 168.It Fl dedicated 169This option is designed for machines connected with a dedicated 170wire. 171.Nm 172will always keep the device open and will never use any configured 173chat scripts. 174.It Fl ddial 175This mode is equivalent to 176.Fl auto 177mode except that 178.Nm 179will bring the link back up any time it's dropped for any reason. 180.It Fl interactive 181This is a no-op, and gives the same behaviour as if none of the above 182modes have been specified. 183.Nm 184loads any sections specified on the command line then provides an 185interactive prompt. 186.El 187.Pp 188One or more configuration entries or systems 189(as specified in 190.Pa /etc/ppp/ppp.conf ) 191may also be specified on the command line. 192.Nm 193will read the 194.Dq default 195system from 196.Pa /etc/ppp/ppp.conf 197at startup, followed by each of the systems specified on the command line. 198.Sh Major Features 199.Bl -diag 200.It Provides an interactive user interface. 201Using its command mode, the user can 202easily enter commands to establish the connection with the remote end, check 203the status of connection and close the connection. 204All functions can also be optionally password protected for security. 205.It Supports both manual and automatic dialing. 206Interactive mode has a 207.Dq term 208command which enables you to talk to the device directly. 209When you are connected to the remote peer and it starts to talk 210.Em PPP , 211.Nm 212detects it and switches to packet mode automatically. 213Once you have 214determined the proper sequence for connecting with the remote host, you 215can write a chat script to {define} the necessary dialing and login 216procedure for later convenience. 217.It Supports on-demand dialup capability. 218By using 219.Fl auto 220mode, 221.Nm 222will act as a daemon and wait for a packet to be sent over the 223.Em PPP 224link. 225When this happens, the daemon automatically dials and establishes the 226connection. 227In almost the same manner 228.Fl ddial 229mode (direct-dial mode) also automatically dials and establishes the 230connection. 231However, it differs in that it will dial the remote site 232any time it detects the link is down, even if there are no packets to be 233sent. 234This mode is useful for full-time connections where we worry less 235about line charges and more about being connected full time. 236A third 237.Fl dedicated 238mode is also available. 239This mode is targeted at a dedicated link between two machines. 240.Nm 241will never voluntarily quit from dedicated mode - you must send it the 242.Dq quit all 243command via its diagnostic socket. 244A 245.Dv SIGHUP 246will force an LCP renegotiation, and a 247.Dv SIGTERM 248will force it to exit. 249.It Supports client callback. 250.Nm 251can use either the standard LCP callback protocol or the Microsoft 252CallBack Control Protocol (ftp://ftp.microsoft.com/developr/rfc/cbcp.txt). 253.It Supports NAT or packet aliasing. 254Packet aliasing (a.k.a. IP masquerading) allows computers on a 255private, unregistered network to access the Internet. 256The 257.Em PPP 258host acts as a masquerading gateway. 259IP addresses as well as TCP and 260UDP port numbers are NAT'd for outgoing packets and de-NAT'd for 261returning packets. 262.It Supports background PPP connections. 263In background mode, if 264.Nm 265successfully establishes the connection, it will become a daemon. 266Otherwise, it will exit with an error. 267This allows the setup of 268scripts that wish to execute certain commands only if the connection 269is successfully established. 270.It Supports server-side PPP connections. 271In direct mode, 272.Nm 273acts as server which accepts incoming 274.Em PPP 275connections on stdin/stdout. 276.It "Supports PAP and CHAP (rfc 1994, 2433 and 2759) authentication. 277With PAP or CHAP, it is possible to skip the Unix style 278.Xr login 1 279procedure, and use the 280.Em PPP 281protocol for authentication instead. 282If the peer requests Microsoft CHAP authentication and 283.Nm 284is compiled with DES support, an appropriate MD4/DES response will be 285made. 286.It Supports RADIUS (rfc 2138) authentication. 287An extension to PAP and CHAP, 288.Em \&R Ns No emote 289.Em \&A Ns No ccess 290.Em \&D Ns No ial 291.Em \&I Ns No n 292.Em \&U Ns No ser 293.Em \&S Ns No ervice 294allows authentication information to be stored in a central or 295distributed database along with various per-user framed connection 296characteristics. 297ifdef({LOCALRAD},{},{If 298.Xr libradius 3 299is available at compile time, 300.Nm 301will use it to make 302.Em RADIUS 303requests when configured to do so. 304})dnl 305.It Supports Proxy Arp. 306.Nm 307can be configured to make one or more proxy arp entries on behalf of 308the peer. 309This allows routing from the peer to the LAN without 310configuring each machine on that LAN. 311.It Supports packet filtering. 312User can {define} four kinds of filters: the 313.Em in 314filter for incoming packets, the 315.Em out 316filter for outgoing packets, the 317.Em dial 318filter to {define} a dialing trigger packet and the 319.Em alive 320filter for keeping a connection alive with the trigger packet. 321.It Tunnel driver supports bpf. 322The user can use 323.Xr tcpdump 1 324to check the packet flow over the 325.Em PPP 326link. 327.It Supports PPP over TCP and PPP over UDP. 328If a device name is specified as 329.Em host Ns No : Ns Em port Ns 330.Xo 331.Op / Ns tcp|udp , 332.Xc 333.Nm 334will open a TCP or UDP connection for transporting data rather than using a 335conventional serial device. 336UDP connections force 337.Nm 338into synchronous mode. 339.It Supports PPP over ISDN. 340If 341.Nm 342is given a raw B-channel i4b device to open as a link, it's able to talk 343to the 344.Xr isdnd 8 345daemon to establish an ISDN connection. 346.It Supports PPP over Ethernet (rfc 2516). 347If 348.Nm 349is given a device specification of the format 350.No PPPoE: Ns Ar iface Ns Xo 351.Op \&: Ns Ar provider Ns 352.Xc 353and if 354.Xr netgraph 4 355is available, 356.Nm 357will attempt talk 358.Em PPP 359over Ethernet to 360.Ar provider 361using the 362.Ar iface 363network interface. 364.Pp 365On systems that do not support 366.Xr netgraph 4 , 367an external program such as 368.Xr pppoe 8 369may be used. 370.It "Supports IETF draft Predictor-1 (rfc 1978) and DEFLATE (rfc 1979) compression." 371.Nm 372supports not only VJ-compression but also Predictor-1 and DEFLATE compression. 373Normally, a modem has built-in compression (e.g., v42.bis) and the system 374may receive higher data rates from it as a result of such compression. 375While this is generally a good thing in most other situations, this 376higher speed data imposes a penalty on the system by increasing the 377number of serial interrupts the system has to process in talking to the 378modem and also increases latency. 379Unlike VJ-compression, Predictor-1 and DEFLATE compression pre-compresses 380.Em all 381network traffic flowing through the link, thus reducing overheads to a 382minimum. 383.It Supports Microsoft's IPCP extensions (rfc 1877). 384Name Server Addresses and NetBIOS Name Server Addresses can be negotiated 385with clients using the Microsoft 386.Em PPP 387stack (i.e., Win95, WinNT) 388.It Supports Multi-link PPP (rfc 1990) 389It is possible to configure 390.Nm 391to open more than one physical connection to the peer, combining the 392bandwidth of all links for better throughput. 393.It Supports MPPE (draft-ietf-pppext-mppe) 394MPPE is Microsoft Point to Point Encryption scheme. 395It is possible to configure 396.Nm 397to participate in Microsoft's Windows VPN. 398For now, 399.Nm 400can only get encryption keys from CHAP 81 authentication. 401.Nm 402must be compiled with DES for MPPE to operate. 403.It Supports IPV6CP (rfc 2023). 404An IPv6 connection can be made in addition to or instead of the normal 405IPv4 connection. 406.El 407.Sh PERMISSIONS 408.Nm 409is installed as user 410.Dv root 411and group 412.Dv network , 413with permissions 414.Dv 04554 . 415By default, 416.Nm 417will not run if the invoking user id is not zero. 418This may be overridden by using the 419.Dq allow users 420command in 421.Pa /etc/ppp/ppp.conf . 422When running as a normal user, 423.Nm 424switches to user id 0 in order to alter the system routing table, set up 425system lock files and read the ppp configuration files. 426All external commands (executed via the "shell" or "!bg" commands) are executed 427as the user id that invoked 428.Nm . 429Refer to the 430.Sq ID0 431logging facility if you're interested in what exactly is done as user id 432zero. 433.Sh GETTING STARTED 434When you first run 435.Nm 436you may need to deal with some initial configuration details. 437.Bl -bullet 438.It 439Your kernel must {include} a tunnel device (the GENERIC kernel includes 440one by default). 441If it doesn't, or if you require more than one tun 442interface, you'll need to rebuild your kernel with the following line in 443your kernel configuration file: 444.Pp 445.Dl pseudo-device tun N 446.Pp 447where 448.Ar N 449is the maximum number of 450.Em PPP 451connections you wish to support. 452.It 453Check your 454.Pa /dev 455directory for the tunnel device entries 456.Pa /dev/tunN , 457where 458.Sq N 459represents the number of the tun device, starting at zero. 460If they don't exist, you can create them by running "sh ./MAKEDEV tunN". 461This will create tun devices 0 through 462.Ar N . 463.It 464Make sure that your system has a group named 465.Dq network 466in the 467.Pa /etc/group 468file and that the group contains the names of all users expected to use 469.Nm . 470Refer to the 471.Xr group 5 472manual page for details. 473Each of these users must also be given access using the 474.Dq allow users 475command in 476.Pa /etc/ppp/ppp.conf . 477.It 478Create a log file. 479.Nm 480uses 481.Xr syslog 3 482to log information. 483A common log file name is 484.Pa /var/log/ppp.log . 485To make output go to this file, put the following lines in the 486.Pa /etc/syslog.conf 487file: 488.Bd -literal -offset indent 489!ppp 490*.*<TAB>/var/log/ppp.log 491.Ed 492.Pp 493It is possible to have more than one 494.Em PPP 495log file by creating a link to the 496.Nm 497executable: 498.Pp 499.Dl # cd /usr/sbin 500.Dl # ln ppp ppp0 501.Pp 502and using 503.Bd -literal -offset indent 504!ppp0 505*.*<TAB>/var/log/ppp0.log 506.Ed 507.Pp 508in 509.Pa /etc/syslog.conf . 510Don't forget to send a 511.Dv HUP 512signal to 513.Xr syslogd 8 514after altering 515.Pa /etc/syslog.conf . 516.It 517Although not strictly relevant to 518.Nm Ns No 's 519operation, you should configure your resolver so that it works correctly. 520This can be done by configuring a local DNS 521(using 522.Xr named 8 ) 523or by adding the correct 524.Sq nameserver 525lines to the file 526.Pa /etc/resolv.conf . 527Refer to the 528.Xr resolv.conf 5 529manual page for details. 530.Pp 531Alternatively, if the peer supports it, 532.Nm 533can be configured to ask the peer for the nameserver address(es) and to 534update 535.Pa /etc/resolv.conf 536automatically. 537Refer to the 538.Dq enable dns 539and 540.Dq resolv 541commands below for details. 542.El 543.Sh MANUAL DIALING 544In the following examples, we assume that your machine name is 545.Dv awfulhak . 546when you invoke 547.Nm 548(see 549.Sx PERMISSIONS 550above) with no arguments, you are presented with a prompt: 551.Bd -literal -offset indent 552ppp ON awfulhak> 553.Ed 554.Pp 555The 556.Sq ON 557part of your prompt should always be in upper case. 558If it is in lower case, it means that you must supply a password using the 559.Dq passwd 560command. 561This only ever happens if you connect to a running version of 562.Nm 563and have not authenticated yourself using the correct password. 564.Pp 565You can start by specifying the device name and speed: 566.Bd -literal -offset indent 567ppp ON awfulhak> set device /dev/cuaa0 568ppp ON awfulhak> set speed 38400 569.Ed 570.Pp 571Normally, hardware flow control (CTS/RTS) is used. 572However, under 573certain circumstances (as may happen when you are connected directly 574to certain PPP-capable terminal servers), this may result in 575.Nm 576hanging as soon as it tries to write data to your communications link 577as it is waiting for the CTS (clear to send) signal - which will never 578come. 579Thus, if you have a direct line and can't seem to make a 580connection, try turning CTS/RTS off with 581.Dq set ctsrts off . 582If you need to do this, check the 583.Dq set accmap 584description below too - you'll probably need to 585.Dq set accmap 000a0000 . 586.Pp 587Usually, parity is set to 588.Dq none , 589and this is 590.Nm Ns No 's 591default. 592Parity is a rather archaic error checking mechanism that is no 593longer used because modern modems do their own error checking, and most 594link-layer protocols (that's what 595.Nm 596is) use much more reliable checking mechanisms. 597Parity has a relatively 598huge overhead (a 12.5% increase in traffic) and as a result, it is always 599disabled 600(set to 601.Dq none ) 602when 603.Dv PPP 604is opened. 605However, some ISPs (Internet Service Providers) may use 606specific parity settings at connection time (before 607.Dv PPP 608is opened). 609Notably, Compuserve insist on even parity when logging in: 610.Bd -literal -offset indent 611ppp ON awfulhak> set parity even 612.Ed 613.Pp 614You can now see what your current device settings look like: 615.Bd -literal -offset indent 616ppp ON awfulhak> show physical 617Name: deflink 618 State: closed 619 Device: N/A 620 Link Type: interactive 621 Connect Count: 0 622 Queued Packets: 0 623 Phone Number: N/A 624 625Defaults: 626 Device List: /dev/cuaa0 627 Characteristics: 38400bps, cs8, even parity, CTS/RTS on 628 629Connect time: 0 secs 6300 octets in, 0 octets out 631Overall 0 bytes/sec 632ppp ON awfulhak> 633.Ed 634.Pp 635The term command can now be used to talk directly to the device: 636.Bd -literal -offset indent 637ppp ON awfulhak> term 638at 639OK 640atdt123456 641CONNECT 642login: myispusername 643Password: myisppassword 644Protocol: ppp 645.Ed 646.Pp 647When the peer starts to talk in 648.Em PPP , 649.Nm 650detects this automatically and returns to command mode. 651.Bd -literal -offset indent 652ppp ON awfulhak> # No link has been established 653Ppp ON awfulhak> # We've connected & finished LCP 654PPp ON awfulhak> # We've authenticated 655PPP ON awfulhak> # We've agreed IP numbers 656.Ed 657.Pp 658If it does not, it's probable that the peer is waiting for your end to 659start negotiating. 660To force 661.Nm 662to start sending 663.Em PPP 664configuration packets to the peer, use the 665.Dq ~p 666command to drop out of terminal mode and enter packet mode. 667.Pp 668If you never even receive a login prompt, it is quite likely that the 669peer wants to use PAP or CHAP authentication instead of using Unix-style 670login/password authentication. 671To set things up properly, drop back to 672the prompt and set your authentication name and key, then reconnect: 673.Bd -literal -offset indent 674~. 675ppp ON awfulhak> set authname myispusername 676ppp ON awfulhak> set authkey myisppassword 677ppp ON awfulhak> term 678at 679OK 680atdt123456 681CONNECT 682.Ed 683.Pp 684You may need to tell ppp to initiate negotiations with the peer here too: 685.Bd -literal -offset indent 686~p 687ppp ON awfulhak> # No link has been established 688Ppp ON awfulhak> # We've connected & finished LCP 689PPp ON awfulhak> # We've authenticated 690PPP ON awfulhak> # We've agreed IP numbers 691.Ed 692.Pp 693You are now connected! 694Note that 695.Sq PPP 696in the prompt has changed to capital letters to indicate that you have 697a peer connection. 698If only some of the three Ps go uppercase, wait until 699either everything is uppercase or lowercase. 700If they revert to lowercase, it means that 701.Nm 702couldn't successfully negotiate with the peer. 703A good first step for troubleshooting at this point would be to 704.Bd -literal -offset indent 705ppp ON awfulhak> set log local phase lcp ipcp 706.Ed 707.Pp 708and try again. 709Refer to the 710.Dq set log 711command description below for further details. 712If things fail at this point, 713it is quite important that you turn logging on and try again. 714It is also 715important that you note any prompt changes and report them to anyone trying 716to help you. 717.Pp 718When the link is established, the show command can be used to see how 719things are going: 720.Bd -literal -offset indent 721PPP ON awfulhak> show physical 722* Modem related information is shown here * 723PPP ON awfulhak> show ccp 724* CCP (compression) related information is shown here * 725PPP ON awfulhak> show lcp 726* LCP (line control) related information is shown here * 727PPP ON awfulhak> show ipcp 728* IPCP (IP) related information is shown here * 729PPP ON awfulhak> show ipv6cp 730* IPV6CP (IPv6) related information is shown here * 731PPP ON awfulhak> show link 732* Link (high level) related information is shown here * 733PPP ON awfulhak> show bundle 734* Logical (high level) connection related information is shown here * 735.Ed 736.Pp 737At this point, your machine has a host route to the peer. 738This means 739that you can only make a connection with the host on the other side 740of the link. 741If you want to add a default route entry (telling your 742machine to send all packets without another routing entry to the other 743side of the 744.Em PPP 745link), enter the following command: 746.Bd -literal -offset indent 747PPP ON awfulhak> add default HISADDR 748.Ed 749.Pp 750The string 751.Sq HISADDR 752represents the IP address of the connected peer. 753If the 754.Dq add 755command fails due to an existing route, you can overwrite the existing 756route using 757.Bd -literal -offset indent 758PPP ON awfulhak> add! default HISADDR 759.Ed 760.Pp 761This command can also be executed before actually making the connection. 762If a new IP address is negotiated at connection time, 763.Nm 764will update your default route accordingly. 765.Pp 766You can now use your network applications (ping, telnet, ftp etc.) 767in other windows or terminals on your machine. 768If you wish to reuse the current terminal, you can put 769.Nm 770into the background using your standard shell suspend and background 771commands (usually 772.Dq ^Z 773followed by 774.Dq bg ) . 775.Pp 776Refer to the 777.Sx PPP COMMAND LIST 778section for details on all available commands. 779.Sh AUTOMATIC DIALING 780To use automatic dialing, you must prepare some Dial and Login chat scripts. 781See the example definitions in 782.Pa /usr/share/examples/ppp/ppp.conf.sample 783(the format of 784.Pa /etc/ppp/ppp.conf 785is pretty simple). 786Each line contains one comment, inclusion, label or command: 787.Bl -bullet 788.It 789A line starting with a 790.Pq Dq # 791character is treated as a comment line. 792Leading whitespace are ignored when identifying comment lines. 793.It 794An inclusion is a line beginning with the word 795.Sq {!include} . 796It must have one argument - the file to {include}. 797You may wish to 798.Dq {!include} ~/.ppp.conf 799for compatibility with older versions of 800.Nm . 801.It 802A label name starts in the first column and is followed by 803a colon 804.Pq Dq \&: . 805.It 806A command line must contain a space or tab in the first column. 807.El 808.Pp 809The 810.Pa /etc/ppp/ppp.conf 811file should consist of at least a 812.Dq default 813section. 814This section is always executed. 815It should also contain 816one or more sections, named according to their purpose, for example, 817.Dq MyISP 818would represent your ISP, and 819.Dq ppp-in 820would represent an incoming 821.Nm 822configuration. 823You can now specify the destination label name when you invoke 824.Nm . 825Commands associated with the 826.Dq default 827label are executed, followed by those associated with the destination 828label provided. 829When 830.Nm 831is started with no arguments, the 832.Dq default 833section is still executed. 834The load command can be used to manually load a section from the 835.Pa /etc/ppp/ppp.conf 836file: 837.Bd -literal -offset indent 838ppp ON awfulhak> load MyISP 839.Ed 840.Pp 841Note, no action is taken by 842.Nm 843after a section is loaded, whether it's the result of passing a label on 844the command line or using the 845.Dq load 846command. 847Only the commands specified for that label in the configuration 848file are executed. 849However, when invoking 850.Nm 851with the 852.Fl background , 853.Fl ddial , 854or 855.Fl dedicated 856switches, the link mode tells 857.Nm 858to establish a connection. 859Refer to the 860.Dq set mode 861command below for further details. 862.Pp 863Once the connection is made, the 864.Sq ppp 865portion of the prompt will change to 866.Sq PPP : 867.Bd -literal -offset indent 868# ppp MyISP 869\&... 870ppp ON awfulhak> dial 871Ppp ON awfulhak> 872PPp ON awfulhak> 873PPP ON awfulhak> 874.Ed 875.Pp 876The Ppp prompt indicates that 877.Nm 878has entered the authentication phase. 879The PPp prompt indicates that 880.Nm 881has entered the network phase. 882The PPP prompt indicates that 883.Nm 884has successfully negotiated a network layer protocol and is in 885a usable state. 886.Pp 887If the 888.Pa /etc/ppp/ppp.linkup 889file is available, its contents are executed 890when the 891.Em PPP 892connection is established. 893See the provided 894.Dq pmdemand 895example in 896.Pa /usr/share/examples/ppp/ppp.conf.sample 897which runs a script in the background after the connection is established 898(refer to the 899.Dq shell 900and 901.Dq bg 902commands below for a description of possible substitution strings). 903Similarly, when a connection is closed, the contents of the 904.Pa /etc/ppp/ppp.linkdown 905file are executed. 906Both of these files have the same format as 907.Pa /etc/ppp/ppp.conf . 908.Pp 909In previous versions of 910.Nm , 911it was necessary to re-add routes such as the default route in the 912.Pa ppp.linkup 913file. 914.Nm 915supports 916.Sq sticky routes , 917where all routes that contain the 918.Dv HISADDR , 919.Dv MYADDR , 920.Dv HISADDR6 921or 922.Dv MYADDR6 923literals will automatically be updated when the values of these variables 924change. 925.Sh BACKGROUND DIALING 926If you want to establish a connection using 927.Nm 928non-interactively (such as from a 929.Xr crontab 5 930entry or an 931.Xr at 1 932job) you should use the 933.Fl background 934option. 935When 936.Fl background 937is specified, 938.Nm 939attempts to establish the connection immediately. 940If multiple phone 941numbers are specified, each phone number will be tried once. 942If the attempt fails, 943.Nm 944exits immediately with a non-zero exit code. 945If it succeeds, then 946.Nm 947becomes a daemon, and returns an exit status of zero to its caller. 948The daemon exits automatically if the connection is dropped by the 949remote system, or it receives a 950.Dv TERM 951signal. 952.Sh DIAL ON DEMAND 953Demand dialing is enabled with the 954.Fl auto 955or 956.Fl ddial 957options. 958You must also specify the destination label in 959.Pa /etc/ppp/ppp.conf 960to use. 961It must contain the 962.Dq set ifaddr 963command to {define} the remote peers IP address. 964(refer to 965.Pa /usr/share/examples/ppp/ppp.conf.sample ) 966.Bd -literal -offset indent 967# ppp -auto pmdemand 968.Ed 969.Pp 970When 971.Fl auto 972or 973.Fl ddial 974is specified, 975.Nm 976runs as a daemon but you can still configure or examine its 977configuration by using the 978.Dq set server 979command in 980.Pa /etc/ppp/ppp.conf , 981(for example, 982.Dq Li "set server +3000 mypasswd" ) 983and connecting to the diagnostic port as follows: 984.Bd -literal -offset indent 985# pppctl 3000 (assuming tun0) 986Password: 987PPP ON awfulhak> show who 988tcp (127.0.0.1:1028) * 989.Ed 990.Pp 991The 992.Dq show who 993command lists users that are currently connected to 994.Nm 995itself. 996If the diagnostic socket is closed or changed to a different 997socket, all connections are immediately dropped. 998.Pp 999In 1000.Fl auto 1001mode, when an outgoing packet is detected, 1002.Nm 1003will perform the dialing action (chat script) and try to connect 1004with the peer. 1005In 1006.Fl ddial 1007mode, the dialing action is performed any time the line is found 1008to be down. 1009If the connect fails, the default behaviour is to wait 30 seconds 1010and then attempt to connect when another outgoing packet is detected. 1011This behaviour can be changed using the 1012.Dq set redial 1013command: 1014.Pp 1015.No set redial Ar secs Ns Xo 1016.Oo + Ns Ar inc Ns 1017.Op - Ns Ar max Ns 1018.Oc Ns Op . Ns Ar next 1019.Op Ar attempts 1020.Xc 1021.Pp 1022.Bl -tag -width attempts -compact 1023.It Ar secs 1024is the number of seconds to wait before attempting 1025to connect again. 1026If the argument is the literal string 1027.Sq Li random , 1028the delay period is a random value between 1 and 30 seconds inclusive. 1029.It Ar inc 1030is the number of seconds that 1031.Ar secs 1032should be incremented each time a new dial attempt is made. 1033The timeout reverts to 1034.Ar secs 1035only after a successful connection is established. 1036The default value for 1037.Ar inc 1038is zero. 1039.It Ar max 1040is the maximum number of times 1041.Nm 1042should increment 1043.Ar secs . 1044The default value for 1045.Ar max 1046is 10. 1047.It Ar next 1048is the number of seconds to wait before attempting 1049to dial the next number in a list of numbers (see the 1050.Dq set phone 1051command). 1052The default is 3 seconds. 1053Again, if the argument is the literal string 1054.Sq Li random , 1055the delay period is a random value between 1 and 30 seconds. 1056.It Ar attempts 1057is the maximum number of times to try to connect for each outgoing packet 1058that triggers a dial. 1059The previous value is unchanged if this parameter is omitted. 1060If a value of zero is specified for 1061.Ar attempts , 1062.Nm 1063will keep trying until a connection is made. 1064.El 1065.Pp 1066So, for example: 1067.Bd -literal -offset indent 1068set redial 10.3 4 1069.Ed 1070.Pp 1071will attempt to connect 4 times for each outgoing packet that causes 1072a dial attempt with a 3 second delay between each number and a 10 second 1073delay after all numbers have been tried. 1074If multiple phone numbers 1075are specified, the total number of attempts is still 4 (it does not 1076attempt each number 4 times). 1077.Pp 1078Alternatively, 1079.Pp 1080.Bd -literal -offset indent 1081set redial 10+10-5.3 20 1082.Ed 1083.Pp 1084tells 1085.Nm 1086to attempt to connect 20 times. 1087After the first attempt, 1088.Nm 1089pauses for 10 seconds. 1090After the next attempt it pauses for 20 seconds 1091and so on until after the sixth attempt it pauses for 1 minute. 1092The next 14 pauses will also have a duration of one minute. 1093If 1094.Nm 1095connects, disconnects and fails to connect again, the timeout starts again 1096at 10 seconds. 1097.Pp 1098Modifying the dial delay is very useful when running 1099.Nm 1100in 1101.Fl auto 1102mode on both ends of the link. 1103If each end has the same timeout, 1104both ends wind up calling each other at the same time if the link 1105drops and both ends have packets queued. 1106At some locations, the serial link may not be reliable, and carrier 1107may be lost at inappropriate times. 1108It is possible to have 1109.Nm 1110redial should carrier be unexpectedly lost during a session. 1111.Bd -literal -offset indent 1112set reconnect timeout ntries 1113.Ed 1114.Pp 1115This command tells 1116.Nm 1117to re-establish the connection 1118.Ar ntries 1119times on loss of carrier with a pause of 1120.Ar timeout 1121seconds before each try. 1122For example, 1123.Bd -literal -offset indent 1124set reconnect 3 5 1125.Ed 1126.Pp 1127tells 1128.Nm 1129that on an unexpected loss of carrier, it should wait 1130.Ar 3 1131seconds before attempting to reconnect. 1132This may happen up to 1133.Ar 5 1134times before 1135.Nm 1136gives up. 1137The default value of ntries is zero (no reconnect). 1138Care should be taken with this option. 1139If the local timeout is slightly 1140longer than the remote timeout, the reconnect feature will always be 1141triggered (up to the given number of times) after the remote side 1142times out and hangs up. 1143NOTE: In this context, losing too many LQRs constitutes a loss of 1144carrier and will trigger a reconnect. 1145If the 1146.Fl background 1147flag is specified, all phone numbers are dialed at most once until 1148a connection is made. 1149The next number redial period specified with the 1150.Dq set redial 1151command is honoured, as is the reconnect tries value. 1152If your redial 1153value is less than the number of phone numbers specified, not all 1154the specified numbers will be tried. 1155To terminate the program, type 1156.Bd -literal -offset indent 1157PPP ON awfulhak> close 1158ppp ON awfulhak> quit all 1159.Ed 1160.Pp 1161A simple 1162.Dq quit 1163command will terminate the 1164.Xr pppctl 8 1165or 1166.Xr telnet 1 1167connection but not the 1168.Nm 1169program itself. 1170You must use 1171.Dq quit all 1172to terminate 1173.Nm 1174as well. 1175.Sh RECEIVING INCOMING PPP CONNECTIONS (Method 1) 1176To handle an incoming 1177.Em PPP 1178connection request, follow these steps: 1179.Bl -enum 1180.It 1181Make sure the modem and (optionally) 1182.Pa /etc/rc.serial 1183is configured correctly. 1184.Bl -bullet -compact 1185.It 1186Use Hardware Handshake (CTS/RTS) for flow control. 1187.It 1188Modem should be set to NO echo back (ATE0) and NO results string (ATQ1). 1189.El 1190.Pp 1191.It 1192Edit 1193.Pa /etc/ttys 1194to enable a 1195.Xr getty 8 1196on the port where the modem is attached. 1197For example: 1198.Pp 1199.Dl ttyd1 Qo /usr/libexec/getty std.38400 Qc dialup on secure 1200.Pp 1201Don't forget to send a 1202.Dv HUP 1203signal to the 1204.Xr init 8 1205process to start the 1206.Xr getty 8 : 1207.Pp 1208.Dl # kill -HUP 1 1209.Pp 1210It is usually also necessary to train your modem to the same DTR speed 1211as the getty: 1212.Bd -literal -offset indent 1213# ppp 1214ppp ON awfulhak> set device /dev/cuaa1 1215ppp ON awfulhak> set speed 38400 1216ppp ON awfulhak> term 1217deflink: Entering terminal mode on /dev/cuaa1 1218Type `~?' for help 1219at 1220OK 1221at 1222OK 1223atz 1224OK 1225at 1226OK 1227~. 1228ppp ON awfulhak> quit 1229.Ed 1230.It 1231Create a 1232.Pa /usr/local/bin/ppplogin 1233file with the following contents: 1234.Bd -literal -offset indent 1235#! /bin/sh 1236exec /usr/sbin/ppp -direct incoming 1237.Ed 1238.Pp 1239Direct mode 1240.Pq Fl direct 1241lets 1242.Nm 1243work with stdin and stdout. 1244You can also use 1245.Xr pppctl 8 1246to connect to a configured diagnostic port, in the same manner as with 1247client-side 1248.Nm . 1249.Pp 1250Here, the 1251.Ar incoming 1252section must be set up in 1253.Pa /etc/ppp/ppp.conf . 1254.Pp 1255Make sure that the 1256.Ar incoming 1257section contains the 1258.Dq allow users 1259command as appropriate. 1260.It 1261Prepare an account for the incoming user. 1262.Bd -literal 1263ppp:xxxx:66:66:PPP Login User:/home/ppp:/usr/local/bin/ppplogin 1264.Ed 1265.Pp 1266Refer to the manual entries for 1267.Xr adduser 8 1268and 1269.Xr vipw 8 1270for details. 1271.It 1272Support for IPCP Domain Name Server and NetBIOS Name Server negotiation 1273can be enabled using the 1274.Dq accept dns 1275and 1276.Dq set nbns 1277commands. 1278Refer to their descriptions below. 1279.El 1280.Sh RECEIVING INCOMING PPP CONNECTIONS (Method 2) 1281This method differs in that we use 1282.Nm 1283to authenticate the connection rather than 1284.Xr login 1 : 1285.Bl -enum 1286.It 1287Configure your default section in 1288.Pa /etc/gettytab 1289with automatic ppp recognition by specifying the 1290.Dq pp 1291capability: 1292.Bd -literal 1293default:\\ 1294 :pp=/usr/local/bin/ppplogin:\\ 1295 ..... 1296.Ed 1297.It 1298Configure your serial device(s), enable a 1299.Xr getty 8 1300and create 1301.Pa /usr/local/bin/ppplogin 1302as in the first three steps for method 1 above. 1303.It 1304Add either 1305.Dq enable chap 1306or 1307.Dq enable pap 1308(or both) 1309to 1310.Pa /etc/ppp/ppp.conf 1311under the 1312.Sq incoming 1313label (or whatever label 1314.Pa ppplogin 1315uses). 1316.It 1317Create an entry in 1318.Pa /etc/ppp/ppp.secret 1319for each incoming user: 1320.Bd -literal 1321Pfred<TAB>xxxx 1322Pgeorge<TAB>yyyy 1323.Ed 1324.El 1325.Pp 1326Now, as soon as 1327.Xr getty 8 1328detects a ppp connection (by recognising the HDLC frame headers), it runs 1329.Dq /usr/local/bin/ppplogin . 1330.Pp 1331It is 1332.Em VITAL 1333that either PAP or CHAP are enabled as above. 1334If they are not, you are 1335allowing anybody to establish ppp session with your machine 1336.Em without 1337a password, opening yourself up to all sorts of potential attacks. 1338.Sh AUTHENTICATING INCOMING CONNECTIONS 1339Normally, the receiver of a connection requires that the peer 1340authenticates itself. 1341This may be done using 1342.Xr login 1 , 1343but alternatively, you can use PAP or CHAP. 1344CHAP is the more secure of the two, but some clients may not support it. 1345Once you decide which you wish to use, add the command 1346.Sq enable chap 1347or 1348.Sq enable pap 1349to the relevant section of 1350.Pa ppp.conf . 1351.Pp 1352You must then configure the 1353.Pa /etc/ppp/ppp.secret 1354file. 1355This file contains one line per possible client, each line 1356containing up to five fields: 1357.Pp 1358.Ar name Ar key Oo 1359.Ar hisaddr Op Ar label Op Ar callback-number 1360.Oc 1361.Pp 1362The 1363.Ar name 1364and 1365.Ar key 1366specify the client username and password. 1367If 1368.Ar key 1369is 1370.Dq \&* 1371and PAP is being used, 1372.Nm 1373will look up the password database 1374.Pq Xr passwd 5 1375when authenticating. 1376If the client does not offer a suitable response based on any 1377.Ar name Ns No / Ns Ar key 1378combination in 1379.Pa ppp.secret , 1380authentication fails. 1381.Pp 1382If authentication is successful, 1383.Ar hisaddr 1384(if specified) 1385is used when negotiating IP numbers. 1386See the 1387.Dq set ifaddr 1388command for details. 1389.Pp 1390If authentication is successful and 1391.Ar label 1392is specified, the current system label is changed to match the given 1393.Ar label . 1394This will change the subsequent parsing of the 1395.Pa ppp.linkup 1396and 1397.Pa ppp.linkdown 1398files. 1399.Pp 1400If authentication is successful and 1401.Ar callback-number 1402is specified and 1403.Dq set callback 1404has been used in 1405.Pa ppp.conf , 1406the client will be called back on the given number. 1407If CBCP is being used, 1408.Ar callback-number 1409may also contain a list of numbers or a 1410.Dq \&* , 1411as if passed to the 1412.Dq set cbcp 1413command. 1414The value will be used in 1415.Nm Ns No 's 1416subsequent CBCP phase. 1417.Sh PPP OVER TCP and UDP (a.k.a Tunnelling) 1418Instead of running 1419.Nm 1420over a serial link, it is possible to 1421use a TCP connection instead by specifying the host, port and protocol as the 1422device: 1423.Pp 1424.Dl set device ui-gate:6669/tcp 1425.Pp 1426Instead of opening a serial device, 1427.Nm 1428will open a TCP connection to the given machine on the given 1429socket. 1430It should be noted however that 1431.Nm 1432doesn't use the telnet protocol and will be unable to negotiate 1433with a telnet server. 1434You should set up a port for receiving this 1435.Em PPP 1436connection on the receiving machine (ui-gate). 1437This is done by first updating 1438.Pa /etc/services 1439to name the service: 1440.Pp 1441.Dl ppp-in 6669/tcp # Incoming PPP connections over TCP 1442.Pp 1443and updating 1444.Pa /etc/inetd.conf 1445to tell 1446.Xr inetd 8 1447how to deal with incoming connections on that port: 1448.Pp 1449.Dl ppp-in stream tcp nowait root /usr/sbin/ppp ppp -direct ppp-in 1450.Pp 1451Don't forget to send a 1452.Dv HUP 1453signal to 1454.Xr inetd 8 1455after you've updated 1456.Pa /etc/inetd.conf . 1457Here, we use a label named 1458.Dq ppp-in . 1459The entry in 1460.Pa /etc/ppp/ppp.conf 1461on ui-gate (the receiver) should contain the following: 1462.Bd -literal -offset indent 1463ppp-in: 1464 set timeout 0 1465 set ifaddr 10.0.4.1 10.0.4.2 1466.Ed 1467.Pp 1468and the entry in 1469.Pa /etc/ppp/ppp.linkup 1470should contain: 1471.Bd -literal -offset indent 1472ppp-in: 1473 add 10.0.1.0/24 HISADDR 1474.Ed 1475.Pp 1476It is necessary to put the 1477.Dq add 1478command in 1479.Pa ppp.linkup 1480to ensure that the route is only added after 1481.Nm 1482has negotiated and assigned addresses to its interface. 1483.Pp 1484You may also want to enable PAP or CHAP for security. 1485To enable PAP, add the following line: 1486.Bd -literal -offset indent 1487 enable PAP 1488.Ed 1489.Pp 1490You'll also need to create the following entry in 1491.Pa /etc/ppp/ppp.secret : 1492.Bd -literal -offset indent 1493MyAuthName MyAuthPasswd 1494.Ed 1495.Pp 1496If 1497.Ar MyAuthPasswd 1498is a 1499.Dq * , 1500the password is looked up in the 1501.Xr passwd 5 1502database. 1503.Pp 1504The entry in 1505.Pa /etc/ppp/ppp.conf 1506on awfulhak (the initiator) should contain the following: 1507.Bd -literal -offset indent 1508ui-gate: 1509 set escape 0xff 1510 set device ui-gate:ppp-in/tcp 1511 set dial 1512 set timeout 30 1513 set log Phase Chat Connect hdlc LCP IPCP IPV6CP CCP tun 1514 set ifaddr 10.0.4.2 10.0.4.1 1515.Ed 1516.Pp 1517with the route setup in 1518.Pa /etc/ppp/ppp.linkup : 1519.Bd -literal -offset indent 1520ui-gate: 1521 add 10.0.2.0/24 HISADDR 1522.Ed 1523.Pp 1524Again, if you're enabling PAP, you'll also need this in the 1525.Pa /etc/ppp/ppp.conf 1526profile: 1527.Bd -literal -offset indent 1528 set authname MyAuthName 1529 set authkey MyAuthKey 1530.Ed 1531.Pp 1532We're assigning the address of 10.0.4.1 to ui-gate, and the address 153310.0.4.2 to awfulhak. 1534To open the connection, just type 1535.Pp 1536.Dl awfulhak # ppp -background ui-gate 1537.Pp 1538The result will be an additional "route" on awfulhak to the 153910.0.2.0/24 network via the TCP connection, and an additional 1540"route" on ui-gate to the 10.0.1.0/24 network. 1541The networks are effectively bridged - the underlying TCP 1542connection may be across a public network (such as the 1543Internet), and the 1544.Em PPP 1545traffic is conceptually encapsulated 1546(although not packet by packet) inside the TCP stream between 1547the two gateways. 1548.Pp 1549The major disadvantage of this mechanism is that there are two 1550"guaranteed delivery" mechanisms in place - the underlying TCP 1551stream and whatever protocol is used over the 1552.Em PPP 1553link - probably TCP again. 1554If packets are lost, both levels will 1555get in each others way trying to negotiate sending of the missing 1556packet. 1557.Pp 1558To avoid this overhead, it is also possible to do all this using 1559UDP instead of TCP as the transport by simply changing the protocol 1560from "tcp" to "udp". 1561When using UDP as a transport, 1562.Nm 1563will operate in synchronous mode. 1564This is another gain as the incoming 1565data does not have to be rearranged into packets. 1566.Pp 1567Care should be taken when adding a default route through a tunneled 1568setup like this. 1569It is quite common for the default route 1570(added in 1571.Pa /etc/ppp/ppp.linkup ) 1572to end up routing the link's TCP connection through the tunnel, 1573effectively garrotting the connection. 1574To avoid this, make sure you add a static route for the benefit of 1575the link: 1576.Bd -literal -offset indent 1577ui-gate: 1578 set escape 0xff 1579 set device ui-gate:ppp-in/tcp 1580 add ui-gate x.x.x.x 1581 ..... 1582.Ed 1583.Pp 1584where 1585.Dq x.x.x.x 1586is the IP number that your route to 1587.Dq ui-gate 1588would normally use. 1589.Pp 1590When routing your connection accross a public network such as the Internet, 1591it is preferable to encrypt the data. 1592This can be done with the help of the MPPE protocol, although currently this 1593means that you will not be able to also compress the traffic as MPPE is 1594implemented as a compression layer (thank Microsoft for this). 1595To enable MPPE encryption, add the following lines to 1596.Pa /etc/ppp/ppp.conf 1597on the server: 1598.Bd -literal -offset indent 1599 enable MSCHAPv2 1600 disable deflate pred1 1601 deny deflate pred1 1602.Ed 1603.Pp 1604ensuring that you've put the requisite entry in 1605.Pa /etc/ppp/ppp.secret 1606(MSCHAPv2 is challenge based, so 1607.Xr passwd 5 1608cannot be used) 1609.Pp 1610MSCHAPv2 and MPPE are accepted by default, so the client end should work 1611without any additional changes (although ensure you have 1612.Dq set authname 1613and 1614.Dq set authkey 1615in your profile). 1616.Sh NETWORK ADDRESS TRANSLATION (PACKET ALIASING) 1617The 1618.Fl nat 1619command line option enables network address translation (a.k.a. packet 1620aliasing). 1621This allows the 1622.Nm 1623host to act as a masquerading gateway for other computers over 1624a local area network. 1625Outgoing IP packets are NAT'd so that they appear to come from the 1626.Nm 1627host, and incoming packets are de-NAT'd so that they are routed 1628to the correct machine on the local area network. 1629NAT allows computers on private, unregistered subnets to have Internet 1630access, although they are invisible from the outside world. 1631In general, correct 1632.Nm 1633operation should first be verified with network address translation disabled. 1634Then, the 1635.Fl nat 1636option should be switched on, and network applications (web browser, 1637.Xr telnet 1 , 1638.Xr ftp 1 , 1639.Xr ping 8 , 1640.Xr traceroute 8 ) 1641should be checked on the 1642.Nm 1643host. 1644Finally, the same or similar applications should be checked on other 1645computers in the LAN. 1646If network applications work correctly on the 1647.Nm 1648host, but not on other machines in the LAN, then the masquerading 1649software is working properly, but the host is either not forwarding 1650or possibly receiving IP packets. 1651Check that IP forwarding is enabled in 1652.Pa /etc/rc.conf 1653and that other machines have designated the 1654.Nm 1655host as the gateway for the LAN. 1656.Sh PACKET FILTERING 1657This implementation supports packet filtering. 1658There are four kinds of 1659filters: the 1660.Em in 1661filter, the 1662.Em out 1663filter, the 1664.Em dial 1665filter and the 1666.Em alive 1667filter. 1668Here are the basics: 1669.Bl -bullet 1670.It 1671A filter definition has the following syntax: 1672.Pp 1673set filter 1674.Ar name 1675.Ar rule-no 1676.Ar action 1677.Op !\& 1678.Oo 1679.Op host 1680.Ar src_addr Ns Op / Ns Ar width 1681.Op Ar dst_addr Ns Op / Ns Ar width 1682.Oc 1683.Ar [ proto Op src Ar cmp port 1684.Op dst Ar cmp port 1685.Op estab 1686.Op syn 1687.Op finrst 1688.Op timeout Ar secs ] 1689.Bl -enum 1690.It 1691.Ar Name 1692should be one of 1693.Sq in , 1694.Sq out , 1695.Sq dial 1696or 1697.Sq alive . 1698.It 1699.Ar Rule-no 1700is a numeric value between 1701.Sq 0 1702and 1703.Sq 39 1704specifying the rule number. 1705Rules are specified in numeric order according to 1706.Ar rule-no , 1707but only if rule 1708.Sq 0 1709is defined. 1710.It 1711.Ar Action 1712may be specified as 1713.Sq permit 1714or 1715.Sq deny , 1716in which case, if a given packet matches the rule, the associated action 1717is taken immediately. 1718.Ar Action 1719can also be specified as 1720.Sq clear 1721to clear the action associated with that particular rule, or as a new 1722rule number greater than the current rule. 1723In this case, if a given 1724packet matches the current rule, the packet will next be matched against 1725the new rule number (rather than the next rule number). 1726.Pp 1727The 1728.Ar action 1729may optionally be followed with an exclamation mark 1730.Pq Dq !\& , 1731telling 1732.Nm 1733to reverse the sense of the following match. 1734.It 1735.Op Ar src_addr Ns Op / Ns Ar width 1736and 1737.Op Ar dst_addr Ns Op / Ns Ar width 1738are the source and destination IP number specifications. 1739If 1740.Op / Ns Ar width 1741is specified, it gives the number of relevant netmask bits, 1742allowing the specification of an address range. 1743.Pp 1744Either 1745.Ar src_addr 1746or 1747.Ar dst_addr 1748may be given the values 1749.Dv MYADDR , 1750.Dv HISADDR , 1751.Dv MYADDR6 1752or 1753.Dv HISADDR6 1754(refer to the description of the 1755.Dq bg 1756command for a description of these values). 1757When these values are used, 1758the filters will be updated any time the values change. 1759This is similar to the behaviour of the 1760.Dq add 1761command below. 1762.It 1763.Ar Proto 1764may be any protocol from 1765.Xr protocols 5 . 1766.It 1767.Ar Cmp 1768is one of 1769.Sq \< , 1770.Sq \&eq 1771or 1772.Sq \> , 1773meaning less-than, equal and greater-than respectively. 1774.Ar Port 1775can be specified as a numeric port or by service name from 1776.Pa /etc/services . 1777.It 1778The 1779.Sq estab , 1780.Sq syn , 1781and 1782.Sq finrst 1783flags are only allowed when 1784.Ar proto 1785is set to 1786.Sq tcp , 1787and represent the TH_ACK, TH_SYN and TH_FIN or TH_RST TCP flags respectively. 1788.It 1789The timeout value adjusts the current idle timeout to at least 1790.Ar secs 1791seconds. 1792If a timeout is given in the alive filter as well as in the in/out 1793filter, the in/out value is used. 1794If no timeout is given, the default timeout (set using 1795.Ic set timeout 1796and defaulting to 180 seconds) is used. 1797.El 1798.Pp 1799.It 1800Each filter can hold up to 40 rules, starting from rule 0. 1801The entire rule set is not effective until rule 0 is defined, 1802i.e., the default is to allow everything through. 1803.It 1804If no rule in a defined set of rules matches a packet, that packet will 1805be discarded (blocked). 1806If there are no rules in a given filter, the packet will be permitted. 1807.It 1808It's possible to filter based on the payload of UDP frames where those 1809frames contain a 1810.Em PROTO_IP 1811.Em PPP 1812frame header. 1813See the 1814.Ar filter-decapsulation 1815option below for further details. 1816.It 1817Use 1818.Dq set filter Ar name No -1 1819to flush all rules. 1820.El 1821.Pp 1822See 1823.Pa /usr/share/examples/ppp/ppp.conf.sample . 1824.Sh SETTING THE IDLE TIMER 1825To check/set the idle timer, use the 1826.Dq show bundle 1827and 1828.Dq set timeout 1829commands: 1830.Bd -literal -offset indent 1831ppp ON awfulhak> set timeout 600 1832.Ed 1833.Pp 1834The timeout period is measured in seconds, the default value for which 1835is 180 seconds 1836(or 3 min). 1837To disable the idle timer function, use the command 1838.Bd -literal -offset indent 1839ppp ON awfulhak> set timeout 0 1840.Ed 1841.Pp 1842In 1843.Fl ddial 1844and 1845.Fl dedicated 1846modes, the idle timeout is ignored. 1847In 1848.Fl auto 1849mode, when the idle timeout causes the 1850.Em PPP 1851session to be 1852closed, the 1853.Nm 1854program itself remains running. 1855Another trigger packet will cause it to attempt to re-establish the link. 1856.Sh PREDICTOR-1 and DEFLATE COMPRESSION 1857.Nm 1858supports both Predictor type 1 and deflate compression. 1859By default, 1860.Nm 1861will attempt to use (or be willing to accept) both compression protocols 1862when the peer agrees 1863(or requests them). 1864The deflate protocol is preferred by 1865.Nm . 1866Refer to the 1867.Dq disable 1868and 1869.Dq deny 1870commands if you wish to disable this functionality. 1871.Pp 1872It is possible to use a different compression algorithm in each direction 1873by using only one of 1874.Dq disable deflate 1875and 1876.Dq deny deflate 1877(assuming that the peer supports both algorithms). 1878.Pp 1879By default, when negotiating DEFLATE, 1880.Nm 1881will use a window size of 15. 1882Refer to the 1883.Dq set deflate 1884command if you wish to change this behaviour. 1885.Pp 1886A special algorithm called DEFLATE24 is also available, and is disabled 1887and denied by default. 1888This is exactly the same as DEFLATE except that 1889it uses CCP ID 24 to negotiate. 1890This allows 1891.Nm 1892to successfully negotiate DEFLATE with 1893.Nm pppd 1894version 2.3.*. 1895.Sh CONTROLLING IP ADDRESS 1896For IPv4, 1897.Nm 1898uses IPCP to negotiate IP addresses. 1899Each side of the connection 1900specifies the IP address that it's willing to use, and if the requested 1901IP address is acceptable then 1902.Nm 1903returns an ACK to the requester. 1904Otherwise, 1905.Nm 1906returns NAK to suggest that the peer use a different IP address. 1907When 1908both sides of the connection agree to accept the received request (and 1909send an ACK), IPCP is set to the open state and a network level connection 1910is established. 1911To control this IPCP behaviour, this implementation has the 1912.Dq set ifaddr 1913command for defining the local and remote IP address: 1914.Bd -ragged -offset indent 1915.No set ifaddr Oo Ar src_addr Ns 1916.Op / Ns Ar \&nn 1917.Oo Ar dst_addr Ns Op / Ns Ar \&nn 1918.Oo Ar netmask 1919.Op Ar trigger_addr 1920.Oc 1921.Oc 1922.Oc 1923.Ed 1924.Pp 1925where, 1926.Sq src_addr 1927is the IP address that the local side is willing to use, 1928.Sq dst_addr 1929is the IP address which the remote side should use and 1930.Sq netmask 1931is the netmask that should be used. 1932.Sq Src_addr 1933defaults to the current 1934.Xr hostname 1 , 1935.Sq dst_addr 1936defaults to 0.0.0.0, and 1937.Sq netmask 1938defaults to whatever mask is appropriate for 1939.Sq src_addr . 1940It is only possible to make 1941.Sq netmask 1942smaller than the default. 1943The usual value is 255.255.255.255, as 1944most kernels ignore the netmask of a POINTOPOINT interface. 1945.Pp 1946Some incorrect 1947.Em PPP 1948implementations require that the peer negotiates a specific IP 1949address instead of 1950.Sq src_addr . 1951If this is the case, 1952.Sq trigger_addr 1953may be used to specify this IP number. 1954This will not affect the 1955routing table unless the other side agrees with this proposed number. 1956.Bd -literal -offset indent 1957set ifaddr 192.244.177.38 192.244.177.2 255.255.255.255 0.0.0.0 1958.Ed 1959.Pp 1960The above specification means: 1961.Pp 1962.Bl -bullet -compact 1963.It 1964I will first suggest that my IP address should be 0.0.0.0, but I 1965will only accept an address of 192.244.177.38. 1966.It 1967I strongly insist that the peer uses 192.244.177.2 as his own 1968address and won't permit the use of any IP address but 192.244.177.2. 1969When the peer requests another IP address, I will always suggest that 1970it uses 192.244.177.2. 1971.It 1972The routing table entry will have a netmask of 0xffffffff. 1973.El 1974.Pp 1975This is all fine when each side has a pre-determined IP address, however 1976it is often the case that one side is acting as a server which controls 1977all IP addresses and the other side should go along with it. 1978In order to allow more flexible behaviour, the 1979.Dq set ifaddr 1980command allows the user to specify IP addresses more loosely: 1981.Pp 1982.Dl set ifaddr 192.244.177.38/24 192.244.177.2/20 1983.Pp 1984A number followed by a slash 1985.Pq Dq / 1986represents the number of bits significant in the IP address. 1987The above example means: 1988.Pp 1989.Bl -bullet -compact 1990.It 1991I'd like to use 192.244.177.38 as my address if it is possible, but I'll 1992also accept any IP address between 192.244.177.0 and 192.244.177.255. 1993.It 1994I'd like to make him use 192.244.177.2 as his own address, but I'll also 1995permit him to use any IP address between 192.244.176.0 and 1996192.244.191.255. 1997.It 1998As you may have already noticed, 192.244.177.2 is equivalent to saying 1999192.244.177.2/32. 2000.It 2001As an exception, 0 is equivalent to 0.0.0.0/0, meaning that I have no 2002preferred IP address and will obey the remote peers selection. 2003When using zero, no routing table entries will be made until a connection 2004is established. 2005.It 2006192.244.177.2/0 means that I'll accept/permit any IP address but I'll 2007suggest that 192.244.177.2 be used first. 2008.El 2009.Pp 2010When negotiating IPv6 addresses, no control is given to the user. 2011IPV6CP negotiation is fully automatic. 2012.Sh CONNECTING WITH YOUR INTERNET SERVICE PROVIDER 2013The following steps should be taken when connecting to your ISP: 2014.Bl -enum 2015.It 2016Describe your providers phone number(s) in the dial script using the 2017.Dq set phone 2018command. 2019This command allows you to set multiple phone numbers for 2020dialing and redialing separated by either a pipe 2021.Pq Dq \&| 2022or a colon 2023.Pq Dq \&: : 2024.Bd -ragged -offset indent 2025.No set phone Ar telno Ns Xo 2026.Oo \&| Ns Ar backupnumber 2027.Oc Ns ... Ns Oo : Ns Ar nextnumber 2028.Oc Ns ... 2029.Xc 2030.Ed 2031.Pp 2032Numbers after the first in a pipe-separated list are only used if the 2033previous number was used in a failed dial or login script. 2034Numbers 2035separated by a colon are used sequentially, irrespective of what happened 2036as a result of using the previous number. 2037For example: 2038.Bd -literal -offset indent 2039set phone "1234567|2345678:3456789|4567890" 2040.Ed 2041.Pp 2042Here, the 1234567 number is attempted. 2043If the dial or login script fails, 2044the 2345678 number is used next time, but *only* if the dial or login script 2045fails. 2046On the dial after this, the 3456789 number is used. 2047The 4567890 2048number is only used if the dial or login script using the 3456789 fails. 2049If the login script of the 2345678 number fails, the next number is still the 20503456789 number. 2051As many pipes and colons can be used as are necessary 2052(although a given site would usually prefer to use either the pipe or the 2053colon, but not both). 2054The next number redial timeout is used between all numbers. 2055When the end of the list is reached, the normal redial period is 2056used before starting at the beginning again. 2057The selected phone number is substituted for the \\\\T string in the 2058.Dq set dial 2059command (see below). 2060.It 2061Set up your redial requirements using 2062.Dq set redial . 2063For example, if you have a bad telephone line or your provider is 2064usually engaged (not so common these days), you may want to specify 2065the following: 2066.Bd -literal -offset indent 2067set redial 10 4 2068.Ed 2069.Pp 2070This says that up to 4 phone calls should be attempted with a pause of 10 2071seconds before dialing the first number again. 2072.It 2073Describe your login procedure using the 2074.Dq set dial 2075and 2076.Dq set login 2077commands. 2078The 2079.Dq set dial 2080command is used to talk to your modem and establish a link with your 2081ISP, for example: 2082.Bd -literal -offset indent 2083set dial "ABORT BUSY ABORT NO\\\\sCARRIER TIMEOUT 4 \\"\\" \e 2084 ATZ OK-ATZ-OK ATDT\\\\T TIMEOUT 60 CONNECT" 2085.Ed 2086.Pp 2087This modem "chat" string means: 2088.Bl -bullet 2089.It 2090Abort if the string "BUSY" or "NO CARRIER" are received. 2091.It 2092Set the timeout to 4 seconds. 2093.It 2094Expect nothing. 2095.It 2096Send ATZ. 2097.It 2098Expect OK. 2099If that's not received within the 4 second timeout, send ATZ 2100and expect OK. 2101.It 2102Send ATDTxxxxxxx where xxxxxxx is the next number in the phone list from 2103above. 2104.It 2105Set the timeout to 60. 2106.It 2107Wait for the CONNECT string. 2108.El 2109.Pp 2110Once the connection is established, the login script is executed. 2111This script is written in the same style as the dial script, but care should 2112be taken to avoid having your password logged: 2113.Bd -literal -offset indent 2114set authkey MySecret 2115set login "TIMEOUT 15 login:-\\\\r-login: awfulhak \e 2116 word: \\\\P ocol: PPP HELLO" 2117.Ed 2118.Pp 2119This login "chat" string means: 2120.Bl -bullet 2121.It 2122Set the timeout to 15 seconds. 2123.It 2124Expect "login:". 2125If it's not received, send a carriage return and expect 2126"login:" again. 2127.It 2128Send "awfulhak" 2129.It 2130Expect "word:" (the tail end of a "Password:" prompt). 2131.It 2132Send whatever our current 2133.Ar authkey 2134value is set to. 2135.It 2136Expect "ocol:" (the tail end of a "Protocol:" prompt). 2137.It 2138Send "PPP". 2139.It 2140Expect "HELLO". 2141.El 2142.Pp 2143The 2144.Dq set authkey 2145command is logged specially. 2146When 2147.Ar command 2148or 2149.Ar chat 2150logging is enabled, the actual password is not logged; 2151.Sq ******** 2152is logged instead. 2153.Pp 2154Login scripts vary greatly between ISPs. 2155If you're setting one up for the first time, 2156.Em ENABLE CHAT LOGGING 2157so that you can see if your script is behaving as you expect. 2158.It 2159Use 2160.Dq set device 2161and 2162.Dq set speed 2163to specify your serial line and speed, for example: 2164.Bd -literal -offset indent 2165set device /dev/cuaa0 2166set speed 115200 2167.Ed 2168.Pp 2169Cuaa0 is the first serial port on 2170.Fx . 2171If you're running 2172.Nm 2173on 2174.Ox , 2175cua00 is the first. 2176A speed of 115200 should be specified 2177if you have a modem capable of bit rates of 28800 or more. 2178In general, the serial speed should be about four times the modem speed. 2179.It 2180Use the 2181.Dq set ifaddr 2182command to {define} the IP address. 2183.Bl -bullet 2184.It 2185If you know what IP address your provider uses, then use it as the remote 2186address (dst_addr), otherwise choose something like 10.0.0.2/0 (see below). 2187.It 2188If your provider has assigned a particular IP address to you, then use 2189it as your address (src_addr). 2190.It 2191If your provider assigns your address dynamically, choose a suitably 2192unobtrusive and unspecific IP number as your address. 219310.0.0.1/0 would be appropriate. 2194The bit after the / specifies how many bits of the 2195address you consider to be important, so if you wanted to insist on 2196something in the class C network 1.2.3.0, you could specify 1.2.3.1/24. 2197.It 2198If you find that your ISP accepts the first IP number that you suggest, 2199specify third and forth arguments of 2200.Dq 0.0.0.0 . 2201This will force your ISP to assign a number. 2202(The third argument will 2203be ignored as it is less restrictive than the default mask for your 2204.Sq src_addr ) . 2205.El 2206.Pp 2207An example for a connection where you don't know your IP number or your 2208ISPs IP number would be: 2209.Bd -literal -offset indent 2210set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0 2211.Ed 2212.Pp 2213.It 2214In most cases, your ISP will also be your default router. 2215If this is the case, add the line 2216.Bd -literal -offset indent 2217add default HISADDR 2218.Ed 2219.Pp 2220to 2221.Pa /etc/ppp/ppp.conf 2222(or to 2223.Pa /etc/ppp/ppp.linkup 2224for setups that don't use 2225.Fl auto 2226mode). 2227.Pp 2228This tells 2229.Nm 2230to add a default route to whatever the peer address is 2231(10.0.0.2 in this example). 2232This route is 2233.Sq sticky , 2234meaning that should the value of 2235.Dv HISADDR 2236change, the route will be updated accordingly. 2237.It 2238If your provider requests that you use PAP/CHAP authentication methods, add 2239the next lines to your 2240.Pa /etc/ppp/ppp.conf 2241file: 2242.Bd -literal -offset indent 2243set authname MyName 2244set authkey MyPassword 2245.Ed 2246.Pp 2247Both are accepted by default, so 2248.Nm 2249will provide whatever your ISP requires. 2250.Pp 2251It should be noted that a login script is rarely (if ever) required 2252when PAP or CHAP are in use. 2253.It 2254Ask your ISP to authenticate your nameserver address(es) with the line 2255.Bd -literal -offset indent 2256enable dns 2257.Ed 2258.Pp 2259Do 2260.Em NOT 2261do this if you are running a local DNS unless you also either use 2262.Dq resolv readonly 2263or have 2264.Dq resolv restore 2265in 2266.Pa /etc/ppp/ppp.linkdown , 2267as 2268.Nm 2269will simply circumvent its use by entering some nameserver lines in 2270.Pa /etc/resolv.conf . 2271.El 2272.Pp 2273Please refer to 2274.Pa /usr/share/examples/ppp/ppp.conf.sample 2275and 2276.Pa /usr/share/examples/ppp/ppp.linkup.sample 2277for some real examples. 2278The pmdemand label should be appropriate for most ISPs. 2279.Sh LOGGING FACILITY 2280.Nm 2281is able to generate the following log info either via 2282.Xr syslog 3 2283or directly to the screen: 2284.Pp 2285.Bl -tag -width XXXXXXXXX -offset XXX -compact 2286.It Li All 2287Enable all logging facilities. 2288This generates a lot of log. 2289The most common use of 'all' is as a basis, where you remove some facilities 2290after enabling 'all' ('debug' and 'timer' are usually best disabled.) 2291.It Li Async 2292Dump async level packet in hex. 2293.It Li CBCP 2294Generate CBCP (CallBack Control Protocol) logs. 2295.It Li CCP 2296Generate a CCP packet trace. 2297.It Li Chat 2298Generate 2299.Sq dial , 2300.Sq login , 2301.Sq logout 2302and 2303.Sq hangup 2304chat script trace logs. 2305.It Li Command 2306Log commands executed either from the command line or any of the configuration 2307files. 2308.It Li Connect 2309Log Chat lines containing the string "CONNECT". 2310.It Li Debug 2311Log debug information. 2312.It Li DNS 2313Log DNS QUERY packets. 2314.It Li Filter 2315Log packets permitted by the dial filter and denied by any filter. 2316.It Li HDLC 2317Dump HDLC packet in hex. 2318.It Li ID0 2319Log all function calls specifically made as user id 0. 2320.It Li IPCP 2321Generate an IPCP packet trace. 2322.It Li LCP 2323Generate an LCP packet trace. 2324.It Li LQM 2325Generate LQR reports. 2326.It Li Phase 2327Phase transition log output. 2328.It Li Physical 2329Dump physical level packet in hex. 2330.It Li Sync 2331Dump sync level packet in hex. 2332.It Li TCP/IP 2333Dump all TCP/IP packets. 2334.It Li Timer 2335Log timer manipulation. 2336.It Li TUN 2337Include the tun device on each log line. 2338.It Li Warning 2339Output to the terminal device. 2340If there is currently no terminal, 2341output is sent to the log file using syslogs 2342.Dv LOG_WARNING . 2343.It Li Error 2344Output to both the terminal device 2345and the log file using syslogs 2346.Dv LOG_ERROR . 2347.It Li Alert 2348Output to the log file using 2349.Dv LOG_ALERT . 2350.El 2351.Pp 2352The 2353.Dq set log 2354command allows you to set the logging output level. 2355Multiple levels can be specified on a single command line. 2356The default is equivalent to 2357.Dq set log Phase . 2358.Pp 2359It is also possible to log directly to the screen. 2360The syntax is the same except that the word 2361.Dq local 2362should immediately follow 2363.Dq set log . 2364The default is 2365.Dq set log local 2366(i.e., only the un-maskable warning, error and alert output). 2367.Pp 2368If The first argument to 2369.Dq set log Op local 2370begins with a 2371.Sq + 2372or a 2373.Sq - 2374character, the current log levels are 2375not cleared, for example: 2376.Bd -literal -offset indent 2377PPP ON awfulhak> set log phase 2378PPP ON awfulhak> show log 2379Log: Phase Warning Error Alert 2380Local: Warning Error Alert 2381PPP ON awfulhak> set log +tcp/ip -warning 2382PPP ON awfulhak> set log local +command 2383PPP ON awfulhak> show log 2384Log: Phase TCP/IP Warning Error Alert 2385Local: Command Warning Error Alert 2386.Ed 2387.Pp 2388Log messages of level Warning, Error and Alert are not controllable 2389using 2390.Dq set log Op local . 2391.Pp 2392The 2393.Ar Warning 2394level is special in that it will not be logged if it can be displayed 2395locally. 2396.Sh SIGNAL HANDLING 2397.Nm 2398deals with the following signals: 2399.Bl -tag -width "USR2" 2400.It INT 2401Receipt of this signal causes the termination of the current connection 2402(if any). 2403This will cause 2404.Nm 2405to exit unless it is in 2406.Fl auto 2407or 2408.Fl ddial 2409mode. 2410.It HUP, TERM & QUIT 2411These signals tell 2412.Nm 2413to exit. 2414.It USR1 2415This signal, tells 2416.Nm 2417to re-open any existing server socket, dropping all existing diagnostic 2418connections. 2419Sockets that couldn't previously be opened will be retried. 2420.It USR2 2421This signal, tells 2422.Nm 2423to close any existing server socket, dropping all existing diagnostic 2424connections. 2425.Dv SIGUSR1 2426can still be used to re-open the socket. 2427.El 2428.Sh MULTI-LINK PPP 2429If you wish to use more than one physical link to connect to a 2430.Em PPP 2431peer, that peer must also understand the 2432.Em MULTI-LINK PPP 2433protocol. 2434Refer to RFC 1990 for specification details. 2435.Pp 2436The peer is identified using a combination of his 2437.Dq endpoint discriminator 2438and his 2439.Dq authentication id . 2440Either or both of these may be specified. 2441It is recommended that 2442at least one is specified, otherwise there is no way of ensuring that 2443all links are actually connected to the same peer program, and some 2444confusing lock-ups may result. 2445Locally, these identification variables are specified using the 2446.Dq set enddisc 2447and 2448.Dq set authname 2449commands. 2450The 2451.Sq authname 2452(and 2453.Sq authkey ) 2454must be agreed in advance with the peer. 2455.Pp 2456Multi-link capabilities are enabled using the 2457.Dq set mrru 2458command (set maximum reconstructed receive unit). 2459Once multi-link is enabled, 2460.Nm 2461will attempt to negotiate a multi-link connection with the peer. 2462.Pp 2463By default, only one 2464.Sq link 2465is available 2466(called 2467.Sq deflink ) . 2468To create more links, the 2469.Dq clone 2470command is used. 2471This command will clone existing links, where all 2472characteristics are the same except: 2473.Bl -enum 2474.It 2475The new link has its own name as specified on the 2476.Dq clone 2477command line. 2478.It 2479The new link is an 2480.Sq interactive 2481link. 2482Its mode may subsequently be changed using the 2483.Dq set mode 2484command. 2485.It 2486The new link is in a 2487.Sq closed 2488state. 2489.El 2490.Pp 2491A summary of all available links can be seen using the 2492.Dq show links 2493command. 2494.Pp 2495Once a new link has been created, command usage varies. 2496All link specific commands must be prefixed with the 2497.Dq link Ar name 2498command, specifying on which link the command is to be applied. 2499When only a single link is available, 2500.Nm 2501is smart enough not to require the 2502.Dq link Ar name 2503prefix. 2504.Pp 2505Some commands can still be used without specifying a link - resulting 2506in an operation at the 2507.Sq bundle 2508level. 2509For example, once two or more links are available, the command 2510.Dq show ccp 2511will show CCP configuration and statistics at the multi-link level, and 2512.Dq link deflink show ccp 2513will show the same information at the 2514.Dq deflink 2515link level. 2516.Pp 2517Armed with this information, the following configuration might be used: 2518.Pp 2519.Bd -literal -offset indent 2520mp: 2521 set timeout 0 2522 set log phase chat 2523 set device /dev/cuaa0 /dev/cuaa1 /dev/cuaa2 2524 set phone "123456789" 2525 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \\"\\" ATZ \e 2526 OK-AT-OK \\\\dATDT\\\\T TIMEOUT 45 CONNECT" 2527 set login 2528 set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0 2529 set authname ppp 2530 set authkey ppppassword 2531 2532 set mrru 1500 2533 clone 1,2,3 # Create 3 new links - duplicates of the default 2534 link deflink remove # Delete the default link (called ``deflink'') 2535.Ed 2536.Pp 2537Note how all cloning is done at the end of the configuration. 2538Usually, the link will be configured first, then cloned. 2539If you wish all links 2540to be up all the time, you can add the following line to the end of your 2541configuration. 2542.Pp 2543.Bd -literal -offset indent 2544 link 1,2,3 set mode ddial 2545.Ed 2546.Pp 2547If you want the links to dial on demand, this command could be used: 2548.Pp 2549.Bd -literal -offset indent 2550 link * set mode auto 2551.Ed 2552.Pp 2553Links may be tied to specific names by removing the 2554.Dq set device 2555line above, and specifying the following after the 2556.Dq clone 2557command: 2558.Pp 2559.Bd -literal -offset indent 2560 link 1 set device /dev/cuaa0 2561 link 2 set device /dev/cuaa1 2562 link 3 set device /dev/cuaa2 2563.Ed 2564.Pp 2565Use the 2566.Dq help 2567command to see which commands require context (using the 2568.Dq link 2569command), which have optional 2570context and which should not have any context. 2571.Pp 2572When 2573.Nm 2574has negotiated 2575.Em MULTI-LINK 2576mode with the peer, it creates a local domain socket in the 2577.Pa /var/run 2578directory. 2579This socket is used to pass link information (including 2580the actual link file descriptor) between different 2581.Nm 2582invocations. 2583This facilitates 2584.Nm Ns No 's 2585ability to be run from a 2586.Xr getty 8 2587or directly from 2588.Pa /etc/gettydefs 2589(using the 2590.Sq pp= 2591capability), without needing to have initial control of the serial 2592line. 2593Once 2594.Nm 2595negotiates multi-link mode, it will pass its open link to any 2596already running process. 2597If there is no already running process, 2598.Nm 2599will act as the master, creating the socket and listening for new 2600connections. 2601.Sh PPP COMMAND LIST 2602This section lists the available commands and their effect. 2603They are usable either from an interactive 2604.Nm 2605session, from a configuration file or from a 2606.Xr pppctl 8 2607or 2608.Xr telnet 1 2609session. 2610.Bl -tag -width 2n 2611.It accept|deny|enable|disable Ar option.... 2612These directives tell 2613.Nm 2614how to negotiate the initial connection with the peer. 2615Each 2616.Dq option 2617has a default of either accept or deny and enable or disable. 2618.Dq Accept 2619means that the option will be ACK'd if the peer asks for it. 2620.Dq Deny 2621means that the option will be NAK'd if the peer asks for it. 2622.Dq Enable 2623means that the option will be requested by us. 2624.Dq Disable 2625means that the option will not be requested by us. 2626.Pp 2627.Dq Option 2628may be one of the following: 2629.Bl -tag -width 2n 2630.It acfcomp 2631Default: Enabled and Accepted. 2632ACFComp stands for Address and Control Field Compression. 2633Non LCP packets will usually have an address 2634field of 0xff (the All-Stations address) and a control field of 26350x03 (the Unnumbered Information command). 2636If this option is 2637negotiated, these two bytes are simply not sent, thus minimising 2638traffic. 2639.Pp 2640See 2641.Pa rfc1662 2642for details. 2643.It chap Ns Op \&05 2644Default: Disabled and Accepted. 2645CHAP stands for Challenge Handshake Authentication Protocol. 2646Only one of CHAP and PAP (below) may be negotiated. 2647With CHAP, the authenticator sends a "challenge" message to its peer. 2648The peer uses a one-way hash function to encrypt the 2649challenge and sends the result back. 2650The authenticator does the same, and compares the results. 2651The advantage of this mechanism is that no 2652passwords are sent across the connection. 2653A challenge is made when the connection is first made. 2654Subsequent challenges may occur. 2655If you want to have your peer authenticate itself, you must 2656.Dq enable chap . 2657in 2658.Pa /etc/ppp/ppp.conf , 2659and have an entry in 2660.Pa /etc/ppp/ppp.secret 2661for the peer. 2662.Pp 2663When using CHAP as the client, you need only specify 2664.Dq AuthName 2665and 2666.Dq AuthKey 2667in 2668.Pa /etc/ppp/ppp.conf . 2669CHAP is accepted by default. 2670Some 2671.Em PPP 2672implementations use "MS-CHAP" rather than MD5 when encrypting the 2673challenge. 2674MS-CHAP is a combination of MD4 and DES. 2675If 2676.Nm 2677was built on a machine with DES libraries available, it will respond 2678to MS-CHAP authentication requests, but will never request them. 2679.It deflate 2680Default: Enabled and Accepted. 2681This option decides if deflate 2682compression will be used by the Compression Control Protocol (CCP). 2683This is the same algorithm as used by the 2684.Xr gzip 1 2685program. 2686Note: There is a problem negotiating 2687.Ar deflate 2688capabilities with 2689.Xr pppd 8 2690- a 2691.Em PPP 2692implementation available under many operating systems. 2693.Nm pppd 2694(version 2.3.1) incorrectly attempts to negotiate 2695.Ar deflate 2696compression using type 2697.Em 24 2698as the CCP configuration type rather than type 2699.Em 26 2700as specified in 2701.Pa rfc1979 . 2702Type 2703.Ar 24 2704is actually specified as 2705.Dq PPP Magna-link Variable Resource Compression 2706in 2707.Pa rfc1975 Ns ! 2708.Nm 2709is capable of negotiating with 2710.Nm pppd , 2711but only if 2712.Dq deflate24 2713is 2714.Ar enable Ns No d 2715and 2716.Ar accept Ns No ed . 2717.It deflate24 2718Default: Disabled and Denied. 2719This is a variance of the 2720.Ar deflate 2721option, allowing negotiation with the 2722.Xr pppd 8 2723program. 2724Refer to the 2725.Ar deflate 2726section above for details. 2727It is disabled by default as it violates 2728.Pa rfc1975 . 2729.It dns 2730Default: Disabled and Denied. 2731This option allows DNS negotiation. 2732.Pp 2733If 2734.Dq enable Ns No d, 2735.Nm 2736will request that the peer confirms the entries in 2737.Pa /etc/resolv.conf . 2738If the peer NAKs our request (suggesting new IP numbers), 2739.Pa /etc/resolv.conf 2740is updated and another request is sent to confirm the new entries. 2741.Pp 2742If 2743.Dq accept Ns No ed, 2744.Nm 2745will answer any DNS queries requested by the peer rather than rejecting 2746them. 2747The answer is taken from 2748.Pa /etc/resolv.conf 2749unless the 2750.Dq set dns 2751command is used as an override. 2752.It enddisc 2753Default: Enabled and Accepted. 2754This option allows control over whether we 2755negotiate an endpoint discriminator. 2756We only send our discriminator if 2757.Dq set enddisc 2758is used and 2759.Ar enddisc 2760is enabled. 2761We reject the peers discriminator if 2762.Ar enddisc 2763is denied. 2764.It LANMan|chap80lm 2765Default: Disabled and Accepted. 2766The use of this authentication protocol 2767is discouraged as it partially violates the authentication protocol by 2768implementing two different mechanisms (LANMan & NT) under the guise of 2769a single CHAP type (0x80). 2770.Dq LANMan 2771uses a simple DES encryption mechanism and is the least secure of the 2772CHAP alternatives (although is still more secure than PAP). 2773.Pp 2774Refer to the 2775.Dq MSChap 2776description below for more details. 2777.It lqr 2778Default: Disabled and Accepted. 2779This option decides if Link Quality Requests will be sent or accepted. 2780LQR is a protocol that allows 2781.Nm 2782to determine that the link is down without relying on the modems 2783carrier detect. 2784When LQR is enabled, 2785.Nm 2786sends the 2787.Em QUALPROTO 2788option (see 2789.Dq set lqrperiod 2790below) as part of the LCP request. 2791If the peer agrees, both sides will 2792exchange LQR packets at the agreed frequency, allowing detailed link 2793quality monitoring by enabling LQM logging. 2794If the peer doesn't agree, 2795.Nm 2796will send ECHO LQR requests instead. 2797These packets pass no information of interest, but they 2798.Em MUST 2799be replied to by the peer. 2800.Pp 2801Whether using LQR or ECHO LQR, 2802.Nm 2803will abruptly drop the connection if 5 unacknowledged packets have been 2804sent rather than sending a 6th. 2805A message is logged at the 2806.Em PHASE 2807level, and any appropriate 2808.Dq reconnect 2809values are honoured as if the peer were responsible for dropping the 2810connection. 2811.It mppe 2812Default: Enabled and Accepted. 2813This is Microsoft Point to Point Encryption scheme. 2814MPPE key size can be 281540-, 56- and 128-bits. 2816Refer to 2817.Dq set mppe 2818command. 2819.It MSChapV2|chap81 2820Default: Disabled and Accepted. 2821It is very similar to standard CHAP (type 0x05) 2822except that it issues challenges of a fixed 16 bytes in length and uses a 2823combination of MD4, SHA-1 and DES to encrypt the challenge rather than using the 2824standard MD5 mechanism. 2825.It MSChap|chap80nt 2826Default: Disabled and Accepted. 2827The use of this authentication protocol 2828is discouraged as it partially violates the authentication protocol by 2829implementing two different mechanisms (LANMan & NT) under the guise of 2830a single CHAP type (0x80). 2831It is very similar to standard CHAP (type 0x05) 2832except that it issues challenges of a fixed 8 bytes in length and uses a 2833combination of MD4 and DES to encrypt the challenge rather than using the 2834standard MD5 mechanism. 2835CHAP type 0x80 for LANMan is also supported - see 2836.Dq enable LANMan 2837for details. 2838.Pp 2839Because both 2840.Dq LANMan 2841and 2842.Dq NT 2843use CHAP type 0x80, when acting as authenticator with both 2844.Dq enable Ns No d , 2845.Nm 2846will rechallenge the peer up to three times if it responds using the wrong 2847one of the two protocols. 2848This gives the peer a chance to attempt using both protocols. 2849.Pp 2850Conversely, when 2851.Nm 2852acts as the authenticatee with both protocols 2853.Dq accept Ns No ed , 2854the protocols are used alternately in response to challenges. 2855.Pp 2856Note: If only LANMan is enabled, 2857.Xr pppd 8 2858(version 2.3.5) misbehaves when acting as authenticatee. 2859It provides both 2860the NT and the LANMan answers, but also suggests that only the NT answer 2861should be used. 2862.It pap 2863Default: Disabled and Accepted. 2864PAP stands for Password Authentication Protocol. 2865Only one of PAP and CHAP (above) may be negotiated. 2866With PAP, the ID and Password are sent repeatedly to the peer until 2867authentication is acknowledged or the connection is terminated. 2868This is a rather poor security mechanism. 2869It is only performed when the connection is first established. 2870If you want to have your peer authenticate itself, you must 2871.Dq enable pap . 2872in 2873.Pa /etc/ppp/ppp.conf , 2874and have an entry in 2875.Pa /etc/ppp/ppp.secret 2876for the peer (although see the 2877.Dq passwdauth 2878and 2879.Dq set radius 2880options below). 2881.Pp 2882When using PAP as the client, you need only specify 2883.Dq AuthName 2884and 2885.Dq AuthKey 2886in 2887.Pa /etc/ppp/ppp.conf . 2888PAP is accepted by default. 2889.It pred1 2890Default: Enabled and Accepted. 2891This option decides if Predictor 1 2892compression will be used by the Compression Control Protocol (CCP). 2893.It protocomp 2894Default: Enabled and Accepted. 2895This option is used to negotiate 2896PFC (Protocol Field Compression), a mechanism where the protocol 2897field number is reduced to one octet rather than two. 2898.It shortseq 2899Default: Enabled and Accepted. 2900This option determines if 2901.Nm 2902will request and accept requests for short 2903(12 bit) 2904sequence numbers when negotiating multi-link mode. 2905This is only applicable if our MRRU is set (thus enabling multi-link). 2906.It vjcomp 2907Default: Enabled and Accepted. 2908This option determines if Van Jacobson header compression will be used. 2909.El 2910.Pp 2911The following options are not actually negotiated with the peer. 2912Therefore, accepting or denying them makes no sense. 2913.Bl -tag -width 2n 2914.It filter-decapsulation 2915Default: Disabled. 2916When this option is enabled, 2917.Nm 2918will examine UDP frames to see if they actually contain a 2919.Em PPP 2920frame as their payload. 2921If this is the case, all filters will operate on the payload rather 2922than the actual packet. 2923.Pp 2924This is useful if you want to send PPPoUDP traffic over a 2925.Em PPP 2926link, but want that link to do smart things with the real data rather than 2927the UDP wrapper. 2928.Pp 2929The UDP frame payload must not be compressed in any way, otherwise 2930.Nm 2931will not be able to interpret it. 2932It's therefore recommended that you 2933.Ic disable vj pred1 deflate 2934and 2935.Ic deny vj pred1 deflate 2936in the configuration for the 2937.Nm 2938invocation with the udp link. 2939.It idcheck 2940Default: Enabled. 2941When 2942.Nm 2943exchanges low-level LCP, CCP and IPCP configuration traffic, the 2944.Em Identifier 2945field of any replies is expected to be the same as that of the request. 2946By default, 2947.Nm 2948drops any reply packets that do not contain the expected identifier 2949field, reporting the fact at the respective log level. 2950If 2951.Ar idcheck 2952is disabled, 2953.Nm 2954will ignore the identifier field. 2955.It iface-alias 2956Default: Enabled if 2957.Fl nat 2958is specified. 2959This option simply tells 2960.Nm 2961to add new interface addresses to the interface rather than replacing them. 2962The option can only be enabled if network address translation is enabled 2963.Pq Dq nat enable yes . 2964.Pp 2965With this option enabled, 2966.Nm 2967will pass traffic for old interface addresses through the NAT 2968ifdef({LOCALNAT},{engine,},{engine 2969(see 2970.Xr libalias 3 ) ,}) 2971resulting in the ability (in 2972.Fl auto 2973mode) to properly connect the process that caused the PPP link to 2974come up in the first place. 2975.Pp 2976Disabling NAT with 2977.Dq nat enable no 2978will also disable 2979.Sq iface-alias . 2980.It ipcp 2981Default: Enabled. 2982This option allows 2983.Nm 2984to attempt to negotiate IP control protocol capabilities and if 2985successful to exchange IP datagrams with the peer. 2986.It ipv6cp 2987Default: Enabled. 2988This option allows 2989.Nm 2990to attempt to negotiate IPv6 control protocol capabilities and if 2991successful to exchange IPv6 datagrams with the peer. 2992.It keep-session 2993Default: Disabled. 2994When 2995.Nm 2996runs as a Multi-link server, a different 2997.Nm 2998instance initially receives each connection. 2999After determining that 3000the link belongs to an already existing bundle (controlled by another 3001.Nm 3002invocation), 3003.Nm 3004will transfer the link to that process. 3005.Pp 3006If the link is a tty device or if this option is enabled, 3007.Nm 3008will not exit, but will change its process name to 3009.Dq session owner 3010and wait for the controlling 3011.Nm 3012to finish with the link and deliver a signal back to the idle process. 3013This prevents the confusion that results from 3014.Nm Ns No 's 3015parent considering the link resource available again. 3016.Pp 3017For tty devices that have entries in 3018.Pa /etc/ttys , 3019this is necessary to prevent another 3020.Xr getty 8 3021from being started, and for program links such as 3022.Xr sshd 8 , 3023it prevents 3024.Xr sshd 8 3025from exiting due to the death of its child. 3026As 3027.Nm 3028cannot determine its parents requirements (except for the tty case), this 3029option must be enabled manually depending on the circumstances. 3030.It loopback 3031Default: Enabled. 3032When 3033.Ar loopback 3034is enabled, 3035.Nm 3036will automatically loop back packets being sent 3037out with a destination address equal to that of the 3038.Em PPP 3039interface. 3040If disabled, 3041.Nm 3042will send the packet, probably resulting in an ICMP redirect from 3043the other end. 3044It is convenient to have this option enabled when 3045the interface is also the default route as it avoids the necessity 3046of a loopback route. 3047.It passwdauth 3048Default: Disabled. 3049Enabling this option will tell the PAP authentication 3050code to use the password database (see 3051.Xr passwd 5 ) 3052to authenticate the caller if they cannot be found in the 3053.Pa /etc/ppp/ppp.secret 3054file. 3055.Pa /etc/ppp/ppp.secret 3056is always checked first. 3057If you wish to use passwords from 3058.Xr passwd 5 , 3059but also to specify an IP number or label for a given client, use 3060.Dq \&* 3061as the client password in 3062.Pa /etc/ppp/ppp.secret . 3063.It proxy 3064Default: Disabled. 3065Enabling this option will tell 3066.Nm 3067to proxy ARP for the peer. 3068This means that 3069.Nm 3070will make an entry in the ARP table using 3071.Dv HISADDR 3072and the 3073.Dv MAC 3074address of the local network in which 3075.Dv HISADDR 3076appears. 3077This allows other machines connecteed to the LAN to talk to 3078the peer as if the peer itself was connected to the LAN. 3079The proxy entry cannot be made unless 3080.Dv HISADDR 3081is an address from a LAN. 3082.It proxyall 3083Default: Disabled. 3084Enabling this will tell 3085.Nm 3086to add proxy arp entries for every IP address in all class C or 3087smaller subnets routed via the tun interface. 3088.Pp 3089Proxy arp entries are only made for sticky routes that are added 3090using the 3091.Dq add 3092command. 3093No proxy arp entries are made for the interface address itself 3094(as created by the 3095.Dq set ifaddr 3096command). 3097.It sroutes 3098Default: Enabled. 3099When the 3100.Dq add 3101command is used with the 3102.Dv HISADDR , 3103.Dv MYADDR , 3104.Dv HISADDR6 3105or 3106.Dv MYADDR6 3107values, entries are stored in the 3108.Sq sticky route 3109list. 3110Each time these variables change, this list is re-applied to the routing table. 3111.Pp 3112Disabling this option will prevent the re-application of sticky routes, 3113although the 3114.Sq stick route 3115list will still be maintained. 3116.It Op tcp Ns Xo 3117.No mssfixup 3118.Xc 3119Default: Enabled. 3120This option tells 3121.Nm 3122to adjust TCP SYN packets so that the maximum receive segment 3123size is not greater than the amount allowed by the interface MTU. 3124.It throughput 3125Default: Enabled. 3126This option tells 3127.Nm 3128to gather throughput statistics. 3129Input and output is sampled over 3130a rolling 5 second window, and current, best and total figures are retained. 3131This data is output when the relevant 3132.Em PPP 3133layer shuts down, and is also available using the 3134.Dq show 3135command. 3136Throughput statistics are available at the 3137.Dq IPCP 3138and 3139.Dq physical 3140levels. 3141.It utmp 3142Default: Enabled. 3143Normally, when a user is authenticated using PAP or CHAP, and when 3144.Nm 3145is running in 3146.Fl direct 3147mode, an entry is made in the utmp and wtmp files for that user. 3148Disabling this option will tell 3149.Nm 3150not to make any utmp or wtmp entries. 3151This is usually only necessary if 3152you require the user to both login and authenticate themselves. 3153.El 3154.Pp 3155.It add Ns Xo 3156.Op !\& 3157.Ar dest Ns Op / Ns Ar nn 3158.Op Ar mask 3159.Op Ar gateway 3160.Xc 3161.Ar Dest 3162is the destination IP address. 3163The netmask is specified either as a number of bits with 3164.Ar /nn 3165or as an IP number using 3166.Ar mask . 3167.Ar 0 0 3168or simply 3169.Ar 0 3170with no mask refers to the default route. 3171It is also possible to use the literal name 3172.Sq default 3173instead of 3174.Ar 0 . 3175.Ar Gateway 3176is the next hop gateway to get to the given 3177.Ar dest 3178machine/network. 3179Refer to the 3180.Xr route 8 3181command for further details. 3182.Pp 3183It is possible to use the symbolic names 3184.Sq MYADDR , 3185.Sq HISADDR , 3186.Sq MYADDR6 3187or 3188.Sq HISADDR6 3189as the destination, and 3190.Sq HISADDR 3191or 3192.Sq HISADDR6 3193as the 3194.Ar gateway . 3195.Sq MYADDR 3196is replaced with the interface IP address, 3197.Sq HISADDR 3198is replaced with the interface IP destination (peer) address, 3199.Sq MYADDR6 3200is replaced with the interface IPv6 address, and 3201.Sq HISADDR6 3202is replaced with the interface IPv6 destination address, 3203.Pp 3204If the 3205.Ar add!\& 3206command is used 3207(note the trailing 3208.Dq !\& ) , 3209then if the route already exists, it will be updated as with the 3210.Sq route change 3211command (see 3212.Xr route 8 3213for further details). 3214.Pp 3215Routes that contain the 3216.Dq HISADDR , 3217.Dq MYADDR , 3218.Dq HISADDR6 , 3219.Dq MYADDR6 , 3220.Dq DNS0 , 3221or 3222.Dq DNS1 3223constants are considered 3224.Sq sticky . 3225They are stored in a list (use 3226.Dq show ncp 3227to see the list), and each time the value of one of these variables 3228changes, the appropriate routing table entries are updated. 3229This facility may be disabled using 3230.Dq disable sroutes . 3231.It allow Ar command Op Ar args 3232This command controls access to 3233.Nm 3234and its configuration files. 3235It is possible to allow user-level access, 3236depending on the configuration file label and on the mode that 3237.Nm 3238is being run in. 3239For example, you may wish to configure 3240.Nm 3241so that only user 3242.Sq fred 3243may access label 3244.Sq fredlabel 3245in 3246.Fl background 3247mode. 3248.Pp 3249User id 0 is immune to these commands. 3250.Bl -tag -width 2n 3251.It allow user Ns Xo 3252.Op s 3253.Ar logname Ns No ... 3254.Xc 3255By default, only user id 0 is allowed access to 3256.Nm . 3257If this command is used, all of the listed users are allowed access to 3258the section in which the 3259.Dq allow users 3260command is found. 3261The 3262.Sq default 3263section is always checked first (even though it is only ever automatically 3264loaded at startup). 3265.Dq allow users 3266commands are cumulative in a given section, but users allowed in any given 3267section override users allowed in the default section, so it's possible to 3268allow users access to everything except a given label by specifying default 3269users in the 3270.Sq default 3271section, and then specifying a new user list for that label. 3272.Pp 3273If user 3274.Sq * 3275is specified, access is allowed to all users. 3276.It allow mode Ns Xo 3277.Op s 3278.Ar mode Ns No ... 3279.Xc 3280By default, access using any 3281.Nm 3282mode is possible. 3283If this command is used, it restricts the access 3284.Ar modes 3285allowed to load the label under which this command is specified. 3286Again, as with the 3287.Dq allow users 3288command, each 3289.Dq allow modes 3290command overrides any previous settings, and the 3291.Sq default 3292section is always checked first. 3293.Pp 3294Possible modes are: 3295.Sq interactive , 3296.Sq auto , 3297.Sq direct , 3298.Sq dedicated , 3299.Sq ddial , 3300.Sq background 3301and 3302.Sq * . 3303.Pp 3304When running in multi-link mode, a section can be loaded if it allows 3305.Em any 3306of the currently existing line modes. 3307.El 3308.Pp 3309.It nat Ar command Op Ar args 3310This command allows the control of the network address translation (also 3311known as masquerading or IP aliasing) facilities that are built into 3312.Nm . 3313NAT is done on the external interface only, and is unlikely to make sense 3314if used with the 3315.Fl direct 3316flag. 3317.Pp 3318If nat is enabled on your system (it may be omitted at compile time), 3319the following commands are possible: 3320.Bl -tag -width 2n 3321.It nat enable yes|no 3322This command either switches network address translation on or turns it off. 3323The 3324.Fl nat 3325command line flag is synonymous with 3326.Dq nat enable yes . 3327.It nat addr Op Ar addr_local addr_alias 3328This command allows data for 3329.Ar addr_alias 3330to be redirected to 3331.Ar addr_local . 3332It is useful if you own a small number of real IP numbers that 3333you wish to map to specific machines behind your gateway. 3334.It nat deny_incoming yes|no 3335If set to yes, this command will refuse all incoming packets where an 3336aliasing link doesn't already exist. 3337ifdef({LOCALNAT},{},{Refer to the 3338.Sx CONCEPTUAL BACKGROUND 3339section of 3340.Xr libalias 3 3341for a description of what an 3342.Dq aliasing link 3343is. 3344})dnl 3345.Pp 3346It should be noted under what circumstances an aliasing link is 3347ifdef({LOCALNAT},{created.},{created by 3348.Xr libalias 3 .}) 3349It may be necessary to further protect your network from outside 3350connections using the 3351.Dq set filter 3352or 3353.Dq nat target 3354commands. 3355.It nat help|? 3356This command gives a summary of available nat commands. 3357.It nat log yes|no 3358This option causes various NAT statistics and information to 3359be logged to the file 3360.Pa /var/log/alias.log . 3361.It nat port Ar proto Ar targetIP Ns Xo 3362.No : Ns Ar targetPort Ns 3363.Oo 3364.No - Ns Ar targetPort 3365.Oc Ar aliasPort Ns 3366.Oo 3367.No - Ns Ar aliasPort 3368.Oc Oo Ar remoteIP : Ns 3369.Ar remotePort Ns 3370.Oo 3371.No - Ns Ar remotePort 3372.Oc Ns 3373.Oc 3374.Xc 3375This command causes incoming 3376.Ar proto 3377connections to 3378.Ar aliasPort 3379to be redirected to 3380.Ar targetPort 3381on 3382.Ar targetIP . 3383.Ar proto 3384is either 3385.Dq tcp 3386or 3387.Dq udp . 3388.Pp 3389A range of port numbers may be specified as shown above. 3390The ranges must be of the same size. 3391.Pp 3392If 3393.Ar remoteIP 3394is specified, only data coming from that IP number is redirected. 3395.Ar remotePort 3396must either be 3397.Dq 0 3398(indicating any source port) 3399or a range of ports the same size as the other ranges. 3400.Pp 3401This option is useful if you wish to run things like Internet phone on 3402machines behind your gateway, but is limited in that connections to only 3403one interior machine per source machine and target port are possible. 3404.It nat proto Ar proto localIP Oo 3405.Ar publicIP Op Ar remoteIP 3406.Oc 3407This command tells 3408.Nm 3409to redirect packets of protocol type 3410.Ar proto 3411(see 3412.Xr protocols 5 ) 3413to the internal address 3414.Ar localIP . 3415.Pp 3416If 3417.Ar publicIP 3418is specified, only packets destined for that address are matched, 3419otherwise the default alias address is used. 3420.Pp 3421If 3422.Ar remoteIP 3423is specified, only packets matching that source address are matched, 3424.Pp 3425This command is useful for redirecting tunnel endpoints to an internal machine, 3426for example: 3427.Pp 3428.Dl nat proto ipencap 10.0.0.1 3429.It "nat proxy cmd" Ar arg Ns No ... 3430This command tells 3431.Nm 3432to proxy certain connections, redirecting them to a given server. 3433ifdef({LOCALNAT},{},{Refer to the description of 3434.Fn PacketAliasProxyRule 3435in 3436.Xr libalias 3 3437for details of the available commands. 3438})dnl 3439.It nat punch_fw Op Ar base count 3440This command tells 3441.Nm 3442to punch holes in the firewall for FTP or IRC DCC connections. 3443This is done dynamically by installing termporary firewall rules which 3444allow a particular connection (and only that connection) to go through 3445the firewall. 3446The rules are removed once the corresponding connection terminates. 3447.Pp 3448A maximum of 3449.Ar count 3450rules starting from rule number 3451.Ar base 3452will be used for punching firewall holes. 3453The range will be cleared when the 3454.Dq nat punch_fw 3455command is run. 3456.Pp 3457If no arguments are given, firewall punching is disabled. 3458.It nat same_ports yes|no 3459When enabled, this command will tell the network address translation engine to 3460attempt to avoid changing the port number on outgoing packets. 3461This is useful 3462if you want to support protocols such as RPC and LPD which require 3463connections to come from a well known port. 3464.It nat target Op Ar address 3465Set the given target address or clear it if no address is given. 3466The target address is used 3467ifdef({LOCALNAT},{},{by libalias })dnl 3468to specify how to NAT incoming packets by default. 3469If a target address is not set or if 3470.Dq default 3471is given, packets are not altered and are allowed to route to the internal 3472network. 3473.Pp 3474The target address may be set to 3475.Dq MYADDR , 3476in which case 3477ifdef({LOCALNAT},{all packets will be redirected}, 3478{libalias will redirect all packets}) 3479to the interface address. 3480.It nat use_sockets yes|no 3481When enabled, this option tells the network address translation engine to 3482create a socket so that it can guarantee a correct incoming ftp data or 3483IRC connection. 3484.It nat unregistered_only yes|no 3485Only alter outgoing packets with an unregistered source address. 3486According to RFC 1918, unregistered source addresses 3487are 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. 3488.El 3489.Pp 3490These commands are also discussed in the file 3491.Pa README.nat 3492which comes with the source distribution. 3493.Pp 3494.It Op !\& Ns Xo 3495.No bg Ar command 3496.Xc 3497The given 3498.Ar command 3499is executed in the background with the following words replaced: 3500.Bl -tag -width COMPILATIONDATE 3501.It Li AUTHNAME 3502This is replaced with the local 3503.Ar authname 3504value. 3505See the 3506.Dq set authname 3507command below. 3508.It Li COMPILATIONDATE 3509This is replaced with the date on which 3510.Nm 3511was compiled. 3512.It Li DNS0 & DNS1 3513These are replaced with the primary and secondary nameserver IP numbers. 3514If nameservers are negotiated by IPCP, the values of these macros will change. 3515.It Li ENDDISC 3516This is replaced with the local endpoint discriminator value. 3517See the 3518.Dq set enddisc 3519command below. 3520.It Li HISADDR 3521This is replaced with the peers IP number. 3522.It Li HISADDR6 3523This is replaced with the peers IPv6 number. 3524.It Li INTERFACE 3525This is replaced with the name of the interface that's in use. 3526.It Li IPOCTETSIN 3527This is replaced with the number of IP bytes received since the connection 3528was established. 3529.It Li IPOCTETSOUT 3530This is replaced with the number of IP bytes sent since the connection 3531was established. 3532.It Li IPPACKETSIN 3533This is replaced with the number of IP packets received since the connection 3534was established. 3535.It Li IPPACKETSOUT 3536This is replaced with the number of IP packets sent since the connection 3537was established. 3538.It Li IPV6OCTETSIN 3539This is replaced with the number of IPv6 bytes received since the connection 3540was established. 3541.It Li IPV6OCTETSOUT 3542This is replaced with the number of IPv6 bytes sent since the connection 3543was established. 3544.It Li IPV6PACKETSIN 3545This is replaced with the number of IPv6 packets received since the connection 3546was established. 3547.It Li IPV6PACKETSOUT 3548This is replaced with the number of IPv6 packets sent since the connection 3549was established. 3550.It Li LABEL 3551This is replaced with the last label name used. 3552A label may be specified on the 3553.Nm 3554command line, via the 3555.Dq load 3556or 3557.Dq dial 3558commands and in the 3559.Pa ppp.secret 3560file. 3561.It Li MYADDR 3562This is replaced with the IP number assigned to the local interface. 3563.It Li MYADDR6 3564This is replaced with the IPv6 number assigned to the local interface. 3565.It Li OCTETSIN 3566This is replaced with the number of bytes received since the connection 3567was established. 3568.It Li OCTETSOUT 3569This is replaced with the number of bytes sent since the connection 3570was established. 3571.It Li PACKETSIN 3572This is replaced with the number of packets received since the connection 3573was established. 3574.It Li PACKETSOUT 3575This is replaced with the number of packets sent since the connection 3576was established. 3577.It Li PEER_ENDDISC 3578This is replaced with the value of the peers endpoint discriminator. 3579.It Li PROCESSID 3580This is replaced with the current process id. 3581.It Li SOCKNAME 3582This is replaced with the name of the diagnostic socket. 3583.It Li UPTIME 3584This is replaced with the bundle uptime in HH:MM:SS format. 3585.It Li USER 3586This is replaced with the username that has been authenticated with PAP or 3587CHAP. 3588Normally, this variable is assigned only in -direct mode. 3589This value is available irrespective of whether utmp logging is enabled. 3590.It Li VERSION 3591This is replaced with the current version number of 3592.Nm . 3593.El 3594.Pp 3595These substitutions are also done by the 3596.Dq set proctitle , 3597.Dq ident 3598and 3599.Dq log 3600commands. 3601.Pp 3602If you wish to pause 3603.Nm 3604while the command executes, use the 3605.Dq shell 3606command instead. 3607.It clear physical|ipcp|ipv6 Op current|overall|peak... 3608Clear the specified throughput values at either the 3609.Dq physical , 3610.Dq ipcp 3611or 3612.Dq ipv6cp 3613level. 3614If 3615.Dq physical 3616is specified, context must be given (see the 3617.Dq link 3618command below). 3619If no second argument is given, all values are cleared. 3620.It clone Ar name Ns Xo 3621.Op \&, Ns Ar name Ns 3622.No ... 3623.Xc 3624Clone the specified link, creating one or more new links according to the 3625.Ar name 3626argument(s). 3627This command must be used from the 3628.Dq link 3629command below unless you've only got a single link (in which case that 3630link becomes the default). 3631Links may be removed using the 3632.Dq remove 3633command below. 3634.Pp 3635The default link name is 3636.Dq deflink . 3637.It close Op lcp|ccp Ns Op !\& 3638If no arguments are given, the relevant protocol layers will be brought 3639down and the link will be closed. 3640If 3641.Dq lcp 3642is specified, the LCP layer is brought down, but 3643.Nm 3644will not bring the link offline. 3645It is subsequently possible to use 3646.Dq term 3647(see below) 3648to talk to the peer machine if, for example, something like 3649.Dq slirp 3650is being used. 3651If 3652.Dq ccp 3653is specified, only the relevant compression layer is closed. 3654If the 3655.Dq !\& 3656is used, the compression layer will remain in the closed state, otherwise 3657it will re-enter the STOPPED state, waiting for the peer to initiate 3658further CCP negotiation. 3659In any event, this command does not disconnect the user from 3660.Nm 3661or exit 3662.Nm . 3663See the 3664.Dq quit 3665command below. 3666.It delete Ns Xo 3667.Op !\& 3668.Ar dest 3669.Xc 3670This command deletes the route with the given 3671.Ar dest 3672IP address. 3673If 3674.Ar dest 3675is specified as 3676.Sq ALL , 3677all non-direct entries in the routing table for the current interface, 3678and all 3679.Sq sticky route 3680entries are deleted. 3681If 3682.Ar dest 3683is specified as 3684.Sq default , 3685the default route is deleted. 3686.Pp 3687If the 3688.Ar delete!\& 3689command is used 3690(note the trailing 3691.Dq !\& ) , 3692.Nm 3693will not complain if the route does not already exist. 3694.It dial|call Op Ar label Ns Xo 3695.No ... 3696.Xc 3697This command is the equivalent of 3698.Dq load label 3699followed by 3700.Dq open , 3701and is provided for backwards compatibility. 3702.It down Op Ar lcp|ccp 3703Bring the relevant layer down ungracefully, as if the underlying layer 3704had become unavailable. 3705It's not considered polite to use this command on 3706a Finite State Machine that's in the OPEN state. 3707If no arguments are 3708supplied, the entire link is closed (or if no context is given, all links 3709are terminated). 3710If 3711.Sq lcp 3712is specified, the 3713.Em LCP 3714layer is terminated but the device is not brought offline and the link 3715is not closed. 3716If 3717.Sq ccp 3718is specified, only the relevant compression layer(s) are terminated. 3719.It help|? Op Ar command 3720Show a list of available commands. 3721If 3722.Ar command 3723is specified, show the usage string for that command. 3724.It ident Op Ar text Ns No ... 3725Identify the link to the peer using 3726.Ar text . 3727If 3728.Ar text 3729is empty, link identification is disabled. 3730It is possible to use any of the words described for the 3731.Ic bg 3732command above. 3733Refer to the 3734.Ic sendident 3735command for details of when 3736.Nm 3737identifies itself to the peer. 3738.It iface Ar command Op args 3739This command is used to control the interface used by 3740.Nm . 3741.Ar Command 3742may be one of the following: 3743.Bl -tag -width 2n 3744.It iface add Ns Xo 3745.Op !\& 3746.Ar addr Ns Op / Ns Ar bits 3747.Op Ar peer 3748.Xc 3749.It iface add Ns Xo 3750.Op !\& 3751.Ar addr 3752.Ar mask 3753.Ar peer 3754.Xc 3755Add the given 3756.Ar addr mask peer 3757combination to the interface. 3758Instead of specifying 3759.Ar mask , 3760.Ar /bits 3761can be used 3762(with no space between it and 3763.Ar addr ) . 3764If the given address already exists, the command fails unless the 3765.Dq !\& 3766is used - in which case the previous interface address entry is overwritten 3767with the new one, allowing a change of netmask or peer address. 3768.Pp 3769If only 3770.Ar addr 3771is specified, 3772.Ar bits 3773defaults to 3774.Dq 32 3775and 3776.Ar peer 3777defaults to 3778.Dq 255.255.255.255 . 3779This address (the broadcast address) is the only duplicate peer address that 3780.Nm 3781allows. 3782.It iface clear Op INET | INET6 3783If this command is used while 3784.Nm 3785is in the OPENED state or while in 3786.Fl auto 3787mode, all addresses except for the NCP negotiated address are deleted 3788from the interface. 3789If 3790.Nm 3791is not in the OPENED state and is not in 3792.Fl auto 3793mode, all interface addresses are deleted. 3794.Pp 3795If the INET or INET6 arguments are used, only addresses for that address 3796family are cleared. 3797.Pp 3798.It iface delete Ns Xo 3799.Op !\& Ns 3800.No |rm Ns Op !\& 3801.Ar addr 3802.Xc 3803This command deletes the given 3804.Ar addr 3805from the interface. 3806If the 3807.Dq !\& 3808is used, no error is given if the address isn't currently assigned to 3809the interface (and no deletion takes place). 3810.It iface show 3811Shows the current state and current addresses for the interface. 3812It is much the same as running 3813.Dq ifconfig INTERFACE . 3814.It iface help Op Ar sub-command 3815This command, when invoked without 3816.Ar sub-command , 3817will show a list of possible 3818.Dq iface 3819sub-commands and a brief synopsis for each. 3820When invoked with 3821.Ar sub-command , 3822only the synopsis for the given sub-command is shown. 3823.El 3824.It Op data Ns Xo 3825.No link 3826.Ar name Ns Op , Ns Ar name Ns 3827.No ... Ar command Op Ar args 3828.Xc 3829This command may prefix any other command if the user wishes to 3830specify which link the command should affect. 3831This is only applicable after multiple links have been created in Multi-link 3832mode using the 3833.Dq clone 3834command. 3835.Pp 3836.Ar Name 3837specifies the name of an existing link. 3838If 3839.Ar name 3840is a comma separated list, 3841.Ar command 3842is executed on each link. 3843If 3844.Ar name 3845is 3846.Dq * , 3847.Ar command 3848is executed on all links. 3849.It load Op Ar label Ns Xo 3850.No ... 3851.Xc 3852Load the given 3853.Ar label Ns No (s) 3854from the 3855.Pa ppp.conf 3856file. 3857If 3858.Ar label 3859is not given, the 3860.Ar default 3861label is used. 3862.Pp 3863Unless the 3864.Ar label 3865section uses the 3866.Dq set mode , 3867.Dq open 3868or 3869.Dq dial 3870commands, 3871.Nm 3872will not attempt to make an immediate connection. 3873.It log Ar word Ns No ... 3874Send the given word(s) to the log file with the prefix 3875.Dq LOG: . 3876Word substitutions are done as explained under the 3877.Dq !bg 3878command above. 3879.It open Op lcp|ccp|ipcp 3880This is the opposite of the 3881.Dq close 3882command. 3883All closed links are immediately brought up apart from second and subsequent 3884.Ar demand-dial 3885links - these will come up based on the 3886.Dq set autoload 3887command that has been used. 3888.Pp 3889If the 3890.Dq lcp 3891argument is used while the LCP layer is already open, LCP will be 3892renegotiated. 3893This allows various LCP options to be changed, after which 3894.Dq open lcp 3895can be used to put them into effect. 3896After renegotiating LCP, 3897any agreed authentication will also take place. 3898.Pp 3899If the 3900.Dq ccp 3901argument is used, the relevant compression layer is opened. 3902Again, if it is already open, it will be renegotiated. 3903.Pp 3904If the 3905.Dq ipcp 3906argument is used, the link will be brought up as normal, but if 3907IPCP is already open, it will be renegotiated and the network 3908interface will be reconfigured. 3909.Pp 3910It is probably not good practice to re-open the PPP state machines 3911like this as it's possible that the peer will not behave correctly. 3912It 3913.Em is 3914however useful as a way of forcing the CCP or VJ dictionaries to be reset. 3915.It passwd Ar pass 3916Specify the password required for access to the full 3917.Nm 3918command set. 3919This password is required when connecting to the diagnostic port (see the 3920.Dq set server 3921command). 3922.Ar Pass 3923is specified on the 3924.Dq set server 3925command line. 3926The value of 3927.Ar pass 3928is not logged when 3929.Ar command 3930logging is active, instead, the literal string 3931.Sq ******** 3932is logged. 3933.It quit|bye Op all 3934If 3935.Dq quit 3936is executed from the controlling connection or from a command file, 3937ppp will exit after closing all connections. 3938Otherwise, if the user 3939is connected to a diagnostic socket, the connection is simply dropped. 3940.Pp 3941If the 3942.Ar all 3943argument is given, 3944.Nm 3945will exit despite the source of the command after closing all existing 3946connections. 3947.It remove|rm 3948This command removes the given link. 3949It is only really useful in multi-link mode. 3950A link must be in the 3951.Dv CLOSED 3952state before it is removed. 3953.It rename|mv Ar name 3954This command renames the given link to 3955.Ar name . 3956It will fail if 3957.Ar name 3958is already used by another link. 3959.Pp 3960The default link name is 3961.Sq deflink . 3962Renaming it to 3963.Sq modem , 3964.Sq cuaa0 3965or 3966.Sq USR 3967may make the log file more readable. 3968.It resolv Ar command 3969This command controls 3970.Nm Ns No 's 3971manipulation of the 3972.Xr resolv.conf 5 3973file. 3974When 3975.Nm 3976starts up, it loads the contents of this file into memory and retains this 3977image for future use. 3978.Ar command 3979is one of the following: 3980.Bl -tag -width readonly 3981.It Em readonly 3982Treat 3983.Pa /etc/resolv.conf 3984as read only. 3985If 3986.Dq dns 3987is enabled, 3988.Nm 3989will still attempt to negotiate nameservers with the peer, making the results 3990available via the 3991.Dv DNS0 3992and 3993.Dv DNS1 3994macros. 3995This is the opposite of the 3996.Dq resolv writable 3997command. 3998.It Em reload 3999Reload 4000.Pa /etc/resolv.conf 4001into memory. 4002This may be necessary if for example a DHCP client overwrote 4003.Pa /etc/resolv.conf . 4004.It Em restore 4005Replace 4006.Pa /etc/resolv.conf 4007with the version originally read at startup or with the last 4008.Dq resolv reload 4009command. 4010This is sometimes a useful command to put in the 4011.Pa /etc/ppp/ppp.linkdown 4012file. 4013.It Em rewrite 4014Rewrite the 4015.Pa /etc/resolv.conf 4016file. 4017This command will work even if the 4018.Dq resolv readonly 4019command has been used. 4020It may be useful as a command in the 4021.Pa /etc/ppp/ppp.linkup 4022file if you wish to defer updating 4023.Pa /etc/resolv.conf 4024until after other commands have finished. 4025.It Em writable 4026Allow 4027.Nm 4028to update 4029.Pa /etc/resolv.conf 4030if 4031.Dq dns 4032is enabled and 4033.Nm 4034successfully negotiates a DNS. 4035This is the opposite of the 4036.Dq resolv readonly 4037command. 4038.El 4039.It save 4040This option is not (yet) implemented. 4041.It sendident 4042This command tells 4043.Nm 4044to identify itself to the peer. 4045The link must be in LCP state or higher. 4046If no identity has been set (via the 4047.Ic ident 4048command), 4049.Ic sendident 4050will fail. 4051.Pp 4052When an identity has been set, 4053.Nm 4054will automatically identify itself when it sends or receives a configure 4055reject, when negotiation fails or when LCP reaches the opened state. 4056.Pp 4057Received identification packets are logged to the LCP log (see 4058.Ic set log 4059for details) and are never responded to. 4060.It set Ns Xo 4061.Op up 4062.Ar var value 4063.Xc 4064This option allows the setting of any of the following variables: 4065.Bl -tag -width 2n 4066.It set accmap Ar hex-value 4067ACCMap stands for Asynchronous Control Character Map. 4068This is always 4069negotiated with the peer, and defaults to a value of 00000000 in hex. 4070This protocol is required to defeat hardware that depends on passing 4071certain characters from end to end (such as XON/XOFF etc). 4072.Pp 4073For the XON/XOFF scenario, use 4074.Dq set accmap 000a0000 . 4075.It set Op auth Ns Xo 4076.No key Ar value 4077.Xc 4078This sets the authentication key (or password) used in client mode 4079PAP or CHAP negotiation to the given value. 4080It also specifies the 4081password to be used in the dial or login scripts in place of the 4082.Sq \eP 4083sequence, preventing the actual password from being logged. 4084If 4085.Ar command 4086or 4087.Ar chat 4088logging is in effect, 4089.Ar value 4090is logged as 4091.Sq ******** 4092for security reasons. 4093.Pp 4094If the first character of 4095.Ar value 4096is an exclamation mark 4097.Pq Dq !\& , 4098.Nm 4099treats the remainder of the string as a program that must be executed 4100to determine the 4101.Dq authname 4102and 4103.Dq authkey 4104values. 4105.Pp 4106If the 4107.Dq !\& 4108is doubled up 4109(to 4110.Dq !! ) , 4111it is treated as a single literal 4112.Dq !\& , 4113otherwise, ignoring the 4114.Dq !\& , 4115.Ar value 4116is parsed as a program to execute in the same was as the 4117.Dq !bg 4118command above, substituting special names in the same manner. 4119Once executed, 4120.Nm 4121will feed the program three lines of input, each terminated by a newline 4122character: 4123.Bl -bullet 4124.It 4125The host name as sent in the CHAP challenge. 4126.It 4127The challenge string as sent in the CHAP challenge. 4128.It 4129The locally defined 4130.Dq authname . 4131.El 4132.Pp 4133Two lines of output are expected: 4134.Bl -bullet 4135.It 4136The 4137.Dq authname 4138to be sent with the CHAP response. 4139.It 4140The 4141.Dq authkey , 4142which is encrypted with the challenge and request id, the answer being sent 4143in the CHAP response packet. 4144.El 4145.Pp 4146When configuring 4147.Nm 4148in this manner, it's expected that the host challenge is a series of ASCII 4149digits or characters. 4150An encryption device or Secure ID card is usually 4151required to calculate the secret appropriate for the given challenge. 4152.It set authname Ar id 4153This sets the authentication id used in client mode PAP or CHAP negotiation. 4154.Pp 4155If used in 4156.Fl direct 4157mode with CHAP enabled, 4158.Ar id 4159is used in the initial authentication challenge and should normally be set to 4160the local machine name. 4161.It set autoload Xo 4162.Ar min-percent max-percent period 4163.Xc 4164These settings apply only in multi-link mode and default to zero, zero and 4165five respectively. 4166When more than one 4167.Ar demand-dial 4168(also known as 4169.Fl auto ) 4170mode link is available, only the first link is made active when 4171.Nm 4172first reads data from the tun device. 4173The next 4174.Ar demand-dial 4175link will be opened only when the current bundle throughput is at least 4176.Ar max-percent 4177percent of the total bundle bandwidth for 4178.Ar period 4179seconds. 4180When the current bundle throughput decreases to 4181.Ar min-percent 4182percent or less of the total bundle bandwidth for 4183.Ar period 4184seconds, a 4185.Ar demand-dial 4186link will be brought down as long as it's not the last active link. 4187.Pp 4188Bundle throughput is measured as the maximum of inbound and outbound 4189traffic. 4190.Pp 4191The default values cause 4192.Ar demand-dial 4193links to simply come up one at a time. 4194.Pp 4195Certain devices cannot determine their physical bandwidth, so it 4196is sometimes necessary to use the 4197.Dq set bandwidth 4198command (described below) to make 4199.Dq set autoload 4200work correctly. 4201.It set bandwidth Ar value 4202This command sets the connection bandwidth in bits per second. 4203.Ar value 4204must be greater than zero. 4205It is currently only used by the 4206.Dq set autoload 4207command above. 4208.It set callback Ar option Ns No ... 4209If no arguments are given, callback is disabled, otherwise, 4210.Nm 4211will request (or in 4212.Fl direct 4213mode, will accept) one of the given 4214.Ar option Ns No s . 4215In client mode, if an 4216.Ar option 4217is NAK'd 4218.Nm 4219will request a different 4220.Ar option , 4221until no options remain at which point 4222.Nm 4223will terminate negotiations (unless 4224.Dq none 4225is one of the specified 4226.Ar option ) . 4227In server mode, 4228.Nm 4229will accept any of the given protocols - but the client 4230.Em must 4231request one of them. 4232If you wish callback to be optional, you must {include} 4233.Ar none 4234as an option. 4235.Pp 4236The 4237.Ar option Ns No s 4238are as follows (in this order of preference): 4239.Pp 4240.Bl -tag -width Ds 4241.It auth 4242The callee is expected to decide the callback number based on 4243authentication. 4244If 4245.Nm 4246is the callee, the number should be specified as the fifth field of 4247the peers entry in 4248.Pa /etc/ppp/ppp.secret . 4249.It cbcp 4250Microsoft's callback control protocol is used. 4251See 4252.Dq set cbcp 4253below. 4254.Pp 4255If you wish to negotiate 4256.Ar cbcp 4257in client mode but also wish to allow the server to request no callback at 4258CBCP negotiation time, you must specify both 4259.Ar cbcp 4260and 4261.Ar none 4262as callback options. 4263.It E.164 *| Ns Xo 4264.Ar number Ns Op , Ns Ar number Ns 4265.No ... 4266.Xc 4267The caller specifies the 4268.Ar number . 4269If 4270.Nm 4271is the callee, 4272.Ar number 4273should be either a comma separated list of allowable numbers or a 4274.Dq \&* , 4275meaning any number is permitted. 4276If 4277.Nm 4278is the caller, only a single number should be specified. 4279.Pp 4280Note, this option is very unsafe when used with a 4281.Dq \&* 4282as a malicious caller can tell 4283.Nm 4284to call any (possibly international) number without first authenticating 4285themselves. 4286.It none 4287If the peer does not wish to do callback at all, 4288.Nm 4289will accept the fact and continue without callback rather than terminating 4290the connection. 4291This is required (in addition to one or more other callback 4292options) if you wish callback to be optional. 4293.El 4294.Pp 4295.It set cbcp Oo 4296.No *| Ns Ar number Ns Oo 4297.No , Ns Ar number Ns ...\& Oc 4298.Op Ar delay Op Ar retry 4299.Oc 4300If no arguments are given, CBCP (Microsoft's CallBack Control Protocol) 4301is disabled - ie, configuring CBCP in the 4302.Dq set callback 4303command will result in 4304.Nm 4305requesting no callback in the CBCP phase. 4306Otherwise, 4307.Nm 4308attempts to use the given phone 4309.Ar number Ns No (s). 4310.Pp 4311In server mode 4312.Pq Fl direct , 4313.Nm 4314will insist that the client uses one of these numbers, unless 4315.Dq \&* 4316is used in which case the client is expected to specify the number. 4317.Pp 4318In client mode, 4319.Nm 4320will attempt to use one of the given numbers (whichever it finds to 4321be agreeable with the peer), or if 4322.Dq \&* 4323is specified, 4324.Nm 4325will expect the peer to specify the number. 4326.It set cd Oo 4327.No off| Ns Ar seconds Ns Op !\& 4328.Oc 4329Normally, 4330.Nm 4331checks for the existence of carrier depending on the type of device 4332that has been opened: 4333.Bl -tag -width XXX -offset XXX 4334.It Terminal Devices 4335Carrier is checked one second after the login script is complete. 4336If it's not set, 4337.Nm 4338assumes that this is because the device doesn't support carrier (which 4339is true for most 4340.Dq laplink 4341NULL-modem cables), logs the fact and stops checking 4342for carrier. 4343.Pp 4344As ptys don't support the TIOCMGET ioctl, the tty device will switch all 4345carrier detection off when it detects that the device is a pty. 4346.It ISDN (i4b) Devices 4347Carrier is checked once per second for 6 seconds. 4348If it's not set after 4349the sixth second, the connection attempt is considered to have failed and 4350the device is closed. 4351Carrier is always required for i4b devices. 4352.It PPPoE (netgraph) Devices 4353Carrier is checked once per second for 5 seconds. 4354If it's not set after 4355the fifth second, the connection attempt is considered to have failed and 4356the device is closed. 4357Carrier is always required for PPPoE devices. 4358.El 4359.Pp 4360All other device types don't support carrier. 4361Setting a carrier value will 4362result in a warning when the device is opened. 4363.Pp 4364Some modems take more than one second after connecting to assert the carrier 4365signal. 4366If this delay isn't increased, this will result in 4367.Nm Ns No 's 4368inability to detect when the link is dropped, as 4369.Nm 4370assumes that the device isn't asserting carrier. 4371.Pp 4372The 4373.Dq set cd 4374command overrides the default carrier behaviour. 4375.Ar seconds 4376specifies the maximum number of seconds that 4377.Nm 4378should wait after the dial script has finished before deciding if 4379carrier is available or not. 4380.Pp 4381If 4382.Dq off 4383is specified, 4384.Nm 4385will not check for carrier on the device, otherwise 4386.Nm 4387will not proceed to the login script until either carrier is detected 4388or until 4389.Ar seconds 4390has elapsed, at which point 4391.Nm 4392assumes that the device will not set carrier. 4393.Pp 4394If no arguments are given, carrier settings will go back to their default 4395values. 4396.Pp 4397If 4398.Ar seconds 4399is followed immediately by an exclamation mark 4400.Pq Dq !\& , 4401.Nm 4402will 4403.Em require 4404carrier. 4405If carrier is not detected after 4406.Ar seconds 4407seconds, the link will be disconnected. 4408.It set choked Op Ar timeout 4409This sets the number of seconds that 4410.Nm 4411will keep a choked output queue before dropping all pending output packets. 4412If 4413.Ar timeout 4414is less than or equal to zero or if 4415.Ar timeout 4416isn't specified, it is set to the default value of 4417.Em 120 seconds . 4418.Pp 4419A choked output queue occurs when 4420.Nm 4421has read a certain number of packets from the local network for transmission, 4422but cannot send the data due to link failure (the peer is busy etc.). 4423.Nm 4424will not read packets indefinitely. 4425Instead, it reads up to 4426.Em 30 4427packets (or 4428.Em 30 No + 4429.Em nlinks No * 4430.Em 2 4431packets in multi-link mode), then stops reading the network interface 4432until either 4433.Ar timeout 4434seconds have passed or at least one packet has been sent. 4435.Pp 4436If 4437.Ar timeout 4438seconds pass, all pending output packets are dropped. 4439.It set ctsrts|crtscts on|off 4440This sets hardware flow control. 4441Hardware flow control is 4442.Ar on 4443by default. 4444.It set deflate Ar out-winsize Op Ar in-winsize 4445This sets the DEFLATE algorithms default outgoing and incoming window 4446sizes. 4447Both 4448.Ar out-winsize 4449and 4450.Ar in-winsize 4451must be values between 4452.Em 8 4453and 4454.Em 15 . 4455If 4456.Ar in-winsize 4457is specified, 4458.Nm 4459will insist that this window size is used and will not accept any other 4460values from the peer. 4461.It set dns Op Ar primary Op Ar secondary 4462This command specifies DNS overrides for the 4463.Dq accept dns 4464command. 4465Refer to the 4466.Dq accept 4467command description above for details. 4468This command does not affect the IP numbers requested using 4469.Dq enable dns . 4470.It set device|line Xo 4471.Ar value Ns No ... 4472.Xc 4473This sets the device(s) to which 4474.Nm 4475will talk to the given 4476.Dq value . 4477.Pp 4478All ISDN and serial device names are expected to begin with 4479.Pa /dev/ . 4480ISDN devices are usually called 4481.Pa i4brbchX 4482and serial devices are usually called 4483.Pa cuaXX . 4484.Pp 4485If 4486.Dq value 4487does not begin with 4488.Pa /dev/ , 4489it must either begin with an exclamation mark 4490.Pq Dq !\& , 4491be of the format 4492.No PPPoE: Ns Ar iface Ns Xo 4493.Op \&: Ns Ar provider Ns 4494.Xc 4495(on 4496.Xr netgraph 4 4497enabled systems), or be of the format 4498.Sm off 4499.Ar host : port Op /tcp|udp . 4500.Sm on 4501.Pp 4502If it begins with an exclamation mark, the rest of the device name is 4503treated as a program name, and that program is executed when the device 4504is opened. 4505Standard input, output and error are fed back to 4506.Nm 4507and are read and written as if they were a regular device. 4508.Pp 4509If a 4510.No PPPoE: Ns Ar iface Ns Xo 4511.Op \&: Ns Ar provider Ns 4512.Xc 4513specification is given, 4514.Nm 4515will attempt to create a 4516.Em PPP 4517over Ethernet connection using the given 4518.Ar iface 4519interface by using 4520.Xr netgraph 4 . 4521If 4522.Xr netgraph 4 4523is not available, 4524.Nm 4525will attempt to load it using 4526.Xr kldload 2 . 4527If this fails, an external program must be used such as the 4528.Xr pppoe 8 4529program available under 4530.Ox . 4531The given 4532.Ar provider 4533is passed as the service name in the PPPoE Discovery Initiation (PADI) 4534packet. 4535If no provider is given, an empty value will be used. 4536.Pp 4537When a PPPoE connection is established, 4538.Nm 4539will place the name of the Access Concentrator in the environment variable 4540.Ev ACNAME . 4541.Pp 4542Refer to 4543.Xr netgraph 4 4544and 4545.Xr ng_pppoe 4 4546for further details. 4547.Pp 4548If a 4549.Ar host Ns No : Ns Ar port Ns Oo 4550.No /tcp|udp 4551.Oc 4552specification is given, 4553.Nm 4554will attempt to connect to the given 4555.Ar host 4556on the given 4557.Ar port . 4558If a 4559.Dq /tcp 4560or 4561.Dq /udp 4562suffix is not provided, the default is 4563.Dq /tcp . 4564Refer to the section on 4565.Em PPP OVER TCP and UDP 4566above for further details. 4567.Pp 4568If multiple 4569.Dq values 4570are specified, 4571.Nm 4572will attempt to open each one in turn until it succeeds or runs out of 4573devices. 4574.It set dial Ar chat-script 4575This specifies the chat script that will be used to dial the other 4576side. 4577See also the 4578.Dq set login 4579command below. 4580Refer to 4581.Xr chat 8 4582and to the example configuration files for details of the chat script 4583format. 4584It is possible to specify some special 4585.Sq values 4586in your chat script as follows: 4587.Bl -tag -width 2n 4588.It Li \ec 4589When used as the last character in a 4590.Sq send 4591string, this indicates that a newline should not be appended. 4592.It Li \ed 4593When the chat script encounters this sequence, it delays two seconds. 4594.It Li \ep 4595When the chat script encounters this sequence, it delays for one quarter of 4596a second. 4597.It Li \en 4598This is replaced with a newline character. 4599.It Li \er 4600This is replaced with a carriage return character. 4601.It Li \es 4602This is replaced with a space character. 4603.It Li \et 4604This is replaced with a tab character. 4605.It Li \eT 4606This is replaced by the current phone number (see 4607.Dq set phone 4608below). 4609.It Li \eP 4610This is replaced by the current 4611.Ar authkey 4612value (see 4613.Dq set authkey 4614above). 4615.It Li \eU 4616This is replaced by the current 4617.Ar authname 4618value (see 4619.Dq set authname 4620above). 4621.El 4622.Pp 4623Note that two parsers will examine these escape sequences, so in order to 4624have the 4625.Sq chat parser 4626see the escape character, it is necessary to escape it from the 4627.Sq command parser . 4628This means that in practice you should use two escapes, for example: 4629.Bd -literal -offset indent 4630set dial "... ATDT\\\\T CONNECT" 4631.Ed 4632.Pp 4633It is also possible to execute external commands from the chat script. 4634To do this, the first character of the expect or send string is an 4635exclamation mark 4636.Pq Dq !\& . 4637If a literal exclamation mark is required, double it up to 4638.Dq !!\& 4639and it will be treated as a single literal 4640.Dq !\& . 4641When the command is executed, standard input and standard output are 4642directed to the open device (see the 4643.Dq set device 4644command), and standard error is read by 4645.Nm 4646and substituted as the expect or send string. 4647If 4648.Nm 4649is running in interactive mode, file descriptor 3 is attached to 4650.Pa /dev/tty . 4651.Pp 4652For example (wrapped for readability): 4653.Bd -literal -offset indent 4654set login "TIMEOUT 5 \\"\\" \\"\\" login:--login: ppp \e 4655word: ppp \\"!sh \\\\-c \\\\\\"echo \\\\-n label: >&2\\\\\\"\\" \e 4656\\"!/bin/echo in\\" HELLO" 4657.Ed 4658.Pp 4659would result in the following chat sequence (output using the 4660.Sq set log local chat 4661command before dialing): 4662.Bd -literal -offset indent 4663Dial attempt 1 of 1 4664dial OK! 4665Chat: Expecting: 4666Chat: Sending: 4667Chat: Expecting: login:--login: 4668Chat: Wait for (5): login: 4669Chat: Sending: ppp 4670Chat: Expecting: word: 4671Chat: Wait for (5): word: 4672Chat: Sending: ppp 4673Chat: Expecting: !sh \\-c "echo \\-n label: >&2" 4674Chat: Exec: sh -c "echo -n label: >&2" 4675Chat: Wait for (5): !sh \\-c "echo \\-n label: >&2" --> label: 4676Chat: Exec: /bin/echo in 4677Chat: Sending: 4678Chat: Expecting: HELLO 4679Chat: Wait for (5): HELLO 4680login OK! 4681.Ed 4682.Pp 4683Note (again) the use of the escape character, allowing many levels of 4684nesting. 4685Here, there are four parsers at work. 4686The first parses the original line, reading it as three arguments. 4687The second parses the third argument, reading it as 11 arguments. 4688At this point, it is 4689important that the 4690.Dq \&- 4691signs are escaped, otherwise this parser will see them as constituting 4692an expect-send-expect sequence. 4693When the 4694.Dq !\& 4695character is seen, the execution parser reads the first command as three 4696arguments, and then 4697.Xr sh 1 4698itself expands the argument after the 4699.Fl c . 4700As we wish to send the output back to the modem, in the first example 4701we redirect our output to file descriptor 2 (stderr) so that 4702.Nm 4703itself sends and logs it, and in the second example, we just output to stdout, 4704which is attached directly to the modem. 4705.Pp 4706This, of course means that it is possible to execute an entirely external 4707.Dq chat 4708command rather than using the internal one. 4709See 4710.Xr chat 8 4711for a good alternative. 4712.Pp 4713The external command that is executed is subjected to the same special 4714word expansions as the 4715.Dq !bg 4716command. 4717.It set enddisc Op label|IP|MAC|magic|psn value 4718This command sets our local endpoint discriminator. 4719If set prior to LCP negotiation, and if no 4720.Dq disable enddisc 4721command has been used, 4722.Nm 4723will send the information to the peer using the LCP endpoint discriminator 4724option. 4725The following discriminators may be set: 4726.Bl -tag -width indent 4727.It Li label 4728The current label is used. 4729.It Li IP 4730Our local IP number is used. 4731As LCP is negotiated prior to IPCP, it is 4732possible that the IPCP layer will subsequently change this value. 4733If 4734it does, the endpoint discriminator stays at the old value unless manually 4735reset. 4736.It Li MAC 4737This is similar to the 4738.Ar IP 4739option above, except that the MAC address associated with the local IP 4740number is used. 4741If the local IP number is not resident on any Ethernet 4742interface, the command will fail. 4743.Pp 4744As the local IP number defaults to whatever the machine host name is, 4745.Dq set enddisc mac 4746is usually done prior to any 4747.Dq set ifaddr 4748commands. 4749.It Li magic 4750A 20 digit random number is used. 4751Care should be taken when using magic numbers as restarting 4752.Nm 4753or creating a link using a different 4754.Nm 4755invocation will also use a different magic number and will therefore not 4756be recognised by the peer as belonging to the same bundle. 4757This makes it unsuitable for 4758.Fl direct 4759connections. 4760.It Li psn Ar value 4761The given 4762.Ar value 4763is used. 4764.Ar Value 4765should be set to an absolute public switched network number with the 4766country code first. 4767.El 4768.Pp 4769If no arguments are given, the endpoint discriminator is reset. 4770.It set escape Ar value... 4771This option is similar to the 4772.Dq set accmap 4773option above. 4774It allows the user to specify a set of characters that will be 4775.Sq escaped 4776as they travel across the link. 4777.It set filter dial|alive|in|out Ar rule-no Xo 4778.No permit|deny|clear| Ns Ar rule-no 4779.Op !\& 4780.Oo Op host 4781.Ar src_addr Ns Op / Ns Ar width 4782.Op Ar dst_addr Ns Op / Ns Ar width 4783.Oc [ Ns Ar proto 4784.Op src lt|eq|gt Ar port 4785.Op dst lt|eq|gt Ar port 4786.Op estab 4787.Op syn 4788.Op finrst 4789.Op timeout Ar secs ] 4790.Xc 4791.Nm 4792supports four filter sets. 4793The 4794.Em alive 4795filter specifies packets that keep the connection alive - resetting the 4796idle timer. 4797The 4798.Em dial 4799filter specifies packets that cause 4800.Nm 4801to dial when in 4802.Fl auto 4803mode. 4804The 4805.Em in 4806filter specifies packets that are allowed to travel 4807into the machine and the 4808.Em out 4809filter specifies packets that are allowed out of the machine. 4810.Pp 4811Filtering is done prior to any IP alterations that might be done by the 4812NAT engine on outgoing packets and after any IP alterations that might 4813be done by the NAT engine on incoming packets. 4814By default all empty filter sets allow all packets to pass. 4815Rules are processed in order according to 4816.Ar rule-no 4817(unless skipped by specifying a rule number as the 4818.Ar action ) . 4819Up to 40 rules may be given for each set. 4820If a packet doesn't match 4821any of the rules in a given set, it is discarded. 4822In the case of 4823.Em in 4824and 4825.Em out 4826filters, this means that the packet is dropped. 4827In the case of 4828.Em alive 4829filters it means that the packet will not reset the idle timer (even if 4830the 4831.Ar in Ns No / Ns Ar out 4832filter has a 4833.Dq timeout 4834value) and in the case of 4835.Em dial 4836filters it means that the packet will not trigger a dial. 4837A packet failing to trigger a dial will be dropped rather than queued. 4838Refer to the 4839section on 4840.Sx PACKET FILTERING 4841above for further details. 4842.It set hangup Ar chat-script 4843This specifies the chat script that will be used to reset the device 4844before it is closed. 4845It should not normally be necessary, but can 4846be used for devices that fail to reset themselves properly on close. 4847.It set help|? Op Ar command 4848This command gives a summary of available set commands, or if 4849.Ar command 4850is specified, the command usage is shown. 4851.It set ifaddr Oo Ar myaddr Ns 4852.Op / Ns Ar \&nn 4853.Oo Ar hisaddr Ns Op / Ns Ar \&nn 4854.Oo Ar netmask 4855.Op Ar triggeraddr 4856.Oc Oc 4857.Oc 4858This command specifies the IP addresses that will be used during 4859IPCP negotiation. 4860Addresses are specified using the format 4861.Pp 4862.Dl a.b.c.d/nn 4863.Pp 4864Where 4865.Dq a.b.c.d 4866is the preferred IP, but 4867.Ar nn 4868specifies how many bits of the address we will insist on. 4869If 4870.No / Ns Ar nn 4871is omitted, it defaults to 4872.Dq /32 4873unless the IP address is 0.0.0.0 in which case it defaults to 4874.Dq /0 . 4875.Pp 4876If you wish to assign a dynamic IP number to the peer, 4877.Ar hisaddr 4878may also be specified as a range of IP numbers in the format 4879.Bd -ragged -offset indent 4880.Ar \&IP Ns Oo \&- Ns Ar \&IP Ns Xo 4881.Oc Ns Oo , Ns Ar \&IP Ns 4882.Op \&- Ns Ar \&IP Ns 4883.Oc Ns ... 4884.Xc 4885.Ed 4886.Pp 4887for example: 4888.Pp 4889.Dl set ifaddr 10.0.0.1 10.0.1.2-10.0.1.10,10.0.1.20 4890.Pp 4891will only negotiate 4892.Dq 10.0.0.1 4893as the local IP number, but may assign any of the given 10 IP 4894numbers to the peer. 4895If the peer requests one of these numbers, 4896and that number is not already in use, 4897.Nm 4898will grant the peers request. 4899This is useful if the peer wants 4900to re-establish a link using the same IP number as was previously 4901allocated (thus maintaining any existing tcp or udp connections). 4902.Pp 4903If the peer requests an IP number that's either outside 4904of this range or is already in use, 4905.Nm 4906will suggest a random unused IP number from the range. 4907.Pp 4908If 4909.Ar triggeraddr 4910is specified, it is used in place of 4911.Ar myaddr 4912in the initial IPCP negotiation. 4913However, only an address in the 4914.Ar myaddr 4915range will be accepted. 4916This is useful when negotiating with some 4917.Dv PPP 4918implementations that will not assign an IP number unless their peer 4919requests 4920.Dq 0.0.0.0 . 4921.Pp 4922It should be noted that in 4923.Fl auto 4924mode, 4925.Nm 4926will configure the interface immediately upon reading the 4927.Dq set ifaddr 4928line in the config file. 4929In any other mode, these values are just 4930used for IPCP negotiations, and the interface isn't configured 4931until the IPCP layer is up. 4932.Pp 4933Note that the 4934.Ar HISADDR 4935argument may be overridden by the third field in the 4936.Pa ppp.secret 4937file once the client has authenticated itself 4938(if PAP or CHAP are 4939.Dq enabled ) . 4940Refer to the 4941.Sx AUTHENTICATING INCOMING CONNECTIONS 4942section for details. 4943.Pp 4944In all cases, if the interface is already configured, 4945.Nm 4946will try to maintain the interface IP numbers so that any existing 4947bound sockets will remain valid. 4948.It set ifqueue Ar packets 4949Set the maximum number of packets that 4950.Nm 4951will read from the tunnel interface while data cannot be sent to any of 4952the available links. 4953This queue limit is necessary to flow control outgoing data as the tunnel 4954interface is likely to be far faster than the combined links available to 4955.Nm . 4956.Pp 4957If 4958.Ar packets 4959is set to a value less than the number of links, 4960.Nm 4961will read up to that value regardless. 4962This prevents any possible latency problems. 4963.Pp 4964The default value for 4965.Ar packets 4966is 4967.Dq 30 . 4968.It set ccpretry|ccpretries Oo Ar timeout 4969.Op Ar reqtries Op Ar trmtries 4970.Oc 4971.It set chapretry|chapretries Oo Ar timeout 4972.Op Ar reqtries 4973.Oc 4974.It set ipcpretry|ipcpretries Oo Ar timeout 4975.Op Ar reqtries Op Ar trmtries 4976.Oc 4977.It set lcpretry|lcpretries Oo Ar timeout 4978.Op Ar reqtries Op Ar trmtries 4979.Oc 4980.It set papretry|papretries Oo Ar timeout 4981.Op Ar reqtries 4982.Oc 4983These commands set the number of seconds that 4984.Nm 4985will wait before resending Finite State Machine (FSM) Request packets. 4986The default 4987.Ar timeout 4988for all FSMs is 3 seconds (which should suffice in most cases). 4989.Pp 4990If 4991.Ar reqtries 4992is specified, it tells 4993.Nm 4994how many configuration request attempts it should make while receiving 4995no reply from the peer before giving up. 4996The default is 5 attempts for 4997CCP, LCP and IPCP and 3 attempts for PAP and CHAP. 4998.Pp 4999If 5000.Ar trmtries 5001is specified, it tells 5002.Nm 5003how many terminate requests should be sent before giving up waiting for the 5004peers response. 5005The default is 3 attempts. 5006Authentication protocols are 5007not terminated and it is therefore invalid to specify 5008.Ar trmtries 5009for PAP or CHAP. 5010.Pp 5011In order to avoid negotiations with the peer that will never converge, 5012.Nm 5013will only send at most 3 times the configured number of 5014.Ar reqtries 5015in any given negotiation session before giving up and closing that layer. 5016.It set log Xo 5017.Op local 5018.Op +|- Ns 5019.Ar value Ns No ... 5020.Xc 5021This command allows the adjustment of the current log level. 5022Refer to the Logging Facility section for further details. 5023.It set login Ar chat-script 5024This 5025.Ar chat-script 5026compliments the dial-script. 5027If both are specified, the login 5028script will be executed after the dial script. 5029Escape sequences available in the dial script are also available here. 5030.It set logout Ar chat-script 5031This specifies the chat script that will be used to logout 5032before the hangup script is called. 5033It should not normally be necessary. 5034.It set lqrperiod Ar frequency 5035This command sets the 5036.Ar frequency 5037in seconds at which 5038.Em LQR 5039or 5040.Em ECHO LQR 5041packets are sent. 5042The default is 30 seconds. 5043You must also use the 5044.Dq enable lqr 5045command if you wish to send LQR requests to the peer. 5046.It set mode Ar interactive|auto|ddial|background 5047This command allows you to change the 5048.Sq mode 5049of the specified link. 5050This is normally only useful in multi-link mode, 5051but may also be used in uni-link mode. 5052.Pp 5053It is not possible to change a link that is 5054.Sq direct 5055or 5056.Sq dedicated . 5057.Pp 5058Note: If you issue the command 5059.Dq set mode auto , 5060and have network address translation enabled, it may be useful to 5061.Dq enable iface-alias 5062afterwards. 5063This will allow 5064.Nm 5065to do the necessary address translations to enable the process that 5066triggers the connection to connect once the link is up despite the 5067peer assigning us a new (dynamic) IP address. 5068.It set mppe Op 40|56|128|* Op stateless|stateful|* 5069This option selects the encryption parameters used when negotiation 5070MPPE. 5071MPPE can be disabled entirely with the 5072.Dq disable mppe 5073command. 5074If no arguments are given, 5075.Nm 5076will attempt to negotiate a stateful link with a 128 bit key, but 5077will agree to whatever the peer requests (including no encryption 5078at all). 5079.Pp 5080If any arguments are given, 5081.Nm 5082will 5083.Em insist 5084on using MPPE and will close the link if it's rejected by the peer. 5085.Pp 5086The first argument specifies the number of bits that 5087.Nm 5088should insist on during negotiations and the second specifies whether 5089.Nm 5090should insist on stateful or stateless mode. 5091In stateless mode, the 5092encryption dictionary is re-initialised with every packet according to 5093an encryption key that is changed with every packet. 5094In stateful mode, 5095the encryption dictionary is re-initialised every 256 packets or after 5096the loss of any data and the key is changed every 256 packets. 5097Stateless mode is less efficient but is better for unreliable transport 5098layers. 5099.It set mrru Op Ar value 5100Setting this option enables Multi-link PPP negotiations, also known as 5101Multi-link Protocol or MP. 5102There is no default MRRU (Maximum Reconstructed Receive Unit) value. 5103If no argument is given, multi-link mode is disabled. 5104.It set mru Xo 5105.Op max Ns Op imum 5106.Op Ar value 5107.Xc 5108The default MRU (Maximum Receive Unit) is 1500. 5109If it is increased, the other side *may* increase its MTU. 5110In theory there is no point in decreasing the MRU to below the default as the 5111.Em PPP 5112protocol says implementations *must* be able to accept packets of at 5113least 1500 octets. 5114.Pp 5115If the 5116.Dq maximum 5117keyword is used, 5118.Nm 5119will refuse to negotiate a higher value. 5120The maximum MRU can be set to 2048 at most. 5121Setting a maximum of less than 1500 violates the 5122.Em PPP 5123rfc, but may sometimes be necessary. 5124For example, 5125.Em PPPoE 5126imposes a maximum of 1492 due to hardware limitations. 5127.Pp 5128If no argument is given, 1500 is assumed. 5129A value must be given when 5130.Dq maximum 5131is specified. 5132.It set mtu Xo 5133.Op max Ns Op imum 5134.Op Ar value 5135.Xc 5136The default MTU is 1500. 5137At negotiation time, 5138.Nm 5139will accept whatever MRU the peer requests (assuming it's 5140not less than 296 bytes or greater than the assigned maximum). 5141If the MTU is set, 5142.Nm 5143will not accept MRU values less than 5144.Ar value . 5145When negotiations are complete, the MTU is used when writing to the 5146interface, even if the peer requested a higher value MRU. 5147This can be useful for 5148limiting your packet size (giving better bandwidth sharing at the expense 5149of more header data). 5150.Pp 5151If the 5152.Dq maximum 5153keyword is used, 5154.Nm 5155will refuse to negotiate a higher value. 5156The maximum MTU can be set to 2048 at most. 5157.Pp 5158If no 5159.Ar value 5160is given, 1500, or whatever the peer asks for is used. 5161A value must be given when 5162.Dq maximum 5163is specified. 5164.It set nbns Op Ar x.x.x.x Op Ar y.y.y.y 5165This option allows the setting of the Microsoft NetBIOS name server 5166values to be returned at the peers request. 5167If no values are given, 5168.Nm 5169will reject any such requests. 5170.It set openmode active|passive Op Ar delay 5171By default, 5172.Ar openmode 5173is always 5174.Ar active 5175with a one second 5176.Ar delay . 5177That is, 5178.Nm 5179will always initiate LCP/IPCP/CCP negotiation one second after the line 5180comes up. 5181If you want to wait for the peer to initiate negotiations, you 5182can use the value 5183.Ar passive . 5184If you want to initiate negotiations immediately or after more than one 5185second, the appropriate 5186.Ar delay 5187may be specified here in seconds. 5188.It set parity odd|even|none|mark 5189This allows the line parity to be set. 5190The default value is 5191.Ar none . 5192.It set phone Ar telno Ns Xo 5193.Oo \&| Ns Ar backupnumber 5194.Oc Ns ... Ns Oo : Ns Ar nextnumber 5195.Oc Ns ... 5196.Xc 5197This allows the specification of the phone number to be used in 5198place of the \\\\T string in the dial and login chat scripts. 5199Multiple phone numbers may be given separated either by a pipe 5200.Pq Dq \&| 5201or a colon 5202.Pq Dq \&: . 5203.Pp 5204Numbers after the pipe are only dialed if the dial or login 5205script for the previous number failed. 5206.Pp 5207Numbers after the colon are tried sequentially, irrespective of 5208the reason the line was dropped. 5209.Pp 5210If multiple numbers are given, 5211.Nm 5212will dial them according to these rules until a connection is made, retrying 5213the maximum number of times specified by 5214.Dq set redial 5215below. 5216In 5217.Fl background 5218mode, each number is attempted at most once. 5219.It set Op proc Ns Xo 5220.No title Op Ar value 5221.Xc 5222The current process title as displayed by 5223.Xr ps 1 5224is changed according to 5225.Ar value . 5226If 5227.Ar value 5228is not specified, the original process title is restored. 5229All the 5230word replacements done by the shell commands (see the 5231.Dq bg 5232command above) are done here too. 5233.Pp 5234Note, if USER is required in the process title, the 5235.Dq set proctitle 5236command must appear in 5237.Pa ppp.linkup , 5238as it is not known when the commands in 5239.Pa ppp.conf 5240are executed. 5241.It set radius Op Ar config-file 5242This command enables RADIUS support (if it's compiled in). 5243.Ar config-file 5244refers to the radius client configuration file as described in 5245.Xr radius.conf 5 . 5246If PAP or CHAP are 5247.Dq enable Ns No d , 5248.Nm 5249behaves as a 5250.Em \&N Ns No etwork 5251.Em \&A Ns No ccess 5252.Em \&S Ns No erver 5253and uses the configured RADIUS server to authenticate rather than 5254authenticating from the 5255.Pa ppp.secret 5256file or from the passwd database. 5257.Pp 5258If neither PAP or CHAP are enabled, 5259.Dq set radius 5260will do nothing. 5261.Pp 5262.Nm 5263uses the following attributes from the RADIUS reply: 5264.Bl -tag -width XXX -offset XXX 5265.It RAD_FRAMED_IP_ADDRESS 5266The peer IP address is set to the given value. 5267.It RAD_FRAMED_IP_NETMASK 5268The tun interface netmask is set to the given value. 5269.It RAD_FRAMED_MTU 5270If the given MTU is less than the peers MRU as agreed during LCP 5271negotiation, *and* it is less that any configured MTU (see the 5272.Dq set mru 5273command), the tun interface MTU is set to the given value. 5274.It RAD_FRAMED_COMPRESSION 5275If the received compression type is 5276.Dq 1 , 5277.Nm 5278will request VJ compression during IPCP negotiations despite any 5279.Dq disable vj 5280configuration command. 5281.It RAD_FILTER_ID 5282This attribute is stored but not yet used. 5283.It RAD_FRAMED_ROUTE 5284The received string is expected to be in the format 5285.Ar dest Ns Op / Ns Ar bits 5286.Ar gw 5287.Op Ar metrics . 5288Any specified metrics are ignored. 5289.Dv MYADDR 5290and 5291.Dv HISADDR 5292are understood as valid values for 5293.Ar dest 5294and 5295.Ar gw , 5296.Dq default 5297can be used for 5298.Ar dest 5299to sepcify the default route, and 5300.Dq 0.0.0.0 5301is understood to be the same as 5302.Dq default 5303for 5304.Ar dest 5305and 5306.Dv HISADDR 5307for 5308.Ar gw . 5309.Pp 5310For example, a returned value of 5311.Dq 1.2.3.4/24 0.0.0.0 1 2 -1 3 400 5312would result in a routing table entry to the 1.2.3.0/24 network via 5313.Dv HISADDR 5314and a returned value of 5315.Dq 0.0.0.0 0.0.0.0 5316or 5317.Dq default HISADDR 5318would result in a default route to 5319.Dv HISADDR . 5320.Pp 5321All RADIUS routes are applied after any sticky routes are applied, making 5322RADIUS routes override configured routes. 5323This also applies for RADIUS routes that don't {include} the 5324.Dv MYADDR 5325or 5326.Dv HISADDR 5327keywords. 5328.Pp 5329.It RAD_SESSION_TIMEOUT 5330If supplied, the client connection is closed after the given number of 5331seconds. 5332.It RAD_REPLY_MESSAGE 5333If supplied, this message is passed back to the peer as the authentication 5334SUCCESS text. 5335.It RAD_MICROSOFT_MS_CHAP_ERROR 5336If this 5337.Dv RAD_VENDOR_MICROSOFT 5338vendor specific attribute is supplied, it is passed back to the peer as the 5339authentication FAILURE text. 5340.El 5341Values received from the RADIUS server may be viewed using 5342.Dq show bundle . 5343.It set reconnect Ar timeout ntries 5344Should the line drop unexpectedly (due to loss of CD or LQR 5345failure), a connection will be re-established after the given 5346.Ar timeout . 5347The line will be re-connected at most 5348.Ar ntries 5349times. 5350.Ar Ntries 5351defaults to zero. 5352A value of 5353.Ar random 5354for 5355.Ar timeout 5356will result in a variable pause, somewhere between 1 and 30 seconds. 5357.It set recvpipe Op Ar value 5358This sets the routing table RECVPIPE value. 5359The optimum value is just over twice the MTU value. 5360If 5361.Ar value 5362is unspecified or zero, the default kernel controlled value is used. 5363.It set redial Ar secs Ns Xo 5364.Oo + Ns Ar inc Ns 5365.Op - Ns Ar max Ns 5366.Oc Ns Op . Ns Ar next 5367.Op Ar attempts 5368.Xc 5369.Nm 5370can be instructed to attempt to redial 5371.Ar attempts 5372times. 5373If more than one phone number is specified (see 5374.Dq set phone 5375above), a pause of 5376.Ar next 5377is taken before dialing each number. 5378A pause of 5379.Ar secs 5380is taken before starting at the first number again. 5381A literal value of 5382.Dq Li random 5383may be used here in place of 5384.Ar secs 5385and 5386.Ar next , 5387causing a random delay of between 1 and 30 seconds. 5388.Pp 5389If 5390.Ar inc 5391is specified, its value is added onto 5392.Ar secs 5393each time 5394.Nm 5395tries a new number. 5396.Ar secs 5397will only be incremented at most 5398.Ar max 5399times. 5400.Ar max 5401defaults to 10. 5402.Pp 5403Note, the 5404.Ar secs 5405delay will be effective, even after 5406.Ar attempts 5407has been exceeded, so an immediate manual dial may appear to have 5408done nothing. 5409If an immediate dial is required, a 5410.Dq !\& 5411should immediately follow the 5412.Dq open 5413keyword. 5414See the 5415.Dq open 5416description above for further details. 5417.It set sendpipe Op Ar value 5418This sets the routing table SENDPIPE value. 5419The optimum value is just over twice the MTU value. 5420If 5421.Ar value 5422is unspecified or zero, the default kernel controlled value is used. 5423.It "set server|socket" Ar TcpPort Ns No \&| Ns Xo 5424.Ar LocalName Ns No |none|open|closed 5425.Op password Op Ar mask 5426.Xc 5427This command tells 5428.Nm 5429to listen on the given socket or 5430.Sq diagnostic port 5431for incoming command connections. 5432.Pp 5433The word 5434.Dq none 5435instructs 5436.Nm 5437to close any existing socket and clear the socket configuration. 5438The word 5439.Dq open 5440instructs 5441.Nm 5442to attempt to re-open the port. 5443The word 5444.Dq closed 5445instructs 5446.Nm 5447to close the open port. 5448.Pp 5449If you wish to specify a local domain socket, 5450.Ar LocalName 5451must be specified as an absolute file name, otherwise it is assumed 5452to be the name or number of a TCP port. 5453You may specify the octal umask to be used with a local domain socket. 5454Refer to 5455.Xr umask 2 5456for umask details. 5457Refer to 5458.Xr services 5 5459for details of how to translate TCP port names. 5460.Pp 5461You must also specify the password that must be entered by the client 5462(using the 5463.Dq passwd 5464variable above) when connecting to this socket. 5465If the password is 5466specified as an empty string, no password is required for connecting clients. 5467.Pp 5468When specifying a local domain socket, the first 5469.Dq %d 5470sequence found in the socket name will be replaced with the current 5471interface unit number. 5472This is useful when you wish to use the same 5473profile for more than one connection. 5474.Pp 5475In a similar manner TCP sockets may be prefixed with the 5476.Dq + 5477character, in which case the current interface unit number is added to 5478the port number. 5479.Pp 5480When using 5481.Nm 5482with a server socket, the 5483.Xr pppctl 8 5484command is the preferred mechanism of communications. 5485Currently, 5486.Xr telnet 1 5487can also be used, but link encryption may be implemented in the future, so 5488.Xr telnet 1 5489should be avoided. 5490.Pp 5491Note; 5492.Dv SIGUSR1 5493and 5494.Dv SIGUSR2 5495interact with the diagnostic socket. 5496.It set speed Ar value 5497This sets the speed of the serial device. 5498If speed is specified as 5499.Dq sync , 5500.Nm 5501treats the device as a synchronous device. 5502.Pp 5503Certain device types will know whether they should be specified as 5504synchronous or asynchronous. 5505These devices will override incorrect 5506settings and log a warning to this effect. 5507.It set stopped Op Ar LCPseconds Op Ar CCPseconds 5508If this option is set, 5509.Nm 5510will time out after the given FSM (Finite State Machine) has been in 5511the stopped state for the given number of 5512.Dq seconds . 5513This option may be useful if the peer sends a terminate request, 5514but never actually closes the connection despite our sending a terminate 5515acknowledgement. 5516This is also useful if you wish to 5517.Dq set openmode passive 5518and time out if the peer doesn't send a Configure Request within the 5519given time. 5520Use 5521.Dq set log +lcp +ccp 5522to make 5523.Nm 5524log the appropriate state transitions. 5525.Pp 5526The default value is zero, where 5527.Nm 5528doesn't time out in the stopped state. 5529.Pp 5530This value should not be set to less than the openmode delay (see 5531.Dq set openmode 5532above). 5533.It set timeout Ar idleseconds Op Ar mintimeout 5534This command allows the setting of the idle timer. 5535Refer to the section titled 5536.Sx SETTING THE IDLE TIMER 5537for further details. 5538.Pp 5539If 5540.Ar mintimeout 5541is specified, 5542.Nm 5543will never idle out before the link has been up for at least that number 5544of seconds. 5545.It set urgent Xo 5546.Op tcp|udp|none 5547.Oo Op +|- Ns 5548.Ar port 5549.Oc No ... 5550.Xc 5551This command controls the ports that 5552.Nm 5553prioritizes when transmitting data. 5554The default priority TCP ports 5555are ports 21 (ftp control), 22 (ssh), 23 (telnet), 513 (login), 514 (shell), 5556543 (klogin) and 544 (kshell). 5557There are no priority UDP ports by default. 5558See 5559.Xr services 5 5560for details. 5561.Pp 5562If neither 5563.Dq tcp 5564or 5565.Dq udp 5566are specified, 5567.Dq tcp 5568is assumed. 5569.Pp 5570If no 5571.Ar port Ns No s 5572are given, the priority port lists are cleared (although if 5573.Dq tcp 5574or 5575.Dq udp 5576is specified, only that list is cleared). 5577If the first 5578.Ar port 5579argument is prefixed with a plus 5580.Pq Dq \&+ 5581or a minus 5582.Pq Dq \&- , 5583the current list is adjusted, otherwise the list is reassigned. 5584.Ar port Ns No s 5585prefixed with a plus or not prefixed at all are added to the list and 5586.Ar port Ns No s 5587prefixed with a minus are removed from the list. 5588.Pp 5589If 5590.Dq none 5591is specified, all priority port lists are disabled and even 5592.Dv IPTOS_LOWDELAY 5593packets are not prioritised. 5594.It set vj slotcomp on|off 5595This command tells 5596.Nm 5597whether it should attempt to negotiate VJ slot compression. 5598By default, slot compression is turned 5599.Ar on . 5600.It set vj slots Ar nslots 5601This command sets the initial number of slots that 5602.Nm 5603will try to negotiate with the peer when VJ compression is enabled (see the 5604.Sq enable 5605command above). 5606It defaults to a value of 16. 5607.Ar Nslots 5608must be between 5609.Ar 4 5610and 5611.Ar 16 5612inclusive. 5613.El 5614.Pp 5615.It shell|! Op Ar command 5616If 5617.Ar command 5618is not specified a shell is invoked according to the 5619.Dv SHELL 5620environment variable. 5621Otherwise, the given 5622.Ar command 5623is executed. 5624Word replacement is done in the same way as for the 5625.Dq !bg 5626command as described above. 5627.Pp 5628Use of the ! character 5629requires a following space as with any of the other commands. 5630You should note that this command is executed in the foreground; 5631.Nm 5632will not continue running until this process has exited. 5633Use the 5634.Dv bg 5635command if you wish processing to happen in the background. 5636.It show Ar var 5637This command allows the user to examine the following: 5638.Bl -tag -width 2n 5639.It show bundle 5640Show the current bundle settings. 5641.It show ccp 5642Show the current CCP compression statistics. 5643.It show compress 5644Show the current VJ compression statistics. 5645.It show escape 5646Show the current escape characters. 5647.It show filter Op Ar name 5648List the current rules for the given filter. 5649If 5650.Ar name 5651is not specified, all filters are shown. 5652.It show hdlc 5653Show the current HDLC statistics. 5654.It show help|? 5655Give a summary of available show commands. 5656.It show iface 5657Show the current interface information 5658(the same as 5659.Dq iface show ) . 5660.It show ipcp 5661Show the current IPCP statistics. 5662.It show layers 5663Show the protocol layers currently in use. 5664.It show lcp 5665Show the current LCP statistics. 5666.It show Op data Ns Xo 5667.No link 5668.Xc 5669Show high level link information. 5670.It show links 5671Show a list of available logical links. 5672.It show log 5673Show the current log values. 5674.It show mem 5675Show current memory statistics. 5676.It show ncp 5677Show the current NCP statistics. 5678.It show physical 5679Show low level link information. 5680.It show mp 5681Show Multi-link information. 5682.It show proto 5683Show current protocol totals. 5684.It show route 5685Show the current routing tables. 5686.It show stopped 5687Show the current stopped timeouts. 5688.It show timer 5689Show the active alarm timers. 5690.It show version 5691Show the current version number of 5692.Nm . 5693.El 5694.Pp 5695.It term 5696Go into terminal mode. 5697Characters typed at the keyboard are sent to the device. 5698Characters read from the device are displayed on the screen. 5699When a remote 5700.Em PPP 5701peer is detected, 5702.Nm 5703automatically enables Packet Mode and goes back into command mode. 5704.El 5705.Sh MORE DETAILS 5706.Bl -bullet 5707.It 5708Read the example configuration files. 5709They are a good source of information. 5710.It 5711Use 5712.Dq help , 5713.Dq nat \&? , 5714.Dq enable \&? , 5715.Dq set ?\& 5716and 5717.Dq show ?\& 5718to get online information about what's available. 5719.It 5720The following URLs contain useful information: 5721.Bl -bullet -compact 5722.It 5723http://www.FreeBSD.org/FAQ/userppp.html 5724.It 5725http://www.FreeBSD.org/handbook/userppp.html 5726.El 5727.Pp 5728.El 5729.Sh FILES 5730.Nm 5731refers to four files: 5732.Pa ppp.conf , 5733.Pa ppp.linkup , 5734.Pa ppp.linkdown 5735and 5736.Pa ppp.secret . 5737These files are placed in the 5738.Pa /etc/ppp 5739directory. 5740.Bl -tag -width 2n 5741.It Pa /etc/ppp/ppp.conf 5742System default configuration file. 5743.It Pa /etc/ppp/ppp.secret 5744An authorisation file for each system. 5745.It Pa /etc/ppp/ppp.linkup 5746A file to check when 5747.Nm 5748establishes a network level connection. 5749.It Pa /etc/ppp/ppp.linkdown 5750A file to check when 5751.Nm 5752closes a network level connection. 5753.It Pa /var/log/ppp.log 5754Logging and debugging information file. 5755Note, this name is specified in 5756.Pa /etc/syslog.conf . 5757See 5758.Xr syslog.conf 5 5759for further details. 5760.It Pa /var/spool/lock/LCK..* 5761tty port locking file. 5762Refer to 5763.Xr uucplock 3 5764for further details. 5765.It Pa /var/run/tunN.pid 5766The process id (pid) of the 5767.Nm 5768program connected to the tunN device, where 5769.Sq N 5770is the number of the device. 5771.It Pa /var/run/ttyXX.if 5772The tun interface used by this port. 5773Again, this file is only created in 5774.Fl background , 5775.Fl auto 5776and 5777.Fl ddial 5778modes. 5779.It Pa /etc/services 5780Get port number if port number is using service name. 5781.It Pa /var/run/ppp-authname-class-value 5782In multi-link mode, local domain sockets are created using the peer 5783authentication name 5784.Pq Sq authname , 5785the peer endpoint discriminator class 5786.Pq Sq class 5787and the peer endpoint discriminator value 5788.Pq Sq value . 5789As the endpoint discriminator value may be a binary value, it is turned 5790to HEX to determine the actual file name. 5791.Pp 5792This socket is used to pass links between different instances of 5793.Nm . 5794.El 5795.Sh SEE ALSO 5796.Xr at 1 , 5797.Xr ftp 1 , 5798.Xr gzip 1 , 5799.Xr hostname 1 , 5800.Xr login 1 , 5801.Xr tcpdump 1 , 5802.Xr telnet 1 , 5803.Xr kldload 2 , 5804ifdef({LOCALNAT},{},{.Xr libalias 3 , 5805})dnl 5806ifdef({LOCALRAD},{},{.Xr libradius 3 , 5807})dnl 5808.Xr syslog 3 , 5809.Xr uucplock 3 , 5810.Xr netgraph 4 , 5811.Xr ng_pppoe 4 , 5812.Xr crontab 5 , 5813.Xr group 5 , 5814.Xr passwd 5 , 5815.Xr protocols 5 , 5816.Xr radius.conf 5 , 5817.Xr resolv.conf 5 , 5818.Xr syslog.conf 5 , 5819.Xr adduser 8 , 5820.Xr chat 8 , 5821.Xr getty 8 , 5822.Xr inetd 8 , 5823.Xr init 8 , 5824.Xr isdn 8 , 5825.Xr named 8 , 5826.Xr ping 8 , 5827.Xr pppctl 8 , 5828.Xr pppd 8 , 5829.Xr pppoe 8 , 5830.Xr route 8 , 5831.Xr sshd 8 , 5832.Xr syslogd 8 , 5833.Xr traceroute 8 , 5834.Xr vipw 8 5835.Sh HISTORY 5836This program was originally written by 5837.An Toshiharu OHNO Aq tony-o@iij.ad.jp , 5838and was submitted to 5839.Fx 2.0.5 5840by 5841.An Atsushi Murai Aq amurai@spec.co.jp . 5842.Pp 5843It was substantially modified during 1997 by 5844.An Brian Somers Aq brian@Awfulhak.org , 5845and was ported to 5846.Ox 5847in November that year 5848(just after the 2.2 release). 5849.Pp 5850Most of the code was rewritten by 5851.An Brian Somers 5852in early 1998 when multi-link ppp support was added. 5853