bin/60886: ppp(8) doesn't expand macro MYADDR in `!' commands
Clemens Fischer
ino-qc at spotteswoode.de.eu.org
Sun Jan 4 03:00:15 PST 2004
>Number: 60886
>Category: bin
>Synopsis: ppp(8) doesn't expand macro MYADDR in `!' commands
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Jan 04 03:00:11 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Clemens Fischer <ino-qc at spotteswoode.de.eu.org>
>Release: FreeBSD 4.9-STABLE i386
>Organization:
Clemens Fischer
>Environment:
System: FreeBSD spotteswoode.dnsalias.org 4.9-STABLE FreeBSD
4.9-STABLE #15: Fri Jan 2 16:35:22 CET 2004
root at spotteswoode.dnsalias.org:/www/freebsd/obj/www/freebsd/RELENG_4/src/sys/n1
i386
>Description:
userland-ppp allows custom configuration commands to be
executed when a PPP connection goes fully functional and when
the connection is terminated. administrators can rely on
several macros beeing expanded to useful values, among them
HISADDR (IP of peer), INTERFACE (name of interface), MYADDR
(IP of local PPP interface) etc.
the relevant configuration lines are (etc/rc.local):
kldload netgraph || logger "kldload netgraph failed: $?"
(etc/ppp/ppp.conf):
set device PPPoE:xl0
set speed sync
set MTU 1492
set MRU 1492
my invocation line is:
"/usr/sbin/ppp -unit 0 -foreground dsl",
and etc/ppp/ppp.linkup has:
MYADDR:
!bg /usr/local/libexec/spott/ppplinkup "LABEL" "MYADDR" "HISADDR" "INTERFACE"
this script is used to establish various DNS, mail and
firewall related things. only "MYADDR" is really used (and
logged) in this bourne-shell script, and sometimes the very
first octet of the local peers IP has the leading digits
replaced by "ay", ie. i get IPs like (from the log):
"ay7.231.107.141" instead of "217.231.107.141", or
"ay7.231.106.233" instead of "217.231.106.233" etc. the
origin of these faulty expansions of "MYADDR" must be ppp(8),
as checked by additional "echo" or "printf(1)" statements.
also, "MYADDR" is only read, never set in any way by my
scripts.
the problem doesn't appear every time ppp(8) connects and
doesn't seem to depend on the actual IP. a rough estimate
would be one out of five connections have the "ay-syndrome".
>How-To-Repeat:
i don't know how to reproduce this problem other than trying
to connect and verify all the macro expansions, but at my
workstation type of fbsd installation it first appeared
2003/11/27 with a system cvsup'ed 2003/11/10 and built later
the same day. note that i use the netgraph(4) module for my
DSL line.
>Fix:
since the error seems located at the code where MYADDR is
expanded, i can use the actual value given to the tun0
interface, thus the following workaround makes the problem
invisible:
#!/bin/sh
# $Header: /l/dns/RCS/freebsd.sh,v 1.8 2003/12/11 16:46:03 root Exp root $
# freebsd.sh gets parameters from calling /etc/ppp/ppp.linkup & /l/libexec/spott/*link*
#
LABEL="$1" MYADDR="$2" HISADDR="$3" INTERFACE="$4"
logger "LABEL=${LABEL} MYADDR=${MYADDR} HISADDR=${HISADDR} INTERFACE=${INTERFACE}"
#
case "$MYADDR" in
[0-9]*.[0-9]*.[0-9]*.[0-9]*)
ip_addr="$MYADDR"
ex="$0 ip_addr: $ip_addr"
;;
*)
ip_addr=$(ifconfig "${INTERFACE:-tun0}" | grep -- '-->' | awk '{print $2}')
ex="$0 CORRECTED using ifconfig ip_addr: $ip_addr"
;;
esac
echo "$ip_addr" > /var/spott/ip_addr
regards,
clemens
>Release-Note:
>Audit-Trail:
>Unformatted:
SEND-PR: X-send-pr-version: 3.113
SEND-PR: X-GNATS-Notify:
More information about the freebsd-bugs
mailing list