Date: Wed, 15 Jul 1998 12:22:58 -0700 (PDT) From: Archie Cobbs <archie@whistle.com> To: cpn@dpac.tas.gov.au (Carey Nairn) Cc: questions@FreeBSD.ORG Subject: Re: multilink ppp Message-ID: <199807151922.MAA23642@bubba.whistle.com> In-Reply-To: <Pine.BSF.3.96.980716001658.23745A-100000@whitestar.cpn.org.au> from Carey Nairn at "Jul 16, 98 00:23:03 am"
next in thread | previous in thread | raw e-mail | index | archive | help
Carey Nairn writes:
> I am having some headaches trying to set up mpd-1.0b4 from the ports. The
> software install went fine but I am now trying to get the configs right
> to enable dialup to the ISP.
>
> The dialup is as follows:
>
> - dynamic IP addresses (I can't find the mpd equivalent of ppp.linkup
> where I would normally have something like
>
> delete ALL
> add 0 0 HISADDR
With mpd, you would do this like so:
set iface addrs 1.2.3.4 5.6.7.8
set ipcp ranges 0.0.0.0/0 5.6.7.8/0
That is, you have to set initial values, even if they are made up
(which is OK). Once connected, the server will assign the correct
addresses and mpd will renumber the interface.
> - standard username/password login so I need a standard expect/send chat
> script.
You can do this pretty easily using the mpd chat language..
here is an example of an "auto login" algorithm that Whistle uses:
##
## AutoLogin
##
## Here we attempt to figure out what the remote server wants
## from us. We do this by checking for bytes that correspond
## to PPP packets (in which case we are done) as well as common
## login type stuff like "name:", "ogin:", etc.
##
## This always returns. The hope is that when it returns, the
## remote side has reached PPP mode.
##
## This has been crafted from empirical evidence. Lots of terminal
## servers have various intelligent/stupid features which we
## take advantage of/have to work around.
##
## Variables (set automatically by mpd):
##
## $Login Authorization login
## $Password Authorization password
##
AutoLogin:
log "Auto-login..."
# Spend at most this long doing auto-login before giving up
timer autoLogin 5 AutoLoginTimeout
# At any time if we an LCP frame (not our own echo) then we're done
match autoLogin "\x7e\xff\x03\xc0\x21" AutoLoginFrame
match autoLogin "\x7e\xff\x7d\x23\xc0\x21\x7d\x21" AutoLoginFrame
match autoLogin "\x7e\xc0\x21" AutoLoginFrame
# Now send a "fake" PPP frame (this is an empty config-reject with id# 172).
# This should trigger any auto-detecting servers to jump into PPP mode,
# which is good because it's faster (by avoiding human readable messages)
# and more reliable (PPP framing).
print "\x7e\xff\x7d\x23\xc0\x21\x7d\x24\xac\x7d\x20\x7d\x24\x2e\x2b\x7e"
# Wait one second for server to auto-detect PPP or send a login prompt.
# After one second of neither, try sending a carriage return (some servers
# require this). After that, we have to see something recognizable from
# the peer, otherwise we'll just timeout.
match "ogin" AutoLoginPrompt
match "name" AutoLoginPrompt
wait 1
print "\r"
match "ogin" AutoLoginPrompt
match "name" AutoLoginPrompt
wait
# At this point we've seen a login prompt; do the manual login
AutoLoginPrompt:
log "Sending login..."
print "${Login}\r"
match "word"
wait
log "Sending password..."
print "${Password}\r"
match "\r"
wait
if $didLogin != "yes" match "ogin:" LoginAgain
match ">"
match "%"
match ":"
wait
log "Sending ppp comand..."
print "ppp\r"
cancel all
return
LoginAgain:
set $didLogin "yes"
goto AutoLoginPrompt
# We saw a PPP frame
AutoLoginFrame:
log "Detected PPP frame."
cancel all
return
# We timed out before seeing a PPP frame
AutoLoginTimeout:
log "Auto-login timed out."
cancel all
return
-Archie
___________________________________________________________________________
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199807151922.MAA23642>
