Remove ISDN4BSD (I4B) from HEAD as it is not MPSAFE and
parts relied on the now removed NET_NEEDS_GIANT. Most of I4B has been disconnected from the build since July 2007 in HEAD/RELENG_7. This is what was removed: - configuration in /etc/isdn - examples - man pages - kernel configuration - sys/i4b (drivers, layers, include files) - user space tools - i4b support from ppp - further documentation Discussed with: rwatson, re
This commit is contained in:
parent
cf7fbdd930
commit
6bba9b4244
@ -14,6 +14,120 @@
|
||||
# The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
|
||||
#
|
||||
|
||||
# 20080525: I4B removed
|
||||
OLD_FILES+=etc/isdn/answer
|
||||
OLD_FILES+=etc/isdn/isdntel
|
||||
OLD_FILES+=etc/isdn/record
|
||||
OLD_FILES+=etc/isdn/tell
|
||||
OLD_FILES+=etc/isdn/tell-record
|
||||
OLD_FILES+=etc/isdn/unknown_incoming
|
||||
OLD_FILES+=etc/isdn/holidays.D
|
||||
OLD_FILES+=etc/isdn/isdnd.rates.A
|
||||
OLD_FILES+=etc/isdn/isdnd.rates.D
|
||||
OLD_FILES+=etc/isdn/isdnd.rates.F
|
||||
OLD_FILES+=etc/isdn/isdnd.rates.L
|
||||
OLD_FILES+=etc/isdn/isdnd.rates.UK.BT
|
||||
OLD_FILES+=etc/isdn/isdnd.rc.sample
|
||||
OLD_FILES+=etc/isdn/isdntel.alias.sample
|
||||
OLD_DIRS+=etc/isdn
|
||||
OLD_FILES+=etc/rc.d/isdnd
|
||||
OLD_FILES+=usr/include/i4b/i4b_cause.h
|
||||
OLD_FILES+=usr/include/i4b/i4b_debug.h
|
||||
OLD_FILES+=usr/include/i4b/i4b_ioctl.h
|
||||
OLD_FILES+=usr/include/i4b/i4b_rbch_ioctl.h
|
||||
OLD_FILES+=usr/include/i4b/i4b_tel_ioctl.h
|
||||
OLD_FILES+=usr/include/i4b/i4b_trace.h
|
||||
OLD_DIRS+=usr/include/i4b
|
||||
OLD_FILES+=usr/sbin/dtmfdecode
|
||||
OLD_FILES+=usr/sbin/g711conv
|
||||
OLD_FILES+=usr/sbin/isdnd
|
||||
OLD_FILES+=usr/sbin/isdndebug
|
||||
OLD_FILES+=usr/sbin/isdndecode
|
||||
OLD_FILES+=usr/sbin/isdnmonitor
|
||||
OLD_FILES+=usr/sbin/isdnphone
|
||||
OLD_FILES+=usr/sbin/isdntel
|
||||
OLD_FILES+=usr/sbin/isdntelctl
|
||||
OLD_FILES+=usr/sbin/isdntrace
|
||||
OLD_FILES+=usr/share/isdn/0.al
|
||||
OLD_FILES+=usr/share/isdn/1.al
|
||||
OLD_FILES+=usr/share/isdn/2.al
|
||||
OLD_FILES+=usr/share/isdn/3.al
|
||||
OLD_FILES+=usr/share/isdn/4.al
|
||||
OLD_FILES+=usr/share/isdn/5.al
|
||||
OLD_FILES+=usr/share/isdn/6.al
|
||||
OLD_FILES+=usr/share/isdn/7.al
|
||||
OLD_FILES+=usr/share/isdn/8.al
|
||||
OLD_FILES+=usr/share/isdn/9.al
|
||||
OLD_FILES+=usr/share/isdn/beep.al
|
||||
OLD_FILES+=usr/share/isdn/msg.al
|
||||
OLD_DIRS+=usr/share/isdn
|
||||
OLD_FILES+=usr/share/man/man1/dtmfdecode.1.gz
|
||||
OLD_FILES+=usr/share/man/man1/g711conv.1.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4b.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bcapi.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bctl.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bing.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bipr.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bisppp.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bq921.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4bq931.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4brbch.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4btel.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/i4btrc.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/iavc.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/isic.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/ifpi.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/ifpi2.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/ifpnp.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/ihfc.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/itjc.4.gz
|
||||
OLD_FILES+=usr/share/man/man4/iwic.4.gz
|
||||
OLD_FILES+=usr/share/man/man5/isdnd.rc.5.gz
|
||||
OLD_FILES+=usr/share/man/man5/isdnd.rates.5.gz
|
||||
OLD_FILES+=usr/share/man/man5/isdnd.acct.5.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdnd.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdndebug.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdndecode.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdnmonitor.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdnphone.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdntel.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdntelctl.8.gz
|
||||
OLD_FILES+=usr/share/man/man8/isdntrace.8.gz
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/README
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/anleitung.ppp
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/answer.c
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/answer.sh
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/convert.sh
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/hplay.c
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/i4b-ppp-newbie.txt
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/isdnctl
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct.pl
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/isdntelmux.c
|
||||
OLD_FILES+=usr/share/examples/isdn/contrib/mrtg-isp0.sh
|
||||
OLD_FILES+=usr/share/examples/isdn/i4brunppp/Makefile
|
||||
OLD_FILES+=usr/share/examples/isdn/i4brunppp/README
|
||||
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp-isdnd.rc
|
||||
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.8
|
||||
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.c
|
||||
OLD_FILES+=usr/share/examples/isdn/v21/Makefile
|
||||
OLD_FILES+=usr/share/examples/isdn/v21/README
|
||||
OLD_FILES+=usr/share/examples/isdn/v21/v21modem.c
|
||||
OLD_FILES+=usr/share/examples/isdn/FAQ
|
||||
OLD_FILES+=usr/share/examples/isdn/KERNEL
|
||||
OLD_FILES+=usr/share/examples/isdn/Overview
|
||||
OLD_FILES+=usr/share/examples/isdn/README
|
||||
OLD_FILES+=usr/share/examples/isdn/ROADMAP
|
||||
OLD_FILES+=usr/share/examples/isdn/ReleaseNotes
|
||||
OLD_FILES+=usr/share/examples/isdn/Resources
|
||||
OLD_FILES+=usr/share/examples/isdn/SupportedCards
|
||||
OLD_FILES+=usr/share/examples/isdn/ThankYou
|
||||
OLD_DIRS+=usr/share/examples/isdn/contrib
|
||||
OLD_DIRS+=usr/share/examples/isdn/i4brunppp
|
||||
OLD_DIRS+=usr/share/examples/isdn/v21
|
||||
OLD_DIRS+=usr/share/examples/isdn
|
||||
OLD_FILES+=usr/share/examples/ppp/isdnd.rc
|
||||
OLD_FILES+=usr/share/examples/ppp/ppp.conf.isdn
|
||||
# 20080420: Symbol card support dropped
|
||||
OLD_FILES+=usr/include/dev/wi/spectrum24t_cf.h
|
||||
# 20080420: awi removal
|
||||
|
4
UPDATING
4
UPDATING
@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW:
|
||||
to maximize performance. (To disable malloc debugging, run
|
||||
ln -s aj /etc/malloc.conf.)
|
||||
|
||||
20080525:
|
||||
ISDN4BSD (I4B) was removed from the src tree. You may need to
|
||||
update a your kernel configuration and remove relevant entries.
|
||||
|
||||
20080509:
|
||||
I have checked in code to support multiple routing tables.
|
||||
see the man pages setfib(1) and setfib(2).
|
||||
|
@ -127,9 +127,6 @@ distribution:
|
||||
${BSM_ETC_RESTRICTED_FILES} ${BSM_ETC_DIR}
|
||||
cd ${.CURDIR}; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 0500 \
|
||||
${BSM_ETC_EXEC_FILES} ${BSM_ETC_DIR}
|
||||
.if ${MK_I4B} != "no"
|
||||
${_+_}cd ${.CURDIR}/isdn; ${MAKE} install
|
||||
.endif
|
||||
.if ${MK_BIND_MTREE} != "no"
|
||||
@if [ ! -e ${DESTDIR}/etc/namedb ]; then \
|
||||
set -x; \
|
||||
|
@ -194,8 +194,8 @@ ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
|
||||
# If you have any sppp(4) interfaces above, you might also want to set
|
||||
# the following parameters. Refer to spppcontrol(8) for their meaning.
|
||||
sppp_interfaces="" # List of sppp interfaces.
|
||||
#sppp_interfaces="isp0" # example: sppp over ISDN
|
||||
#spppconfig_isp0="authproto=chap myauthname=foo myauthsecret='top secret' hisauthname=some-gw hisauthsecret='another secret'"
|
||||
#sppp_interfaces="...0" # example: sppp over ...
|
||||
#spppconfig_...0="authproto=chap myauthname=foo myauthsecret='top secret' hisauthname=some-gw hisauthsecret='another secret'"
|
||||
gif_interfaces="" # List of GIF tunnels.
|
||||
#gif_interfaces="gif0 gif1" # Examples typically for a router.
|
||||
# Choose correct tunnel addrs.
|
||||
@ -363,15 +363,6 @@ atm_enable="NO" # Configure ATM interfaces (or NO).
|
||||
atm_pvcs="" # Set to PVC list (or leave empty).
|
||||
atm_arps="" # Set to permanent ARP list (or leave empty).
|
||||
|
||||
### ISDN interface options: (see also: /usr/share/examples/isdn) ###
|
||||
isdn_enable="NO" # Enable the ISDN subsystem (or NO).
|
||||
isdn_fsdev="NO" # Output device for fullscreen mode (or NO for daemon mode).
|
||||
isdn_flags="-dn -d0x1f9" # Flags for isdnd
|
||||
isdn_ttype="cons25" # terminal type for fullscreen mode
|
||||
isdn_screenflags="NO" # screenflags for ${isdn_fsdev}
|
||||
isdn_trace="NO" # Enable the ISDN trace subsystem (or NO).
|
||||
isdn_traceflags="-f /var/tmp/isdntrace0" # Flags for isdntrace
|
||||
|
||||
### Bluetooth ###
|
||||
hcsecd_enable="NO" # Enable hcsecd(8) (or NO)
|
||||
hcsecd_config="/etc/bluetooth/hcsecd.conf" # hcsecd(8) configuration file
|
||||
|
@ -1,25 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
NO_OBJ=
|
||||
|
||||
SCRIPTS= answer \
|
||||
isdntel.sh \
|
||||
record \
|
||||
tell \
|
||||
tell-record \
|
||||
unknown_incoming
|
||||
|
||||
FILES= holidays.D \
|
||||
isdnd.rates.A \
|
||||
isdnd.rates.D \
|
||||
isdnd.rates.F \
|
||||
isdnd.rates.L \
|
||||
isdnd.rates.UK.BT \
|
||||
isdnd.rc.sample \
|
||||
isdntel.alias.sample
|
||||
|
||||
BINDIR= /etc/isdn
|
||||
BINMODE= 700
|
||||
FILESMODE= 600
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,97 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# answer script for i4b isdnd
|
||||
# ---------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Thu May 20 11:44:38 1999]
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
VARDIR=/var/isdn
|
||||
|
||||
#FreeBSD < 3.1, NetBSD, OpenBSD, BSD/OS
|
||||
#LIBDIR=/usr/local/lib/isdn
|
||||
#FreeBSD 3.1 and up
|
||||
LIBDIR=/usr/share/isdn
|
||||
|
||||
LOGFILE=/tmp/answer.log
|
||||
NCALLFILE=${VARDIR}/ncall
|
||||
DATE=`date +%d%H`
|
||||
DF=0
|
||||
dF=0
|
||||
sF=0
|
||||
|
||||
if ! set -- `getopt D:d:s: $*`; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i ; do
|
||||
case ${i} in
|
||||
-D)
|
||||
DEVICE=$2
|
||||
DF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-d)
|
||||
DEST=$2
|
||||
dF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
SRC=$2
|
||||
sF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "" >>${LOGFILE}
|
||||
|
||||
if [ "${DF}" -eq 0 -o "${dF}" -eq 0 -o "${sF}" -eq 0 ]; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "answer: device ${DEVICE} destination ${DEST} source ${SRC} " >>${LOGFILE}
|
||||
|
||||
if [ -r "${NCALLFILE}" ]; then
|
||||
NCALL=`cat ${NCALLFILE}`
|
||||
else
|
||||
NCALL=0
|
||||
fi
|
||||
|
||||
NCALL=`printf "%.4d" ${NCALL}`
|
||||
|
||||
echo Date: `date` >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
|
||||
if [ -n "${SRC}" ]; then
|
||||
echo "From: ${SRC}" >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
fi
|
||||
|
||||
if [ -n "${DEST}" ]; then
|
||||
echo "To: ${DEST}" >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
fi
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k # >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -r "${LIBDIR}/msg.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/msg.al bs=2k # >/dev/null 2>&1
|
||||
if [ -r "${LIBDIR}/beep.al" ]
|
||||
then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k # >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo `expr ${NCALL} + 1` >${NCALLFILE}
|
@ -1,51 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# german national holidays 2002/2003/2004
|
||||
# bundeseinheitliche Feiertage 2002/2003/2004
|
||||
# -------------------------------------------------------------
|
||||
#
|
||||
# last edit-date: [Sat Apr 13 14:22:43 2002]
|
||||
#
|
||||
# got from: http://www.ferienkalender.com/
|
||||
#
|
||||
# This file is only of value for installations which are
|
||||
# using the german Telekom "T-ISDN XXL" tariff where calls
|
||||
# on sundays and holidays are free of charge. Additional
|
||||
# configuration of /etc/isdnd.rc has to take place to enable
|
||||
# support for this tariff, see output of "man isdnd.rc" and
|
||||
# search for keyword "valid".
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# same day/month each year
|
||||
#
|
||||
1.1 Neujahr
|
||||
1.5 Tag der Arbeit
|
||||
3.10 Tag der deutschen Einheit
|
||||
25.12 1. Weihnachtsfeiertag
|
||||
26.12 2. Weihnachtsfeiertag
|
||||
#
|
||||
# 2002 - different day/month each year
|
||||
#
|
||||
29.3.2002 Karfreitag
|
||||
1.4.2002 Ostermontag
|
||||
9.5.2002 Christi Himmelfahrt
|
||||
20.5.2002 Pfingstmontag
|
||||
#
|
||||
# 2003 - different day/month each year
|
||||
#
|
||||
18.4.2003 Karfreitag
|
||||
21.4.2003 Ostermontag
|
||||
29.5.2003 Christi Himmelfahrt
|
||||
9.6.2003 Pfingstmontag
|
||||
#
|
||||
# 2004 - different day/month each year
|
||||
#
|
||||
9.4.2004 Karfreitag
|
||||
12.4.2004 Ostermontag
|
||||
20.5.2004 Christi Himmelfahrt
|
||||
31.5.2004 Pfingstmontag
|
||||
#
|
||||
# EOF
|
@ -1,39 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# i4b - PTA Telekom charging rates config file
|
||||
# --------------------------------------------
|
||||
#
|
||||
# $Id: isdnd.rates.A,v 1.2 1999/12/13 21:25:24 hm Exp $
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Mon Dec 13 21:42:02 1999]
|
||||
#
|
||||
# -mr updated to reflect last Telekom changes as of 1.9.99
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# reference: http://www.pta.at/
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Syntax:
|
||||
# -------
|
||||
# rate-code: ra0 = Online Tarif
|
||||
# Day-No: 0-6, where 0 = Sunday, 1 = Monday, etc.
|
||||
# Rate: start_hour.minutes-end_hour.minutes:period in seconds
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
#=================== Online ==================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra0 0 00.00-24.00:360
|
||||
ra0 1 00.00-08.00:360 08.00-18.00:120 18.00-24.00:360
|
||||
ra0 2 00.00-08.00:360 08.00-18.00:120 18.00-24.00:360
|
||||
ra0 3 00.00-08.00:360 08.00-18.00:120 18.00-24.00:360
|
||||
ra0 4 00.00-08.00:360 08.00-18.00:120 18.00-24.00:360
|
||||
ra0 5 00.00-08.00:360 08.00-18.00:120 18.00-24.00:360
|
||||
ra0 6 00.00-24.00:360
|
||||
#================== EOF ======================================
|
@ -1,50 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# i4b - Deutsche Telekom charging rates config file
|
||||
# -------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Sun Jan 17 18:38:29 1999]
|
||||
#
|
||||
# -hm updated to reflect last Telekom changes as of 1.1.99
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# reference: http://www.telekom.de/untern/tarife/inland/index.htm
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Syntax:
|
||||
# -------
|
||||
# rate-code: ra0 = City, ra1 = Deutschland
|
||||
# Day-No: 0-6, where 0 = Sunday, 1 = Monday, etc.
|
||||
# Rate: start_hour.minutes-end_hour.minutes:period in seconds
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
#=================== T-ISDN City =============================================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3 rate4 rate5
|
||||
#--------- --- --------------- --------------- --------------- --------------- ---------------
|
||||
ra0 0 00.00-05.00:240 05.00-21.00:150 21.00-24.00:240
|
||||
ra0 1 00.00-05.00:240 05.00-09.00:150 09.00-18.00:90 18.00-21.00:150 21.00-24.00:240
|
||||
ra0 2 00.00-05.00:240 05.00-09.00:150 09.00-18.00:90 18.00-21.00:150 21.00-24.00:240
|
||||
ra0 3 00.00-05.00:240 05.00-09.00:150 09.00-18.00:90 18.00-21.00:150 21.00-24.00:240
|
||||
ra0 4 00.00-05.00:240 05.00-09.00:150 09.00-18.00:90 18.00-21.00:150 21.00-24.00:240
|
||||
ra0 5 00.00-05.00:240 05.00-09.00:150 09.00-18.00:90 18.00-21.00:150 21.00-24.00:240
|
||||
ra0 6 00.00-05.00:240 05.00-21.00:150 21.00-24.00:240
|
||||
#
|
||||
#=================== T-ISDN Deutschland ======================================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3 rate4 rate5
|
||||
#--------- --- --------------- --------------- --------------- --------------- ---------------
|
||||
ra1 0 00.00-24.00:60
|
||||
ra1 1 00.00-02.00:60 02.00-05.00:120 05.00-09.00:60 09.00-18.00:30 18.00-24.00:60
|
||||
ra1 2 00.00-02.00:60 02.00-05.00:120 05.00-09.00:60 09.00-18.00:30 18.00-24.00:60
|
||||
ra1 3 00.00-02.00:60 02.00-05.00:120 05.00-09.00:60 09.00-18.00:30 18.00-24.00:60
|
||||
ra1 4 00.00-02.00:60 02.00-05.00:120 05.00-09.00:60 09.00-18.00:30 18.00-24.00:60
|
||||
ra1 5 00.00-02.00:60 02.00-05.00:120 05.00-09.00:60 09.00-18.00:30 18.00-24.00:60
|
||||
ra1 6 00.00-24.00:60
|
||||
#
|
||||
#================== EOF ======================================================================
|
@ -1,152 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# i4b - Tarifs France Telecom
|
||||
# ---------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Thu Mar 19 20:05:18 1998]
|
||||
#
|
||||
# -hm got from Aurelien Bargy <dj@dial.oleane.com>
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# a jour au 1.10.97
|
||||
# Aurelien Bargy - 18.03.97
|
||||
#
|
||||
# I wrote a rates file for France. It is rather approximative
|
||||
# because some time ago France Telecom decided to abandon the charging
|
||||
# units system. The problem is, on ISDN lines charging units are still
|
||||
# used for the aocd system, even as it gives a completely false price
|
||||
# for a communication, so "abandoning" the msg_charging_unit system for
|
||||
# French users of i4b is not a good idea :))
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Syntax:
|
||||
# -------
|
||||
# rate-code: ra0 = local ; ra1 = zone 1 ; ra2 = zone 2...
|
||||
# plus quelques tarifs internationaux
|
||||
# Day-No: 0-6, where 0 = Sunday, 1 = Monday, etc.
|
||||
# Rate: start_hour.minutes-end_hour.minutes:period in seconds
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#========================== Communications locales ======================
|
||||
#rate-code Day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra0 0 00.00-24.00:317
|
||||
ra0 1 00.00-08.00:317 08.00-19.00:158 19.00-24.00:317
|
||||
ra0 2 00.00-08.00:317 08.00-19.00:158 19.00-24.00:317
|
||||
ra0 3 00.00-08.00:317 08.00-19.00:158 19.00-24.00:317
|
||||
ra0 4 00.00-08.00:317 08.00-19.00:158 19.00-24.00:317
|
||||
ra0 5 00.00-08.00:317 08.00-19.00:158 19.00-24.00:317
|
||||
ra0 6 00.00-08.00:317 08.00-12.00:158 12.00-24.00:317
|
||||
#
|
||||
#
|
||||
#
|
||||
#================== Zone 1 : < 25 km ==================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra1 0 00.00-24.00:222
|
||||
ra1 1 00.00-08.00:222 08.00-19.00:111 19.00-24.00:222
|
||||
ra1 2 00.00-08.00:222 08.00-19.00:111 19.00-24.00:222
|
||||
ra1 3 00.00-08.00:222 08.00-19.00:111 19.00-24.00:222
|
||||
ra1 4 00.00-08.00:222 08.00-19.00:111 19.00-24.00:222
|
||||
ra1 5 00.00-08.00:222 08.00-19.00:111 19.00-24.00:222
|
||||
ra1 6 00.00-08.00:222 08.00-12.00:111 12.00-24.00:222
|
||||
#
|
||||
#
|
||||
#
|
||||
#================== Zone 2 : 25-30 km =================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- --------------
|
||||
ra2 0 00.00-24.00:148
|
||||
ra2 1 00.00-08.00:148 08.00-19.00:74 19.00-24.00:148
|
||||
ra2 2 00.00-08.00:148 08.00-19.00:74 19.00-24.00:148
|
||||
ra2 3 00.00-08.00:148 08.00-19.00:74 19.00-24.00:148
|
||||
ra2 4 00.00-08.00:148 08.00-19.00:74 19.00-24.00:148
|
||||
ra2 5 00.00-08.00:148 08.00-19.00:74 19.00-24.00:148
|
||||
ra2 6 00.00-08.00:148 08.00-12.00:74 12.00-24.00:148
|
||||
#
|
||||
#=================== Zone 3 : 30-52 km ================================
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra3 0 00.00-24.00:94
|
||||
ra3 1 00.00-08.00:94 08.00-19.00:47 19.00-24.00:94
|
||||
ra3 2 00.00-08.00:94 08.00-19.00:47 19.00-24.00:94
|
||||
ra3 3 00.00-08.00:94 08.00-19.00:47 19.00-24.00:94
|
||||
ra3 4 00.00-08.00:94 08.00-19.00:47 19.00-24.00:94
|
||||
ra3 5 00.00-08.00:94 08.00-19.00:47 19.00-24.00:94
|
||||
ra3 6 00.00-08.00:94 08.00-12.00:47 12.00-24.00:94
|
||||
#
|
||||
#
|
||||
#=================== Zone 4 : > 52 km =================================
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra4 0 00.00-24.00:78
|
||||
ra4 1 00.00-08.00:78 08.00-19.00:39 19.00-24.00:78
|
||||
ra4 2 00.00-08.00:78 08.00-19.00:39 19.00-24.00:78
|
||||
ra4 3 00.00-08.00:78 08.00-19.00:39 19.00-24.00:78
|
||||
ra4 4 00.00-08.00:78 08.00-19.00:39 19.00-24.00:78
|
||||
ra4 5 00.00-08.00:78 08.00-19.00:39 19.00-24.00:78
|
||||
ra4 6 00.00-08.00:78 08.00-12.00:39 12.00-24.00:78
|
||||
#
|
||||
#
|
||||
#=================== INTERNATIONAL : Allemagne ========================
|
||||
# (pour appeler Hellmuth)
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra5 0 00.00-24.00:27
|
||||
ra5 1 00.00-08.00:27 08.00-19.00:21 19.00-24.00:27
|
||||
ra5 2 00.00-08.00:27 08.00-19.00:21 19.00-24.00:27
|
||||
ra5 3 00.00-08.00:27 08.00-19.00:21 19.00-24.00:27
|
||||
ra5 4 00.00-08.00:27 08.00-19.00:21 19.00-24.00:27
|
||||
ra5 5 00.00-08.00:27 08.00-19.00:21 19.00-24.00:27
|
||||
ra5 6 00.00-08.00:27 08.00-12.00:21 12.00-24.00:27
|
||||
#
|
||||
#
|
||||
#=================== INTERNATIONAL : Pays-Bas ==========================
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra6 0 00.00-24.00:25
|
||||
ra6 1 00.00-08.00:25 08.00-19.00:20 19.00-24.00:25
|
||||
ra6 2 00.00-08.00:25 08.00-19.00:20 19.00-24.00:25
|
||||
ra6 3 00.00-08.00:25 08.00-19.00:20 19.00-24.00:25
|
||||
ra6 4 00.00-08.00:25 08.00-19.00:20 19.00-24.00:25
|
||||
ra6 5 00.00-08.00:25 08.00-19.00:20 19.00-24.00:25
|
||||
ra6 6 00.00-08.00:25 08.00-12.00:20 12.00-24.00:25
|
||||
#
|
||||
#
|
||||
#=================== INTERNATIONAL : Portugal ===========================
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra7 0 00.00-24.00:22
|
||||
ra7 1 00.00-08.00:22 08.00-19.00:18 19.00-24.00:22
|
||||
ra7 2 00.00-08.00:22 08.00-19.00:18 19.00-24.00:22
|
||||
ra7 3 00.00-08.00:22 08.00-19.00:18 19.00-24.00:22
|
||||
ra7 4 00.00-08.00:22 08.00-19.00:18 19.00-24.00:22
|
||||
ra7 5 00.00-08.00:22 08.00-19.00:18 19.00-24.00:22
|
||||
ra7 6 00.00-08.00:22 08.00-12.00:18 12.00-24.00:22
|
||||
#
|
||||
#
|
||||
#=================== INTERNATIONAL : USA/Canada ========================
|
||||
#
|
||||
#rate-code day rate1 rate2 rate3
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra8 0 00.00-24.00:25
|
||||
ra8 1 00.00-13.00:25 13.00-19.00:20 19.00-24.00:25
|
||||
ra8 2 00.00-13.00:25 13.00-19.00:20 19.00-24.00:25
|
||||
ra8 3 00.00-13.00:25 13.00-19.00:20 19.00-24.00:25
|
||||
ra8 4 00.00-13.00:25 13.00-19.00:20 19.00-24.00:25
|
||||
ra8 5 00.00-13.00:25 13.00-19.00:20 19.00-24.00:25
|
||||
ra8 6 00.00-24.00:25
|
||||
#
|
||||
#================== EOF ==============================================
|
@ -1,45 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# i4b - Luxembourg PT charging rates config file
|
||||
# -------------------------------------------------
|
||||
#
|
||||
# $Id: isdnd.rates.L,v 1.2 1999/12/13 21:25:24 hm Exp $
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Mon Dec 13 21:42:33 1999]
|
||||
#
|
||||
# Sent in by Joakim Hernberg, Digital Design Luxembourg sarl, jbh@ddl.lu
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# reference: http://www.pt.lu
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Syntax:
|
||||
# -------
|
||||
# rate-code: ra0 = Luxembourg normal isdn call
|
||||
# rate-code: ra1 = Luxembourg PT Internet access
|
||||
# Day-No: 0-6, where 0 = Sunday, 1 = Monday, etc.
|
||||
# Rate: start_hour.minutes-end_hour.minutes:period in seconds
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate3 rate4 rate5
|
||||
#--------- --- --------------- --------------- --------------- --------------- ----------------
|
||||
ra0 0 00.00-24.00:960
|
||||
ra0 1 00.00-06.00:960 06.00-08.00:480 08.00-19.00:240 19.00-23.00:480 23.00-24.00:960
|
||||
ra0 2 00.00-06.00:960 06.00-08.00:480 08.00-19.00:240 19.00-23.00:480 23.00-24.00:960
|
||||
ra0 3 00.00-06.00:960 06.00-08.00:480 08.00-19.00:240 19.00-23.00:480 23.00-24.00:960
|
||||
ra0 4 00.00-06.00:960 06.00-08.00:480 08.00-19.00:240 19.00-23.00:480 23.00-24.00:960
|
||||
ra0 5 00.00-06.00:960 06.00-08.00:480 08.00-19.00:240 19.00-23.00:480 23.00-24.00:960
|
||||
ra0 6 00.00-06.00:960 06.00-23.00:480 23.00-24.00:960
|
||||
|
||||
ra1 0 00.00-24.00:60
|
||||
ra1 1 00.00-24.00:60
|
||||
ra1 2 00.00-24.00:60
|
||||
ra1 3 00.00-24.00:60
|
||||
ra1 4 00.00-24.00:60
|
||||
ra1 5 00.00-24.00:60
|
||||
ra1 6 00.00-24.00:60
|
@ -1,61 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# i4b - BT charges
|
||||
# -------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Barry A. Scott barry@scottb.demon.co.uk
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# reference: http://www.bt.com/Business/price_frm.htm
|
||||
# (I use the bussiness figures as the Ex VAT gives more
|
||||
# accurate rate data because BT round the Inc VAT figures)
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Syntax:
|
||||
# -------
|
||||
# rate-code: ra0 = Local, ra1 = Regional, ra2 = National
|
||||
# Day-No: 0-6, where 0 = Sunday, 1 = Monday, etc.
|
||||
# Rate: start_hour.minutes-end_hour.minutes:period in seconds
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
#=================== Local =========================================================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate1
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra0 0 00.00-24.00:296
|
||||
ra0 1 00.00-08.00:200 08.00-18.00:75 18.00-00.00:200
|
||||
ra0 2 00.00-08.00:200 08.00-18.00:75 18.00-00.00:200
|
||||
ra0 3 00.00-08.00:200 08.00-18.00:75 18.00-00.00:200
|
||||
ra0 4 00.00-08.00:200 08.00-18.00:75 18.00-00.00:200
|
||||
ra0 5 00.00-08.00:200 08.00-18.00:75 18.00-00.00:200
|
||||
ra0 6 00.00-24.00:296
|
||||
#
|
||||
#=================== Regional =========================================================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate1
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra1 0 00.00-24.00:100
|
||||
ra1 1 00.00-08.00:75 08.00-18.00:37 18.00-00.00:75
|
||||
ra1 2 00.00-08.00:75 08.00-18.00:37 18.00-00.00:75
|
||||
ra1 3 00.00-08.00:75 08.00-18.00:37 18.00-00.00:75
|
||||
ra1 4 00.00-08.00:75 08.00-18.00:37 18.00-00.00:75
|
||||
ra1 5 00.00-08.00:75 08.00-18.00:37 18.00-00.00:75
|
||||
ra1 6 00.00-24.00:100
|
||||
#
|
||||
#=================== National =========================================================================
|
||||
#
|
||||
#rate-code Day rate1 rate2 rate1
|
||||
#--------- --- --------------- --------------- ---------------
|
||||
ra2 0 00.00-24.00:100
|
||||
ra2 1 00.00-08.00:71 08.00-18.00:37 18.00-00.00:71
|
||||
ra2 2 00.00-08.00:71 08.00-18.00:37 18.00-00.00:71
|
||||
ra2 3 00.00-08.00:71 08.00-18.00:37 18.00-00.00:71
|
||||
ra2 4 00.00-08.00:71 08.00-18.00:37 18.00-00.00:71
|
||||
ra2 5 00.00-08.00:71 08.00-18.00:37 18.00-00.00:71
|
||||
ra2 6 00.00-24.00:100
|
||||
#================== EOF ============================================================================================================
|
@ -1,409 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# example of a configuration file for the isdn daemon
|
||||
# ---------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Sun May 27 09:33:59 2001]
|
||||
#
|
||||
# NOTICE:
|
||||
# =======
|
||||
# This configuration file is an EXAMPLE only and MUST be edited
|
||||
# carefully to get the desired results!
|
||||
#
|
||||
# Please read the "isdnd.rc" manual page (execute "man isdnd.rc")
|
||||
# for reference !
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#==============================================================================
|
||||
# SYSTEM section: isdnd global configuration parameters
|
||||
#==============================================================================
|
||||
system
|
||||
|
||||
# accounting
|
||||
# ----------
|
||||
|
||||
acctall = on # generate info for everything
|
||||
acctfile = /var/log/isdnd.acct # name & location of accounting file
|
||||
useacctfile = yes # generate accouting info to file
|
||||
|
||||
# monitor
|
||||
# -------
|
||||
|
||||
monitor-allowed = no # global switch: monitor on/off
|
||||
monitor-port = 451 # default monitor TCP port
|
||||
|
||||
# Monitor rights are granted due to the most specific host/net spec, i.e. in
|
||||
# the example below host 192.168.1.2 will have the rights specified on that
|
||||
# line, even so it belongs to net 192.168.1.0/24 as well.
|
||||
#
|
||||
# A monitor specification may either be:
|
||||
#
|
||||
# - the name of a local (UNIX-domain) socket; this MUST start with a "/"
|
||||
monitor = "/var/run/isdn-monitor"
|
||||
monitor-access = fullcmd
|
||||
monitor-access = channelstate, logevents
|
||||
monitor-access = callin, callout
|
||||
#
|
||||
# - a dotted-quad host spec
|
||||
monitor = "192.168.1.2"
|
||||
monitor-access = restrictedcmd, channelstate, callin, callout
|
||||
#
|
||||
# - a dotted-quad net spec with "/len" (CIDR-style) netmask spec
|
||||
monitor = "192.168.1.0/24"
|
||||
monitor-access = restrictedcmd, channelstate, callin, callout
|
||||
#
|
||||
# - a resolveable host name
|
||||
monitor = "rumolt"
|
||||
monitor-access = restrictedcmd, channelstate, callin, callout
|
||||
#
|
||||
# - a resolveable net name with "/len" netmask (s.a.) appended
|
||||
monitor = "up-vision-net/24"
|
||||
monitor-access = restrictedcmd, channelstate, callin, callout
|
||||
|
||||
# ratesfile
|
||||
# ---------
|
||||
|
||||
ratesfile = /etc/isdn/isdnd.rates # name & location of rates file
|
||||
|
||||
# regular expression pattern matching
|
||||
# -----------------------------------
|
||||
|
||||
#regexpr = "connected.*XXX" # look for matches in log messages
|
||||
#regprog = connectXXX # execute program when match is found
|
||||
|
||||
regexpr = "<unknown> incoming call from"
|
||||
regprog = unknown_incoming # execute program whan match is found
|
||||
|
||||
# realtime priority section
|
||||
# -------------------------
|
||||
|
||||
rtprio = 25 # modify isdnd's process priority
|
||||
|
||||
#===========================================================================
|
||||
# controller section
|
||||
#===========================================================================
|
||||
controller
|
||||
|
||||
firmware = /etc/isdn/b1.t4 # microcode for an AVM B1 controller
|
||||
|
||||
#==============================================================================
|
||||
# entry section: IP over ISDN example - i call back the remote end
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
name = I4BIP # name for reference. This name will
|
||||
# be used in the logfile to identfy
|
||||
# this entry.
|
||||
|
||||
# the network or telephone device
|
||||
# the data traffic should be routed to:
|
||||
usrdevicename = ipr # ipr, isp, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
# the ISDN controller number to be
|
||||
# used for this entry:
|
||||
isdncontroller = 0 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# incoming only, outgoing only or both:
|
||||
direction = inout # in, out, inout
|
||||
|
||||
# numbers used to verify a DIAL IN:
|
||||
local-phone-incoming = 321 # this is my number
|
||||
remote-phone-incoming = 0123456789 # this one can call in
|
||||
|
||||
# numbers used at DIAL OUT time:
|
||||
local-phone-dialout = 321 # this is my number
|
||||
remote-phone-dialout = 00123456789 # i call this remote number
|
||||
|
||||
# in case i have several remote
|
||||
# telephone numbers specified, this
|
||||
# is used to specify which one is
|
||||
# used next on dial fail or retry:
|
||||
remdial-handling = first # first, last or next
|
||||
|
||||
# what happenes if someone dials in:
|
||||
dialin-reaction = callback # accept, reject, ignore, answer, callback
|
||||
|
||||
# normal dialout or do i call back:
|
||||
dialout-type = normal # normal / calledback
|
||||
|
||||
callbackwait = 1 # no of secs to wait before calling back
|
||||
|
||||
# type of protocol on the B-channel:
|
||||
# hdlc must be specified for IP (the
|
||||
# ipr and isp drivers), raw must be
|
||||
# specified for telephone answering
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
# shorthold mode and idle time
|
||||
# configuration:
|
||||
ratetype = 0 # ratesfile entry to use
|
||||
unitlength = 90 # unitlength to assume
|
||||
unitlengthsrc = rate # none, rate, cmdl, conf, aocd
|
||||
idletime-incoming = 120 # incoming call idle timeout
|
||||
idletime-outgoing = 60 # outgoing call idle timeout
|
||||
earlyhangup = 5 # time to hangup before an expected
|
||||
# next charging unit will occur
|
||||
|
||||
# retry and recovery parameters
|
||||
dialretries = 3 # # of dial retries
|
||||
dialrandincr = off # random dial increment time
|
||||
recoverytime = 5 # time to wait between 2 dial tries
|
||||
usedown = off # set i/f down
|
||||
downtries = 5 # retry cycles before set down
|
||||
downtime = 30 # time to be in down before going up
|
||||
|
||||
#connectprog = "ip-up" # run /etc/isdn/ip-up when an interface
|
||||
# has established its network connection.
|
||||
# example parameters are:
|
||||
# /etc/isdn/ip-up -d isp0 -f up -a 192.110.12.14
|
||||
#disconnectprog = "ip-down" # like connectprog, but run after the connection
|
||||
# is closed (ISDN layer down). The actual
|
||||
# interface address might not be known
|
||||
# any more. example parameters are:
|
||||
# /etc/isdn/ip-up -d isp0 -f down -a 0.0.0.0
|
||||
|
||||
#==============================================================================
|
||||
# entry section: IP over ISDN example - i am called back by the remote end
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
name = I4BIP1 # name for reference
|
||||
|
||||
usrdevicename = ipr # ipr, tel, rbch
|
||||
usrdeviceunit = 1 # unit number
|
||||
|
||||
isdncontroller = 0 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to DIAL OUT
|
||||
remote-phone-dialout = 00401234567 # remote number to dial
|
||||
local-phone-dialout = 38 # our number to tell remote
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 38 # we take calls for this local number
|
||||
remote-phone-incoming = 00401234567 # we take calls from this remote machine
|
||||
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
ratetype = 0 # city
|
||||
unitlength = 90 # default unit length
|
||||
earlyhangup = 5 # safety zone
|
||||
unitlengthsrc = aocd # none, rate, cmdl, conf, aocd
|
||||
|
||||
dialin-reaction = accept # accept, reject, ignore, anwer, callback
|
||||
|
||||
dialout-type = calledback # normal or calledback
|
||||
|
||||
dialretries = 3
|
||||
recoverytime = 3
|
||||
calledbackwait = 20
|
||||
dialrandincr = off
|
||||
|
||||
usedown = off
|
||||
downtries = 2
|
||||
downtime = 30
|
||||
|
||||
idletime-incoming = 300
|
||||
idletime-outgoing = 30
|
||||
|
||||
#==============================================================================
|
||||
# entry section: answering machine example
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
name = I4BTEL # name for reference
|
||||
usrdevicename = tel # ipr, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
isdncontroller = 0 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 456 # this is my number
|
||||
remote-phone-incoming = * # anyone can call in
|
||||
|
||||
dialin-reaction = answer # accept, reject, ignore, answer
|
||||
|
||||
answerprog = answer # program to run
|
||||
|
||||
b1protocol = raw # hdlc, raw
|
||||
|
||||
idletime-incoming = 5 # 5 seconds idle timeout
|
||||
|
||||
#==============================================================================
|
||||
# kernel PPP (with budget handling) - Sunday & Holidays, we call back
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
valid = "0,7" # sundays & holidays
|
||||
|
||||
name = KPPPs # name for reference
|
||||
|
||||
usrdevicename = isp # ipr, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
isdncontroller = 1 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 29 # this is my number
|
||||
remote-phone-incoming = 00401234567 # this one can call in
|
||||
|
||||
# numbers used to DIAL OUT
|
||||
local-phone-dialout = 29 # this is my number
|
||||
remote-phone-dialout = 00401234567 # i call this number
|
||||
|
||||
remdial-handling = first # first, last or next
|
||||
|
||||
dialin-reaction = callback # accept, reject, ignore, answer, callback
|
||||
|
||||
dialout-type = normal # normal / calledback
|
||||
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
idletime-incoming = 30 # incoming call idle timeout
|
||||
idletime-outgoing = 120 # outgoing call idle timeout
|
||||
|
||||
unitlength = 360 # unitlength to assume
|
||||
unitlengthsrc = conf # none, rate, cmdl, conf, aocd
|
||||
|
||||
dialretries = 5 # # of dial retries
|
||||
dialrandincr = on # random dial increment time
|
||||
recoverytime = 3 # time to wait between 2 dial tries
|
||||
|
||||
callbackwait = 5 # time to wait to call back
|
||||
|
||||
usedown = off # set i/f down
|
||||
downtries = 5 # retry cycles before set down
|
||||
downtime = 60 # time to be in down before going up
|
||||
|
||||
budget-callbackperiod = 10800 # 3 hours
|
||||
budget-callbackncalls = 1000 # 2 callbacks in 3 hours
|
||||
budget-callbacksfile = /var/log/isdn/callbacks.isp0
|
||||
budget-callbacksfile-rotate = yes
|
||||
|
||||
budget-calloutperiod = 3600 # 1 hour
|
||||
budget-calloutncalls = 1000 # 3 calls in 1 hour
|
||||
budget-calloutsfile = /var/log/isdn/callouts.isp0
|
||||
budget-calloutsfile-rotate = yes
|
||||
|
||||
#==============================================================================
|
||||
# kernel PPP (with budget handling) - Monday-Saturday, 9:00-18:00: we call back
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
valid = "1,2,3,4,5,6,9:00-18:00" # Monday-Saturday, day
|
||||
|
||||
name = KPPPd # name for reference
|
||||
|
||||
usrdevicename = isp # ipr, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
isdncontroller = 1 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 29 # this is my number
|
||||
remote-phone-incoming = 00401234567 # this one can call in
|
||||
|
||||
# numbers used to DIAL OUT
|
||||
local-phone-dialout = 29 # this is my number
|
||||
remote-phone-dialout = 00401234567 # i call this number
|
||||
|
||||
remdial-handling = first # first, last or next
|
||||
|
||||
dialin-reaction = callback # accept, reject, ignore, answer, callback
|
||||
|
||||
dialout-type = normal # normal / calledback
|
||||
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
idletime-incoming = 30 # incoming call idle timeout
|
||||
idletime-outgoing = 30 # outgoing call idle timeout
|
||||
|
||||
unitlength = 60 # unitlength to assume
|
||||
unitlengthsrc = conf # none, rate, cmdl, conf, aocd
|
||||
|
||||
dialretries = 5 # # of dial retries
|
||||
dialrandincr = on # random dial increment time
|
||||
recoverytime = 3 # time to wait between 2 dial tries
|
||||
|
||||
callbackwait = 5 # time to wait to call back
|
||||
|
||||
usedown = off # set i/f down
|
||||
downtries = 5 # retry cycles before set down
|
||||
downtime = 60 # time to be in down before going up
|
||||
|
||||
budget-callbackperiod = 10800 # 3 hours
|
||||
budget-callbackncalls = 1 # 1 callbacks in 3 hours
|
||||
budget-callbacksfile = /var/log/isdn/callbacks.isp0
|
||||
budget-callbacksfile-rotate = yes
|
||||
|
||||
budget-calloutperiod = 3600 # 1 hour
|
||||
budget-calloutncalls = 3 # 3 calls in 1 hour
|
||||
budget-calloutsfile = /var/log/isdn/callouts.isp0
|
||||
budget-calloutsfile-rotate = yes
|
||||
|
||||
#==============================================================================
|
||||
# kernel PPP (with budget handling) - Monday-Saturday: we call back
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
valid = "1,2,3,4,5,6,18:00-9:00" # Monday-Saturday, night
|
||||
|
||||
name = KPPPn # name for reference
|
||||
|
||||
usrdevicename = isp # ipr, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
isdncontroller = 1 # controller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 29 # this is my number
|
||||
remote-phone-incoming = 00401234567 # this one can call in
|
||||
|
||||
# numbers used to DIAL OUT
|
||||
local-phone-dialout = 29 # this is my number
|
||||
remote-phone-dialout = 00401234567 # i call this number
|
||||
|
||||
remdial-handling = first # first, last or next
|
||||
|
||||
dialin-reaction = callback # accept, reject, ignore, answer, callback
|
||||
|
||||
dialout-type = normal # normal / calledback
|
||||
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
idletime-incoming = 30 # incoming call idle timeout
|
||||
idletime-outgoing = 30 # outgoing call idle timeout
|
||||
|
||||
unitlength = 60 # unitlength to assume
|
||||
unitlengthsrc = conf # none, rate, cmdl, conf, aocd
|
||||
|
||||
dialretries = 5 # # of dial retries
|
||||
dialrandincr = on # random dial increment time
|
||||
recoverytime = 3 # time to wait between 2 dial tries
|
||||
|
||||
callbackwait = 5 # time to wait to call back
|
||||
|
||||
usedown = off # set i/f down
|
||||
downtries = 5 # retry cycles before set down
|
||||
downtime = 60 # time to be in down before going up
|
||||
|
||||
budget-callbackperiod = 7200 # 2 hours
|
||||
budget-callbackncalls = 2 # 2 callbacks in 2 hours
|
||||
budget-callbacksfile = /var/log/isdn/callbacks.isp0
|
||||
budget-callbacksfile-rotate = yes
|
||||
|
||||
budget-calloutperiod = 3600 # 1 hour
|
||||
budget-calloutncalls = 3 # 3 calls in 1 hour
|
||||
budget-calloutsfile = /var/log/isdn/callouts.isp0
|
||||
budget-calloutsfile-rotate = yes
|
||||
|
||||
# EOF #########################################################################
|
@ -1,21 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# alias file for the isdntel(1) application
|
||||
# -----------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Fri Dec 18 18:06:03 1998]
|
||||
#
|
||||
# -hm cleanup for release
|
||||
#
|
||||
#
|
||||
# the format is simple: the number beginning in column one followed
|
||||
# by one or more spaces or tabs. The rest of the line is taken as
|
||||
# and alias string for the number. Comment lines start with a "#".
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
123 alias for 123
|
||||
456 alias for 456
|
||||
789 alias for 789
|
||||
|
@ -1,98 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# isdn telephone answering
|
||||
# -------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Thu May 20 11:45:04 1999]
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#FreeBSD < 3.1, NetBSD, OpenBSD, BSD/OS
|
||||
#LIBDIR=/usr/local/lib/isdn
|
||||
#FreeBSD 3.1 and up
|
||||
LIBDIR=/usr/share/isdn
|
||||
|
||||
VARDIR=/var/isdn
|
||||
DEVICE=/dev/i4btel0
|
||||
|
||||
# sounds
|
||||
MESSAGE=${LIBDIR}/msg.al
|
||||
BEEP=${LIBDIR}/beep.al
|
||||
|
||||
# dd options
|
||||
SKIP=25
|
||||
|
||||
# max message size
|
||||
MAXMSIZ=100
|
||||
|
||||
# src and dst telephone numbers
|
||||
src=
|
||||
dst=
|
||||
|
||||
# current date
|
||||
DATE=`date`
|
||||
|
||||
# check if directory exists
|
||||
if [ ! -d "${VARDIR}" ]
|
||||
then
|
||||
mkdir ${VARDIR}
|
||||
fi
|
||||
|
||||
# get options
|
||||
if ! set -- `/usr/bin/getopt D:d:s: $*`; then
|
||||
echo "usage2: play -D device -d <dest-telno> -s <src-telno>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# process options
|
||||
for i ; do
|
||||
case $i in
|
||||
-D)
|
||||
DEVICE=$2; shift; shift;
|
||||
;;
|
||||
-d)
|
||||
dst=$2; shift; shift;
|
||||
;;
|
||||
-s)
|
||||
src=$2; shift; shift;
|
||||
;;
|
||||
--)
|
||||
shift; break;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# this is a __MUST__ in order to use the fullscreen inteface !!!
|
||||
|
||||
FILEDATE=`date \+%y%m%d%H%M%S`
|
||||
|
||||
# echo message to phone
|
||||
if [ -r "${MESSAGE}" ]; then
|
||||
/bin/dd of=${DEVICE} if=${MESSAGE} bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# echo beep to phone
|
||||
if [ -r "${BEEP}" ]; then
|
||||
/bin/dd of=${DEVICE} if=${BEEP} bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# start time
|
||||
START=`date \+%s`
|
||||
|
||||
# get message from caller
|
||||
/bin/dd if=${DEVICE} of=${VARDIR}/${FILEDATE}-${dst}-${src} skip=${SKIP} bs=2k count=${MAXMSIZ} >/dev/null 2>&1
|
||||
|
||||
# end time
|
||||
END=`date \+%s`
|
||||
|
||||
# duration
|
||||
TIME=`expr ${END} - ${START}`
|
||||
|
||||
# save recorded message
|
||||
if [ -r "${VARDIR}/${FILEDATE}-${dst}-${src}" ]; then
|
||||
mv ${VARDIR}/${FILEDATE}-${dst}-${src} ${VARDIR}/${FILEDATE}-${dst}-${src}-${TIME}
|
||||
fi
|
||||
|
||||
exit 0
|
@ -1,99 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# answer and record message script for i4b isdnd
|
||||
# ----------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Thu May 20 11:45:10 1999]
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
VARDIR=/var/isdn
|
||||
|
||||
#FreeBSD < 3.1, NetBSD, OpenBSD, BSD/OS
|
||||
#LIBDIR=/usr/local/lib/isdn
|
||||
#FreeBSD 3.1 and up
|
||||
LIBDIR=/usr/share/isdn
|
||||
|
||||
LOGFILE=/tmp/answer.log
|
||||
NCALLFILE=${VARDIR}/ncall
|
||||
DATE=`date +%d%H`
|
||||
DF=0
|
||||
dF=0
|
||||
sF=0
|
||||
|
||||
if ! set -- `getopt D:d:s: $*`; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i ; do
|
||||
case ${i} in
|
||||
-D)
|
||||
DEVICE=$2
|
||||
DF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-d)
|
||||
DEST=$2
|
||||
dF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
SRC=$2
|
||||
sF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "" >>${LOGFILE}
|
||||
|
||||
if [ "${DF}" -eq 0 -o "${dF}" -eq 0 -o "${sF}" -eq 0 ]; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "answer: device ${DEVICE} destination ${DEST} source ${SRC} " >>${LOGFILE}
|
||||
|
||||
if [ -r "${NCALLFILE}" ]; then
|
||||
NCALL=`cat ${NCALLFILE}`
|
||||
else
|
||||
NCALL=0
|
||||
fi
|
||||
|
||||
NCALL=`printf "%.4d" ${NCALL}`
|
||||
|
||||
echo Date: `date` >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
|
||||
if [ -n "${SRC}" ]; then
|
||||
echo "From: ${SRC}" >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
fi
|
||||
|
||||
if [ -n "${DEST}" ]; then
|
||||
echo "To: ${DEST}" >> ${VARDIR}/I.${NCALL}.${DATE}
|
||||
fi
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -r "${LIBDIR}/msg.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/msg.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
dd if=${DEVICE} of=${VARDIR}/R.${NCALL}.${DATE} bs=2k >/dev/null 2>&1
|
||||
|
||||
echo `expr $NCALL + 1` >$NCALLFILE
|
@ -1,87 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# tell called and calling numbers answer script for i4b isdnd
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Thu May 20 11:45:15 1999]
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
VARDIR=/var/isdn
|
||||
|
||||
#FreeBSD < 3.1, NetBSD, OpenBSD, BSD/OS
|
||||
#LIBDIR=/usr/local/lib/isdn
|
||||
#FreeBSD 3.1 and up
|
||||
LIBDIR=/usr/share/isdn
|
||||
|
||||
LOGFILE=/tmp/answer.log
|
||||
NCALLFILE=${VARDIR}/ncall
|
||||
DATE=`date +%d%H`
|
||||
DF=0
|
||||
dF=0
|
||||
sF=0
|
||||
|
||||
if ! set -- `getopt D:d:s: $*`; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i ; do
|
||||
case ${i} in
|
||||
-D)
|
||||
DEVICE=$2
|
||||
DF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-d)
|
||||
DEST=$2
|
||||
dF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
SRC=$2
|
||||
sF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "" >>${LOGFILE}
|
||||
|
||||
if [ "${DF}" -eq 0 -o "${dF}" -eq 0 -o "${sF}" -eq 0 ]; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "answer: device ${DEVICE} destination ${DEST} source ${SRC} " >>${LOGFILE}
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# tell the caller the number he is calling from
|
||||
|
||||
POS=1
|
||||
LENGTH=`expr ${SRC} : '.*'`
|
||||
|
||||
while : ; do
|
||||
DIGIT=`echo ${SRC} | cut -c ${POS}`
|
||||
/bin/dd of=${DEVICE} if=${LIBDIR}/${DIGIT}.al bs=2k >/dev/null 2>&1
|
||||
POS=`expr ${POS} + 1`
|
||||
if [ "${POS}" -gt "${LENGTH}" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
@ -1,89 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# tell called and calling numbers answer script for i4b isdnd
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Tue Oct 31 10:59:49 2000]
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
VARDIR=/var/isdn
|
||||
|
||||
#FreeBSD < 3.1, NetBSD, OpenBSD, BSD/OS
|
||||
#LIBDIR=/usr/local/lib/isdn
|
||||
#FreeBSD 3.1 and up
|
||||
LIBDIR=/usr/share/isdn
|
||||
|
||||
LOGFILE=/tmp/answer.log
|
||||
NCALLFILE=${VARDIR}/ncall
|
||||
DATE=`date +%d%H`
|
||||
DF=0
|
||||
dF=0
|
||||
sF=0
|
||||
|
||||
if ! set -- `getopt D:d:s: $*`; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i ; do
|
||||
case ${i} in
|
||||
-D)
|
||||
DEVICE=$2
|
||||
DF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-d)
|
||||
DEST=$2
|
||||
dF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
SRC=$2
|
||||
sF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "" >>${LOGFILE}
|
||||
|
||||
if [ "${DF}" -eq 0 -o "${dF}" -eq 0 -o "${sF}" -eq 0 ]; then
|
||||
echo 'Usage: answer -D device -d destination -s source'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "answer: device ${DEVICE} destination ${DEST} source ${SRC} " >>${LOGFILE}
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# tell the caller the number he is calling from
|
||||
|
||||
POS=1
|
||||
LENGTH=`expr ${SRC} : '.*'`
|
||||
|
||||
while : ; do
|
||||
DIGIT=`echo ${SRC} | cut -c ${POS}`
|
||||
/bin/dd of=${DEVICE} if=${LIBDIR}/${DIGIT}.al bs=2k >/dev/null 2>&1
|
||||
POS=`expr ${POS} + 1`
|
||||
if [ "${POS}" -gt "${LENGTH}" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -r "${LIBDIR}/beep.al" ]; then
|
||||
dd of=${DEVICE} if=${LIBDIR}/beep.al bs=2k >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
dd if=${DEVICE} of=${VARDIR}/recorded.msg bs=2k >/dev/null 2>&1
|
@ -1,79 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# unknown_incoming - script for isdnd
|
||||
# -----------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Wed Jan 10 13:40:36 2001]
|
||||
#
|
||||
# This script may be configured to be called by isdnd when an
|
||||
# unknown incoming call is received. In case the destination
|
||||
# telephone number is available, it sends mail with the time,
|
||||
# source and destination numbers to a configurable address.
|
||||
#
|
||||
# For this to work, and entry like this:
|
||||
#
|
||||
# regexpr = "<unknown> incoming call from"
|
||||
# regprog = unknown_incoming
|
||||
#
|
||||
# is needed in the system section of /etc/isdn/isdnd.rc.
|
||||
#
|
||||
# This script has to be configured to the sites needs, look
|
||||
# for the comment lines start with "configure:"
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# configure: who shall receive the mail
|
||||
mailaddr=root
|
||||
#
|
||||
from=`echo $* | awk '{print $6}'`
|
||||
to=`echo $* | awk '{print $8}'`
|
||||
test=`echo $* | awk '{print $9}'`
|
||||
ctrl=`echo $* | awk '{print $10}'`
|
||||
date=`date "+%b %d"`
|
||||
time=`date "+%H:%M"`
|
||||
mach=`hostname`
|
||||
|
||||
# configure: list of destination numbers to ignore
|
||||
case "$from" in
|
||||
"NotAvailable" ) exit 0 ;;
|
||||
"00401234567"* ) exit 0 ;;
|
||||
"00407654321" ) exit 0 ;;
|
||||
esac
|
||||
|
||||
# configure: how to name the line on which this was received
|
||||
if [ $test = "ctrl" ]
|
||||
then
|
||||
case "$ctrl" in
|
||||
"1")
|
||||
line="PBX 1"
|
||||
;;
|
||||
"2")
|
||||
line="PBX 2"
|
||||
;;
|
||||
*)
|
||||
line="controller is $ctrl"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
line="test is $test, controller is $ctrl"
|
||||
fi
|
||||
|
||||
cat << ENDOFDATA | mail -s "isdnd: unknown incoming telephone call" $mailaddr
|
||||
|
||||
Unknown incoming telephone call recognized:
|
||||
|
||||
Date: $date
|
||||
Time: $time
|
||||
Line: $line
|
||||
From: $from
|
||||
To: $to
|
||||
|
||||
Sincerly yours,
|
||||
the isdnd on $mach
|
||||
|
||||
ENDOFDATA
|
||||
|
||||
exit 0
|
@ -189,8 +189,6 @@
|
||||
..
|
||||
gssapi
|
||||
..
|
||||
i4b
|
||||
..
|
||||
isofs
|
||||
cd9660
|
||||
..
|
||||
|
@ -32,8 +32,6 @@
|
||||
..
|
||||
gss
|
||||
..
|
||||
isdn mode=0700
|
||||
..
|
||||
mail
|
||||
..
|
||||
mtree
|
||||
|
@ -221,14 +221,6 @@
|
||||
..
|
||||
iscsi
|
||||
..
|
||||
isdn
|
||||
contrib
|
||||
..
|
||||
i4brunppp
|
||||
..
|
||||
v21
|
||||
..
|
||||
..
|
||||
kld
|
||||
cdev
|
||||
module
|
||||
@ -344,8 +336,6 @@
|
||||
..
|
||||
info
|
||||
..
|
||||
isdn
|
||||
..
|
||||
locale
|
||||
UTF-8
|
||||
..
|
||||
|
@ -52,7 +52,6 @@ _start=quietstart
|
||||
/etc/rc.d/netif ${_start}
|
||||
/etc/rc.d/ipsec ${_start}
|
||||
/etc/rc.d/dhclient ${_start}
|
||||
/etc/rc.d/isdnd ${_start}
|
||||
/etc/rc.d/ppp ${_start}
|
||||
/etc/rc.d/ipfw ${_start}
|
||||
/etc/rc.d/ip6fw ${_start}
|
||||
|
@ -16,7 +16,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \
|
||||
hostapd hostid hostname \
|
||||
idmapd inetd initrandom \
|
||||
ip6addrctl ip6fw ipfilter ipfs ipfw ipmon \
|
||||
ipnat ipsec ipxrouted isdnd \
|
||||
ipnat ipsec ipxrouted \
|
||||
jail \
|
||||
kadmind kerberos kernel keyserv kldxref kpasswdd \
|
||||
ldconfig local localpkg lockd lpd \
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
|
||||
# PROVIDE: NETWORKING NETWORK
|
||||
# REQUIRE: netif netoptions routing network_ipv6 isdnd ppp
|
||||
# REQUIRE: netif netoptions routing network_ipv6 ppp
|
||||
# REQUIRE: routed mrouted route6d mroute6d resolv
|
||||
|
||||
# This is a dummy dependency, for services which require networking
|
||||
|
@ -1,56 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Mostly based on original script (/etc/rc.isdn) written by Hellmuth Michaelis
|
||||
#
|
||||
|
||||
# PROVIDE: isdnd
|
||||
# REQUIRE: netif FILESYSTEMS cleanvar
|
||||
# KEYWORD: nojail
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="isdnd"
|
||||
rcvar=`set_rcvar isdn`
|
||||
pidfile="/var/run/${name}.pid"
|
||||
command="/usr/sbin/isdnd"
|
||||
start_cmd="isdnd_start"
|
||||
|
||||
isdnd_start()
|
||||
{
|
||||
echo -n 'ISDN subsystem setup:'
|
||||
|
||||
# Start isdnd
|
||||
#
|
||||
echo -n ' isdnd'
|
||||
case ${isdn_fsdev} in
|
||||
[Nn][Oo] | '')
|
||||
/usr/sbin/isdnd ${isdn_flags}
|
||||
;;
|
||||
*)
|
||||
# Change vidmode of ${isdn_fsdev}
|
||||
#
|
||||
case ${isdn_screenflags} in
|
||||
[Nn][Oo])
|
||||
;;
|
||||
*)
|
||||
/usr/sbin/vidcontrol < ${isdn_fsdev} > ${isdn_fsdev} 2>&1 ${isdn_screenflags}
|
||||
;;
|
||||
esac
|
||||
|
||||
/usr/sbin/isdnd ${isdn_flags} -f -r ${isdn_fsdev} -t ${isdn_ttype}
|
||||
;;
|
||||
esac
|
||||
|
||||
# Start isdntrace
|
||||
#
|
||||
if checkyesno isdn_trace; then
|
||||
echo -n ' isdntrace'
|
||||
nohup /usr/sbin/isdntrace ${isdn_traceflags} >/dev/null 2>&1 &
|
||||
fi
|
||||
echo '.'
|
||||
}
|
||||
|
||||
load_rc_config $name
|
||||
run_rc_command "$1"
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
|
||||
# PROVIDE: ppp
|
||||
# REQUIRE: netif isdnd
|
||||
# REQUIRE: netif
|
||||
# KEYWORD: nojail
|
||||
|
||||
. /etc/rc.subr
|
||||
|
@ -26,9 +26,6 @@ INCS= a.out.h ar.h assert.h bitstring.h complex.h cpio.h _ctype.h ctype.h \
|
||||
ulimit.h unistd.h utime.h utmp.h uuid.h varargs.h vis.h wchar.h \
|
||||
wctype.h wordexp.h
|
||||
|
||||
I4BHDRS=i4b_cause.h i4b_debug.h i4b_ioctl.h i4b_rbch_ioctl.h \
|
||||
i4b_tel_ioctl.h i4b_trace.h
|
||||
|
||||
MHDRS= float.h floatingpoint.h stdarg.h
|
||||
|
||||
PHDRS= sched.h semaphore.h _semaphore.h
|
||||
@ -181,13 +178,6 @@ copies:
|
||||
cd ${.CURDIR}/../sys/crypto; \
|
||||
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 rijndael/rijndael.h \
|
||||
${DESTDIR}${INCLUDEDIR}/crypto
|
||||
.if ${MACHINE_ARCH} == "i386"
|
||||
.if ${MK_I4B} != "no"
|
||||
cd ${.CURDIR}/../sys/i4b/include; \
|
||||
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${I4BHDRS} \
|
||||
${DESTDIR}${INCLUDEDIR}/i4b
|
||||
.endif
|
||||
.endif
|
||||
cd ${.CURDIR}/../sys/opencrypto; \
|
||||
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
|
||||
${DESTDIR}${INCLUDEDIR}/crypto
|
||||
@ -269,11 +259,6 @@ symlinks:
|
||||
ln -fs ../../../sys/crypto/$$h \
|
||||
${DESTDIR}${INCLUDEDIR}/crypto; \
|
||||
done
|
||||
cd ${.CURDIR}/../sys/i4b/include; \
|
||||
for h in ${I4BHDRS}; do \
|
||||
ln -fs ../../../sys/i4b/include/$$h \
|
||||
${DESTDIR}${INCLUDEDIR}/i4b; \
|
||||
done
|
||||
cd ${.CURDIR}/../sys/opencrypto; \
|
||||
for h in *.h; do \
|
||||
ln -fs ../../../sys/opencrypto/$$h \
|
||||
|
@ -9,7 +9,6 @@ SUBDIR= ${_colldef} \
|
||||
${_dict} \
|
||||
${_doc} \
|
||||
${_examples} \
|
||||
${_isdn} \
|
||||
${_man} \
|
||||
${_me} \
|
||||
misc \
|
||||
@ -52,10 +51,6 @@ _me= me
|
||||
_examples= examples
|
||||
.endif
|
||||
|
||||
.if ${MK_I4B} != "no"
|
||||
_isdn= isdn
|
||||
.endif
|
||||
|
||||
.if ${MK_DICT} != "no"
|
||||
_dict= dict
|
||||
.endif
|
||||
|
@ -15,7 +15,6 @@ LDIRS= BSD_daemon \
|
||||
find_interface \
|
||||
ibcs2 \
|
||||
ipfw \
|
||||
isdn \
|
||||
kld \
|
||||
libvgl \
|
||||
mdoc \
|
||||
@ -77,35 +76,6 @@ XFILES= BSD_daemon/FreeBSD.pfa \
|
||||
ibcs2/README \
|
||||
ibcs2/hello.uu \
|
||||
ipfw/change_rules.sh \
|
||||
isdn/FAQ \
|
||||
isdn/KERNEL \
|
||||
isdn/Overview \
|
||||
isdn/README \
|
||||
isdn/ROADMAP \
|
||||
isdn/ReleaseNotes \
|
||||
isdn/Resources \
|
||||
isdn/SupportedCards \
|
||||
isdn/ThankYou \
|
||||
isdn/contrib/README \
|
||||
isdn/contrib/anleitung.ppp \
|
||||
isdn/contrib/answer.c \
|
||||
isdn/contrib/answer.sh \
|
||||
isdn/contrib/convert.sh \
|
||||
isdn/contrib/hplay.c \
|
||||
isdn/contrib/i4b-ppp-newbie.txt \
|
||||
isdn/contrib/isdnctl \
|
||||
isdn/contrib/isdnd_acct \
|
||||
isdn/contrib/isdnd_acct.pl \
|
||||
isdn/contrib/isdntelmux.c \
|
||||
isdn/contrib/mrtg-isp0.sh \
|
||||
isdn/i4brunppp/Makefile \
|
||||
isdn/i4brunppp/README \
|
||||
isdn/i4brunppp/i4brunppp-isdnd.rc \
|
||||
isdn/i4brunppp/i4brunppp.8 \
|
||||
isdn/i4brunppp/i4brunppp.c \
|
||||
isdn/v21/Makefile \
|
||||
isdn/v21/README \
|
||||
isdn/v21/v21modem.c \
|
||||
kld/Makefile \
|
||||
kld/cdev/Makefile \
|
||||
kld/cdev/README \
|
||||
@ -146,9 +116,7 @@ XFILES= BSD_daemon/FreeBSD.pfa \
|
||||
ppi/Makefile \
|
||||
ppi/ppilcd.c \
|
||||
ppp/chap-auth \
|
||||
ppp/isdnd.rc \
|
||||
ppp/login-auth \
|
||||
ppp/ppp.conf.isdn \
|
||||
ppp/ppp.conf.sample \
|
||||
ppp/ppp.conf.span-isp \
|
||||
ppp/ppp.conf.span-isp.working \
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,82 +0,0 @@
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# example fragment of a kernel config file to include all
|
||||
# parts of isdn4bsd. This file should be appended to your
|
||||
# kernel config file and then edited (stripped down) to
|
||||
# match your hardware configuration.
|
||||
#
|
||||
# last edit-date: [Sun Oct 21 11:03:37 2001]
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# Siemens/Infineon chipsets
|
||||
device isic 4
|
||||
|
||||
# Winbond chipset
|
||||
device iwic 4
|
||||
|
||||
# AVM Fritz PCI
|
||||
device ifpi 4
|
||||
|
||||
# AVM Fritz PCI version 2
|
||||
device "ifpi2" 4
|
||||
|
||||
# Teles 16.3c
|
||||
device ihfc 4
|
||||
|
||||
# NETjet-S / Teles PCI-TJ
|
||||
device itjc 4
|
||||
|
||||
# AVM Fritz PnP
|
||||
device ifpnp 4
|
||||
|
||||
# AVM B1/T1
|
||||
device "i4bcapi"
|
||||
device iavc 4
|
||||
|
||||
# enable some ISA cards within the "isic" driver
|
||||
options TEL_S0_8
|
||||
options TEL_S0_16
|
||||
options TEL_S0_16_3
|
||||
options AVM_A1
|
||||
options USR_STI
|
||||
options ELSA_PCC16
|
||||
|
||||
# enable some ISA PnP cards within the "isic" driver
|
||||
options TEL_S0_16_3_P
|
||||
options CRTX_S0_P
|
||||
options DRN_NGO
|
||||
options SEDLBAUER
|
||||
options ELSA_QS1ISA
|
||||
options SIEMENS_ISURF2
|
||||
options ASUSCOM_IPAC
|
||||
options EICON_DIVA
|
||||
options COMPAQ_M610
|
||||
|
||||
# enable ELSA Microlink PCI card within the "isic" driver
|
||||
options ELSA_QS1PCI
|
||||
|
||||
# protocol stack
|
||||
device "i4bq921"
|
||||
device "i4bq931"
|
||||
device "i4b"
|
||||
|
||||
# control devices
|
||||
device "i4btrc" 4
|
||||
device "i4bctl"
|
||||
device "i4brbch" 4
|
||||
device "i4btel" 2
|
||||
|
||||
# IP over raw HDLC
|
||||
options IPR_VJ
|
||||
device "i4bipr" 4
|
||||
|
||||
# kernel sppp/isppp
|
||||
device "i4bisppp" 4
|
||||
|
||||
# Netgraph interface
|
||||
#options NETGRAPH
|
||||
#device "i4bing" 4
|
||||
|
@ -1,307 +0,0 @@
|
||||
|
||||
Short technical overview of isdn4bsd
|
||||
====================================
|
||||
|
||||
Copyright (c) 1998 Hellmuth Michaelis. All rights reserved.
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
Last edit-date: [Tue Oct 27 11:26:03 1998]
|
||||
|
||||
-hm starting an overview ...
|
||||
|
||||
|
||||
Contents:
|
||||
---------
|
||||
Functional block diagram
|
||||
Layer 1
|
||||
Layer 2
|
||||
Layer 3
|
||||
Debugging control
|
||||
Layer 4
|
||||
ISDN protocol trace
|
||||
|
||||
|
||||
Functional block diagram
|
||||
========================
|
||||
|
||||
isdndebug isdnd isdntrace
|
||||
+-------+ +----------------------------------------------------+ +--------+
|
||||
| | | | | |
|
||||
| | | | | |
|
||||
+-------+ +----------------------------------------------------+ +--------+
|
||||
| | |
|
||||
| | |
|
||||
| /dev/i4bctl Userland | /dev/i4b /dev/i4btrc<n> |
|
||||
===============================================================================
|
||||
| Kernel | |
|
||||
| | |
|
||||
+-------+ +----------------------------------------------------+ +--------+
|
||||
| | | | | |
|
||||
|i4bctl | | i4b | | i4btrc |
|
||||
| (6) | | (7) | | (8) |
|
||||
| debug | | Layer 4 - common call control interface | | ISDN |
|
||||
|control| | | | trace |
|
||||
+:-:-:--+ +----------------------------------------------------+ +--------+
|
||||
: : : ^ ^ ^
|
||||
: : : Call | various ptr arrays | Call %
|
||||
. . . Control | in i4b_l3l4.h | Control %
|
||||
V V %
|
||||
+----------------------+ +----------------------+ %
|
||||
| | | | %
|
||||
| i4bq931 | ISDN | active card | %
|
||||
| (5) | ##### | %
|
||||
| Layer 3 (Q.931) | # | driver | %
|
||||
| | # | | %
|
||||
+----------------------+ # +----------------------+ %
|
||||
^ # B + %
|
||||
| i4b_l2l3_func function # | + +------------+ %
|
||||
| ptr array in i4b_l2l3.h # C +++++ isp |----> %
|
||||
V # h + +------------+ IP %
|
||||
+----------------------+ # a + Subsys %
|
||||
| | # n + +------------+ %
|
||||
| i4bq921 | # n +++++ ipr |----> %
|
||||
| (4) | # e + +------------+ IP %
|
||||
| Layer 2 (Q.921) | # l + Subsys %
|
||||
| | # + +------------+ %
|
||||
+----------------------+ # D +++++ tel/rbch |----> %
|
||||
^ # a + +------------+ to %
|
||||
| i4b_l1l2_func function # t + /dev/i4btel<n> %
|
||||
| ptr array in i4b_l1l2.h # a + or /dev/i4brbch<n>%
|
||||
V # + %
|
||||
+----------------------+ # +---------------------+ %
|
||||
| | # | | %
|
||||
| isic (ISAC part) | D-ch trace # | isic (HSCX part) |B-ch%
|
||||
| (2) |%%%%%%%%%%%% # | (3) |%%%%%
|
||||
| Layer 1 (I.430) | % # | non-HDLC / HDLC |trc %
|
||||
| | % # | | %
|
||||
+----------------------+ % # +---------------------+ %
|
||||
^ % # ^ %
|
||||
D-channel | % # B-channels | %
|
||||
+-----------------------------------------------+ %
|
||||
| function ptr in % # %
|
||||
| in isic_softc in %%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
V i4b_l1.h #
|
||||
+----------------------+ #
|
||||
| | #
|
||||
| isic | #
|
||||
| (1) | #
|
||||
| Card hardware driver | #
|
||||
| for Teles, AVM, USR | #
|
||||
| | #
|
||||
+----------#-----------+ #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
# #
|
||||
|=========#===============================#============================|
|
||||
ISDN S0 bus
|
||||
|
||||
|
||||
Layer 1
|
||||
=======
|
||||
|
||||
(1) A driver for a special card hardware consists of a
|
||||
- probe routine
|
||||
- attach routine
|
||||
- FIFO read
|
||||
- FIFO write
|
||||
- register read
|
||||
- register write
|
||||
routines. These routines handle the card/manufacturer specific stuff
|
||||
required to talk to a particular card.
|
||||
|
||||
The addresses of the read/write routines are put into an array found
|
||||
in struct isic_softc and they are later called by the macros:
|
||||
|
||||
ISAC_READ(r), ISAC_WRITE(r,v), ISAC_RDFIFO(b,s), ISAC_WRFIFO(b,s),
|
||||
HSCX_READ(n,r), HSCX_WRITE(n,r,v), HSCX_RDFIFO(n,b,s), HSCX_WRFIFO(n,b,s)
|
||||
|
||||
(see file layer1/i4b_l1.h)
|
||||
|
||||
Files currently used for this purpose are
|
||||
- i4b_avm_a1.c AVM A1 and AVM Fritz!Card drivers
|
||||
- i4b_ctx_s0P.c Creatix S0 PnP (experimental!)
|
||||
- i4b_tel_s016.c Teles S0/16 and clones
|
||||
- i4b_tel_s0163.c Teles S0/16.3
|
||||
- i4b_tel_s08.c Teles S0/8 and clones
|
||||
- i4b_tel_s0P.c Teles S0/16 PnP (experimental!)
|
||||
- i4b_usr_sti.c 3Com USRobotics Sportster
|
||||
|
||||
|
||||
(2) The files i4b_isac.c and i4b_isac.h contain the code to control the
|
||||
ISAC chip by using the above mentioned macros.
|
||||
|
||||
Files i4b_l1.c and i4b_l1.h handle stuff used to access layer 1
|
||||
functions from layer 2.
|
||||
|
||||
Layer 1 and layer 2 access functionality of each other by using
|
||||
a well known function pointer array, which contains addresses of
|
||||
"primitives" functions which are defined in I.430 and Q.921. The
|
||||
function pointer array for layer 1/2 communication is defined in
|
||||
file include/i4b_l1l2.h and is initialized i4b_l1.c at the very
|
||||
beginning.
|
||||
|
||||
File i4b_isic.c contains the main code for the "isic" device driver.
|
||||
|
||||
i4b_l1fsm.c is the heart of layer 1 containing the state machine which
|
||||
implements the protocol described in I.430 and the ISAC data book.
|
||||
|
||||
|
||||
(3) All above code is used for handling of the D channel, the files
|
||||
i4b_bchan.c, i4b_hscx.c and i4b_hscx.h contain the code for handling
|
||||
the B-channel, the HSCX is used to interface the userland drivers
|
||||
isp, ipr, tel and rbch to one of the B-channels and i4b_hscx.c and
|
||||
i4b_hscx.h contain the code to handle it (also by using the above
|
||||
mentioned macros). i4b_bchan.c contains various maintenance code for
|
||||
interfacing to the upper layers.
|
||||
|
||||
|
||||
Layer 2
|
||||
=======
|
||||
|
||||
(4) Layer 2 implements the LAPD protocol described in Q.920/Q.921. Layer 2
|
||||
interfaces to layer 1 by the above described function pointer array,
|
||||
where layer 1 calls layer 2 functions to provide input to layer 2 and
|
||||
layer 2 calls layer 1 functions to feed data to layer 1.
|
||||
|
||||
The same mechanism is used for layer 2 / layer 3 communication, the
|
||||
pointer array interface is defined in include/i4b_l2l3.h ad the array
|
||||
is initialized at the very beginning of i4b_l2.c which also contains
|
||||
some layer 1 and some layer 3 interface routines. As with l1/l2, the
|
||||
l2/l3 array also contains addresses for "primitives" functions which
|
||||
are specified in Q.920/Q.921 and Q.931.
|
||||
|
||||
i4b_l2.h contains the definition of l2_softc_t, which describes the
|
||||
complete state of a layer 2 link between the exchange and the local
|
||||
terminal equipment.
|
||||
|
||||
i4b_l2.c contains the entrance of data from layer 1 into the system,
|
||||
which is split up in i4b_ph_data_ind() into the 3 classes of layer 2
|
||||
frames called S-frame, I-frame and U-frame. They are handled in files
|
||||
i4b_sframe.c, i4b_iframe.c and i4b_uframe.c together with the respective
|
||||
routines to send data with each ones frame type.
|
||||
|
||||
i4b_l2timer.c implements the timers required by Q.921.
|
||||
|
||||
i4b_tei.c contains the TEI handling routines.
|
||||
|
||||
i4b_lme.c implements a rudimentary layer management entity.
|
||||
|
||||
i4b_util.c implements the many utility functions specified
|
||||
in Q.921 together wit some misc routines required for overall
|
||||
functionality.
|
||||
|
||||
i4b_mbuf.c handles all (!) requests for mbufs and frees all mbufs used
|
||||
by the whole isdn4bsd kernel part. It should probably be moved else-
|
||||
where.
|
||||
|
||||
i4b_l2fsm.c and i4b_l2fsm.h contain the heart of layer 2, the state-
|
||||
machine implementing the protocol as specified in Q.921.
|
||||
|
||||
Layer 3
|
||||
=======
|
||||
|
||||
(5) i4b_l2if.c and i4b_l4if.c contain the interface routines to communicate
|
||||
to layer 2 and layer 4 respectively.
|
||||
|
||||
i4b_l3timer.c implements the timers required by layer 3.
|
||||
|
||||
i4b_q931.c and i4b_q931.h implement the message and information element
|
||||
decoding of the Q.931 protocol.
|
||||
|
||||
i4b_q932fac.c and i4b_q932fac.h implement a partial decoding of facility
|
||||
messages and/or information elements; the only decoding done here is
|
||||
the decoding of AOCD and AOCE, advice of charge during and at end of
|
||||
call.
|
||||
|
||||
As usual, i4b_l3fsm.c and i4b_l3fsm.h contain the state machine required
|
||||
to handle the protocol as specified in Q.931.
|
||||
|
||||
Layer 3 uses a structure defined in include/i4b_l3l4.h to store and
|
||||
request information about one particular isdncontroller, it is called
|
||||
ctrl_desc_t (controller descriptor). It contains information on the
|
||||
state of a controller (controller ready/down and which B channels are
|
||||
used or idle) as well as a pointer array used for communication of
|
||||
layer 4 with layer 3: layer 3 "knows" the routines to call within
|
||||
layer 4 by name, but in case layer 4 has to call layer 3, several
|
||||
possibilities exist (i.e. active / passive cards) so it has to call
|
||||
the routines which the ISDN controller had put into the the function
|
||||
pointer array (N_CONNECT_REQUEST, N_CONNECT_RESPONSE etc) at init time.
|
||||
|
||||
Layer 3 shares a structure called call_desc_t (call descriptor) with
|
||||
layer 4. This structure is used to describe the state of one call. The
|
||||
reference to layer 3 is the Q.931 call reference value, the reference to
|
||||
layer 4 (and the isdn daemon, isdnd) is the cdid, an unique integer
|
||||
value uniquely describing one call, the call descriptor id.
|
||||
This structure is used to build an array of this structures
|
||||
(call_desc[N_CALL_DESC]), which must be large enough to hold as many
|
||||
calls as there are B channels in the system PLUS a reserve to be able
|
||||
to handle incoming SETUP messages although all channels are in use.
|
||||
|
||||
More, this structure contains the so called "link table pointers"
|
||||
(isdn_link_t *ilt and drvr_link_t *dlt) which contain function pointers
|
||||
to "link" a B-channel (better the addresses of functions each participant
|
||||
needs to access each others functionality) after a successful call setup
|
||||
to a userland driver (such as isp, ipr, rbch or tel) to exchange user
|
||||
data in the desired protocol and format.
|
||||
|
||||
Debugging control
|
||||
=================
|
||||
|
||||
(6) the device driver for /dev/i4bctl in conjunction with the userland
|
||||
program isdndebug(8) is used to set the debug level for each of the
|
||||
layers and several other parts of the system, information how to use
|
||||
this is contained in i4b/i4b_debug.h and all parts of the kernel
|
||||
sources. It is only usable for passive cards.
|
||||
|
||||
|
||||
Layer 4
|
||||
=======
|
||||
|
||||
(7) Layer 4 is "just" an abstraction layer used to shield the differences
|
||||
of the various possible Layer 3 interfaces (passive cards based on
|
||||
Siemens chip-sets, passive cards based on other chip-sets, active cards
|
||||
from different manufacturers using manufacturer-specific interfaces)
|
||||
and to provide a uniform interface to the isdnd userland daemon, which
|
||||
is used to handle all the required actions to setup and close calls
|
||||
and to the necessary retry handling and management functionality.
|
||||
|
||||
Layer 4 communicates with the userland by using a well defined protocol
|
||||
consisting of "messages" sent to userland and which are read(2) by the
|
||||
isdnd. The isdnd in turn sends "messages" to the kernel by using the
|
||||
ioctl(2) call. This protocol and the required messages for both
|
||||
directions are documented in the i4b/i4b_ioctl.h file and are
|
||||
implemented in files i4b_i4bdrv.c and i4b_l4.c, the latter also
|
||||
containing much of the Layer 4 interface to the lower layers.
|
||||
|
||||
i4b_l4mgmt.c contains all the required routines to manage the above
|
||||
mentioned call descriptor id (cdid) in conjunction with the call
|
||||
descriptor (array) and the call reference seen from layer 3.
|
||||
|
||||
i4b_l4timer.c implements a timeout timer for Layer 4.
|
||||
|
||||
|
||||
ISDN protocol trace
|
||||
===================
|
||||
|
||||
(8) ISDN D-channel protocol trace for layers 2 and 3 is possible by using
|
||||
hooks in the ISAC handling routines.
|
||||
|
||||
In case D-channel trace is enabled, every frame is prepended with a
|
||||
header containing further data such as a time stamp and sent via the
|
||||
i4btrc driver found in driver/i4b_trace.c to one of the /dev/i4btrc<n>
|
||||
devices, where <n> corresponds to a passive controller unit number.
|
||||
|
||||
If desired, B-channel data can be made available using the same
|
||||
mechanism - hooks in the HSCX handler send data up to the i4btrc
|
||||
device.
|
||||
|
||||
The raw data is then read by the isdntrace userland program which
|
||||
decodes the layer 2 and/or layer 3 protocol and formats it to be
|
||||
easily readable by the user.
|
||||
|
||||
B-channel data is not interpreted but dumped as a hex-dump.
|
||||
|
||||
|
||||
/* EOF */
|
@ -1,342 +0,0 @@
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
isdn4bsd
|
||||
========
|
||||
|
||||
Version 1.04.00 / August 2002
|
||||
|
||||
written by:
|
||||
|
||||
Hellmuth Michaelis
|
||||
Hallstrasse 20
|
||||
D-25462 Rellingen
|
||||
|
||||
voice: +49 4101 473574
|
||||
fax: +49 4101 473575
|
||||
email: hm@freebsd.org
|
||||
|
||||
-----
|
||||
|
||||
The isdn4bsd package is:
|
||||
|
||||
Copyright (c) 1997, 2002 by Hellmuth Michaelis. All rights reserved.
|
||||
|
||||
The standard FreeBSD license applies, for details see the file
|
||||
/usr/share/examples/etc/bsd-style-copyright
|
||||
|
||||
-----
|
||||
|
||||
isdn4bsd would not be what it is without
|
||||
the help and support of many people,
|
||||
see file ThankYou !
|
||||
|
||||
-----
|
||||
|
||||
Vote with your wallet: in case you want to buy new ISDN hardware,
|
||||
buy it from manufacturers who support the development of i4b,
|
||||
for a list of supporters have a look at file ThankYou!
|
||||
|
||||
-----
|
||||
|
||||
This package is postcard-ware:
|
||||
==============================
|
||||
|
||||
The (for laywer infected places: optional) license fee for using
|
||||
isdn4bsd is sending a picture postcard of your home town.
|
||||
My address can be found at the top of this file.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Contents:
|
||||
---------
|
||||
1. Disclaimer
|
||||
2. What is isdn4bsd ?
|
||||
3. Which BSD's are supported ?
|
||||
4. Which ISDN cards are supported ?
|
||||
5. Where do i find documentation for isdn4bsd ?
|
||||
6. How do i install isdn4bsd ?
|
||||
7. Where do i get support for isdn4bsd ?
|
||||
8. Where do i get commercial support for isdn4bsd ?
|
||||
9. How can i help and/or support isdn4bsd ?
|
||||
10. How do i report bugs ?
|
||||
11. Is there a mailing-list available for isdn4bsd ?
|
||||
12. Where can i get isdn4bsd ?
|
||||
13. What is the reward for reading everything in this file ?
|
||||
|
||||
|
||||
1. Disclaimer:
|
||||
--------------
|
||||
|
||||
It may be illegal in your country to connect an isdn4bsd based machine
|
||||
using a passive ISDN card to the ISDN at your site because the protocol
|
||||
stack of isdn4bsd, which is necessary to run passive cards, has not been
|
||||
approved by the telecommunication certification authority of your country.
|
||||
If in doubt, please contact your local ISDN provider !
|
||||
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
|
||||
2. What is isdn4bsd ?
|
||||
---------------------
|
||||
|
||||
Isdn4bsd (or in short i4b) is a package for interfacing a computer running
|
||||
FreeBSD, NetBSD, OpenBSD or BSD/OS to the ISDN.
|
||||
|
||||
The only ISDN protocol currently supported by the drivers for passive cards
|
||||
is the BRI protocol specified in I.430, Q.921 and Q.931; better known as
|
||||
DSS1 or Euro-ISDN.
|
||||
|
||||
Other ISDN Protocols may be / are supported by the microcode of the supported
|
||||
active ISDN cards.
|
||||
|
||||
Isdn4bsd allows you to make IP network connections by using either IP packets
|
||||
sent in raw HDLC frames on the B channel or by using built-in synchronous PPP
|
||||
(or using userland ppp, this is experimental and only available for FreeBSD).
|
||||
|
||||
For telephony, isdn4bsd can answer incoming phone calls like an answering
|
||||
machine and now has preliminary dialout capabilities for voice and data calls.
|
||||
|
||||
|
||||
3. Which BSD's are supported ?
|
||||
------------------------------
|
||||
|
||||
FreeBSD:
|
||||
--------
|
||||
|
||||
FreeBSD-STABLE and FreeBSD-CURRENT is supported
|
||||
by this version of isdn4bsd.
|
||||
|
||||
I4b was integrated into FreeBSD in January 1999, so it is part
|
||||
of the base FreeBSD system since FreeBSD 3.x.
|
||||
|
||||
Please take the time to read the available documentation carefully.
|
||||
|
||||
|
||||
NetBSD/i386:
|
||||
------------
|
||||
The NetBSD specific support and the Diehl driver was written by
|
||||
Martin Husemann, (martin@netbsd.org). Isdn4bsd was integrated
|
||||
into the NetBSD tree in January 2001, please have a look at
|
||||
http://www.de.netbsd.org/Documentation/network/isdn/ for more
|
||||
information.
|
||||
|
||||
NetBSD/Amiga:
|
||||
-------------
|
||||
The NetBSD/Amiga specific support was done by Ignatios Souvatzis,
|
||||
(is@netbsd.org).
|
||||
|
||||
NetBSD/Atari:
|
||||
-------------
|
||||
The NetBSD/Atari specific support was done by Leo Weppelman,
|
||||
(leo@netbsd.org).
|
||||
|
||||
NetBSD/Alpha:
|
||||
-------------
|
||||
This port is still experimental!
|
||||
|
||||
The NetBSD/Alpha specific support was done by Jan-Hinrich Fessel,
|
||||
(oskar@zippo.unna.ping.de)
|
||||
|
||||
OpenBSD/i386:
|
||||
-------------
|
||||
Nikolay Sturm (sturm@physik.rwth-aachen.de) sent in patches to
|
||||
support OpenBSD/i386 2.6, they are still experimental and since
|
||||
i don't run OpenBSD i have no idea on the state of affairs.
|
||||
|
||||
BSD/OS:
|
||||
-------
|
||||
The BSD/OS 4.0 specific support was done by Bert Driehuis. The
|
||||
support is not yet complete. Please contact Bert directly in case
|
||||
of questions regarding this at driehuis@playbeing.org.
|
||||
|
||||
|
||||
4. Which ISDN cards are supported ?
|
||||
-----------------------------------
|
||||
|
||||
For a list of supported ISDN cards, please have a look at
|
||||
the file "SupportedCards".
|
||||
|
||||
Please have a look at the ReleaseNotes file !
|
||||
|
||||
|
||||
5. Where do i find documentation for isdn4bsd ?
|
||||
-----------------------------------------------
|
||||
|
||||
- in case you are upgrading from previous versions of isdn4bsd, have a
|
||||
look at the ReleaseNotes file in the top level directory for major
|
||||
changes and improvements.
|
||||
|
||||
- For installation instructions have a look at the isdn4bsd handbook
|
||||
available online at http://people.freebsd.org/~hm/i4b-home/
|
||||
|
||||
- isdn4bsd has a homepage at http://www.freebsd-support.de/i4b/ where i
|
||||
will try to maintain links to docs, updates and errata.
|
||||
|
||||
- Every program and every driver has a man page.
|
||||
Hint: try "apropos isdn4bsd", it displays all available manual pages.
|
||||
|
||||
- The file Overview contains a short technical overview of the inner
|
||||
workings of isdn4bsd.
|
||||
|
||||
- The file Resources contains URL's and ISBN's to more interesting ISDN
|
||||
related stuff.
|
||||
|
||||
|
||||
6. How do i install isdn4bsd ?
|
||||
------------------------------
|
||||
|
||||
Read the installation instructions in the isdn4bsd handbook which is
|
||||
available online at http://people.freebsd.org/~hm/i4b-home/
|
||||
|
||||
In case they are incomplete, unclear, wrong or outdated, please send me an
|
||||
update for inclusion into a future distribution!
|
||||
|
||||
|
||||
7. Where do i get support for isdn4bsd ?
|
||||
----------------------------------------
|
||||
|
||||
Please send all questions regarding the installation, configuration
|
||||
and setup of isdn4bsd to the isdn4bsd mailing list (see below).
|
||||
|
||||
Please do not send me private mail asking for help with the installation,
|
||||
configuration and setup of isdn4bsd: due to the amount of mail of this
|
||||
type i'm no longer able to reply to those mails.
|
||||
|
||||
Before sending mail asking for help, PLEASE (!) read the supplied
|
||||
documentation, the examples, the handbook, the manual pages and the FAQ !
|
||||
|
||||
I will support and help with isdn4bsd as my time permits it. Please
|
||||
keep in mind that in this case support is given on a voluntary basis
|
||||
and your questions might not be answered immediately.
|
||||
|
||||
Also, i strongly recommend subscribing to the mailing list mentioned below.
|
||||
|
||||
Due to the experience gained supporting the predecessor of isdn4bsd, let
|
||||
me please clearly state that there is no guarantee that your bug will be
|
||||
fixed within some specific amount of time, in fact there is no guarantee
|
||||
that your bug will be fixed at all; i'll do my best but there might be
|
||||
more important things going on in my life than giving free support for
|
||||
isdn4bsd.
|
||||
|
||||
Some bugs seem to occur only in certain environments and are not
|
||||
reproduceable here without access to the equipment you are connected
|
||||
to or other equipment like ISDN simulators (which i don't get access to
|
||||
for free): in this case you are the only person being able to trace down
|
||||
the bug and fix it.
|
||||
|
||||
There is a web page for i4b at http://www.freebsd-support.de/i4b/ available
|
||||
where i will put bugfixes, updates and contributions. In particular it has
|
||||
an "errata" page, where you should look in case you have problems with i4b.
|
||||
|
||||
|
||||
8. Where do i get commercial support for isdn4bsd ?
|
||||
----------------------------------------------------
|
||||
|
||||
In case you want to pay for support, maintenance, enhancements, extensions
|
||||
to isdn4bsd or whatever else you may need, it is possible to hire me for
|
||||
reasonable rates through my employer HCS GmbH; in this case please contact
|
||||
me for details at hm@hcs.de and/or look at http://www.freebsd-support.de
|
||||
|
||||
|
||||
9. How can i help and/or support isdn4bsd ?
|
||||
-------------------------------------------
|
||||
|
||||
Send a postcard! :-)
|
||||
|
||||
I'm open for constructive suggestions, bugreports, fixes, patches,
|
||||
enhancements and comments to improve isdn4bsd.
|
||||
|
||||
Please send all questions regarding the installation, configuration
|
||||
and setup of isdn4bsd to the isdn4bsd mailing list.
|
||||
|
||||
Please send flames to /dev/null and/or start writing your own ISDN package.
|
||||
|
||||
Isdn4bsd is a project on a voluntary basis and writing and supporting
|
||||
communication systems like isdn4bsd costs much money and much time.
|
||||
|
||||
Any contribution in terms of equipment, cards, documentation, cash
|
||||
and/or daytime payed work on isdn4bsd will be highly appreciated!
|
||||
|
||||
You can help by not only reporting bugs, but by sending in a patch for
|
||||
the problem together with a bugreport.
|
||||
|
||||
In case you cannot fix something yourself, please describe your problem
|
||||
as detailed as possible, include information which version of an operating
|
||||
system you are running, which ISDN board you are using, to which kind
|
||||
of ISDN equipment (like the brand of PBX) you are connected etc. etc.
|
||||
|
||||
In case you want to get a currently unsupported card supported, write a
|
||||
low level driver for it yourself and submit it. In case you can't write
|
||||
it yourself there is a good chance to get it supported if you can donate
|
||||
one of those cards and - if at all possible - docs for it.
|
||||
|
||||
|
||||
10. How do i report bugs ?
|
||||
--------------------------
|
||||
|
||||
Please submit patches ONLY as context diffs (diff -c)!
|
||||
|
||||
I vastly prefer receiving bug fixes and enhancements that are clearly
|
||||
differentiated. I don't always know what to do with large patches that
|
||||
contain many bugs and enhances folded into the same context diffs.
|
||||
|
||||
Please keep it to one fix or enhancement per patch!
|
||||
|
||||
If your change modifies the external interface of an isdn4bsd program,
|
||||
i.e. more config options, command-line switches, new programs, etc.,
|
||||
then please also include patches for the manual pages and documentation.
|
||||
|
||||
Thank you!
|
||||
|
||||
|
||||
11. Is there a mailing-list available for isdn4bsd ?
|
||||
---------------------------------------------------
|
||||
|
||||
There is a mailing list available at
|
||||
|
||||
freebsd-isdn@freebsd.org
|
||||
|
||||
The list is maintained by majordomo, so i.e. to subscribe,
|
||||
send a mail with the text
|
||||
|
||||
subscribe freebsd-isdn
|
||||
|
||||
in the message body sent to
|
||||
|
||||
majordomo@freebsd.org
|
||||
|
||||
This mailing list is NOT (!) FreeBSD specific, everyone is welcome there!
|
||||
|
||||
|
||||
12. Where can i get isdn4bsd ?
|
||||
------------------------------
|
||||
|
||||
The isdn4bsd package is part of FreeBSD since FreeBSD 3.0-RELEASE so you
|
||||
get isdn4bsd where you can get FreeBSD: http://www.freebsd.org
|
||||
|
||||
Isdn4bsd has its own homepage at
|
||||
|
||||
http://www.freebsd-support.de/i4b/
|
||||
|
||||
|
||||
|
||||
13. What is the reward for reading everything in this file ?
|
||||
------------------------------------------------------------
|
||||
|
||||
Have fun!
|
||||
hellmuth
|
@ -1,86 +0,0 @@
|
||||
|
||||
Roadmap of isdn4bsd as integrated into FreeBSD
|
||||
==============================================
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
last edit-date: [Mon Aug 12 09:42:53 2002]
|
||||
|
||||
|
||||
1. Documentation
|
||||
---------------------
|
||||
|
||||
The i4b handbook which describes the setup and configuration of
|
||||
isdn4bsd under FreeBSD in detail can be found at
|
||||
http://people.freebsd.org/~hm/i4b-home/
|
||||
|
||||
The i4b homepage is http://www.freebsd-support.de/i4b/
|
||||
|
||||
The command "apropos isdn" will list all manpages available for
|
||||
isdn4bsd. Two more manual pages of interest to syncronous PPP
|
||||
over ISDN users are the pages for sppp and ispppcontrol.
|
||||
|
||||
Under directory /usr/share/examples/isdn, you will find:
|
||||
|
||||
FAQ - isdn4bsd Frequently Asked Questions
|
||||
KERNEL - kernel config(8) file fragment to add ISDN support
|
||||
Overview - short technical overview (outdated)
|
||||
README - the original isdn4bsd README file
|
||||
ROADMAP - this file
|
||||
ReleaseNotes - list of major changes
|
||||
Resources - where to get more information about ISDN
|
||||
SupportedCards - list of supported ISDN cards
|
||||
ThankYou - contributors to isdn4bsd
|
||||
|
||||
contrib - contributed examples and code
|
||||
v21 - V.21 (300Bd) soft modem emulator
|
||||
|
||||
|
||||
2. Configuration
|
||||
---------------------
|
||||
|
||||
Configuration of the isdn4bsd package consists of:
|
||||
|
||||
- configuring a kernel suitable for running isdn4bsd. All
|
||||
kernel configuration statements for isdn4bsd can be found
|
||||
in the file /usr/src/sys/i386/conf/NOTES - another way to
|
||||
get started is taking the GENERIC configuration file and
|
||||
appending the KERNEL file mentioned above.
|
||||
|
||||
- configuring the network interfaces iprX and/or ispX; the
|
||||
former are used for "IP over raw HDLC" and the latter are
|
||||
used for "sync PPP over ISDN". To configure the ipr-
|
||||
interfaces, read the output of "man i4bipr", to configure
|
||||
the isp-interfaces, read the output of "man i4bisppp",
|
||||
"man sppp" and "man ispppcontrol" carefully.
|
||||
|
||||
- writing a configuration file /etc/isdn/isdnd.rc for the
|
||||
isdn daemon isdnd(8) which is responsible for the ISDN
|
||||
call control mechanisms such as: dial on demand, dial
|
||||
retry, dial recovery, timeout and short hold operation.
|
||||
A sample (!) file can be found in /etc/isdn. Please read
|
||||
the output of "man isdnd" and "man isdnd.rc" carefully.
|
||||
|
||||
|
||||
2. Userland programs
|
||||
-------------------------
|
||||
|
||||
The userland programs can be found in the sourcetree under
|
||||
/usr/src/usr.sbin/i4b and get installed under /usr/sbin.
|
||||
|
||||
Isdntest will not be installed by default.
|
||||
Isdnphone is experimental and may not run with your soundcard.
|
||||
|
||||
|
||||
3. Kernel part
|
||||
-------------------
|
||||
|
||||
The kernel part of isdn4bsd can be found at /usr/src/sys/i4b.
|
||||
|
||||
|
||||
4. Answering machine messages
|
||||
----------------------------------
|
||||
|
||||
Messages to be used by the answering machine can be found in
|
||||
/usr/share/isdn, you'll find the numbers 0 to 9, a beep and
|
||||
a short announcement message here.
|
@ -1,196 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
ReleaseNotes for isdn4bsd last edit-date: [Mon Aug 12 09:47:59 2002]
|
||||
================================================================================
|
||||
|
||||
release 1.04
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- add support properly displaying and logging incoming telephone numbers (MSNs)
|
||||
by looking at the "type of number" field and providing configurable hooks
|
||||
to correct the numbers accordingly. See keywords add-prefix, prefix-national
|
||||
and prefix-international in isdnd.rc(5).
|
||||
This feature was implemented by Christian Ullrich <chris@chrullrich.de>
|
||||
|
||||
release 1.03
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- add support for Data over Voice (DoV) outgoing calls, see entry keywork
|
||||
bcap in isdnd.rc(5).
|
||||
based on patches received from Guy Ellis (guy@traverse.com.au),
|
||||
Chris Collins (xfire@xware.cx) and Phillip Musumeci (phillip@cs.jcu.edu.au).
|
||||
|
||||
release 1.02
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- add support for ISDN subaddressing written by Steve Looman
|
||||
|
||||
- made ELSA PCC16 attach correctly (again ?)
|
||||
|
||||
- fixed bug in CAPI support (patch from Juha-Matti Liukkonen <jml@cubical.fi>)
|
||||
|
||||
- add support written by Steve Looman for the Compaq Microcom 610 ISDN card
|
||||
(also known as Compaq series PSB2222I).
|
||||
|
||||
release 1.01
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- add experimental support to send messages via the keypad facility to the
|
||||
PBX or exchange office. The messages - if supported - may be used to
|
||||
configure and maintain optional services offered by the PBX or exchange
|
||||
office such as call deflection mailbox services. Please consult the
|
||||
nice documentation for the exchange you are connected to.
|
||||
|
||||
Currently keypad messages can be send by using the isdnphone utilities
|
||||
"-k" switch on the command line. Don't forget to properly quote the
|
||||
message in case it contains shell meta characters!
|
||||
|
||||
- add keyword "maxconnecttime" to isdnd to prevent a potential telco bill
|
||||
desaster. Caution: use only in conjunction with budgets to limit the number
|
||||
of dials per timeunit otherwise you will get endless redials and reconnects!
|
||||
|
||||
release 1.00
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- CAPI interface driver and AVM B1/T1 driver added. Both were written and
|
||||
contributed by Juha-Matti Liukkonen <jml@cubical.fi> of Cubical Solutions
|
||||
Ltd, Finnland. To support this, two new keywords were added to isdnd.rc:
|
||||
"firmware" to be used in the controller section and "clone" to be used
|
||||
in the entry section.
|
||||
|
||||
|
||||
beta release 0.96
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- it is now possible to mark an entry as valid for a specified day of week
|
||||
and a specific time range only to take advantage of some new tariff models.
|
||||
Please see the new keywords "valid" and "holidayfile" in isdnd.rc(5).
|
||||
This feature is considered experimental, use at your own risk!
|
||||
|
||||
- keywords budget-callbacksfile and budget-calloutsfile added to isdnd's
|
||||
entry section to write statistics information to a file
|
||||
|
||||
- a driver for the Dynalink IS64PH is now available for FreeBSD 4.x and up
|
||||
|
||||
|
||||
beta release 0.95
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- ITK ix1 micro ISA non-PnP card should now work for FreeBSD >= 4.0
|
||||
|
||||
- setting "dialretries = -1" in isdnd.rc gives an unlimited number
|
||||
of dial retries for that entry.
|
||||
|
||||
- the ELSA PCFpro ISDN card should now work for FreeBSD >= 4.0
|
||||
|
||||
- added new keywords (patch from Stefan Esser) to configure isppp
|
||||
from within isdnd.rc. Documented in isdnd.rc(5), grep for "ppp-"
|
||||
|
||||
- isppp VJ compression negotiation now run-time configurable using
|
||||
keywords "enable-vj" / "disable-vj" with ispppcontrol
|
||||
|
||||
- added new keywords to specify "budgets" for outbound calls in isdnd
|
||||
to limit the number of possible calls within a given time period.
|
||||
Runtime budget information and statistics are available in the isdnd
|
||||
fullscreen menu display.
|
||||
|
||||
- added new "ifpnp" AVM Fritz!Card PnP driver for FreeBSD >= 4.0
|
||||
contributed by Udo Schweigert.
|
||||
|
||||
- added experimental hardware driver from Hans Petter Selasky for the
|
||||
Teles 16.3c card based on the Cologne Chip Designs HFC-S 2BDS0 chip
|
||||
called "ihfc".
|
||||
notes for Teles 16.3c PnP and AcerISDN P10: For optimal performance:
|
||||
-> please connect the card to the S0-bus before booting the computer.
|
||||
-> do not change the cable you're using when first booted.
|
||||
Other notes if the card does not work at all:
|
||||
-> disconnect other isdn equipment on your S0-bus and
|
||||
reboot your computer.
|
||||
-> try changing the CLKDEL/stdel value for your card:
|
||||
../i4b/layer1-nb/ihfc/i4b_ihfc_pnp.c or
|
||||
../i4b/layer1/ihfc/i4b_ihfc_pnp.c
|
||||
around line 100. The value can be in the range 0x0-0xf.
|
||||
|
||||
- the FreeBSD >= 4.0 AVM Fritz PCI driver was moved to a separate layer 1
|
||||
driver called "ifpi".
|
||||
|
||||
- the sppp subsystem was integrated into the i4bisppp/isp driver. There
|
||||
is no need to include something like "option sppp" into your kernel
|
||||
config file anymore. The spppcontrol utility is no longer usable to
|
||||
configure the i4bisppp/isp driver, instead use the new ispppcontrol
|
||||
utility!
|
||||
|
||||
- FreeBSD >= 4.0: "iwic" driver for Winbond PCI ISDN chipset (W6692)
|
||||
added, used i.e. in ASUSCOM P-IN100-ST-D and Dynalink IS64PPH.
|
||||
|
||||
- added more protocol decoding to isdntrace
|
||||
|
||||
- isntrace now adds a time/datestamp to the trace filename, signal USR1
|
||||
behaviour has changed, see manpage.
|
||||
|
||||
- ispppcontrol now has a new option of setting the LCP timeout value
|
||||
|
||||
- add directory mpd which contains docs and files on howto interface
|
||||
i4b by using the netgraph subsystem to the multilink ppp daemon, mpd.
|
||||
|
||||
- add i4bing, a raw HDLC B-channel interface to the NetGraph subsystem
|
||||
|
||||
- add a V.21 modem emulator written by Poul-Henning Kamp
|
||||
|
||||
- a new system configuration keyword "extcallattr" was added to isdnd
|
||||
which allows to configure the display of the extended caller
|
||||
attributes "screening indicator" and "presentation indicator" in
|
||||
isdnd's log file.
|
||||
|
||||
|
||||
beta release 0.90
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- the following cards are no longer supported for FreeBSD 4.0 and up:
|
||||
|
||||
AVM Fritz!Card PnP
|
||||
AVM Fritz!Card PCMCIA
|
||||
Dynalink IS64PH
|
||||
ITK ix1 Micro
|
||||
USRobotics Sportster ISDN TA intern
|
||||
|
||||
The AVM cards, the USR card and perhaps one of the ITK cards are likely
|
||||
to be resurrected in the future, we just ran out of time, docs and/or
|
||||
into programming problems for this release.
|
||||
|
||||
- the rbch driver was enhanced to support the generation of accounting
|
||||
information in HDLC mode. The bytecount and bps fields in isdnd
|
||||
fullscreen mode now show meaningful information.
|
||||
|
||||
- most of the layer1 drivers have been rewritten to support the new bus
|
||||
and driver architecture for FreeBSD 4.0.
|
||||
|
||||
- the ipr interfaces now support logging of some of the first ip packets
|
||||
of a new connection and displaying them in the isdnd logs. To enable
|
||||
this, add a line like: "options IPR_LOG=32" to your kernel config
|
||||
file. The parameter to IPR_LOG specifies the number of packets to be
|
||||
logged.
|
||||
|
||||
- support for FreeBSD 2.x and FreeBSD 3.0-RELEASE has been removed.
|
||||
The last beta release which supports this OS versions is i4b-0.83.
|
||||
|
||||
- isdnd now recognizes two new keywords in the system section, mailto
|
||||
and mailer. mailer is used to configure a mail program and is typically
|
||||
set to /usr/bin/mail and mailto is set to the address of the isdnd
|
||||
administrator. If both are set and a fatal error inside isdnd
|
||||
happenes, mail is sent to the address in mailto with the error
|
||||
message before isdnd terminates.
|
||||
|
||||
- isdnd.rc now has an optional new "controller" section. This will be
|
||||
used to specify different D-channel protocols in the future. It looks
|
||||
like this:
|
||||
|
||||
controller
|
||||
protocol = dss1 # dss1 (default) or d64s (leased line)
|
||||
|
||||
Please note that leased line support (d64s) is NOT yet functional!
|
||||
|
||||
- isdnmonitor is now able to be used like isdnd in fullscreen mode from
|
||||
a remote machine.
|
||||
|
||||
EOF
|
@ -1,82 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
|
||||
Bugfixes, improvements and patches for i4b
|
||||
==========================================
|
||||
|
||||
http://www.freebsd-support.de/i4b/ (in the "errata" section)
|
||||
|
||||
|
||||
Standards:
|
||||
==========
|
||||
|
||||
ETSI
|
||||
----
|
||||
http://www.etsi.org/
|
||||
|
||||
ITU
|
||||
---
|
||||
http://www.itu.ch/
|
||||
|
||||
ftp://ftp.leo.org/pub/comp/doc/standards/itu/
|
||||
|
||||
CAPI
|
||||
----
|
||||
http://www.capi.org/
|
||||
|
||||
|
||||
ISDN Chips
|
||||
==========
|
||||
|
||||
Infineon (formerly Siemens)
|
||||
---------------------------
|
||||
http://www.infineon.com/
|
||||
|
||||
Cologne Chip Design
|
||||
-------------------
|
||||
http://www.colognechip.de/
|
||||
|
||||
Winbond
|
||||
-------
|
||||
http://www.winbond.com/
|
||||
|
||||
|
||||
SunShine Project - Implementation of the ISDN recommendations Q.921 & Q.931
|
||||
===========================================================================
|
||||
|
||||
http://www.tcm.hut.fi/~bos/ISDN/sunshine/SunShine.html
|
||||
|
||||
Books:
|
||||
======
|
||||
|
||||
"ISDN: concepts, facilities and services",
|
||||
Gary C. Kessler, McGraw-Hill 1993,
|
||||
ISBN 0-07-034247-4
|
||||
|
||||
"Integrated services digital networks: architectures, protocols, standards",
|
||||
Herman J. Helgert, Addison-Wesley 1991,
|
||||
ISBN 0-201-52501-1
|
||||
|
||||
"ISDN and Broadband ISDN with Frame Relay and ATM",
|
||||
William Stallings, Prentice Hall 1995,
|
||||
ISBN 0-02-415513-6
|
||||
|
||||
"Technik der Netze",
|
||||
Gerd Siegmund, R. v. Decker's Verlag 1996,
|
||||
ISBN 3-7685-2495-7
|
||||
|
||||
"Euro-ISDN fuer Anwender und Techniker"
|
||||
Reinhard Heermeyer und Maria Spath, Festo DIDACTIC 1996,
|
||||
ISBN 3-8127-4334-5
|
||||
|
||||
"ISDN implementors guide: standards, protocols & services",
|
||||
Charles K. Summers, McGraw-Hill 1995,
|
||||
ISBN 0-07-069416-8
|
||||
|
||||
"PPP Design and Debugging",
|
||||
James Carlson, Addison-Wesley 1998,
|
||||
ISBN 0-0201-18539-3
|
||||
|
||||
"ISDN - Die Technik",
|
||||
Andreas Kanbach, Andreas Koerber, Huethig Verlag 1999,
|
||||
ISBN 3-7785-2288-4
|
@ -1,196 +0,0 @@
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
ISDN cards supported by isdn4bsd in FreeBSD
|
||||
===========================================
|
||||
|
||||
last edit-date: [Sun Oct 21 11:09:24 2001]
|
||||
|
||||
$FreeBSD$
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
YES - card is generally supported for this OS
|
||||
NO - card is NOT supported for this OS
|
||||
EXP - card is in an experimental status for this OS
|
||||
DEV - card driver is under development
|
||||
??? - card status is unknown for this OS
|
||||
|
||||
|
||||
1. Passive non-PnP ISA bus ISDN cards
|
||||
=====================================
|
||||
|
||||
Type FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
AVM A1 YES
|
||||
AVM Fritz!CardClassic YES
|
||||
Creatix ISDN-S0/8 YES (= Teles S0/8 )
|
||||
Creatix ISDN-S0/16 YES ( = Teles S0/16 )
|
||||
Dr.Neuhaus Niccy 1008 YES ( = Teles S0/8 )
|
||||
Dr.Neuhaus Niccy 1016 YES ( = Teles S0/16 )
|
||||
ELSA PCC-16 YES
|
||||
ELSA PCFpro YES
|
||||
ITK ix1 micro YES (Note 13)
|
||||
Stollmann Tina-pp YES
|
||||
Teles S0/8 YES
|
||||
Teles S0/16 YES
|
||||
Teles S0/16.3 YES
|
||||
3Com/USR SportsterInt YES ( = Stollmann Tina-pp )
|
||||
TELEINT ISDN SPEED EXP (Note 4)
|
||||
|
||||
|
||||
2. Passive PnP ISA bus ISDN cards
|
||||
=================================
|
||||
|
||||
Type FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
AVM Fritz!Card PnP YES (Note 1)
|
||||
Asuscom I-IN100-ST-DV ??? ( = Dynalink IS64PH )
|
||||
Asuscom ISDNlink 128K YES (Note 16)
|
||||
Creatix ISDN-S0 PnP YES (Note 2)
|
||||
Dr.Neuhaus Niccy GO@ YES (Note 2)
|
||||
Dynalink IS64PH YES (Note 11)
|
||||
ELSA 1000pro ISA YES (Note 3)
|
||||
ITK ix1 micro V.3 YES (Note 13)
|
||||
Sagem Cybermod YES (= Niccy GO@ )
|
||||
Sedlbauer Win Speed YES (Note 9)
|
||||
Siemens I-Surf 2.0 YES (Note 15)
|
||||
Teles S0 PnP YES (Note 5)
|
||||
Teles 16.3c EXP (Note 4)
|
||||
AcerISDN P10 EXP (Note 4)
|
||||
Compaq Microcom 610 YES ( = Compaq series PSB2222I ?)
|
||||
|
||||
|
||||
3. Passive PCI bus ISDN cards
|
||||
=============================
|
||||
|
||||
Type FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
ASUSCOM P-IN100-ST-D YES
|
||||
AVM Fritz!Card PCI YES (Note 14)
|
||||
AVM Fritz!Card PCI V2 YES (Note 14)
|
||||
Dynalink IS64PPH YES
|
||||
Dynalink IS64PPH+ YES
|
||||
ELSA 1000pro PCI YES ( = ELSA Microlink PCI )
|
||||
Teles PCI-TJ YES
|
||||
NETJet-S YES
|
||||
Winbond W6692-based YES
|
||||
|
||||
|
||||
4. Passive PCMCIA bus ISDN cards
|
||||
================================
|
||||
|
||||
Type FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
AVM Fritz!Card PCMCIA NO (Note 10)
|
||||
ELSA ISDN/MC NO
|
||||
ELSA MC/ALL NO
|
||||
|
||||
|
||||
5. Passive Zorro2 ISDN cards for the Amiga
|
||||
==========================================
|
||||
|
||||
Type FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
ISDN Blaster NO (Note 12, Amiga/NetBSD)
|
||||
ISDN Master NO (Note 12, Amiga/NetBSD)
|
||||
ISDN Master II NO (Note 12, Amiga/NetBSD)
|
||||
|
||||
|
||||
6. Active ISDN cards
|
||||
====================
|
||||
|
||||
Type (active, ISA) FreeBSD Notes
|
||||
--------------------- ------- -----------------------
|
||||
AVM B1 YES (Note 17)
|
||||
AVM T1 YES (Note 18)
|
||||
DiehlS,SX,SCOM,QUATRO NO (Note 7)
|
||||
Miro P1 DEV ( = Tina-dd )
|
||||
Stollmann Tina-dd DEV (Note 8)
|
||||
|
||||
|
||||
7. Notes
|
||||
========
|
||||
|
||||
|
||||
Note 1: The driver for the Fritz!Card PnP was developed by Udo Schweigert
|
||||
(ust@cert.siemens.de) who develops under FreeBSD only.
|
||||
Please contact Udo in case of trouble.
|
||||
|
||||
Note 2: The NetBSD version has not been verified to work yet.
|
||||
|
||||
Note 3: Due to its design, this card produces 128 IRQs/sec. This can be
|
||||
reportedly stopped by disconnecting pin 12 of the 7474 and wiring
|
||||
it to pin 15 of the 74175. Be careful! This procedure has not been
|
||||
verified and doing this will immediately terminate your warranty !!
|
||||
The card will not function anymore with drivers for other OSes and
|
||||
you may not get any further support from the manufacturer! YMMV!
|
||||
|
||||
Note 4: This driver was developed by Hans Petter Selasky, hselasky@c2i.net
|
||||
The code is still somewhat experimental.
|
||||
|
||||
Note 5: The card has only been verified to work under FreeBSD 4.0 and up.
|
||||
|
||||
Note 6: This driver is currently under development by Gary Jennejohn who
|
||||
develops under FreeBSD only.
|
||||
|
||||
Note 7: This driver is currently under construction by Martin Husemann who
|
||||
develops under NetBSD only.
|
||||
|
||||
Note 8: This driver is currently under development by Hellmuth Michaelis who
|
||||
develops under FreeBSD only.
|
||||
|
||||
Note 9: This driver was developed by German Tischler, tanis@gaspode.franken.de.
|
||||
Please contact him in case of trouble. The "Teledat 100" sold by the
|
||||
german Telekom is identical with this card.
|
||||
|
||||
Note 10: This driver is developed by Matthias Apitz, matthias.apitz@sisis.de.
|
||||
Please contact him in case of trouble. Please read the file
|
||||
misc/README.PCCARD in the i4b distribution for additional installation
|
||||
instructions.
|
||||
|
||||
Note 11: This driver was developed by Martijn Plak (martijn@be3.com)
|
||||
This driver might also work for Asuscom cards. (Andrew Gordon
|
||||
wrote: Just to let you know that I've now tried the i4b "dynalink"
|
||||
driver with the ASUSCOM I-IN100-ST-DV card, and it appears to work
|
||||
fine.)
|
||||
|
||||
Note: This driver is now unsupported as Martijn is no longer able
|
||||
to maintain this driver.
|
||||
|
||||
The BSD/OS support for this card was written by Bert Driehuis.
|
||||
|
||||
Ported to FreeBSD newbus by Kazunori Fujiwara <fujiwara@rcac.tdi.co.jp>
|
||||
|
||||
Note 12: This driver was developed by Ignatios Souvatzis (is@netbsd.org)
|
||||
Please contact him in case of trouble.
|
||||
This driver is supposed to work on the ISDN Master versions and
|
||||
lookalikes, like the ISDN Blaster, and on the ISDN Master II.
|
||||
Note that the ISDN Master II does not AutoConfig(tm)ure in the
|
||||
DraCo Zorro bus and thus only works in real Amigas. This is no
|
||||
i4b problem, but general.
|
||||
|
||||
Note 13: This driver was developed by Martin Husemann, please contact him
|
||||
in case of trouble. The FreeBSD PnP support for version 3 of the
|
||||
card was done by Philippe Guezou <Philippe.Guezou@wanadoo.fr>.
|
||||
|
||||
Note 14: This driver was developed by Gary Jennejohn who develops under
|
||||
FreeBSD only. In case of problems with this driver, please contact
|
||||
him directly at garyj@jennejohn.org.
|
||||
|
||||
Note 15: The driver for the Siemens I-Surf 2.0 was developed by Udo Schweigert
|
||||
(ust@cert.siemens.de) who develops under FreeBSD only.
|
||||
Please contact Udo in case of trouble.
|
||||
|
||||
Note 16: The driver for the Asuscom ISDNlink 128K PnP was developed by
|
||||
Ari Suutari (ari@suutari.iki.fi). Please contact Ari directly
|
||||
in case of trouble with this driver.
|
||||
|
||||
Note 17: The driver was written by Juha-Matti Liukkonen <jml@cubical.fi>,
|
||||
Cubical Solutions Ltd. I have tested it with an AVM B1 PCI card
|
||||
V.4.0 and an AVM B1 ISA card V.2.0.
|
||||
|
||||
Note 18: The driver was written by Juha-Matti Liukkonen <jml@cubical.fi>,
|
||||
Cubical Solutions Ltd. I have no access to any PRI equipment at
|
||||
all so i have not tested the driver, feedback welcome!
|
||||
|
||||
EOF
|
@ -1,289 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
Thanks a lot for postcards from:
|
||||
--------------------------------
|
||||
|
||||
Aachen
|
||||
Arnhem
|
||||
Arolsen
|
||||
Bad Rothenfelde
|
||||
Berlin
|
||||
Birenbach
|
||||
Bochum
|
||||
Bohnsdorf
|
||||
Bonn
|
||||
Bornheim
|
||||
Braunschweig
|
||||
Darmstadt
|
||||
Delft
|
||||
Dresden
|
||||
Eggstaett am Hartsee
|
||||
Flekkefjord
|
||||
Freiburg
|
||||
Habichtswald
|
||||
Hamburg (2)
|
||||
Ihlow
|
||||
Jena
|
||||
Kassel
|
||||
Koengen
|
||||
Kymgbuk, Korea
|
||||
Landsberg
|
||||
Leiden
|
||||
Magdeburg
|
||||
Mauerbach
|
||||
Mersch
|
||||
Middelburg
|
||||
Mosi-Oa-Tunya
|
||||
Muenchen (4)
|
||||
Netherlands (Leo)
|
||||
Netherlands (Peter)
|
||||
Rio de Janeiro
|
||||
Saint-Gilles-Croix-de-Vie
|
||||
Scheessel
|
||||
Siena, Italy
|
||||
St. Jacob
|
||||
Stuttgart
|
||||
Travemuende
|
||||
Vedskoelle, Danmark
|
||||
Windach
|
||||
Wuerzburg
|
||||
Zuberec
|
||||
|
||||
|
||||
I would like to thank the following people and organisations:
|
||||
-------------------------------------------------------------
|
||||
|
||||
Gary Jennejohn for his constant kind support while writing isdn4bsd
|
||||
during that year. Gary always runs the latest and
|
||||
greatest FreeBSD-current and makes isdn4bsd run
|
||||
there, if his root fs is intact, of course! :-).
|
||||
In February 1999, Gary contributed the AVM Fritz!
|
||||
Card PCI driver to isdn4bsd.
|
||||
|
||||
Martin Husemann is a major contributor to isdn4bsd. He wrote almost
|
||||
all of the NetBSD support for isdn4bsd, the monitor
|
||||
network code and the Diehl driver. He constantly
|
||||
tries put strange macros into i4b ... ;-)
|
||||
|
||||
Serge Vakulenko for writing the sppp driver and making it freely
|
||||
available.
|
||||
|
||||
Joerg Wunsch for adapting the synchronous PPP stuff to i4b.
|
||||
Gary finished this and integrated the PPP stuff into
|
||||
current isdn4bsd.
|
||||
|
||||
Wolfgang Helbig for many patches, polishing isdn4bsd and layer 1
|
||||
debugging.
|
||||
|
||||
Thomas Halenbeck and
|
||||
Stephan Forth of FORTH EDV in Mainz donated two AVM A1 card and
|
||||
one AVM B1 card to support the development and
|
||||
maintenance of drivers for this cards. Thomas donated
|
||||
three more AVM A1 cards in the meantime - Thank you!
|
||||
|
||||
Arne Helme for the initial work on how to support IOM-2 based
|
||||
boards.
|
||||
|
||||
Andrew Gordon for disassembling an old AVM A1 and documenting it.
|
||||
Andrew added VJ header compression to the ipr interface
|
||||
and is a constant source of various hints and
|
||||
suggestions :-)
|
||||
Andrew sent in a Teles S0/16 PnP for FreeBSD newbus
|
||||
conversion, thanks a lot!
|
||||
|
||||
Juergen Krause and someone who does not want to be mentioned anymore
|
||||
for the work on the first ISDN package for FreeBSD.
|
||||
|
||||
Michael Elbel for supporting the development with ftp/www/mail
|
||||
resources.
|
||||
|
||||
Leo Weppelman for the port to the NetBSD/Atari platform.
|
||||
|
||||
Bas Oude Nijeweme for the port to OpenBSD/i386 2.2.
|
||||
|
||||
German Tischler for the driver for the Sedlbauer WinSpeed card,
|
||||
for the PnP support for FreeBSD and for constant
|
||||
testing and contributions. German did the initial
|
||||
mostly complete conversion of the layer1 code
|
||||
to the FreeBSD 4.0 new-bus driver architecture!
|
||||
|
||||
Matthias Apitz for the driver for the AVM PCMCIA Fritz!Card.
|
||||
|
||||
Martijn Plak for the Dynalink driver.
|
||||
|
||||
Ignatios Souvatzis for the NetBSD/Amiga port and associated driver(s).
|
||||
|
||||
Christoph Weber-Fahr donated an AVM B1 card to support development of a
|
||||
driver. Thanks a lot, Christoph!
|
||||
|
||||
Eivind Eklund for the PnP support for FreeBSD, for __FreeBSD_version
|
||||
and more.
|
||||
|
||||
Karsten Keil author of the hisax isdn4linux driver for some details
|
||||
about the one or the other piece of hardware.
|
||||
|
||||
Bert Driehuis for the support of the BSDI BSD/OS 4.0 operating system
|
||||
|
||||
Barry Scott for fixed charging units shorthold mode support (as
|
||||
used in the UK by British Telecom).
|
||||
|
||||
Poul-Henning Kamp for the work on DTMF decoding and many hints, fixes
|
||||
and suggestions.
|
||||
|
||||
Stefan Bethke for the work on the audio format conversion stuff in
|
||||
the telephony paths.
|
||||
|
||||
Udo Schweigert for PCMCIA support and work on FreeBSD 2.2x
|
||||
compatibility. Udo contributed the AVM Fritz PnP
|
||||
and the Siemens I-Surf V2.0 driver.
|
||||
|
||||
Ernst Winter donated a Fritz!Card PCI which was used to develop
|
||||
and test the driver.
|
||||
|
||||
Harald Frank long-term loan of an ISDN Blaster board.
|
||||
|
||||
Klaus Burkert for a loan of an ISDN Master II.
|
||||
|
||||
Ari Suutari for a driver for the Asuscom ISDNlink ISA PnP card
|
||||
|
||||
Brian Somers for working on making userland ppp work with i4b
|
||||
|
||||
Rune Knapstad for good help with the port to OpenBSD/i386 2.5
|
||||
|
||||
Uwe Laverenz for the donation of an ELSA PCC-16 card
|
||||
|
||||
Luke Roberts for the long time loan a Dynalink ISDN intern PCI card
|
||||
|
||||
Marc van Kempen for the donation of a Dynalink ISDN intern PCI card
|
||||
|
||||
Christoph Kukulies for the donation of an ITK ix1 card
|
||||
|
||||
Nikolay Sturm sent in patches to get OpenBSD 2.6 supported.
|
||||
|
||||
Dave Boyce wrote a driver for the Winbond W6692 PCI ISDN
|
||||
chip which eventually lead to a layer 1 reorg.
|
||||
|
||||
Hans Petter Selasky for his contribution of a driver for the
|
||||
Teles 16.3c card (and the complete ihfc driver).
|
||||
|
||||
Sergio de Souza Prallon for the contribution of the itjc driver which
|
||||
supports the NETJet-S and the Teles PCI-TJ cards
|
||||
|
||||
Steve Looman for the driver for a Compaq Microcom 610 ISDN card
|
||||
and for the subaddressing implementation
|
||||
|
||||
Christian Ullrich for the "type of number" patchset
|
||||
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
Liebscher & Partner Martin Welk and Holm Tiffe sent in a motivating
|
||||
BSD daemon plushie :-)
|
||||
|
||||
Abaid Andreas Mutschlechner of Abaid, Alte Strasse 2, in
|
||||
I-39017 Schenna (BZ) donated money to support i4b
|
||||
development, which was used to upgrade my main test
|
||||
machine for isdn4bsd from an 486 to a Pentium II.
|
||||
Thank you very, very much, Andreas !
|
||||
|
||||
3Com USRobotics Christian Weissgerber of 3Com USRobotics in Munich
|
||||
donated a passive "Sportster ISDN TA intern" ISDN
|
||||
card and complete hardware documentation for the card.
|
||||
|
||||
Florian Uhl of 3Com in Munich donated two MC68SC302
|
||||
"3Com U.S.Robotics ISDN Card PnP internal" cards and
|
||||
documentation to support writing a driver for this
|
||||
card.
|
||||
|
||||
Dr. Neuhaus Klaus Muehle of Dr. Neuhaus Telekommunikation in
|
||||
Hamburg sent documentation for the NICCY GO@ and
|
||||
NICCY EASY@ ISDN cards to support development of
|
||||
a driver for this cards.
|
||||
|
||||
Stollmann Many thanks to Christian Luehrs and Manfred Jung
|
||||
for giving out docs and sources to support the
|
||||
driver development for the tina-dd active card.
|
||||
|
||||
ELSA Axel Riemer of ELSA AG in Aachen donated several
|
||||
ISA, PCI and PC-Card ISDN boards to three developers
|
||||
and provided support and documentation to help with
|
||||
adding support to i4b for this hardware. Werner Fehr
|
||||
of ELSA answered our technical questions and gave
|
||||
valuable hints. Thanks also to Andreas Klemm for
|
||||
making the contact ;-)
|
||||
|
||||
Cologne Chip Design Harald Schaefer of Cologne Chip Design send in a
|
||||
HFC-S-PCI developer card, complete docs and
|
||||
layer 1 example code to support the development
|
||||
of a driver for that chipset! Thanks a lot!
|
||||
|
||||
ASUSCOM Network Inc. Mr. Ben Chen of Asuscom sent a Winbond based PCI
|
||||
card and a Cologne Chip Design based PCI card to
|
||||
support the development of device drivers.
|
||||
|
||||
Cubical Solutions Ltd. Juha-Matti Liukkonen <jml@cubical.fi> of Cubical
|
||||
contributed the CAPI layer and the AVM B1/T1 device
|
||||
driver to isdn4bsd.
|
||||
|
||||
AVM GmbH Mr. A. Ziessnitz of AVM donated an AVM B1 PCI cards
|
||||
to support development and maintenance of a driver
|
||||
for this card.
|
||||
|
||||
Intelligent Network Technology Ltd.
|
||||
David Hedley provided an AVM Fritz!Card PCI Version 2
|
||||
controller to support development of a driver.
|
||||
|
||||
|
||||
|
||||
The following people contributed in one or the other way to isdn4bsd:
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Alexander Langer
|
||||
Andreas Haakh
|
||||
Andreas Lohrum
|
||||
Arve Ronning
|
||||
Aurelien Bargy
|
||||
Bart van Leeuwen
|
||||
Caspar Schlegel
|
||||
Chris Collins
|
||||
Christian Wolf
|
||||
Christoph Kukulies
|
||||
Daniel Rock
|
||||
David Wetzel
|
||||
Dirk Meyer
|
||||
Doobee R. Tzeck
|
||||
Dominik Brettnacher
|
||||
Gabor Dolla
|
||||
Guy Ellis
|
||||
H. Eckert
|
||||
Hans Huebner
|
||||
Harald Hanche-Olsen
|
||||
Harold Gutch
|
||||
Heiko Schaefer
|
||||
Jan Sparud
|
||||
Joachim Kuebart
|
||||
Joakim Hernberg
|
||||
Juha-Matti Liukkonen
|
||||
Julian H. Stacey
|
||||
Kazunori Fujiwara
|
||||
Lars Koeller
|
||||
Malte Lance
|
||||
Marcel Moolenaar
|
||||
Martin Recktenwald
|
||||
Meike Aulbach
|
||||
Michael Hohmuth
|
||||
Michael Ranner
|
||||
Michael Reifenberg
|
||||
Nils Ulltveit-Moe
|
||||
Paul Herman
|
||||
Paul Sijben
|
||||
Phillip Musumeci
|
||||
Philippe Guezou
|
||||
Rob Pickering
|
||||
Stefan Esser
|
||||
Stefan Herrmann
|
||||
Steven Looman
|
||||
Wolfgang Solfrank
|
||||
|
||||
(In case i forgot someone, please tell me!)
|
@ -1,42 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
This directory contains various unsupported contributions to isdn4bsd
|
||||
---------------------------------------------------------------------
|
||||
|
||||
anleitung.ppp Anleitung für syncPPP Internet-Zugang und
|
||||
Anrufbeantworter / FreeBSD 2.2.x / Teles.S0/16.3-Karte
|
||||
(stefan@asterix.webaffairs.net)
|
||||
|
||||
answer.c answering machine in C by David Wetzel
|
||||
(dave@turbocat.de)
|
||||
|
||||
answer.sh a much better replacement for answer, tell and record
|
||||
from Stefan Esser (se@freebsd.org)
|
||||
|
||||
convert.sh convert recorded message to WAV format, optionally
|
||||
send it via mail. from Stefan Herrmann
|
||||
(stefan@asterix.webaffairs.net)
|
||||
|
||||
hplay.c isdn4bsd telephony output driver for the "rsynth"
|
||||
package to play synthetic speech to a telephone
|
||||
connection
|
||||
|
||||
i4b-ppp-newbie.txt setup PPP for isdn4bsd for newbies text from
|
||||
Dominik Brettnacher <domi@saargate.de> (german)
|
||||
|
||||
isdnctl This script can control the state of your ISDN line.
|
||||
It counts how many scripts/users currently use the
|
||||
ISDN line and uses "ifconfig down" if noone uses it
|
||||
any more. Alexander Langer <alex@big.endian.de>
|
||||
|
||||
isdnd_acct the barebones isdnd accounting script
|
||||
|
||||
isdnd_acct.pl enhanced accounting from Joachim Kuebart
|
||||
(joki@kuebart.stuttgart.netsurf.de)
|
||||
|
||||
isdntelmux.c a "record while play" program contributed by
|
||||
Michael Reifenberger (Michael@Reifenberger.com)
|
||||
|
||||
mrtg-isp0.sh shell script and mrtg config entry to display
|
||||
callout and callback statistics with mrtg
|
||||
(www.mrtg.org) using the budget file statistics
|
@ -1,142 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
i4b Anleitung für syncPPP Internet-Zugang und Anrufbeantworter
|
||||
unter FreeBSD 2.2.x mit Teles.S0/16.3-Karte
|
||||
===============================================================
|
||||
|
||||
by Stefan Herrmann <stefan@asterix.webaffairs.net>
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
1) Neues Verzeichnis "/usr/src/i4b" anlegen.
|
||||
|
||||
2) Ins Verzeichnis "/usr/src/i4b" wechseln und Sourcen entpacken.
|
||||
|
||||
3) Ins Verzeichnis "FreeBSD" wechseln und den Befehl "sh install.sh ausführen:
|
||||
z.B. "root@asterix[0]/usr/src/i4b/FreeBSD # sh install.sh"
|
||||
|
||||
Wenn auf eine neuere Version von i4b gewechselt wird, zuerst
|
||||
"sh uninstall.sh" ausführen, dann erst "sh install.sh"
|
||||
|
||||
4) Dann ins Verzeichnis "/usr/src/i4b" (zurück-)wechseln und die Befehle
|
||||
"make depend", "make" und "make install" ausführen.
|
||||
|
||||
5) Nun muß der kernel mit neuen Optionen versehen werden. Dazu wird an die
|
||||
Kernel-Konfigurationsdatei im Verzeichnis "/sys/i386/conf" folgendes ans
|
||||
Ende hinzugefügt:
|
||||
|
||||
# i4b passive ISDN cards support (isic - I4b Siemens Isdn Chipset driver)
|
||||
# note that the ``options'' and ``device'' lines must BOTH be defined !
|
||||
|
||||
# Teles S0/16.3
|
||||
options "TEL_S0_16_3"
|
||||
device isic0 at isa? port 0xd80 net irq 5 flags 0x04 vector isicintr
|
||||
|
||||
# i4b passive cards D channel handling
|
||||
# Q.921
|
||||
pseudo-device "i4bq921"
|
||||
# Q.931
|
||||
pseudo-device "i4bq931"
|
||||
|
||||
# common passive and active layer 4
|
||||
# layer 4
|
||||
pseudo-device "i4b"
|
||||
|
||||
# userland driver to do ISDN tracing (for passive cards oly)
|
||||
pseudo-device "i4btrc" 4
|
||||
# userland driver to control the whole thing
|
||||
pseudo-device "i4bctl"
|
||||
# userland driver for access to raw B channel
|
||||
pseudo-device "i4brbch" 4
|
||||
# userland driver for telephony
|
||||
pseudo-device "i4btel" 2
|
||||
# network driver for IP over raw HDLC ISDN
|
||||
pseudo-device "i4bipr" 4
|
||||
# enable VJ header compression detection for ipr i/f
|
||||
options IPR_VJ
|
||||
# network driver for sync PPP over ISDN
|
||||
pseudo-device "i4bisppp" 4
|
||||
pseudo-device sppp 4
|
||||
|
||||
6) Danach wird der kernel durch Eingabe der Befehle "make depend", "make" und
|
||||
"make install" im Verzeichniss "/usr/src/sys/compile/<CONFIG>" neu
|
||||
übersetzt und installiert.
|
||||
|
||||
7) Nach dem Booten kann man dann mit dem Befehl "dmesg" überprüfen, ob die
|
||||
Karte korrekt erkannt wurde und alle erforderlichen Treiber installiert
|
||||
sind.
|
||||
|
||||
|
||||
Konfiguration
|
||||
-------------
|
||||
8) Die Konfiguration von i4b wird hauptsächlich im Verzeichnis "/etc/isdn"
|
||||
druchgeführt, dort sucht der isdnd beim Start auch seine Konfigurations-
|
||||
datei "isdnd.rc". Da vorgenanntes Verzeichnis nach der Installation aber
|
||||
noch leer ist, kopiert man zuerst die Beispieldateien aus dem Verzeichnis
|
||||
"/etc/isdn/samples" nach "/etc/isdn".
|
||||
|
||||
9) Die Datei "isdnd.rc" enthält schon recht aussagekräftige Kommentare zu den
|
||||
einzelnen Optionen, weitere Informationen erhält man mit "man isdnd.rc" und
|
||||
"man isdnd".
|
||||
|
||||
10) Für syncPPP und Anrufbeantworter sind nur die Sektionen "SYSTEM",
|
||||
"telephone answering" und "example for sPPP" notwendig, die Sektion
|
||||
"IP over ISDN example" kann dafür also entfernt werden.
|
||||
|
||||
11) Für den automatisierten Start des isp0 Interfaces und des isdnd erstellt
|
||||
man nun ein Start-Skript. Dazu kopiert man die Datei
|
||||
"/usr/src/i4b/etc/rc.isdn-PPP" nach "/etc/rc.isdn" und paßt sie
|
||||
entsprechend an. Man beachte hierbei auch die FAQ "/usr/src/i4b/FAQ", die
|
||||
Tips für die richtige Eintragung der IP-Adressen bereithält.
|
||||
|
||||
12) Der Anrufbeantworter wird dadurch aktiviert, daß das entsprechende
|
||||
Programm, das in "/etc/isdn/isdnd.rc" hinter dem Eintrag "answerprog = "
|
||||
steht, aufgerufen wird. Wird dort kein Pfad angegeben, wird das Programm
|
||||
im Verzeichniss "/etc/isdn" erwartet. Beispiele solcher Programme findet
|
||||
man wiederum im Verzeichnis "/etc/isdn/samples". Sie nennen sich
|
||||
|
||||
"answer" Nur Ansagetext abspielen, keine Aufzeichnungsmöglichkeit.
|
||||
"record" Ansage wird abgespielt, nach Piep-Ton kann gesprochen
|
||||
werden.
|
||||
"tell" Als Ansagetext wird die anrufende Nummer gesprochen, keine
|
||||
Aufzeichnung.
|
||||
"tell-record" Anrufende Nummer als Ansagetext, nach Piep-Ton kann ge-
|
||||
sprochen werden.
|
||||
"isdntel.sh" Ansagetext und Aufzeichnung; mittels dem Programm "isdntel"
|
||||
hat man die Kontrolle übe die Aufzeichnungen im Ver-
|
||||
zeichniss "/var/isdn". Siehe auch "man isdntel" und
|
||||
"man isdntelctl".
|
||||
|
||||
Diese Programme müssen an die eigenen Wünsche angepaßt werden. Leider gibt es
|
||||
kein mitgeliefertes Programm, mit dem man so auch den Ansagetext aufsprechen
|
||||
kann. Das ist aber nicht allzuschlimm, da man nur das Programm "record" dafür
|
||||
etwas anpassen muß (Ansagetexte beep und msg auskommentieren). Damit die Anrufe
|
||||
aufgezeichnet werden können, muß zuerst noch das Verzeichnis "/var/isdn"
|
||||
angelegt werden. Dort werden dann alle Aufzeichnungen obiger Programme gespeichert.
|
||||
|
||||
13) Man sollte sich auch noch die man-Pages der Programme "isdnd", "isdnctl",
|
||||
"isdnd_acct", "isdndebug" und "isdntrace" zu Gemüte führen.
|
||||
|
||||
|
||||
Betrieb
|
||||
-------
|
||||
14) Der syncPPP Zugang zum Provider wird einfach mit dem Aufruf von
|
||||
"/etc/rc.isdn" initialisiert. Jegliche Aktivitäten ins Internet (also z.B.
|
||||
ein "ping 141.1.1.1") starten die Verbindung. Wenn in "/etc/isdn/isdnd.rc"
|
||||
beim Eintrag "unitlengthsrc = " "rate" angegeben wurde, wird die Verbindung
|
||||
kurz bevor die nächste Einheit begonnen wird, beendet. Informationen über
|
||||
die Einheiten werden aus der Datei "/etc/isdn/isdnd.rates" ausgelesen
|
||||
(Beispiele sind in "/etc/isdn/samples").
|
||||
|
||||
Mit "/etc/rc.isdn [restart|stop]" kann i4b entweder neu gestartet (z.B. zum
|
||||
Einlesen der geänderten Konfiguration aus "isdnd.rc") oder beendet werden.
|
||||
|
||||
15) Für den Anrufbeantworter muß nur der "isdnd" gestartet sein. Ein
|
||||
ankommender Anruf wird dann automatisch angenommen (je nach den Einträgen
|
||||
in "/etc/isdn/isdnd.rc").
|
||||
|
||||
16) Informationen über die Verbindung erhält man sowohl in "/var/log/messages",
|
||||
also auch in "/var/log/isdnd.log" (so der isdnd mit der Option "-l"
|
||||
gestartet wird) bzw. auf dem aktuellen tty (wenn der isdnd mit der Option
|
||||
"-f" gestartet wird).
|
@ -1,178 +0,0 @@
|
||||
// $FreeBSD$
|
||||
// changed ".g711a" to ".al" (-hm)
|
||||
// Tue Mar 3 02:42:14 MET 1998 dave@turbocat.de
|
||||
// started
|
||||
|
||||
#define BLK_SIZE 2048
|
||||
#define SOX "/usr/local/bin/sox"
|
||||
#define ALAWULAW "/usr/local/bin/alaw2ulaw"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
FILE *device;
|
||||
FILE *logfile;
|
||||
char srcNum[30];
|
||||
char destNum[30];
|
||||
char argbuf[255];
|
||||
char tmpBuf[1024] = "";
|
||||
|
||||
|
||||
void writeToPhone (char *path)
|
||||
{
|
||||
char buf[BLK_SIZE];
|
||||
FILE *srcfile;
|
||||
int i = 0;
|
||||
int readcount = 0;
|
||||
|
||||
srcfile = fopen(path,"r");
|
||||
if (srcfile) {
|
||||
for (i=0;i<BLK_SIZE;i++) {
|
||||
buf[i] = '\0';
|
||||
}
|
||||
readcount = BLK_SIZE;
|
||||
i = 0;
|
||||
do {
|
||||
readcount = fread(buf,1, BLK_SIZE, srcfile);
|
||||
fwrite(buf, 1, readcount, device);
|
||||
i = readcount + i;
|
||||
// fprintf(logfile,"%d read (%d)\n",i,readcount);
|
||||
} while (readcount == BLK_SIZE);
|
||||
|
||||
fclose(srcfile);
|
||||
} else {
|
||||
fprintf(logfile,"Can't open file '%s'\n",path);
|
||||
}
|
||||
}
|
||||
|
||||
void readFromPhone (char *path)
|
||||
{
|
||||
char buf[BLK_SIZE];
|
||||
FILE *destfile;
|
||||
int i = 0;
|
||||
int readcount = 0;
|
||||
|
||||
destfile = fopen(path,"a");
|
||||
if (destfile) {
|
||||
for (i=0;i<BLK_SIZE;i++) {
|
||||
buf[i] = '\0';
|
||||
}
|
||||
readcount = BLK_SIZE;
|
||||
i = 0;
|
||||
do {
|
||||
readcount = fread(buf,1, BLK_SIZE, device);
|
||||
fwrite(buf, 1, readcount, destfile);
|
||||
i = readcount + i;
|
||||
// fprintf(logfile,"%d read (%d)\n",i,readcount);
|
||||
} while (readcount == BLK_SIZE);
|
||||
|
||||
fclose(destfile);
|
||||
} else {
|
||||
fprintf(logfile,"Can't open file '%s'\n",path);
|
||||
}
|
||||
}
|
||||
|
||||
void usage (void)
|
||||
{
|
||||
fprintf(stderr,"usage: answer -D device -d destination -s source\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
const char * argWithName (const char* aName)
|
||||
{
|
||||
// '-D /dev/null -d 82834 -s 3305682834'
|
||||
int i = 0;
|
||||
int optionSeen = 0;
|
||||
int startpos = 0;
|
||||
|
||||
for (i = 0; i < sizeof(tmpBuf);i++) {
|
||||
tmpBuf[i] = '\0';
|
||||
}
|
||||
|
||||
for (i = 0; i<strlen(argbuf);i++) {
|
||||
if (optionSeen) {
|
||||
for (;(i<strlen(argbuf) && (argbuf[i] != ' '));i++) {
|
||||
}
|
||||
i++;
|
||||
startpos = i;
|
||||
|
||||
for (;(i<strlen(argbuf) && (argbuf[i] != ' '));i++) {
|
||||
}
|
||||
strncpy(tmpBuf,&argbuf[startpos], i-startpos);
|
||||
|
||||
return tmpBuf;
|
||||
}
|
||||
if (0 == strncmp(aName,&argbuf[i], strlen(aName))) {
|
||||
optionSeen = 1;
|
||||
}
|
||||
}
|
||||
|
||||
usage();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main (int argc, const char *argv[]) {
|
||||
|
||||
int i,pos = 0;
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
int bflag, ch;
|
||||
char timeStr[50];
|
||||
char outfileName[1024] = "";
|
||||
char cmdStr[2048] = "";
|
||||
time_t now;
|
||||
|
||||
now=time(NULL);
|
||||
|
||||
strftime(timeStr,40,I4B_TIME_FORMAT,localtime(&now));
|
||||
|
||||
logfile = fopen("/var/log/answer.log","a");
|
||||
|
||||
fprintf(logfile,"%s Started\n",timeStr);
|
||||
|
||||
pos=0;
|
||||
for (i=1;i<argc;i++) {
|
||||
sprintf(&argbuf[strlen(argbuf)],"%s ",argv[i]);
|
||||
}
|
||||
if (strlen(argbuf) > 2) {
|
||||
argbuf[strlen(argbuf)-1] = '\0';
|
||||
}
|
||||
|
||||
|
||||
device = fopen(argWithName("-D"),"r+");
|
||||
strcpy(destNum, argWithName("-d"));
|
||||
strcpy(srcNum, argWithName("-s"));
|
||||
|
||||
fprintf(logfile,"device '%s'\n", argWithName("-D"));
|
||||
fprintf(logfile,"srcNum '%s'\n", srcNum);
|
||||
fprintf(logfile,"destNum '%s'\n", destNum);
|
||||
|
||||
|
||||
if (device) {
|
||||
|
||||
strftime(timeStr,40,I4B_TIME_FORMAT,localtime(&now));
|
||||
|
||||
sprintf(outfileName,"/var/isdn/%s_%s_%s", timeStr, srcNum, destNum);
|
||||
|
||||
writeToPhone ("/usr/local/lib/isdn/msg.al");
|
||||
readFromPhone (outfileName);
|
||||
|
||||
sprintf(cmdStr,"/bin/cat %s | %s | %s -t raw -U -b -r 8000 - -t .au %s.snd", outfileName, ALAWULAW, SOX, outfileName);
|
||||
fprintf(logfile,"%s\n",cmdStr);
|
||||
system(cmdStr);
|
||||
unlink(outfileName);
|
||||
|
||||
fclose(device);
|
||||
} else {
|
||||
fprintf(logfile,"Can't open file '%s'\n",argWithName("-D"));
|
||||
}
|
||||
|
||||
now=time(NULL);
|
||||
|
||||
strftime(timeStr,40,I4B_TIME_FORMAT,localtime(&now));
|
||||
|
||||
fprintf(logfile,"%s Done\n",timeStr);
|
||||
fclose(logfile);
|
||||
exit(0); // insure the process exit status is 0
|
||||
return 0; // ...and make main fit the ANSI spec.
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# answer script for i4b isdnd
|
||||
# ---------------------------
|
||||
#
|
||||
# last edit-date: [Fri May 25 15:21:05 2001]
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
VARDIR=/var/isdn
|
||||
LIBDIR=/usr/local/lib/isdn
|
||||
LOGFILE=/tmp/answer.log
|
||||
|
||||
NCALLFILE=$VARDIR/ncall
|
||||
DATE=`date +%d%H`
|
||||
|
||||
progname=${0##*/}
|
||||
set -- $@ # have to split argument string !!!
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
usage ()
|
||||
{
|
||||
echo "usage: $progname -D device -d dest -s src"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ncall ()
|
||||
{
|
||||
nfile=$1
|
||||
[ -f $nfile ] && read n < $nfile || n=0
|
||||
echo $(($n + 1)) > $nfile
|
||||
printf "%.4d" $n
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
while getopts "D:d:s:" opt
|
||||
do
|
||||
case $opt
|
||||
in
|
||||
D) DEVICE=$OPTARG ;;
|
||||
d) DEST=$OPTARG ;;
|
||||
s) SRC=$OPTARG ;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -c "$DEVICE" -a -n "$DEST" -a -n "$SRC" ] || usage;
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
NCALL=`ncall $NCALLFILE`
|
||||
|
||||
echo "$progname: device $DEVICE destination $DEST source $SRC " >>$LOGFILE
|
||||
|
||||
{
|
||||
echo "Date: "`date`
|
||||
echo "From: \"$SRC\""
|
||||
echo "To: \"$DEST\""
|
||||
echo
|
||||
} >> $VARDIR/I.$NCALL.$DATE
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
tellnumber ()
|
||||
{
|
||||
number=$1
|
||||
digits=`echo $number | sed -e 's/\(.\)/\1 /g'`
|
||||
|
||||
files=""
|
||||
for digit in $digits
|
||||
do
|
||||
files="$files $LIBDIR/$digit.al"
|
||||
done
|
||||
cat $files
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
do_answer ()
|
||||
{
|
||||
[ -f $LIBDIR/beep.al ] && cat $LIBDIR/beep.al
|
||||
[ -f $LIBDIR/msg.al ] && cat $LIBDIR/msg.al
|
||||
[ -f $LIBDIR/beep.al ] && cat $LIBDIR/beep.al
|
||||
} > $DEVICE
|
||||
|
||||
do_record ()
|
||||
{
|
||||
cat $DEVICE > $VARDIR/R.$NCALL.$DATE
|
||||
}
|
||||
|
||||
do_tell ()
|
||||
{
|
||||
[ -f $LIBDIR/beep.al ] && cat $LIBDIR/beep.al
|
||||
[ -f $LIBDIR/msg.al ] && cat $LIBDIR/msg.al
|
||||
tellnumber $SRC
|
||||
[ -f $LIBDIR/beep.al ] && cat $LIBDIR/beep.al
|
||||
} > $DEVICE
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
case $progname
|
||||
in
|
||||
answer) do_answer ;;
|
||||
record) do_answer; do_record ;;
|
||||
tell) do_tell ;;
|
||||
esac
|
@ -1,86 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# convert recorded message to WAV format, optionally send it via mail
|
||||
#
|
||||
# by: Stefan Herrmann <stefan@asterix.webaffairs.net>
|
||||
# Date: Fr 22 Mai 1998 14:18:40 CEST
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
CAT=/bin/cat
|
||||
RM=/bin/rm
|
||||
SOX=/usr/local/bin/sox
|
||||
ALAW2ULAW=/usr/local/bin/alaw2ulaw
|
||||
MAIL=/usr/bin/mail
|
||||
GZIP=/usr/bin/gzip
|
||||
ZIP=/usr/local/bin/zip
|
||||
UUENCODE=/usr/bin/uuencode
|
||||
|
||||
inputfile=""
|
||||
outfilename=""
|
||||
mailto=""
|
||||
iF=0
|
||||
oF=0
|
||||
mF=0
|
||||
|
||||
set -- `getopt i:o:m: $*`
|
||||
|
||||
if test $? != 0
|
||||
then
|
||||
echo 'Usage: r2w -i <input file> -o <outfile name>.wav -m <email address>'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for i
|
||||
do
|
||||
case "$i"
|
||||
in
|
||||
-i)
|
||||
inputfile=$2
|
||||
iF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-o)
|
||||
outfilename=$2
|
||||
oF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-m)
|
||||
mailto=$2
|
||||
mF=1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $iF -eq 0 -o $oF -eq 0 ]
|
||||
then
|
||||
echo 'Usage: r2w -i <input file> -o <outfile name>.wav -m <email address>'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $iF -eq 1 -a $oF -eq 1 ]
|
||||
then
|
||||
echo
|
||||
echo "converting $inputfile to $outfilename.wav ..."
|
||||
|
||||
$CAT $inputfile | $ALAW2ULAW | $SOX -t raw -U -b -r 8000 - -t .wav $outfilename.wav
|
||||
fi
|
||||
|
||||
if [ $iF -eq 1 -a $oF -eq 1 -a $mF -eq 1 ]
|
||||
then
|
||||
echo "... and sending it via email to $mailto ..."
|
||||
$UUENCODE $outfilename.wav message.wav | $MAIL -s"new message $outfilename" $mailto && $RM $outfilename.wav
|
||||
# only usefull when sending over the internet
|
||||
#$GZIP -c $outfilename.wav | $UUENCODE message.zip | $MAIL -s"Nachricht vom ISDN Anrufbeantworter" $mailto && $RM $outfilename.wav
|
||||
fi
|
||||
|
||||
echo "done."
|
||||
echo
|
@ -1,241 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
*
|
||||
* rsynth driver to output to
|
||||
* - an open isdn4bsd telephone connection or
|
||||
* - an output file or
|
||||
* - the /dev/audio device
|
||||
* ----------------------------------------------------------------
|
||||
*
|
||||
* tested with rsynth-2.0
|
||||
*
|
||||
* written by Hellmuth Michaelis (hm@kts.org)
|
||||
*
|
||||
* last edit-date: [Fri May 25 15:21:33 2001]
|
||||
*
|
||||
* $FreeBSD$
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <config.h>
|
||||
#include <useconfig.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/signal.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include <i4b/i4b_tel_ioctl.h>
|
||||
|
||||
#include "proto.h"
|
||||
#include "getargs.h"
|
||||
#include "hplay.h"
|
||||
#include "l2u.h"
|
||||
|
||||
#define SAMP_RATE 8000
|
||||
long samp_rate = SAMP_RATE;
|
||||
|
||||
char *prog = "hplay";
|
||||
|
||||
static int use_audio = 1;
|
||||
static int use_isdn = 0;
|
||||
static int unit_no = 0;
|
||||
|
||||
static int audio_fd = -1;
|
||||
static int isdn_fd = -1;
|
||||
static int file_fd = -1;
|
||||
|
||||
char *audio_dev = "/dev/dsp";
|
||||
char *isdn_dev = "/dev/i4btel";
|
||||
static char *ulaw_file = NULL;
|
||||
|
||||
int
|
||||
audio_init(int argc, char *argv[])
|
||||
{
|
||||
char dev[64];
|
||||
int format = CVT_ALAW2ULAW;
|
||||
|
||||
prog = argv[0];
|
||||
|
||||
argc = getargs("FreeBSD audio/i4b/file output driver",argc, argv,
|
||||
"a", NULL, &use_audio, "use /dev/audio (default)",
|
||||
"i", NULL, &use_isdn, "use /dev/i4btel",
|
||||
"u", "%d", &unit_no, "/dev/i4btel unit number (def = 0)",
|
||||
"f", "", &ulaw_file, "u-law output to file",
|
||||
NULL);
|
||||
|
||||
if(help_only)
|
||||
return argc;
|
||||
|
||||
if(ulaw_file)
|
||||
{
|
||||
if(strcmp(ulaw_file, "-") == 0)
|
||||
{
|
||||
file_fd = 1; /* stdout */
|
||||
}
|
||||
else
|
||||
{
|
||||
file_fd = open(ulaw_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
|
||||
if(file_fd < 0)
|
||||
fprintf(stderr, "ERROR: cannot open %s, error = %s\n", ulaw_file, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
if(use_isdn)
|
||||
{
|
||||
sprintf(dev, "%s%d", isdn_dev, unit_no);
|
||||
|
||||
if((isdn_fd = open(dev, O_WRONLY)) < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: cannot open %s, error = %s\n", dev, strerror(errno));
|
||||
}
|
||||
|
||||
if((ioctl(isdn_fd, I4B_TEL_SETAUDIOFMT, &format)) < 0)
|
||||
{
|
||||
fprintf(stderr, "ioctl I4B_TEL_SETAUDIOFMT failed: %s", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
if(use_audio)
|
||||
{
|
||||
audio_fd = open(audio_dev, O_WRONLY | O_NDELAY);
|
||||
if(audio_fd < 0)
|
||||
{
|
||||
fprintf(stderr, "ERROR: cannot open %s, error = %s\n", audio_dev, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
audio_term()
|
||||
{
|
||||
int format = CVT_NONE;
|
||||
|
||||
if(isdn_fd >= 0)
|
||||
{
|
||||
if((ioctl(isdn_fd, I4B_TEL_SETAUDIOFMT, &format)) < 0)
|
||||
{
|
||||
fprintf(stderr, "ioctl I4B_TEL_SETAUDIOFMT failed: %s", strerror(errno));
|
||||
}
|
||||
close(isdn_fd);
|
||||
isdn_fd = -1;
|
||||
}
|
||||
|
||||
if(audio_fd >= 0)
|
||||
{
|
||||
#if 0
|
||||
ioctl(audio_fd, SNDCTL_DSP_SYNC, &dummy);
|
||||
#endif
|
||||
close(audio_fd);
|
||||
audio_fd = -1;
|
||||
}
|
||||
|
||||
if(file_fd >= 0)
|
||||
{
|
||||
close(file_fd);
|
||||
file_fd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
audio_play(int n, short *data)
|
||||
{
|
||||
int ret;
|
||||
unsigned char *p;
|
||||
|
||||
if (n > 0)
|
||||
{
|
||||
unsigned char *converted = (unsigned char *) malloc(n);
|
||||
int i;
|
||||
|
||||
if(converted == NULL)
|
||||
{
|
||||
fprintf(stderr, "Could not allocate memory for conversion\n");
|
||||
exit(3);
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
converted[i] = short2ulaw(data[i]);
|
||||
}
|
||||
|
||||
if (isdn_fd >= 0)
|
||||
{
|
||||
p = converted;
|
||||
errno = 0;
|
||||
|
||||
while((ret = write(isdn_fd, p, n)) != n)
|
||||
{
|
||||
if(!errno)
|
||||
{
|
||||
p += ret;
|
||||
if(p > (converted + n))
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "write /dev/i4btel ERROR: ret (%d) != n (%d), error = %s\n", ret, n, strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
converted[i] = (data[i] - 32768) / 256;
|
||||
|
||||
if(audio_fd >= 0)
|
||||
{
|
||||
p = converted;
|
||||
|
||||
errno = 0;
|
||||
|
||||
while((ret = write(audio_fd, p, n)) != n)
|
||||
{
|
||||
if(!errno)
|
||||
{
|
||||
p += ret;
|
||||
if(p > (converted + n))
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "write /dev/dsp ERROR: ret (%d) != n (%d), error = %s\n", ret, n, strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(file_fd >= 0)
|
||||
{
|
||||
int ret;
|
||||
p = converted;
|
||||
|
||||
errno = 0;
|
||||
|
||||
while((ret = write(file_fd, p, n)) != n)
|
||||
{
|
||||
if(!errno)
|
||||
{
|
||||
p += ret;
|
||||
if(p > (converted + n))
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "write file ERROR: ret (%d) != n (%d), error = %s\n", ret, n, strerror(errno));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(converted);
|
||||
}
|
||||
}
|
||||
|
||||
/* EOF */
|
@ -1,237 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
PPP mit isdn4bsd
|
||||
_________________________________________________________________
|
||||
|
||||
Version 1.01
|
||||
Datum: 22.02.1999
|
||||
Autor: [1]Dominik Brettnacher <domi@saargate.de>
|
||||
|
||||
- Anmerkungen und Verbesserungsvorschläge sind willkommen -
|
||||
|
||||
1. vorab
|
||||
Dieser Text soll Neulingen helfen, sich mittels isdn4bsd und BSD
|
||||
per PPP z.B. bei ihrem Provider einwählen zu können.
|
||||
isdn4bsd bringt einiges an Dokumentation und
|
||||
Konfigurationsbeispielen mit, jedoch ist es nicht immer leicht,
|
||||
die entsprechenden Hinweise gut miteinander zu kombinieren, so daß
|
||||
am Schluß das dabei herauskommt, was man haben möchte.
|
||||
2. Wo bekomme ich isdn4bsd?
|
||||
hier solle es keine allzu großen Probleme geben: isdn4bsd ist auf
|
||||
dem FTP-Server [2]ftp.consol.de erhältlich. Man beachte dabei, daß
|
||||
man sich nicht, wie üblich, als anonymous, sondern als isdn4bsd
|
||||
einloggen muß. Benutzer von Browsern geben als Adresse
|
||||
[3]ftp://isdn4bsd@ftp.consol.de und als Passwort ihre
|
||||
eMail-Adresse an.
|
||||
Wertvolle Informationen findet man in der Datei README.
|
||||
3. Welche ISDN-Karten werden unterstützt?
|
||||
Informationen darüber findet man in der README-Datei.
|
||||
4. Ich benutze einen externen ISDN-Adapter - was nun?
|
||||
Externe Adapter benötigen keine direkte Unterstützung, weil sie
|
||||
über die serielle Schnittstelle angesteuert werden. Man kann also
|
||||
das normale PPP benutzen. man ppp hilft hier sicher weiter.
|
||||
5. isdn4bsd installieren
|
||||
Wie man isdn4bsd installiert, steht in der Datei
|
||||
FreeBSD/INSTALLATION (für NetBSD und OpenBSD analog). Eine
|
||||
Beispielkonfiguration des Kernel sieht so aus:
|
||||
[...]
|
||||
#
|
||||
# i4b passive ISDN cards support (isic - I4b Siemens Isdn Chipset driver)
|
||||
# note that the ``options'' and ``device'' lines must BOTH be defined !
|
||||
#
|
||||
# Non-PnP Cards:
|
||||
# --------------
|
||||
#
|
||||
# AVM A1 or AVM Fritz!Card
|
||||
options "AVM_A1"
|
||||
device isic0 at isa? port 0x300 net irq 15 flags 4 vector isicintr
|
||||
#
|
||||
# ISDN Protocol Stack
|
||||
# -------------------
|
||||
#
|
||||
# Q.921 / layer 2 - i4b passive cards D channel handling
|
||||
pseudo-device "i4bq921"
|
||||
#
|
||||
# Q.931 / layer 3 - i4b passive cards D channel handling
|
||||
pseudo-device "i4bq931"
|
||||
#
|
||||
# layer 4 - i4b common passive and active card handling
|
||||
pseudo-device "i4b"
|
||||
#
|
||||
# ISDN devices
|
||||
# ------------
|
||||
#
|
||||
# userland driver to do ISDN tracing (for passive cards only)
|
||||
pseudo-device "i4btrc" 4
|
||||
#
|
||||
# userland driver to control the whole thing
|
||||
pseudo-device "i4bctl"
|
||||
#
|
||||
# userland driver for access to raw B channel
|
||||
#pseudo-device "i4brbch" 4
|
||||
#
|
||||
# userland driver for telephony
|
||||
#pseudo-device "i4btel" 2
|
||||
#
|
||||
# network driver for IP over raw HDLC ISDN
|
||||
#pseudo-device "i4bipr" 4
|
||||
# enable VJ header compression detection for ipr i/f
|
||||
#options IPR_VJ
|
||||
#
|
||||
# network driver for sync PPP over ISDN
|
||||
pseudo-device "i4bisppp" 1
|
||||
pseudo-device sppp 1
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
[...]
|
||||
Nachdem ein neuer Kernel kompiliert und das System neugestartet
|
||||
wurde, kann es weiter gehen.
|
||||
6. Konfiguration isdnd.rc
|
||||
Die für ISDN wichtigste Konfigurationsdatei ist
|
||||
/etc/isdn/isdnd.rc. Mit man isdnd.rc erhält man Informationen über
|
||||
die Einstellungen, die man dort vornehmen kann. Im Folgenden ein
|
||||
Beispiel:
|
||||
|
||||
|
||||
#==============================================================================
|
||||
# SYSTEM section: isdnd global configuration parameters
|
||||
#==============================================================================
|
||||
system
|
||||
|
||||
# accounting
|
||||
# ----------
|
||||
|
||||
acctall = on # generate info for everything
|
||||
acctfile = /var/log/isdnd.acct # name & location of accounting file
|
||||
useacctfile = yes # generate accouting info to file
|
||||
|
||||
# monitor
|
||||
# -------
|
||||
|
||||
monitor-allowed = no # global switch: monitor on/off
|
||||
monitor-port = 451 # default monitor TCP port
|
||||
|
||||
# Monitor rights are granted due to the most specific host/net spec, i.e. in
|
||||
# the example below host 192.168.1.2 will have the rights specified on that
|
||||
# line, even so it belongs to net 192.168.1.0/24 as well.
|
||||
#
|
||||
# A monitor specification may either be:
|
||||
#
|
||||
# - the name of a local (UNIX-domain) socket; this MUST start with a "/"
|
||||
monitor = "/var/run/isdn-monitor"
|
||||
monitor-access = fullcmd
|
||||
monitor-access = channelstate, logevents
|
||||
monitor-access = callin, callout
|
||||
|
||||
# ratesfile
|
||||
# ---------
|
||||
|
||||
ratesfile = /etc/isdn/isdnd.rates # name & location of rates file
|
||||
|
||||
# regular expression pattern matching
|
||||
# -----------------------------------
|
||||
|
||||
#regexpr = "connected.*KTS" # look for matches in log messages
|
||||
#regprog = connectKTS # execute program when match is found
|
||||
|
||||
# realtime priority section
|
||||
# -------------------------
|
||||
|
||||
rtprio = 25 # modify isdnd's process priority
|
||||
|
||||
###############################################################################
|
||||
entry
|
||||
name = lf
|
||||
usrdevicename = isp
|
||||
usrdeviceunit = 0
|
||||
isdncontroller = 0
|
||||
isdnchannel = -1
|
||||
local-phone-incoming = 012345678
|
||||
remote-phone-incoming = 876543210
|
||||
local-phone-dialout = 012345678
|
||||
remote-phone-dialout = 876543210
|
||||
remdial-handling = first
|
||||
dialin-reaction = accept
|
||||
dialout-type = normal
|
||||
b1protocol = hdlc
|
||||
idletime-incoming = 240
|
||||
idletime-outgoing = 30
|
||||
earlyhangup = 5
|
||||
ratetype = 0
|
||||
unitlength = 90
|
||||
unitlengthsrc = rate
|
||||
dialretries = 3
|
||||
dialrandincr = on
|
||||
recoverytime = 25
|
||||
|
||||
connectprog = is-up
|
||||
disconnectprog = is-down
|
||||
|
||||
Wichtig sind hier für den Neuling die vier *-phone-* Einträge, die
|
||||
jeweils die lokale Rufnummer und die der Gegenstelle für ein- und
|
||||
ausgehende Verbindungen angeben.
|
||||
|
||||
7. ISDN-Verbindungen aufbauen
|
||||
um ISDN-Verbindungen aufzubauen, bedarf es einiger Befehle, die
|
||||
beim Systemstart aufgerufen werden. Man kann sie zum Beispiel am
|
||||
Ende von /etc/rc.local unterbringen. Hier gibt es aber durchaus
|
||||
noch andere Lösungen:
|
||||
[...]
|
||||
# start ISDN
|
||||
echo -n 'ppp / ISDN...'
|
||||
echo -n 'isdnd...'
|
||||
/usr/local/bin/isdnd
|
||||
echo -n 'ifconfig...'
|
||||
ifconfig isp0 link1 0.0.0.0 1.1.1.1 netmask 0xffffff00
|
||||
ifconfig isp0 down
|
||||
echo -n 'sppp...'
|
||||
spppcontrol isp0 myauthproto=pap myauthname="xxx"
|
||||
myauthsecret="xxx" hisauthproto=none
|
||||
echo -n 'ifconfig...'
|
||||
ifconfig isp0 up
|
||||
echo -n 'setting routes...'
|
||||
route add default -interface isp0
|
||||
echo '.'
|
||||
Ändern muß man hier eventuell die Zieladresse des Providers (im
|
||||
Beispiel 1.1.1.1). Man bekommt diese entweder vom Provider, oder
|
||||
aber man muß einen Versuch daransetzen, sie selbst herauszufinden.
|
||||
Wie das funktioniert, steht in der Datei FAQ des isdn4bsd-Paketes.
|
||||
Auch am Aufruf von spppcontrol (Vorsicht: spppcontrol bis
|
||||
hisauthproto=none ist eine Zeile!) muß noch etwas umgestellt
|
||||
werden:
|
||||
+ myauthproto steht für das Authentifizierungsprotokoll.
|
||||
Möglich sind pap oder chap.
|
||||
+ myauthname ist der PPP-Benutzername.
|
||||
+ myauthsecret ist das PPP-Kennwort.
|
||||
Wenn man nun die Befehle in /etc/rc.local ausführt, kann man mit
|
||||
einem ping auf eine beliebige Adresse außerhalb des lokalen Netzes
|
||||
eine Verbindung öffnen. Sie wird automatisch nach einiger
|
||||
Inaktivität (siehe isdnd.rc) wieder geschlossen.
|
||||
|
||||
8. Es funktioniert nicht - was kann ich tun?
|
||||
Es gibt einige Möglichkeiten zur Fehlerdiagnose:
|
||||
+ dmesg gibt Aufschluß darüber, ob die Karte richtig erkannt
|
||||
wurde.
|
||||
+ ifconfig (siehe rc.local) kann mit dem Parameter debug
|
||||
aufgerufen werden und gibt dann einiges an Informationen aus.
|
||||
+ die Nachrichten in /var/log/messages können außerdem
|
||||
hilfreich sein
|
||||
|
||||
9. wer kann mir helfen?
|
||||
+ die erste Adresse für ISDN-Probleme ist die Mailingliste
|
||||
[4]freebsd-isdn@freebsd.org - man bestellt sie, indem man
|
||||
eine Mail mit dem Text subscribe freebsd-isdn an
|
||||
[5]majordomo@freebsd.org schickt.
|
||||
+ auch die deutschsprachige Mailingliste kann hilfreich sein.
|
||||
Mit einer Mail an [6]majordomo@de.freebsd.org, die im Text
|
||||
subscribe de-bsd-questions enthält bestellt man sie.
|
||||
_________________________________________________________________
|
||||
|
||||
References
|
||||
|
||||
1. mailto:domi@saargate.de
|
||||
2. ftp://isdn4bsd@ftp.consol.de/
|
||||
3. ftp://isdn4bsd@ftp.consol.de/
|
||||
4. mailto:freebsd-isdn@freebsd.org
|
||||
5. mailto:majordomo@freebsd.org
|
||||
6. mailto:majordomo@de.freebsd.org
|
@ -1,111 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# isdnctl
|
||||
# Control the ISDN line based on usage
|
||||
#
|
||||
# This script can control the state of your ISDN line. It counts
|
||||
# how many scripts/users currently use the ISDN line and uses
|
||||
# "ifconfig down" if noone uses it any more.
|
||||
# I use this script for cronjobs that fetch mail and news and run cvsup.
|
||||
# If I'm still using the line, the script won't close the connection,
|
||||
# but if not, it saves a lot of phone costs.
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
# "THE BEER-WARE LICENSE" (Revision 42, (c) Poul-Henning Kamp):
|
||||
# Alexander Langer <alex@big.endian.de> wrote this file. As long as you retain
|
||||
# this notice you can do whatever you want with this stuff. If we meet some
|
||||
# day, and you think this stuff is worth it, you can buy me a beer in return.
|
||||
#
|
||||
# Alexander Langer
|
||||
# ----------------------------------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
|
||||
usage () {
|
||||
echo "usage: $0 [-i interface] [-f /path/to/users.file] [up|down|show]"
|
||||
}
|
||||
|
||||
# Defaults
|
||||
INTERFACE=isp0
|
||||
USERSFILE=
|
||||
|
||||
# Getopt stuff
|
||||
args=`getopt i:f: $*`
|
||||
if [ $? != 0 ]; then
|
||||
usage
|
||||
exit 2
|
||||
fi
|
||||
set -- $args
|
||||
for i; do
|
||||
case "$i" in
|
||||
-i)
|
||||
INTERFACE="$2"
|
||||
shift; shift
|
||||
;;
|
||||
-f)
|
||||
USERSFILE="$2"
|
||||
shift; shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z $USERSFILE ]; then
|
||||
USERSFILE=/var/run/isdn.users.$INTERFACE
|
||||
fi
|
||||
|
||||
if [ -z $1 ]; then
|
||||
usage
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Does Usersfile exist?
|
||||
if [ ! -f $USERSFILE ]; then
|
||||
# Try to create it
|
||||
if ! /sbin/ifconfig $INTERFACE | grep "^$INTERFACE.*<UP," > /dev/null; then
|
||||
echo "0" > $USERSFILE || exit 1
|
||||
else
|
||||
echo "1" > $USERSFILE || exit 1
|
||||
fi
|
||||
elif [ ! -w $USERSFILE ]; then
|
||||
echo "Error: $USERSFILE not writeable!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! /sbin/ifconfig $INTERFACE | grep "^$INTERFACE.*<UP," > /dev/null; then
|
||||
if ! cat $USERSFILE | grep '^0$' > /dev/null ; then
|
||||
echo "Interface down, removing number from file";
|
||||
echo "0" > $USERSFILE
|
||||
fi;
|
||||
fi;
|
||||
|
||||
case "$1" in
|
||||
show)
|
||||
echo "`cat $USERSFILE` users online"
|
||||
;;
|
||||
up)
|
||||
expr `cat $USERSFILE` + 1 > $USERSFILE
|
||||
/sbin/ifconfig $INTERFACE up
|
||||
echo "`cat $USERSFILE` users online"
|
||||
;;
|
||||
down)
|
||||
if cat $USERSFILE | grep '^0$' > /dev/null ; then
|
||||
echo "Already down"
|
||||
exit 0
|
||||
fi
|
||||
expr `cat $USERSFILE` - 1 > $USERSFILE
|
||||
if cat $USERSFILE | grep '^0$' > /dev/null ; then
|
||||
echo "`cat $USERSFILE` users online, interface down"
|
||||
/sbin/ifconfig $INTERFACE down
|
||||
exit 0
|
||||
fi
|
||||
echo "`cat $USERSFILE` users online"
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
@ -1,137 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Copyright (c) 1996, 1998 Hellmuth Michaelis. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# accounting report script for the isdnd daemon accounting info
|
||||
# -------------------------------------------------------------
|
||||
#
|
||||
# last edit-date: [Fri May 25 15:28:20 2001]
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# where the isdnd accounting file resides
|
||||
$ACCT_FILE = "/var/log/isdnd.acct";
|
||||
|
||||
# the charge for a unit, currently 0,12 DM
|
||||
$UNIT_PRICE = 0.12;
|
||||
|
||||
# open accounting file
|
||||
open(IN, $ACCT_FILE) ||
|
||||
die "ERROR, cannot open $ACCT_FILE !\n";
|
||||
|
||||
# set first thru flag
|
||||
$first = 1;
|
||||
|
||||
# process file line by line
|
||||
while (<IN>)
|
||||
{
|
||||
# remove ( and ) from length and bytecounts
|
||||
tr/()//d;
|
||||
|
||||
# split line into pieces
|
||||
($from_d, $from_h, $dash, $to_d, $to_h, $name, $units, $secs, $byte)
|
||||
= split(/ /, $_);
|
||||
|
||||
# get starting date
|
||||
if($first)
|
||||
{
|
||||
$from = "$from_d $from_h";
|
||||
$first = 0;
|
||||
}
|
||||
|
||||
# split bytecount
|
||||
($inb, $outb) = split(/\//, $byte);
|
||||
|
||||
# process fields
|
||||
$a_secs{$name} += $secs;
|
||||
$a_calls{$name}++;
|
||||
$a_units{$name} += $units;
|
||||
$a_charge{$name} += $units * $UNIT_PRICE;
|
||||
$a_inbytes{$name} += $inb;
|
||||
$a_outbytes{$name} += $outb;
|
||||
$a_bytes{$name} = $a_bytes{$name} + $inb + $outb;
|
||||
}
|
||||
|
||||
# close accouting file
|
||||
close(IN);
|
||||
|
||||
# write header
|
||||
print "\n";
|
||||
print " ISDN Accounting Report ($from -> $to_d $to_h)\n";
|
||||
print " =====================================================================\n";
|
||||
|
||||
#write the sum for each interface/name
|
||||
foreach $name (sort(keys %a_secs))
|
||||
{
|
||||
$o_secs = $a_secs{$name};
|
||||
$gt_secs += $o_secs;
|
||||
$o_calls = $a_calls{$name};
|
||||
$gt_calls += $o_calls;
|
||||
$o_units = $a_units{$name};
|
||||
$gt_units += $o_units;
|
||||
$o_charge = $a_charge{$name};
|
||||
$gt_charge += $o_charge;
|
||||
$o_inbytes = $a_inbytes{$name};
|
||||
$gt_inbytes += $o_inbytes;
|
||||
$o_outbytes = $a_outbytes{$name};
|
||||
$gt_outbytes += $o_outbytes;
|
||||
$o_bytes = $a_bytes{$name};
|
||||
$gt_bytes += $o_bytes;
|
||||
write;
|
||||
}
|
||||
|
||||
$o_secs = $gt_secs;
|
||||
$o_calls = $gt_calls;
|
||||
$o_units = $gt_units;
|
||||
$o_charge = $gt_charge;
|
||||
$o_inbytes = $gt_inbytes;
|
||||
$o_outbytes = $gt_outbytes;
|
||||
$o_bytes = $gt_bytes;
|
||||
$name = "Total";
|
||||
|
||||
print "======= ====== ===== ===== ======== ============ ============ ============\n";
|
||||
write;
|
||||
|
||||
print "\n\n";
|
||||
exit;
|
||||
|
||||
# top of page header
|
||||
format top =
|
||||
|
||||
Name charge units calls secs inbytes outbytes bytes
|
||||
------- ------ ----- ----- -------- ------------ ------------ ------------
|
||||
.
|
||||
|
||||
# record template
|
||||
format STDOUT =
|
||||
@<<<<<< @##.## @#### @#### @####### @########### @########### @###########
|
||||
$name, $o_charge, $o_units, $o_calls, $o_secs, $o_inbytes, $o_outbytes, $o_bytes
|
||||
.
|
||||
|
||||
# EOF
|
@ -1,258 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
#ich habe zwei vielleicht n?tzliche Erweiterungen an isdn_pacct
|
||||
#gemacht:
|
||||
#
|
||||
# 1) Man kann den Namen der Accounting-Datei angeben. Ich
|
||||
# habe Accounting-Files nach Telekom-Rechnung aufgeteilt
|
||||
# und kann diese so sehr sch?n nachvollziehen.
|
||||
#
|
||||
# 2) Die Abrechnung wird nach Einheitenl?ngen aufgelistet.
|
||||
# Leider wird zur Zeit immer Nahzone verwendet (isdnd.rates
|
||||
# wird ausgelesen), und Feiertage stehen als erstes auf
|
||||
# der TODO-Liste. Wenn man dieses Feature durch einen
|
||||
# Switch anschaltet, kann man es sogar unauff?llig in die
|
||||
# Distribution aufnehmen.
|
||||
#
|
||||
# Mir hilft diese Abrechnung, an mir zu arbeite und mehr
|
||||
# Tests und Zug?nge nachts durchzuf?hren... Aber die meisten
|
||||
# Einheiten werden immer noch im 90s-Takt verbraucht :-(
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Copyright (c) 1994, 1996 Hellmuth Michaelis. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# 3. All advertising materials mentioning features or use of this software
|
||||
# must display the following acknowledgement:
|
||||
# This product includes software developed by Hellmuth Michaelis
|
||||
# 4. Neither the name of the author nor the names of any co-contributors
|
||||
# may be used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# accounting script for the isdn daemon accounting info
|
||||
# -----------------------------------------------------
|
||||
#
|
||||
# last edit-date: [Fri May 25 15:22:26 2001]
|
||||
#
|
||||
# -hm my first perl program :-)
|
||||
# -hm sorting the output
|
||||
# -hm adding grand total
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
sub wday {
|
||||
local ($y, $m, $d) = @_;
|
||||
local ($nday, @mon);
|
||||
|
||||
@mon = (0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337);
|
||||
# M A M J J A S O N D J F
|
||||
|
||||
if ($m > 2) {
|
||||
$m -= 3;
|
||||
} else {
|
||||
$m += 9;
|
||||
$y--;
|
||||
}
|
||||
if ($y < 1600) {
|
||||
return -1;
|
||||
}
|
||||
$y -= 1600;
|
||||
$nday = $y * 365 + $mon[$m] + $d +
|
||||
int($y / 4) - int($y / 100) + int($y / 400);
|
||||
($nday + 2) % 7;
|
||||
}
|
||||
|
||||
# where the isdnd accounting file resides
|
||||
if ($#ARGV == 0) {
|
||||
$ACCT_FILE = $ARGV[0];
|
||||
} else {
|
||||
$ACCT_FILE = "/var/log/isdnd.acct";
|
||||
}
|
||||
|
||||
# $PERIOD_FILE = "/usr/local/etc/isdnd.periods";
|
||||
# # read periods that need to be separately listed
|
||||
# if (open(IN, $PERIOD_FILE)) {
|
||||
# while (<IN>) {
|
||||
# chop;
|
||||
# ($start, $end) = split(/ /);
|
||||
# push(@p_start, $start);
|
||||
# push(@p_end, $end);
|
||||
# }
|
||||
# close(IN);
|
||||
# }
|
||||
|
||||
$RATES_FILE = "/etc/isdn/isdnd.rates";
|
||||
if (open(IN, $RATES_FILE)) {
|
||||
while(<IN>) {
|
||||
chop;
|
||||
if (! /^ra0/) {
|
||||
next;
|
||||
}
|
||||
($ra0, $day, $rest) = split(/[ \t]+/, $_, 3);
|
||||
@periods = split(/[ \t]+/, $rest);
|
||||
foreach $period (@periods) {
|
||||
($h_start, $m_start, $h_end, $m_end, $secs) =
|
||||
$period =~ /(.+)\.(.+)-(.+)\.(.+):(.+)/;
|
||||
for ($h = int($h_start); $h < $h_end; $h++) {
|
||||
$secs{$day, $h} = $secs;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(IN);
|
||||
}
|
||||
|
||||
# the charge for a unit, currently 0,12 DM
|
||||
$UNIT_PRICE = 0.12;
|
||||
|
||||
# open accounting file
|
||||
open(IN, $ACCT_FILE) ||
|
||||
die "ERROR, cannot open $ACCT_FILE !\n";
|
||||
|
||||
# set first thru flag
|
||||
$first = 1;
|
||||
|
||||
# process file line by line
|
||||
while (<IN>)
|
||||
{
|
||||
# remove ( and ) from length and bytecounts
|
||||
tr/()//d;
|
||||
|
||||
# split line into pieces
|
||||
($from_d, $from_h, $dash, $to_d, $to_h, $name, $units, $secs, $byte)
|
||||
= split(/ /, $_);
|
||||
|
||||
# get starting date
|
||||
if($first)
|
||||
{
|
||||
$from = "$from_d $from_h";
|
||||
$first = 0;
|
||||
}
|
||||
|
||||
# split bytecount
|
||||
($inb, $outb) = split(/\//, $byte);
|
||||
|
||||
# if user wants to account time periods, put this to the right
|
||||
# slot(s)
|
||||
($hour, $minute, $second) = split(/:/, $from_h);
|
||||
($day, $mon, $year) = split(/\./, $from_d);
|
||||
$day = &wday('19' . $year, $mon, $day);
|
||||
if ($secs{$day, int($hour)}) {
|
||||
$secs = $secs{$day, int($hour)};
|
||||
# process fields
|
||||
$p_secs{$name, $secs} += $secs;
|
||||
$p_calls{$name, $secs}++;
|
||||
$p_units{$name, $secs} += $units;
|
||||
$p_charge{$name, $secs} += $units * $UNIT_PRICE;
|
||||
$p_inbytes{$name, $secs} += $inb;
|
||||
$p_outbytes{$name, $secs} += $outb;
|
||||
$p_bytes{$name, $secs} = $p_bytes{$name, $secs} + $inb + $outb;
|
||||
}
|
||||
|
||||
# process fields
|
||||
$a_secs{$name} += $secs;
|
||||
$a_calls{$name}++;
|
||||
$a_units{$name} += $units;
|
||||
$a_charge{$name} += $units * $UNIT_PRICE;
|
||||
$a_inbytes{$name} += $inb;
|
||||
$a_outbytes{$name} += $outb;
|
||||
$a_bytes{$name} = $a_bytes{$name} + $inb + $outb;
|
||||
}
|
||||
|
||||
# close accouting file
|
||||
close(IN);
|
||||
|
||||
# write header
|
||||
print "\n";
|
||||
print " ISDN Accounting Report ($from -> $to_d $to_h)\n";
|
||||
print " =================================================================\n";
|
||||
|
||||
#write the sum for each interface/name
|
||||
foreach $n (sort(keys %a_secs))
|
||||
{
|
||||
$o_secs = $a_secs{$n};
|
||||
$gt_secs += $o_secs;
|
||||
$o_calls = $a_calls{$n};
|
||||
$gt_calls += $o_calls;
|
||||
$o_units = $a_units{$n};
|
||||
$gt_units += $o_units;
|
||||
$o_charge = $a_charge{$n};
|
||||
$gt_charge += $o_charge;
|
||||
$o_inbytes = $a_inbytes{$n};
|
||||
$gt_inbytes += $o_inbytes;
|
||||
$o_outbytes = $a_outbytes{$n};
|
||||
$gt_outbytes += $o_outbytes;
|
||||
$o_bytes = $a_bytes{$n};
|
||||
$gt_bytes = $o_bytes;
|
||||
$name = $n;
|
||||
write;
|
||||
|
||||
foreach $i (keys %p_secs) {
|
||||
($nam, $secs) = split(/$;/, $i);
|
||||
if ($nam ne $n) {
|
||||
next;
|
||||
}
|
||||
$o_secs = $p_secs{$i};
|
||||
$o_calls = $p_calls{$i};
|
||||
$o_units = $p_units{$i};
|
||||
$o_charge = $p_charge{$i};
|
||||
$o_inbytes = $p_inbytes{$i};
|
||||
$o_outbytes = $p_outbytes{$i};
|
||||
$o_bytes = $p_bytes{$i};
|
||||
$name = sprintf(' %5.1fs', $secs / 10);
|
||||
write;
|
||||
}
|
||||
}
|
||||
|
||||
$o_secs = $gt_secs;
|
||||
$o_calls = $gt_calls;
|
||||
$o_units = $gt_units;
|
||||
$o_charge = $gt_charge;
|
||||
$o_inbytes = $gt_inbytes;
|
||||
$o_outbytes = $gt_outbytes;
|
||||
$o_bytes = $gt_bytes;
|
||||
$name = "Total";
|
||||
|
||||
print "======= ====== ===== ===== ======== ============ ============ ============\n";
|
||||
write;
|
||||
|
||||
print "\n\n";
|
||||
exit;
|
||||
|
||||
# top of page header
|
||||
format top =
|
||||
|
||||
Name charge units calls secs inbytes outbytes bytes
|
||||
------- ------ ----- ----- -------- ------------ ------------ ------------
|
||||
.
|
||||
|
||||
# record template
|
||||
format STDOUT =
|
||||
@<<<<<< @##.## @#### @#### @####### @########### @########### @###########
|
||||
$name, $o_charge, $o_units, $o_calls, $o_secs, $o_inbytes, $o_outbytes, $o_bytes
|
||||
.
|
||||
|
||||
# EOF
|
@ -1,197 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 1999 Michael Reifenberger (Michael@Reifenberger.com).
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
* i4btemux - record while playing
|
||||
* ===============================
|
||||
*
|
||||
* $FreeBSD$
|
||||
*
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#include<stdio.h>
|
||||
#include<stdarg.h>
|
||||
#include<signal.h>
|
||||
#include<errno.h>
|
||||
#include<string.h>
|
||||
#include<stdlib.h>
|
||||
#include<unistd.h>
|
||||
#include<fcntl.h>
|
||||
#include<ctype.h>
|
||||
#include<sys/stat.h>
|
||||
#include<sys/wait.h>
|
||||
#include<sys/ioctl.h>
|
||||
#include<sys/types.h>
|
||||
#include<sys/time.h>
|
||||
#include<sys/param.h>
|
||||
#include<i4b/i4b_tel_ioctl.h>
|
||||
|
||||
// DECL DEFS
|
||||
#define BUFLEN 2048
|
||||
#define MAXBLOCKS_DEFAULT 23
|
||||
|
||||
// DECL VARS
|
||||
int ibytes = 0;
|
||||
int obytes = 0;
|
||||
int maxbytes = (BUFLEN * MAXBLOCKS_DEFAULT);
|
||||
|
||||
int xfd = -1, xact = 0;
|
||||
int ifd = -1, iact = 0;
|
||||
int ofd = -1;
|
||||
FILE *dfp = NULL;
|
||||
int opt_dbg = 0;
|
||||
int maxfd = 0;
|
||||
fd_set set;
|
||||
struct timeval timeout;
|
||||
char nambuf[PATH_MAX];
|
||||
int ch;
|
||||
|
||||
// DECL FUNC
|
||||
void ifd_hdlr( void);
|
||||
void xfd_hdlr( void);
|
||||
void usage( void);
|
||||
void dbg( char *fmt, ... );
|
||||
|
||||
// DEF FUNC
|
||||
int main (int argc, char **argv) {
|
||||
int dummy;
|
||||
int x = -1;
|
||||
|
||||
dfp = stderr;
|
||||
while( ( ch = getopt( argc, argv, "x:i:o:b:D:")) != -1 ){
|
||||
switch(ch){
|
||||
case 'b':
|
||||
x = atoi(optarg);
|
||||
maxbytes = x * BUFLEN;
|
||||
break;
|
||||
case 'i':
|
||||
ifd = open( optarg, O_RDONLY );
|
||||
iact = 1;
|
||||
break;
|
||||
case 'o':
|
||||
ofd = open( optarg, O_WRONLY|O_TRUNC|O_CREAT );
|
||||
break;
|
||||
case 'x':
|
||||
xfd = open( optarg, O_RDWR );
|
||||
xact = 1;
|
||||
break;
|
||||
case 'D':
|
||||
opt_dbg = 1;
|
||||
if( (dfp = fopen( optarg, "w" )) < 0) {
|
||||
dfp = stderr;
|
||||
dbg("Err for opening %s\n", optarg);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( ( xfd < 0 ) || ( ifd < 0 ) || ( ofd < 0 ) ) {
|
||||
dbg("Err opening one ore more Files.\n");
|
||||
dbg("xfd: %d, ifd: %d, ofd: %d\n", xfd, ifd, ofd );
|
||||
usage();
|
||||
}
|
||||
|
||||
if((x = ioctl(xfd, I4B_TEL_EMPTYINPUTQUEUE, &dummy)) < 0){
|
||||
dbg("Err I4B_TEL_EMPTYINPUTQUEUE\n");
|
||||
}
|
||||
|
||||
while( (iact == 1) || ( (obytes < maxbytes) && (xact == 1) ) ){
|
||||
FD_ZERO( &set);
|
||||
if( iact == 1){
|
||||
FD_SET( ifd, &set);
|
||||
if( ifd > maxfd)
|
||||
maxfd = ifd;
|
||||
dbg("FSET ifd\n");
|
||||
}
|
||||
if( xact == 1){
|
||||
FD_SET( xfd, &set);
|
||||
if( xfd > maxfd)
|
||||
maxfd = xfd;
|
||||
dbg("FSET xfd\n");
|
||||
}
|
||||
x=select( maxfd+1, &set, NULL, NULL, NULL);
|
||||
if( x > 0){
|
||||
if( (iact == 1) && FD_ISSET( ifd, &set) ){
|
||||
ifd_hdlr();
|
||||
}
|
||||
if( (xact == 1) && FD_ISSET( xfd, &set) ){
|
||||
xfd_hdlr();
|
||||
}
|
||||
}
|
||||
}
|
||||
dbg("exit0\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
void ifd_hdlr( void) {
|
||||
int x;
|
||||
unsigned char buf[BUFLEN];
|
||||
|
||||
x = read( ifd, buf, BUFLEN);
|
||||
dbg("ifd read %d bytes\n", x);
|
||||
if( x > 0 ){
|
||||
write( xfd, buf, x);
|
||||
ibytes += x;
|
||||
dbg("xfd %d bytes written to %d\n", x, ibytes);
|
||||
} else {
|
||||
iact = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void xfd_hdlr( void) {
|
||||
int x;
|
||||
unsigned char buf[BUFLEN];
|
||||
|
||||
x = read( xfd, buf, BUFLEN);
|
||||
dbg("xfd read %d bytes\n", x);
|
||||
if( x > 0){
|
||||
write( ofd, buf, x);
|
||||
obytes += x;
|
||||
dbg("ofd %d bytes written to %d\n", x, obytes);
|
||||
} else {
|
||||
xact = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void usage( void) {
|
||||
fprintf(dfp, "isdntelmux V.1\n");
|
||||
fprintf(dfp, "usage: isdntelmux -x device -i ifile -o ofile [-b blocks]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void dbg( char *fmt, ... ) {
|
||||
va_list ap;
|
||||
|
||||
if( opt_dbg == 0 )
|
||||
return;
|
||||
va_start( ap, fmt );
|
||||
vfprintf( dfp, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# collect callout and callback statistics for the isp0 i/f
|
||||
#
|
||||
# enable budget callout and callback restrictions and file
|
||||
# rotation in the isdnd.rc file.
|
||||
#
|
||||
# last edit-date: [Fri May 25 15:22:45 2001]
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# this is the entry for mrtg in mrtg.cfg
|
||||
#---------------------------------------------------------------------------
|
||||
# Target[ernie.cstat.isp0]: `/usr/local/etc/mrtg/util/mrtg-isp0.sh`
|
||||
# MaxBytes[ernie.cstat.isp0]: 10
|
||||
# AbsMax[ernie.cstat.isp0]: 200
|
||||
# Title[ernie.cstat.isp0]: isp0: callouts / callbacks
|
||||
# PageTop[ernie.cstat.isp0]: <H1> isp0: callouts /callbacks </H1>
|
||||
# Options[ernie.cstat.isp0]: gauge, nopercent, integer
|
||||
# YLegend[ernie.cstat.isp0]: co / cb
|
||||
# ShortLegend[ernie.cstat.isp0]: n
|
||||
# Legend1[ernie.cstat.isp0]: callouts
|
||||
# Legend2[ernie.cstat.isp0]: callbacks
|
||||
# LegendI[ernie.cstat.isp0]: callouts:
|
||||
# LegendO[ernie.cstat.isp0]: callbacks:
|
||||
# WithPeak[ernie.cstat.isp0]: ymwd
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# this is the shell script run by mrtg
|
||||
#---------------------------------------------------------------------------
|
||||
if [ -r /var/log/isdn/callouts.isp0 ]
|
||||
then
|
||||
cat /var/log/isdn/callouts.isp0 | awk '{print $3}'
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
|
||||
if [ -r /var/log/isdn/callbacks.isp0 ]
|
||||
then
|
||||
cat /var/log/isdn/callbacks.isp0 | awk '{print $3}'
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
|
||||
uptime | cut -c 12-18
|
||||
uname -nsr
|
||||
|
||||
exit 0
|
||||
|
@ -1,19 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG = i4brunppp
|
||||
SRCS = i4brunppp.c
|
||||
MAN = i4brunppp.8
|
||||
|
||||
RUNPPPDEST= /etc/isdn
|
||||
|
||||
INSTALL ?= install
|
||||
|
||||
install:
|
||||
@echo i4brunppp is not installed automatically. In case you want to run
|
||||
@echo user-ppp in dial-in server under i4b, please copy it into /etc/isdn.
|
||||
|
||||
installetc: i4brunppp
|
||||
${INSTALL} -m ${BINMODE} -o ${BINOWN} -g ${BINGRP} \
|
||||
${.CURDIR}/i4brunppp ${RUNPPPDEST}
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,18 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
BEWARE: HIGHLY EXPERIMENTAL!
|
||||
---------------------------
|
||||
|
||||
This program is used in conjunction with an isdnd.rc entry similar to
|
||||
|
||||
regexpr = "ULPPP.*call active" # look for matches in log messages
|
||||
regprog = i4brunppp # execute program when match is found
|
||||
|
||||
this one (see also i4brunppp-isdnd.rc).
|
||||
|
||||
i4brunppp _must_ be put into /etc/isdn!
|
||||
|
||||
When an active call is detected, isdnd fires off i4brunppp, which attaches
|
||||
the rbch device used to stdin/stdout and then runs ppp which is given the
|
||||
"-direct" command and the string "inc_rbchX" (where X is the i4brbch unit
|
||||
number) as arguments.
|
@ -1,65 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# sample isdnd.rc for taking incoming calls with userland ppp
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# last edit-date: [Sat Jul 21 13:40:50 2001]
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
#==============================================================================
|
||||
# SYSTEM section: global configuration parameters
|
||||
#==============================================================================
|
||||
system
|
||||
|
||||
ratesfile = /etc/isdn/isdnd.rates # name & location of rates file
|
||||
|
||||
useacctfile = yes # generate accouting info to file
|
||||
acctall = on # generate info for everything
|
||||
acctfile = /var/log/isdnd.acct # name & location of accounting file
|
||||
|
||||
rtprio = 25 # modify isdnd's priority
|
||||
|
||||
regexpr = "ULPPP.*call active" # look for matches in log messages
|
||||
regprog = i4brunppp # execute program when match is found
|
||||
|
||||
#==============================================================================
|
||||
# ENTRY: Userland PPP over ISDN
|
||||
#==============================================================================
|
||||
entry
|
||||
|
||||
name = ULPPP # name for reference
|
||||
|
||||
usrdevicename = rbch # ipr, tel, rbch
|
||||
usrdeviceunit = 0 # unit number
|
||||
|
||||
isdncontroller = 0 # contoller to use or -1 to use any
|
||||
isdnchannel = -1 # channel (1/2) to use or 0 or -1 for any
|
||||
|
||||
# numbers used to verify at DIAL IN
|
||||
local-phone-incoming = 567 # this is my number
|
||||
remote-phone-incoming = 123 # this one can call in
|
||||
|
||||
# numbers used to DIAL OUT
|
||||
local-phone-dialout = 567 # this is my number
|
||||
remote-phone-dialout = 123 # i call this number
|
||||
|
||||
remdial-handling = first # first, last or next
|
||||
|
||||
dialin-reaction = accept # accept, reject, ignore, answer
|
||||
|
||||
dialout-type = normal # normal / calledback
|
||||
|
||||
b1protocol = hdlc # hdlc, raw
|
||||
|
||||
idletime-incoming = 30 # 3 seconds idle timeout
|
||||
idletime-outgoing = 30 # 3 seconds idle timeout
|
||||
|
||||
ratetype = 0 # ratesfile entry to use
|
||||
unitlength = 60 # unitlength to assume
|
||||
|
||||
dialretries = 2 # # of dial retries
|
||||
recoverytime = 5 # time to wait between 2 dial tries
|
||||
|
||||
# EOF #########################################################################
|
@ -1,51 +0,0 @@
|
||||
.\"
|
||||
.\" Copyright (c) 1999, 2001 Hellmuth Michaelis. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.\" last edit-date: [Sat Jul 21 13:37:00 2001]
|
||||
.\"
|
||||
.Dd July 28, 1999
|
||||
.Dt I4BRUNPPP 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm i4brunppp
|
||||
.Nd interface i4b to userland ppp in server mode
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility
|
||||
is part of the isdn4bsd package and is used to interface i4b to the so-called
|
||||
userland
|
||||
.Xr ppp 8
|
||||
when dialling into an i4b machine.
|
||||
.Sh FILES
|
||||
.Bl -tag -width ".Pa /dev/i4brbchX"
|
||||
.It Pa /dev/i4brbchX
|
||||
.El
|
||||
.Sh AUTHORS
|
||||
The
|
||||
.Nm
|
||||
utility and this manpage were written by
|
||||
.An Hellmuth Michaelis Aq hm@FreeBSD.org .
|
@ -1,224 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2001 Hellmuth Michaelis. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
* i4brunppp - run userland ppp for incoming call from rbch i/f
|
||||
* ------------------------------------------------------------
|
||||
*
|
||||
* $FreeBSD$
|
||||
*
|
||||
* last edit-date: [Sat Jul 21 13:38:10 2001]
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
* BEWARE: HIGHLY EXPERIMENTAL!
|
||||
* ---------------------------
|
||||
*
|
||||
* This program is used in conjunction with an isdnd.rc entry similar to
|
||||
*
|
||||
* regexpr = "ULPPP.*call active" # look for matches in log messages
|
||||
* regprog = i4brunppp # execute program when match is found
|
||||
*
|
||||
* this one. It _must_ be put into /etc/isdn!
|
||||
* When an active call is detected, isdnd fires off i4brunppp, which attaches
|
||||
* the rbch device used to stdin/stdout and then runs ppp which is given the
|
||||
* "-direct" command and the string "inc_rbchX" (where X is the i4brbch unit
|
||||
* number) as arguments.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <syslog.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <i4b/i4b_ioctl.h>
|
||||
#include <i4b/i4b_rbch_ioctl.h>
|
||||
|
||||
#define I4BDEVICE "/dev/i4b"
|
||||
|
||||
#define PPPPROG "/usr/sbin/ppp"
|
||||
#define PPPNAME "ppp"
|
||||
#define PPPARG1 "-direct"
|
||||
#define PPPLABEL "inc_"
|
||||
|
||||
#define VERIFYSTRING "call active"
|
||||
#define DEVSTRING "rbch"
|
||||
|
||||
#define PPPDEBUG
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* program entry
|
||||
*---------------------------------------------------------------------------*/
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
char buffer[256];
|
||||
int rbch_fd;
|
||||
char *p = "DeadPointer";
|
||||
int found;
|
||||
int i;
|
||||
|
||||
#ifdef PPPDEBUG
|
||||
FILE *dfp;
|
||||
time_t tim;
|
||||
register struct tm *tp;
|
||||
#endif
|
||||
|
||||
/* open syslog */
|
||||
|
||||
(void)openlog("i4brunppp", LOG_PID|LOG_CONS|LOG_NDELAY, LOG_USER);
|
||||
|
||||
#ifdef PPPDEBUG
|
||||
|
||||
/* open debug log */
|
||||
|
||||
if((dfp = fopen("/tmp/i4brunppp-debug.log", "a")) == NULL)
|
||||
{
|
||||
syslog(LOG_INFO, "cannot open logfile: %s", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
tim = time(NULL);
|
||||
tp = localtime(&tim);
|
||||
strftime(buffer, 40, I4B_TIME_FORMAT, tp);
|
||||
fprintf(dfp, "\n=================== %s ===================\n", buffer);
|
||||
|
||||
for(i=0; i < argc; i++)
|
||||
fprintf(dfp, "\t%s\n", argv[i]);
|
||||
#endif
|
||||
|
||||
/* check if this is the right message */
|
||||
|
||||
found = 0;
|
||||
|
||||
for(i=0; i < argc; i++)
|
||||
{
|
||||
if((strstr(argv[i], VERIFYSTRING)) != NULL)
|
||||
{
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(found == 0)
|
||||
{
|
||||
#ifdef PPPDEBUG
|
||||
fprintf(dfp, "did not found [%s], exit\n", VERIFYSTRING);
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
||||
found = 0;
|
||||
|
||||
/* check if we got a good device name */
|
||||
|
||||
for(; i < argc; i++)
|
||||
{
|
||||
if((p = strstr(argv[i], DEVSTRING)) != NULL)
|
||||
{
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(found == 0)
|
||||
{
|
||||
#ifdef PPPDEBUG
|
||||
fprintf(dfp, "did not found [%s], exit\n", DEVSTRING);
|
||||
#endif
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* everything ok, now prepare for running ppp */
|
||||
|
||||
/* close all file descriptors */
|
||||
|
||||
i = getdtablesize();
|
||||
|
||||
for(;i >= 0; i--)
|
||||
if (i != 2)
|
||||
close(i);
|
||||
|
||||
/* fiddle a terminating zero after the rbch unit number */
|
||||
|
||||
p += strlen(DEVSTRING);
|
||||
|
||||
if(isdigit(*p) && isdigit(*(p+1)))
|
||||
*(p+2) = '\0';
|
||||
else
|
||||
*(p+1) = '\0';
|
||||
|
||||
/* construct /dev/i4brbchX device name */
|
||||
|
||||
sprintf(buffer, "%s%s%s", I4BDEVICE, DEVSTRING, p);
|
||||
|
||||
/* open the rbch device as fd 0 = stdin */
|
||||
|
||||
rbch_fd = open(buffer, O_RDWR);
|
||||
|
||||
if(rbch_fd != 0)
|
||||
{
|
||||
if(rbch_fd < 0)
|
||||
syslog(LOG_INFO, "cannot open %s: %s", buffer, strerror(errno));
|
||||
else
|
||||
syslog(LOG_INFO, "cannot open %s as fd 0 (is %d): %s", buffer, rbch_fd, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* dup rbch device fd as fd 1 = stdout */
|
||||
|
||||
if((i = dup(rbch_fd)) != 1)
|
||||
{
|
||||
if(i < 0)
|
||||
syslog(LOG_INFO, "cannot dup rbch_fd: %s", strerror(errno));
|
||||
else
|
||||
syslog(LOG_INFO, "cannot dup rbch as fd 1 (is %d): %s", i, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* construct the label for ppp's ppp.conf file */
|
||||
|
||||
sprintf(buffer, "%s%s%s", PPPLABEL, DEVSTRING, p);
|
||||
|
||||
syslog(LOG_INFO, "executing: %s %s %s %s", PPPPROG, PPPNAME, PPPARG1, buffer);
|
||||
|
||||
/* execute ppp */
|
||||
|
||||
if((execl(PPPPROG, PPPNAME, PPPARG1, buffer, NULL)) == -1)
|
||||
{
|
||||
syslog(LOG_INFO, "cannot exec: %s", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
syslog(LOG_INFO, "finished: %s %s %s %s", PPPPROG, PPPNAME, PPPARG1, buffer);
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* EOF */
|
@ -1,13 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= v21modem
|
||||
NO_MAN=
|
||||
DPADD= ${LIBUTIL} ${LIBM}
|
||||
LDADD= -lutil -lm
|
||||
CFLAGS+= -g -Wall
|
||||
|
||||
.if !defined(BSDTYPE)
|
||||
BSDTYPE!=uname
|
||||
.endif
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,50 +0,0 @@
|
||||
|
||||
V.21 Modem for ISDN4BSD.
|
||||
|
||||
INTRODUCTION:
|
||||
|
||||
The modem is implemented in software and is rather simple minded.
|
||||
|
||||
It works with my Telebit TB2500 and Zyxel 2864I modems.
|
||||
|
||||
There are plenty of knobs and handles which can be adjusted and I have
|
||||
no real idea what to set them to for best all-round performance.
|
||||
|
||||
The carrier detect timer may be a bit short tempered, and this is
|
||||
probably why the dialing modem needs to be told to talk V.21 up
|
||||
front. If this code were mode tolerant of loss of carrier auto
|
||||
negotiation might work.
|
||||
|
||||
When you get carrier ("CONNECT 300"), you must press a key before the
|
||||
login banner gets printed. See the comments in "input_byte" why this
|
||||
is.
|
||||
|
||||
THE KERNEL PART:
|
||||
|
||||
Implementes a crude "send these tones" facility, but it is enough to
|
||||
take most of the real-time worries out of doing FSK modulation in
|
||||
software. If suitably extended, the code could also be used to
|
||||
send DTMF tones and other similar signals.
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
The program is started from /etc/isdn/isdnd.rc:
|
||||
|
||||
entry
|
||||
name = I4BTEL
|
||||
usrdevicename = tel
|
||||
usrdeviceunit = 0
|
||||
isdncontroller = 0
|
||||
isdnchannel = -1
|
||||
local-phone-incoming = 2934812934
|
||||
remote-phone-incoming = *
|
||||
dialin-reaction = answer
|
||||
answerprog = v21modem
|
||||
b1protocol = raw
|
||||
idletime-incoming = 5
|
||||
|
||||
|
||||
Poul-Henning (phk@freebsd.org)
|
||||
19991212
|
||||
|
||||
$FreeBSD$
|
@ -1,394 +0,0 @@
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
* "THE BEER-WARE LICENSE" (Revision 42):
|
||||
* <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
|
||||
* can do whatever you want with this stuff. If we meet some day, and you think
|
||||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* This is a V.21 modem for ISDN4BSD.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <err.h>
|
||||
#include <sys/ioccom.h>
|
||||
#include <errno.h>
|
||||
#include <syslog.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <libutil.h>
|
||||
|
||||
#include <i4b/i4b_tel_ioctl.h>
|
||||
|
||||
static void create_session(void);
|
||||
static void input_byte(int byte, int stopbit);
|
||||
static void sample(int vol, int* tones);
|
||||
static void tonedetect(unsigned char *ptr, int count);
|
||||
static void uart(int bit);
|
||||
|
||||
static int dcd; /* Carrier on ? */
|
||||
static int ptyfd = -1; /* PTY filedescriptor */
|
||||
static int telfd = -1; /* I4BTEL filedescriptor */
|
||||
|
||||
/*
|
||||
* Alaw to Linear [-32767..32767] conversion
|
||||
*/
|
||||
|
||||
static int a2l[256] = { -5504, -5248, -6016, -5760, -4480, -4224,
|
||||
-4992, -4736, -7552, -7296, -8064, -7808, -6528, -6272, -7040,
|
||||
-6784, -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
|
||||
-3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392, -22016,
|
||||
-20992, -24064, -23040, -17920, -16896, -19968, -18944, -30208,
|
||||
-29184, -32256, -31232, -26112, -25088, -28160, -27136, -11008,
|
||||
-10496, -12032, -11520, -8960, -8448, -9984, -9472, -15104, -14592,
|
||||
-16128, -15616, -13056, -12544, -14080, -13568, -344, -328, -376,
|
||||
-360, -280, -264, -312, -296, -472, -456, -504, -488, -408, -392,
|
||||
-440, -424, -88, -72, -120, -104, -24, -8, -56, -40, -216, -200,
|
||||
-248, -232, -152, -136, -184, -168, -1376, -1312, -1504, -1440,
|
||||
-1120, -1056, -1248, -1184, -1888, -1824, -2016, -1952, -1632,
|
||||
-1568, -1760, -1696, -688, -656, -752, -720, -560, -528, -624,
|
||||
-592, -944, -912, -1008, -976, -816, -784, -880, -848, 5504, 5248,
|
||||
6016, 5760, 4480, 4224, 4992, 4736, 7552, 7296, 8064, 7808, 6528,
|
||||
6272, 7040, 6784, 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
|
||||
3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, 22016, 20992, 24064,
|
||||
23040, 17920, 16896, 19968, 18944, 30208, 29184, 32256, 31232,
|
||||
26112, 25088, 28160, 27136, 11008, 10496, 12032, 11520, 8960, 8448,
|
||||
9984, 9472, 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
|
||||
344, 328, 376, 360, 280, 264, 312, 296, 472, 456, 504, 488, 408,
|
||||
392, 440, 424, 88, 72, 120, 104, 24, 8, 56, 40, 216, 200, 248, 232,
|
||||
152, 136, 184, 168, 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
|
||||
1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, 688, 656, 752, 720,
|
||||
560, 528, 624, 592, 944, 912, 1008, 976, 816, 784, 880, 848 };
|
||||
|
||||
/*
|
||||
* A High Q Tone detector
|
||||
*/
|
||||
|
||||
#define NTONES 2 /* Number of tones to detect */
|
||||
#define SCALE 4096 /* Scaling factor */
|
||||
#define EXPAVG 14 /* Exponential Average factor */
|
||||
#define POLERAD 3885 /* pole_radius ^ 2 * SCALE */
|
||||
|
||||
/* Table of "-cos(2 * PI * frequency / sample_rate) * SCALE" */
|
||||
static int p[NTONES] = {
|
||||
-2941, /* 980 Hz */
|
||||
-2460 /* 1180 Hz */
|
||||
};
|
||||
|
||||
static void
|
||||
tonedetect(unsigned char *ptr, int count)
|
||||
{
|
||||
int i, j;
|
||||
int y;
|
||||
int c, d, f, n;
|
||||
static int k[NTONES], h[NTONES];
|
||||
static int tones[NTONES];
|
||||
static int amplitude;
|
||||
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
y = a2l[*ptr++];
|
||||
if (y > 0)
|
||||
amplitude += (y - amplitude) / EXPAVG;
|
||||
else
|
||||
amplitude += (-y - amplitude) / EXPAVG;
|
||||
|
||||
for(j = 0; j < NTONES; j++) {
|
||||
c = (POLERAD * (y - k[j])) / SCALE;
|
||||
d = y + c;
|
||||
f = (p[j] * (d - h[j])) / SCALE;
|
||||
n = y - k[j] - c;
|
||||
if (n < 0)
|
||||
n = -n;
|
||||
k[j] = h[j] + f;
|
||||
h[j] = f + d;
|
||||
tones[j] += (n - tones[j]) / EXPAVG;
|
||||
}
|
||||
sample(amplitude, tones);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Taste each sample, detect (loss off) carrier, and feed uart
|
||||
*/
|
||||
|
||||
#define NCARRIER 1000 /* Samples of carrier for detection */
|
||||
|
||||
static void
|
||||
sample(int vol, int* tones)
|
||||
{
|
||||
static int carrier;
|
||||
|
||||
if ((tones[0] + tones[1]) > vol * 3/2) { /* XXX */
|
||||
if (carrier < NCARRIER)
|
||||
carrier ++;
|
||||
} else {
|
||||
if (carrier > 0)
|
||||
carrier --;
|
||||
}
|
||||
|
||||
if (!dcd && carrier > NCARRIER / 2) {
|
||||
syslog(LOG_ERR, "CARRIER ON");
|
||||
dcd = 1;
|
||||
} else if (dcd && carrier < NCARRIER / 2) {
|
||||
syslog(LOG_ERR, "CARRIER OFF");
|
||||
dcd = 0;
|
||||
}
|
||||
|
||||
if (!dcd)
|
||||
return;
|
||||
|
||||
if (tones[0] > tones[1]) {
|
||||
uart(1);
|
||||
} else {
|
||||
uart(0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* A UART in software
|
||||
*/
|
||||
|
||||
#define BITCENTER 13 /* Middle of a bit: 8000/300/2 */
|
||||
static int bitsample[] = { /* table of sampling points */
|
||||
BITCENTER,
|
||||
BITCENTER + 27,
|
||||
BITCENTER + 54,
|
||||
BITCENTER + 80,
|
||||
BITCENTER + 107,
|
||||
BITCENTER + 134,
|
||||
BITCENTER + 160,
|
||||
BITCENTER + 187,
|
||||
BITCENTER + 214,
|
||||
BITCENTER + 240
|
||||
};
|
||||
|
||||
static void
|
||||
uart(int bit)
|
||||
{
|
||||
static int n, v, j;
|
||||
|
||||
if (n == 0 && bit == 1)
|
||||
return; /* Waiting for start bit */
|
||||
if (n == 0) {
|
||||
j = 0; /* Begin start bit */
|
||||
v = 0;
|
||||
n++;
|
||||
} else if (j == 0 && bit && n > bitsample[j]) {
|
||||
n = 0; /* Gone by middle of start bit */
|
||||
} else if (n > bitsample[j]) {
|
||||
j++; /* Sample point */
|
||||
if (j == 10) {
|
||||
n = 0;
|
||||
input_byte(v, bit);
|
||||
} else {
|
||||
v = v / 2 + 128 * bit;
|
||||
n++;
|
||||
}
|
||||
} else {
|
||||
n++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Send a byte using kenrnel tone generation support
|
||||
*/
|
||||
|
||||
static void
|
||||
output_byte(int val)
|
||||
{
|
||||
struct i4b_tel_tones tt;
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
tt.frequency[i] = 1850; tt.duration[i++] = 27;
|
||||
|
||||
tt.frequency[i] = val & 1 ? 1650 : 1850; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = val & 2 ? 1650 : 1850; tt.duration[i++] = 26;
|
||||
tt.frequency[i] = val & 4 ? 1650 : 1850; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = val & 8 ? 1650 : 1850; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = val & 16 ? 1650 : 1850; tt.duration[i++] = 26;
|
||||
tt.frequency[i] = val & 32 ? 1650 : 1850; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = val & 64 ? 1650 : 1850; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = val & 128 ? 1650 : 1850; tt.duration[i++] = 26;
|
||||
|
||||
tt.frequency[i] = 1650; tt.duration[i++] = 27;
|
||||
tt.frequency[i] = 1650; tt.duration[i++] = 0;
|
||||
|
||||
i = ioctl(telfd, I4B_TEL_TONES, &tt);
|
||||
if (i != 0 && errno != EAGAIN) {
|
||||
syslog(LOG_ERR, "%d: *** %d/%d ***", __LINE__, i, errno);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Create Session
|
||||
*/
|
||||
|
||||
static void
|
||||
create_session(void)
|
||||
{
|
||||
int i;
|
||||
char buf[100];
|
||||
|
||||
i = forkpty(&ptyfd, buf, 0, 0);
|
||||
if (i == 0) {
|
||||
execl("/usr/libexec/getty", "getty", "std.300", "-",
|
||||
(char *)NULL);
|
||||
syslog(LOG_ERR, "exec getty %d", errno);
|
||||
exit(2);
|
||||
} else if (i < 0) {
|
||||
syslog(LOG_ERR, "forkpty failed %d", errno);
|
||||
exit(2);
|
||||
}
|
||||
syslog(LOG_ERR, "pty %s", buf);
|
||||
}
|
||||
|
||||
static void
|
||||
input_byte(int byte, int stopbit)
|
||||
{
|
||||
u_char c;
|
||||
int i;
|
||||
static int first;
|
||||
static u_char buf[80];
|
||||
|
||||
if (!stopbit)
|
||||
return;
|
||||
c = byte;
|
||||
/*
|
||||
* I have no idea why, but my TB2500 modem sends a sequence of
|
||||
* 28 bytes after carrier is established at the link level, but
|
||||
* before it is acceptted at the logical level.
|
||||
*
|
||||
* [16100214010201060100000000ff0201020301080402400010034510]
|
||||
*
|
||||
* Unfortunately this contains a ^D which kills getty.
|
||||
* The following code swallows this sequence, assuming that it
|
||||
* is always the same length and always start with 0x16.
|
||||
*
|
||||
*/
|
||||
if (first == 0 && c == 0x16) {
|
||||
sprintf(buf, "%02x", c);
|
||||
first = 27;
|
||||
return;
|
||||
} else if (first == 0) {
|
||||
first = -1;
|
||||
dcd = 2;
|
||||
return;
|
||||
}
|
||||
if (first > 0) {
|
||||
sprintf(buf + strlen(buf), "%02x", c);
|
||||
first--;
|
||||
if (!first) {
|
||||
syslog(LOG_NOTICE, "Got magic [%s]", buf);
|
||||
*buf = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (ptyfd != -1 && dcd) {
|
||||
i = write(ptyfd, &c, 1);
|
||||
if (i != 1 && errno != EAGAIN) {
|
||||
syslog(LOG_ERR, "%d: *** %d/%d ***", __LINE__, i, errno);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
char *device = "/dev/tel0";
|
||||
u_char ibuf[2048];
|
||||
int ii, io;
|
||||
int i, maxfd;
|
||||
struct i4b_tel_tones tt;
|
||||
fd_set rfd, wfd, efd;
|
||||
|
||||
openlog("v21modem", LOG_PID, LOG_DAEMON);
|
||||
/* Find our device name */
|
||||
for (i = 0; i < argc; i++)
|
||||
if (!strcmp(argv[i], "-D"))
|
||||
device = argv[i + 1];
|
||||
telfd = open(device, O_RDWR, 0);
|
||||
if (telfd < 0) {
|
||||
syslog(LOG_ERR, "open %s: %m", device);
|
||||
exit (0);
|
||||
}
|
||||
syslog(LOG_NOTICE, "Running on %s", device);
|
||||
|
||||
/* Output V.25 tone and carrier */
|
||||
i = 0;
|
||||
tt.frequency[i] = 0; tt.duration[i++] = 1000;
|
||||
tt.frequency[i] = 2100; tt.duration[i++] = 2*8000;
|
||||
tt.frequency[i] = 0; tt.duration[i++] = 400;
|
||||
tt.frequency[i] = 1650; tt.duration[i++] = 1;
|
||||
tt.frequency[i] = 1650; tt.duration[i++] = 0;
|
||||
tt.frequency[i] = 0; tt.duration[i++] = 0;
|
||||
i = ioctl(telfd, I4B_TEL_TONES, &tt);
|
||||
if (i < 0) {
|
||||
syslog(LOG_ERR, "hangup");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
create_session();
|
||||
|
||||
/* Wait for carrier */
|
||||
do {
|
||||
ii = read(telfd, ibuf, sizeof ibuf);
|
||||
tonedetect(ibuf, ii);
|
||||
} while (ii > 0 && dcd != 2);
|
||||
if (ii < 0) {
|
||||
syslog(LOG_ERR, "hangup");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
maxfd = ptyfd;
|
||||
if (telfd > maxfd)
|
||||
maxfd = telfd;
|
||||
maxfd += 1;
|
||||
do {
|
||||
FD_ZERO(&rfd);
|
||||
FD_SET(telfd, &rfd);
|
||||
FD_SET(ptyfd, &rfd);
|
||||
FD_ZERO(&wfd);
|
||||
FD_ZERO(&efd);
|
||||
FD_SET(telfd, &efd);
|
||||
FD_SET(ptyfd, &efd);
|
||||
i = select(maxfd, &rfd, &wfd, &efd, NULL);
|
||||
if (FD_ISSET(telfd, &rfd)) {
|
||||
ii = read(telfd, ibuf, sizeof ibuf);
|
||||
if (ii > 0)
|
||||
tonedetect(ibuf, ii);
|
||||
else
|
||||
syslog(LOG_ERR, "hangup");
|
||||
}
|
||||
if (FD_ISSET(ptyfd, &rfd)) {
|
||||
io = read(ptyfd, ibuf, 1);
|
||||
if (io == 1)
|
||||
output_byte(*ibuf);
|
||||
else if (io == 0) {
|
||||
syslog(LOG_ERR, "Session EOF");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
if (FD_ISSET(telfd, &efd)) {
|
||||
syslog(LOG_ERR, "Exception TELFD");
|
||||
exit (0);
|
||||
}
|
||||
if (FD_ISSET(ptyfd, &efd)) {
|
||||
syslog(LOG_ERR, "Exception PTYFD");
|
||||
exit (0);
|
||||
}
|
||||
} while (dcd);
|
||||
syslog(LOG_ERR, "Carrier Lost");
|
||||
exit(0);
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
# example of a configuration file for the isdn daemon & user-ppp
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
|
||||
# SYSTEM section: isdnd global configuration parameters
|
||||
|
||||
system
|
||||
|
||||
# accounting
|
||||
|
||||
acctall = on # generate info for everything
|
||||
acctfile = /var/log/isdnd.acct # name & location of accounting file
|
||||
useacctfile = yes # generate accouting info to file
|
||||
isdntime = on
|
||||
monitor-allowed = no # global switch: monitor on/off
|
||||
|
||||
|
||||
# User-ppp example
|
||||
|
||||
entry
|
||||
name = userppp0
|
||||
usrdevicename = rbch
|
||||
usrdeviceunit = 0
|
||||
isdncontroller = 0
|
||||
isdnchannel = -1
|
||||
local-phone-incoming = 1234567
|
||||
remote-phone-incoming = *
|
||||
local-phone-dialout = 1234567 # This *MUST* be your local number
|
||||
remote-phone-dialout = 1234567 # ppp(8) will override this
|
||||
remdial-handling = first
|
||||
dialin-reaction = ignore
|
||||
dialout-type = normal
|
||||
b1protocol = hdlc
|
||||
idletime-incoming = 900 # Should be larger than ppp's timeout
|
||||
idletime-outgoing = 900 # Should be larger than ppp's timeout
|
||||
unitlength = 0
|
||||
unitlengthsrc = conf
|
||||
dialretries = 1
|
||||
dialrandincr = on
|
||||
recoverytime = 1 # Should be smaller than ppp's redial
|
||||
usedown = off
|
||||
downtries = 2
|
||||
downtime = 30
|
||||
|
||||
entry
|
||||
name = userppp1
|
||||
usrdevicename = rbch
|
||||
usrdeviceunit = 1
|
||||
isdncontroller = 0
|
||||
isdnchannel = -1
|
||||
local-phone-incoming = 1234567
|
||||
remote-phone-incoming = *
|
||||
local-phone-dialout = 1234567 # This *MUST* be your local number
|
||||
remote-phone-dialout = 1234567 # ppp(8) will override this
|
||||
remdial-handling = first
|
||||
dialin-reaction = accept
|
||||
dialout-type = normal
|
||||
b1protocol = hdlc
|
||||
idletime-incoming = 900 # Should be larger than ppp's timeout
|
||||
idletime-outgoing = 900 # Should be larger than ppp's timeout
|
||||
unitlength = 0
|
||||
unitlengthsrc = conf
|
||||
dialretries = 1
|
||||
dialrandincr = on
|
||||
recoverytime = 1 # Should be smaller than ppp's redial
|
||||
usedown = off
|
||||
downtries = 2
|
||||
downtime = 30
|
@ -1,98 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1997 Brian Somers <brian@Awfulhak.org>
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
# This is an example ppp profile for bringing up a multilink ppp connection
|
||||
# over ISDN. It needs at least version 0.83.0 of the i4b code. An example
|
||||
# isdnd configuration file is also supplied in this directory (isdnd.rc)
|
||||
#
|
||||
# NOTE: This is for use with i4b-supported ISDN cards. If you have an
|
||||
# external Terminal Adapter (TA) plugged into a serial port on your
|
||||
# machine, you should use the TA example in ppp.conf.sample.
|
||||
#
|
||||
isdn:
|
||||
set phone 12345678 # Replace this with your ISPs phone number
|
||||
|
||||
set authname "somename" # Replace these with your login name & password.
|
||||
set authkey "somepasswd" # This profile assumes you're using PAP or CHAP.
|
||||
|
||||
set enddisc mac # Assuming you have a LAN
|
||||
|
||||
enable lqr echo
|
||||
set reconnect 3 5
|
||||
set redial 3 10
|
||||
set lqrperiod 45
|
||||
disable pred1 deflate mppe
|
||||
deny pred1 deflate mppe
|
||||
|
||||
set timeout 60 300 # The minimum charge period is 5 minutes, so don't
|
||||
# hangup before then
|
||||
|
||||
# We have no chat scripts in the ISDN world (yet)
|
||||
set dial
|
||||
set login
|
||||
set logout
|
||||
set hangup
|
||||
|
||||
set device /dev/i4brbch0 /dev/i4brbch1 # Raw B-channel devices
|
||||
set speed sync # ISDN is synchronous
|
||||
|
||||
enable dns # Ask the peer what to put in resolv.conf
|
||||
|
||||
# Take a wild guess at an IP number and let the other side decide
|
||||
set ifaddr 172.16.0.1/0 212.0.0.0/0 0 0
|
||||
add! default hisaddr
|
||||
|
||||
set mrru 1500 # Multilink mode please
|
||||
set mru 1504 # Room for the MP header
|
||||
|
||||
clone 1,2 # Two new links
|
||||
link deflink rm # And get rid of the original one
|
||||
|
||||
link * set mode auto # Automatically manage the second link
|
||||
set autoload 10 80 30 # Down @10% usage, up at 80%, 30s sample
|
||||
|
||||
set server /var/run/ppp/ppp-isdn "" 0177 # The diagnostic port (-rw-------)
|
||||
|
||||
#
|
||||
# When phone calls become free (say 0:00 Saturday morning), we may want
|
||||
# this in crontab (``crontab -l'', not /etc/crontab):
|
||||
#
|
||||
# 1 0 0 0 6 /usr/sbin/pppctl /var/run/ppp/ppp-isdn link \* set mode ddial
|
||||
#
|
||||
# and when we have to pay again (say 23:59 Sunday night), we may want
|
||||
# this:
|
||||
#
|
||||
# 54 23 0 0 0 /usr/sbin/pppctl /var/run/ppp/ppp-isdn link \* set mode auto
|
||||
#
|
||||
# And of course just in case of a weekend reboot, add
|
||||
# /usr/local/etc/rc.d/ppp.sh:
|
||||
#
|
||||
# #! /bin/sh
|
||||
# [ ."$1" != .start ] && exit 0
|
||||
# case `date +%w` in
|
||||
# 6|0) /usr/sbin/pppctl /var/run/ppp/ppp-isdn link \* set mode ddial;;
|
||||
# esac
|
@ -672,8 +672,6 @@ callback-server-client-decides:
|
||||
# It's worth increasing your MTU and MRU slightly in multi-link mode to
|
||||
# prevent full packets from being fragmented.
|
||||
#
|
||||
# See ppp.conf.isdn for an example of how to do multi-link isdn.
|
||||
#
|
||||
# You can now ``dial'' specific links, or even dial all links at the
|
||||
# same time. The `dial' command may also be prefixed with a specific
|
||||
# link that should do the dialing.
|
||||
|
@ -1,323 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 0.al
|
||||
M5=75U=?7UM?4U=;3U-37U55555545%15U=7555175U965U15U=34U-?7U];6
|
||||
MT=?555175%555575U=75U=55U=37U]?7U]37U]34U5555=55555455145516
|
||||
M4U)75%77U];0T-#1T=#1UM155%=75U=55555U=37U]?7U5555U=65E=75E?5
|
||||
MU];1UM?6UM?4U5545E975U74U]?4U]?4U%555%15U=75U534T=75UU55U-35
|
||||
MU=74U555U=37U-?4U%575E965E=75-75U-34U=74U]?7U]34U5545=34U-75
|
||||
MU-75U=75U=74U5545U175575U-37UM;0T-5655915U175=34U-34U];7U]?4
|
||||
MU-3555575E%15E965%75U];1UM?7U-35U-74557555145%15U=75U575U-34
|
||||
MU=75U=34U555U5545%16U-=5U=55U=75U-75U-35U-37U]?6UM?7U]34U=54
|
||||
M5U9145965E=75U145575U-?7U-34U-37UM;6U]?4U-35U-?7U-5555175E96
|
||||
M5U965E164=35U-'0T-;6UM?7U575U-?6U];6U]545%965U14557555145=75
|
||||
MU555U=75U-34U=55U=35U=75U-?4U=555575557555755555U=35U=;0U-?7
|
||||
M55545U175U975U=55=74UM'6U-755=75U-;1T=;1UM?4U-75551745%15E15
|
||||
MU=37U]37U-5555545%75U-37U];7U]34555555574U-75U=45=76T='0T-'1
|
||||
MU]555%155575U=75555555545%145=34U]34U5555%145%15U-37UM;7U-55
|
||||
M5%74U]'0T]/0UM?55%1745!04%;7UM74U]36UM?4U5175%145575U-555515
|
||||
M5%=45U=75%145%74U-37UM'1T-#0T='1UM?455=645975%1455175%75U=75
|
||||
MU=36UM?7UM;6UU%05%=75514U=75U555U=555%145-74U-34U]'1T='1T='6
|
||||
MU-555U%04%!15E=4U=34U-34U-?7U]35U-37U]?4U=75U];1UM?455=645%6
|
||||
MU=175555U555U=74U5545U975U15U=37UM;7U];6U]3555555U=5U=55U=35
|
||||
MU=35U5755535U-?7U-75U-74U=55U=75U=35U-37U];7U]565]155=?4U=35
|
||||
MU=75U555U57555175%545U145U=45=75U-37T=#0T=;7U%545%145U15U=37
|
||||
MU]37U]155%=75U965U35U=37UM'1T=#7U]+0U=34U=75U5545U9145%65U=4
|
||||
M55=65U145=75U=;1T=;1T=#3TM/1U]545U965U=65E145U145%=45=37U]?1
|
||||
MT='1UM?4U-34U-555%=675-64%945=?3T]#0T]/1U]35555555555%15U=54
|
||||
M5U=75U975U=45%75U-?6UM;6U]555%35U-?6UM;4U-755%=75%155%55U515
|
||||
M55145-70T-?0T=?4U]?555175%555%755=74U-37U]?5U55555175U=55=74
|
||||
MU-?6U]?4U5175U1455555=74U-75U-34U-5555555=75U-?4U]?6UU=5UU55
|
||||
M551555545%555=55U=35U=75U5555-75U=?7U];7U]35U5145U=455175U14
|
||||
M5=34U]?4U-74U55555755=75U=37U]355%145%17U]565%14U-35U=75U=35
|
||||
MU=77UM;7U=74U]34U=74U]?7U=7555175E965U=4U=?7UM;6UM34U-355=75
|
||||
MU-34U-3555=45U9145975-7555=15=;4U]?7U-?7U]?7U]?7U]?4U5545514
|
||||
M5%145%965U35U=555=77U];6UM'6U]?4U-?7U-5555=645%65%545%145554
|
||||
M5=74T=#2TM/1T=+65%5645%04%965U=55575U]?7U]35U=77U];6UM;6UM;7
|
||||
MU51645!045%65U15U=555574UM;1T-#1T='6U];7U-555=555%=65U145516
|
||||
M4U955E155%75U-?6T='0T='6U]7555555575U]?4U=545E=75U145%145%15
|
||||
MU=36UM34U-34U-37U-34U]35U55555145%145U175U155-33UM74U-31UM?7
|
||||
MU-34U-34U-35U-34U5=65E965U15U=55U=74U-34U-34U-555555U=555=75
|
||||
MU=77U];6U]155%15U=34U575U-?6UM;3T574U%1555175E=45%965%34U-37
|
||||
MU-5555175E975-77T=/2T];4U=575U=5U-?7U=55U=7555545%175E74U-?6
|
||||
MUM;7U]34U]575E965U35T=15U%555555U=75U-34U]?6UM?4U-755575U=35
|
||||
MU-555%=65U=45%15U=37U]'7U-755%1555545%175U=45=77U]?4U=555=77
|
||||
MU]?7UM57U-?5U-75U=77U]?7U-?7U]355=545%555%965U145%74U-;7UM;7
|
||||
MU-34U-34UM;7U5165E%145975%155=75555555545%15U=36T=#6T-W1U];7
|
||||
MU-555%=45%1555=75%555%175U14U-?1T]+2T-'7U-?45%914%975%545555
|
||||
MU=75U-745%175U75U-?7UM;1T='6UM?555175E=14E=55U145%74U];1T=#1
|
||||
MU]34U-35U5545%755575U]35U51645!15U75U-;6U];7U]34U5555%75U=75
|
||||
MU-34U=555%155%54551455555]7155555U35U=34U];6T='7U]37U-755%=4
|
||||
M5U=5U535U-?5U=55U=36U-74UM14U%51U%115%=7U-;4U%=75%=5U=77U=75
|
||||
MU=?7UM#3T]/0U5%45U!04597UU?55576U-'5U=75U]34U-555E=15E=5U-?6
|
||||
MU]'1UM;5555555=55%!7TU'05%335-Y6T%%5U5;445565U17U5=5U=31U]'1
|
||||
MW=34U%575%=75U15U-34U-37U]?7U=35U-?6T=;7U5545E%145965U34U]34
|
||||
MU-34U%555U=45=77UM'0T-;7U-555%965U=75-75U-35U%=1U-34T=#1T=;6
|
||||
MU]555U145%=65E=75U35U5545555U=55U=74U];1T=#0T=?4U-35U=555517
|
||||
M5E965U175575U-?45=75U=34U];6T=;6TMS0T-955E904%!045975=75U=75
|
||||
M55555%55U=77T='1UM'6U]?5U5145U=75%1455145%15U=?6U]34U=75U=34
|
||||
MU];1T=;6U]?7U5575E9275%04515U-;1T='0T=?7U-555575U-755575U=75
|
||||
MU5575E=65U=45U=45=37T=#0T='6UM;7U]555%=65U=75U15U=345=75U=77
|
||||
MU]?7U-'05=755-74U-1555145U965U155=34U]?7UM355=74U-75U=74U-?6
|
||||
MU]?455545U=45515U=75U=555U145%75U=34U];1T='1UM;7U]?445-745%7
|
||||
M5%7555555=75U-35U=7555555%15U=37U]37U];6T-'6U]355%9645!04%!6
|
||||
M5-36T=;7U]155575U=?6UM'6UM?4U5145U145U34UE145%975555U=37UM'6
|
||||
MU];1T=?455965U=75U=5U=55U=75U555U=?7UM;6UM=55U=75U15U=34U]35
|
||||
MU=74U]35U575U-34U5575U=45%!0U575UM'0T-;6UM;4U=555=75U=37U-55
|
||||
M5U=65E965U=65U145=36T-/0T]#6UM545U145%155=74U=35U=5555145%75
|
||||
MU-74U=37U]75UM95U=5455175U=75U35U]'1T-#6U]35U=74U-34U5545U=6
|
||||
M5U965E945=74U];6UM;6UM?7UM;6U]?4U]?7U]5555145%175%175%545%10
|
||||
M4%55U=?4U]?7U]?7U]?7U]?4U-34U-34U=755=7555155%965%145%145574
|
||||
MU-;6UM;1UM?4U555U=555555U-34U5545U915E=4U=?7UM+3U]'7U-34U=55
|
||||
M5%=645%15E975%15U=34U]?7U]?4U-?1T=#0T-?4U=55U5545%=65E965U=4
|
||||
M5%74U-?6T=;7U]?7U-5555175U74U-;1U=76U5145U965U74U]?7U]?55517
|
||||
M5U=75E145=34UM;1T-'0UM?4U5145%55U5555%915U35U]?7UM35U=75U=37
|
||||
MU]?7UM;7U]34U-545E;455955%155%145%15U-?7U]?4U5555%75U=75U=55
|
||||
M5=75U=555575U=74U-37U-?7U];6U]15555455555=74U=37U-545E=75%75
|
||||
MU-37UE35UM35U575U=755575U=7555145%15U-?7U]155%175%555=55U=37
|
||||
MU-35U=77U]?5U-75U5575U155=34U5555%75U=74U-36UM'1UM;6W=!5U%57
|
||||
M5E9645975E155=75U5555=55U=74U]?4U-745=75U=37U-555U9645%65%74
|
||||
MU]'1T='1U]35U=75U=555=75U=35U5545%14U=575=145-55U-?7U]?4U]34
|
||||
MU-34U5555%175U15U=34U-55557555555%145=74U5155%155574U-?6U]34
|
||||
MU575U=36U]?4U-555U=75U=65='1U]'6U]34U=37U-555%145%=5U=755555
|
||||
M555555555555U=36T='1T=;4U55555545%145%145%145%555=75U5555=74
|
||||
MU-37U]'1T=;75]37U=7555545%175U74U-37U]?4U=75U=545U965U35U-?5
|
||||
MU=74U-34U-35U=75U-?6U]74U=75U=75U=5455545%15U=?6U]37U%545E36
|
||||
M55=55U=555555=75U-37U];6U]?6U]'1UM;4U5545%915U=4U=34U-345515
|
||||
MU-?4U-35U575U575U=74U5545U%045975U15U575U-37U537T=;3T]+2T]#6
|
||||
MU]1555=75E975%145%545U914%-045=5U-?6T=#0T-;7U5545%74UM'6T='7
|
||||
MU]34U575553555175E145%55U=3555?5UU5755175%75U]?4U=35U-34U]?4
|
||||
MU=74U-?6T=;1UM?6U]35U-755%=65E=75E!04%!65]77UM'1UM?7U-?55=74
|
||||
MUM;1T='1U]155%=65U!?4%=15%75UM'1T=;7U-?7U]?7U]?4U5545%155%14
|
||||
M5U914%!05E14U-;0T=;7UM?6U]?6U]?7U]?7UM'7U-145E%045145554U=75
|
||||
MU517U-'45=34U=145U=15E=65575U-?6U];4U-;4U-555=77U];6U];7U-75
|
||||
MU=3455575E904%%05E965E34U=;7U-75U=745=75U=;6T=#0UM'45-355=34
|
||||
MU=34U=35U=75U-35U-35U-35U=755%=65U=65E945U1555175%75U5555%74
|
||||
MU]?6T-#1T]'7UM'1T=#1T='6U]3555145%965E775%=55U145U145U165E14
|
||||
MU=555%145-74U-?1UM;6U]35U=?6U];6U]#3T='6U-;3T=;1U]7555=65E96
|
||||
M5E965E975U=14U)24U-75%745576T=;6T='1UM'4U-/1UM'1U-?7U]'1T-#1
|
||||
MUM?1UU5555575=34U=?6UM35U5=14UU=7%U275Q>7UQ24%;5U=74U576UM?2
|
||||
MW=W<W]_?W-S9WMS0T-?7U%34UM?4U5545%155%145%175U=75U%14%)275Q?
|
||||
M7UY?7UQ24U!65U54U='<W]C:Q<7:V]G;V-[9W]+2T-'6U-?455=745!145U>
|
||||
M5E17551645%075)=7%E86UM86%A97%!15E71T]S>WL7$QL''QL3$Q,3%V=_2
|
||||
MW=W155=14%Q?7U]<4E!65E95U-7455=14UQ>7EE:1$1:7U)97U-35U=4U];0
|
||||
MW=G:QL3&QL'&P<':V][<W]_2T=5545-34EU?65Y24%=5U-'2W=/0UE514EA$
|
||||
M1T=$15I;65A>7UQ34%=5U]/<WMK&P,'%V,3%Q<?%W-S2W=+3TM;4U5=17%A8
|
||||
M6%A87%-6U=;0TM_?W-W=T=507UI$1D9!0$!'15A<4U94U=30W=_>Q<3%Q\3%
|
||||
MQL?%V-[>V=[?W-/7U]'645)>6UI'1$1;4%34T=/=W-O8V=_=UE127EA;6D1'
|
||||
M1%I:6%A97EQ24%37T-+=WMG8V\?;VMK9WM_?W-G9V-G?W-W0UU514UQ?65E>
|
||||
M65Y<7%)5U]'<V=O8W]_=T%1=6$1'1$1$1%A>7UQ24E)05E95UM'1TMS>V=C;
|
||||
MVL7:V=G>WMC?W=S?W-/2T-'45U!04UE;6UM;65Q05-77T][;V][;V-%44%A%
|
||||
M1$%"34%:6%]<7U97U=?6T-/<WMG%Q<7$V][<W]W3T]/0T-#0T-;7U]35U-14
|
||||
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
|
||||
MTE!>7UQ=7UE;6UQ7W,GP_?+WP55&=7%R<GU]<W%U1U;8R?;Q]LK!W=567UA%
|
||||
M0TY*2T)9UL3.]?3W],G)S\';TE526$1!1D1:4M_U_^7D^_;<0G]F8F)C9F5\
|
||||
M=$95QO;YY.;G^?3874!)2DY"1EA=5=S'S_7W],[:UUQ&3$E.3TQ!6E]1T-O"
|
||||
MR,G/S,?8W-/445-5TL?)]/7`TEQ/<']X>'Y]<71)1U+2S?#_^/C\]LS9U%U8
|
||||
M1T-,3DQ!6U#7WL;-SL["Q=U5745!0T)`1UE1T=O#SLK*R,+%WM1<75%4TMC:
|
||||
MV==?3'=Q<'%W2TU&15E3U]C,]/'P\<K`WU5=6T5%6E]35];=V-K$QL38W=53
|
||||
M6T9!04=94E'4TM_9VL7%Q=K9T]116$=%7=?3Q,O)P=Q30W5W=G1/1%]05=?1
|
||||
MW-O'P\#$V=!67%A;7E)6U-#<W][?W]W0T=?5U=34U-36T]S<WM_<T5127U#6
|
||||
MV=O:Q=U16$AP<'!Q2D125]S9W=G:Q=K;V-[=T=575E=5U]#9Q<3%V=+1UM?5
|
||||
MU=345U%26%I>7UQ1U5515U!<75!05M?0T]S?TM+=TM+=TM#0T==555145-75
|
||||
MU=37U]154U-64U)04U!04U)24U!05E=5U=31T]W?V=O;V-G>W=/6U]1555=6
|
||||
M5%145U=64%-34%!05E77UM;7U]1445-<7UQ=4E)15-77T-+<V=C%VMK&VMW3
|
||||
MU5%34U)24U;4UM#3W=+3UE1375E:6EI;65]<75!65]31T-+2W=W3T]/2TM/3
|
||||
MTM+2T-'7U];6U]?7U]3555=64%!15E965E9145%65E-6U]37T=;7U-55U=35
|
||||
M5535U]'3TMW=W=+0T=?5U55455555%=5U]+05-166%Y>1UI645?3TM3=W-;1
|
||||
MW-/0W=/4U-115E=75]?4U];1T=/2W-/7U5914%U=4E-15U15U-34U5545=75
|
||||
MU-?7U];6U]35U=5445!045945=76T-/2TMW2TM/1UM?4U-7555145%965E=7
|
||||
M5E905E=75U=75%1345145%74U]'3W=S<W-+2T]#0T-'6U-55U5165E%04%%6
|
||||
M45%15E965U1555155%77U]?7U]'1UM?7UM?4U-75U-755=74U=5555=45U=6
|
||||
M5];4U='7U]355%155%755575U=34U=555554U=74U]34U]34U-?7U]?4U%54
|
||||
M5U965E=45%75U-75U-75U=74U-34U-34U-155%15U-?7U=355E355=74U-34
|
||||
MU-?7U];6UM?7U%555U=65E145%75U=74U-?6UM;7U]555%=65%75U=?7U]?4
|
||||
MU5545%=45%55U=37U]?4U-1555145U145-30U%74U=75U=75U-34U]?7U-15
|
||||
M55145-75U=74U=37UM;455545U=45=74U]?7U-74U5145%145%155%=75U54
|
||||
M5=76UM;6U]?4U-545%155%%5UM37UM;6U]?6UM155%=75U35U-?7U]155U=6
|
||||
M5E965U=5U-;6UM;6UM?4U5145=5555545%155555U=75U]?55535U=75U-?7
|
||||
MU];7U-77T]?4UU545U904U-65E145575U-?4U]31T-/0UM?7U]?4U]?4U-55
|
||||
M55164%!045%65U74U];1T-'6U]555%55U-;6T=;7UM37UU575E%045-<4U=7
|
||||
MU-;1T=;7T='1T=?7U]7555145U=45%55U=34U-74U%555555U=75U-34U-?4
|
||||
MU5555%75U-34U%555574U-75U-7455545U=45%14U-/7UM#6U-3555145554
|
||||
M5%15555555555575U-37U-355555U-34U-34U]?7U-3555145E=75=74U-75
|
||||
MU-37U-75U-35U-?7U=37U]35U=544%145U155%55U555U=74U-37U-34U-55
|
||||
MU=35U-35U=7455145%175575U575U-37U-74U=74U-37U]?7U5145U975%14
|
||||
M5575U-37UM?7U-'2U-7555555=75U=75U5155=755=555=74U]?7U-555%=7
|
||||
M5U94U5555=75U=34U=35U-75U=37U]?7U]34U5555%55U-?7U-35U%555=74
|
||||
M5%;4U]37UM?7U%545U=75%145%75U=74U5555%=75E175%75UM'0T]#3T=?5
|
||||
M5%=45%145=5555545=75U=75U5555%155%15U=55U-?6T=;3W-'6UU575E%1
|
||||
M45965U145=75U-34U]?6UM?7U-155575U-34U]37U]155%=645%15U155555
|
||||
M5555U=34U];7U]37U];6U-35U5145%75U%=1U=54U=34UM'0T-#6U-545U=6
|
||||
M5E965U35U-?7U-545%=75E=45=36UM'1T='1T=?7U]555%=45%=65U145=15
|
||||
M5%5555555575U=75U=75UM#4UM'6T='6U]3555175E975%=75%555=75U-35
|
||||
MU=75U-55U=74U]37T=#0UM?4U5575E%15E975U=5U=34U-755555U=37UM;7
|
||||
MU]?7U]164U=645145%74U-355=75U=75U-34U=75U-34U-37U];6U]155%=1
|
||||
M4%!65%74T=/0UM?455545U74U]?7U]?7U5=14%!65E155=75U=155]375%55
|
||||
M5U75U-;1T]#1UM?4U=545U=45%=5U=34U=34U=35U575U=34U-?4U-555514
|
||||
M5%=45=74UM'1UM#1T=?455=65E965E975E=45=775571U];0T-#0T-;6U%54
|
||||
M5U%04U-345945=34U-75U=75U-?6U];1T-#0T=?5551555=45%=45U=75U14
|
||||
M5575U-74U-35U-35U-?7UM;6U-36UE155%%34U!15E15U-;1UM'1UM?7U=74
|
||||
MU-34U-7555=75U145=55U5555=755515U=755=76T=;4U=77UM;4U=75U514
|
||||
MU=?7U%555%755%-055915-74U%755=77U-?7T='1U]34U%1445!15U35U=55
|
||||
M5%=65U77UM;6T-#1U]?7U-34U-34U-15U=7555575%555%=65U145U=45574
|
||||
MTM_3TM#7U%165E%65U74U5545-75U555U=37U]37UM;7U%555=74U]355554
|
||||
M5%=7555555555575U-;0T]#6U-34U575U]?4U-55U=34U5515E575]74U];7
|
||||
MU5555=74U-555%975%75U=75U=?4U]?4U-34U5555%=45%145%55U-?6UM?5
|
||||
MU-34U-35U5555=74U];7U-545%175%575]?75-35U=34U-34U=74U]?7U-55
|
||||
MU=74U=75U=75557555545U=4U=75U-75U555U=37U%145%145=74U-555%74
|
||||
MU]?4U-3555=75-75U=3545?7U=76UM155555U=37UM;7U-75U=34U=545%=6
|
||||
M5E975%75U=37U-35U%55U-;6UM?7U-34T=5045%25=!55]73W59'7M_3U=3=
|
||||
MVU!1WL#16D52U%-3T=O?65_<W=U67U-36E]75=/=Q\#=U='<VM)65M576$19
|
||||
M4U-65E555%=745)7T-O&Q=G?T55445=75U?1UU174%35W=-75U-34%M1UM54
|
||||
MT=_0UU=75%=5T-+65U?4U-71T]W<U%=75U%=4U3555!35%755%35T=S6T=?4
|
||||
MUM35U=;755935E?4T=?55E?7UU545E%45575U]37T]#<V=+1U-?4U5%=7UQ3
|
||||
M5U51U-?7U%36UM145=54U556U=77TM#6T]W2UM'6U59=4%%07%-34-77T-+1
|
||||
MT='4U%74U59555155%555%77T]=14535U]'55=3455965]74U=34U]?5U=54
|
||||
MU=555=36U-34U-;7UM?6T='755555U=555145%555%1455145%=5U-#3T-#2
|
||||
MT]?455545U=6U=;45E=45U145%545U34U-77U]34U-355E?5UM15U-355%=4
|
||||
M5U901G=)6E+7W-O'QL#`P<;$VMC>W-+1U]555U914%-34E)24E)34U-34%%1
|
||||
M5E=45%75U=34U-?7U]?7UM?7U]?7U]?4U-34U-75U=75U=75U=5555555=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
:____________________________________
|
||||
`
|
||||
end
|
@ -1,323 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 1.al
|
||||
M55=75%755=545U1455145575U-37UM'6U];6UM155%175U975U74U-35U-77
|
||||
MU]75U=75U=565=;5U-'1U]345%=75U15U=75U]?7U]545E975%75U]?55555
|
||||
M55555=74U]355%74U-74U-37U-34U]'6U]355=34U=35U5555574U]355=55
|
||||
M5]?6U=555%=75U975-74U]?4U%575U=75%755575U=?6T='6UM;6U]555516
|
||||
M5E965U15U-?7UM;5U5555=7555555=55U=34U];6U]?45%745U355=75U=74
|
||||
MU-355=7555165U=4U=?6UM?55=75U-55U-?6T=?55%914594U=?6T='1UM?7
|
||||
MU5145U145=34U-?7U-74U=555E=4U=755E-65%74UM'1UM;4U=355=55U=55
|
||||
MU=35U-155U%65U155=55U-?7T=#1T=;7U-74UM?7U55645%05E=55515U555
|
||||
M55555=34U-?6UM?6U]31T=75U5145=555555U=34U-355=77UM?4551645%1
|
||||
M45=45=77T=W<W=/1UU545%=75U965U15U-?4U-545%=75-555555U-;6UM35
|
||||
M5%5555=6U-34U];1T=?55575U-?4U5545E%65U15U-34U-;7UM'6U]1555=6
|
||||
M5E=455555U145=75U-55U=75U=555=77UM;6UM3555175U145U%15=15U]'1
|
||||
MT]+3T-'6U-555%755%=75E=75=?4U-555=75U5175U=5U]#3TM+1U%555%91
|
||||
M4U)345=5U]?6UM;55555557555555=77UM;6UM175E5555545%55U-74UM'1
|
||||
MU];1T-#655=75%75U55645945=37U51145%7U=?7U-3455755=545=355=;5
|
||||
MT=;4UM36U%155-76UM;455165M745=355%145-77U];1T==75E=65U165U94
|
||||
MU=76T='1UM=45U=655145%35U]36UM'1T='6U]35U=34U-35U=755%964596
|
||||
M5U145555U=345U37U-?1U]74U-35U=545E=4U=37U]?4U=74U-36UU545U96
|
||||
M5555U555U-36T='1UM34U5175%74U]?555165E915E94U=74U-?6T-#0T='0
|
||||
MT=34U5145E!15U=455145=77U]?55%145=36UM?7U]35U=74U5545-75U554
|
||||
M5%1555575E=45-77T=#3T]#6U]155%=45%15U=555U=555!05E!05E34UM'1
|
||||
MUM?6T='0T]#0T=?7U%545%=65U54U=555%%145!15E=45=36T-/0T-'7UU54
|
||||
M5575U=755=755=34U-7555904-157U#7U-;3T-#=W='4U-36T==45U975U17
|
||||
M5E145%155%72U%'15%?45%15U-15UM;7T=;5U=5555=65E=4U=34U-37U]75
|
||||
MU55555555=37U];7U]=45=545%1455545%35U-?7U];7U]35U5545%17U575
|
||||
MU=7555555=555%35U]355%965E=5U-;1UM?55=75U]155%14U=34U]34U=74
|
||||
MU-?4U-'55U=75U=45574U=36UM;7U=555575U-37UM?7U]3455575U%04%%1
|
||||
M5E=45%75U-;0T-+=TM#1U]175E965U74U-555%145%1455555=755-76U-'6
|
||||
MT=#0UM155%965E=555555=74U-34U-555=5555=45%75U-?6UM;7U-?55%14
|
||||
M55165E35U-?7U]?7U]145U965E=45=37T=;6U];2T-?755145U145%145-75
|
||||
MU5545U=75U=45-74UM#3T-+?TE54UM;4UM534E965E9075!4U=75U-37T-#1
|
||||
MUM?4U];6U]555%75U-7555=64U]045'5UM'3T=;6U]?4U=3455545%74U]35
|
||||
MU55555145]77U]?4U555U=75U=74UM'1UM?4U5145%145U=75E=45%35U554
|
||||
M5%175U=55574T]'1T]#0T-#1U]555%=65E975=?7U-74U-755%175U15U-37
|
||||
MU]'1UM;7U-34U-7555575E=75U14U=34U]5555545%=65]75U-?6U]?6UM14
|
||||
MU];4U]35U5555=5555575U1555545U975=75U-37UM?6U]?7U-75U=34U=54
|
||||
M5%=75E965U145%34U];6T='6T=?4UM?7U-555575U-145=575U545%175U=7
|
||||
M5%75U=36UM?4U-35U-35U=75U-?7U]?45%964%-34%%65]76T-#0T]+3T-'7
|
||||
MU-555U94U=75U-35U-755%=65E%15E=65M?1U]'0T-#3TM/1U]145E975U=4
|
||||
M5%555%=75E965E=5U=74U-?1T=#0T-'1UM?55%=75U145%175=74UM155U=7
|
||||
M5U75U=37U-74U=37U-'0U]?7U]545E9645=45U=75=36T=;6U]37U-755555
|
||||
MU=75U]?7U]355%=75U145%15U=?7U];6U]545U=5U=?7U]?4U-75U-74UM;6
|
||||
MU%5445U34U-65%14U=37T=;1T=?7UM;6U]37UM?4U-75U-355%1745%14%-0
|
||||
M4%%7U=;0TM/0UM?55574U]34U-34U=55U=75U-3555=65E965E%5T=36T-#3
|
||||
MT=;55514U55555145=34U];455545U975%145=75U-?0T]/2T];455114597
|
||||
M5%75U=3455755%=645%04595U=;1T='1T=#0T-?4UM35U=75U-75U-34U516
|
||||
M5E975U145575U-545%=55-37U];1T='0T=;7U5=14%!34%%15E75U-36T=;6
|
||||
MU]37U-35U-75U=75U=74U554U=565U145U155=76T-#1T='6UM?7U%145U14
|
||||
M5%74U-3555545E-34U%75-36T-#0T-#0T=?4U-7555175U15U-;1UM?55U96
|
||||
M5U155%145%=15M74U]'0T='7U%55U=?6UM355575U-34U%545U965E%15E15
|
||||
MU-;0T]#1U]?45=75U555U=7555145E975%555=37U]'1T='1U]75U-?7U-;6
|
||||
M5%1645=45%=145975%35U]37U-55U=?1T='6U]1555145575U574U-75U=55
|
||||
MU=555575U=555%755=74U=35U555U=?7UM;6U]?4U]355E%74%!65U=15U15
|
||||
MU-?1T=;7U%555=36T=/0UM34U-?4U%575E%145975%545U75UM/3T]#1U]?7
|
||||
MUM145U=75U=75U75U-?4U%545U945U?4U-76T='1T=;4U5755=74U5545%=7
|
||||
M5U=75575U=745=75U-37U]'6T=;7U]34U%575E=4U=#=W-+74%E'0$=95]/8
|
||||
MQ,7?T55645?7TM[>W-5645U35M76T-/0U%9275)24%95U=355U=45=?1T]/0
|
||||
MUM?4U-37UM;1T=?45%=65E965U74U5575E975-77T=;4U=555%15U=?7U]?6
|
||||
MT=?4UM515E%15E74U]'3TM/0UM;7U-155U=65U=55%145575551745%15E96
|
||||
M5U35U-37UM?5U=34U-34U-?6T='3T]/0T-#0T='7U-34U575U-575E=65E90
|
||||
M4UU?7%Q<7U]?4U95U]'0T]/3T]+2TMW=W=/3T]+=W]G;Q<3$Q<3%V-W65E]&
|
||||
M27=P<W)P=TI#6%-4UM/=WMC:Q<?$V]C>W=W<V,;`P,+#PLW,SO3V\?;TP-5#
|
||||
M<V5@8F)C9GAP3UE5W=O`R?3V\?'WR\+;TE504E)1U-S$S<CU]<[`Q-K;V\7%
|
||||
MV-)61G1\>F1G9'I\=T%=U][:Q<'-PL_.R<G/P,39W-+3T-/<V,7'QL?:VMO;
|
||||
MVL3$VMS57DQQ?F5D9V5Y<TA:5]S'S,G*]<K*R<_"P<39TM?55=76W=G%Q,?&
|
||||
MQL?$Q\;'VMG24$%U<GME9&1Z?W%.6E;=Q,_U]/?W]_7)P\79T]?55%34T][%
|
||||
MQL##S<_,R?7*R<+85$9V>6=@8V-A9']W1E??P,CW\?/S\_#VRL+$W-;55EU1
|
||||
M5=?2V<7!P,;'QL;#S,_.PL766'5_9&!C8V!G>79&5=K.]_#R\O/S]O3(P]K=
|
||||
MU%%?65]35=/>V\?#PLW`Q]O=UU1075Y96UI'04),24M)0T)"1UI94E;5UM+9
|
||||
MV]K:V]G?W][9V=_?WM[9V=[>WMS<W-W3T]'7U5115E?4W=K`PL+&TE-#=GYE
|
||||
M9&1E>'-+6]3:S_3Q\/'WRLS`Q=_0UU104596U-/<V,7'P<#!Q-O=UU=375!7
|
||||
MUM_%P<':TE%&='QZ9V9G97YV0538SO?P\_#Q]_7)S,/`Q-O?T512645'0$!'
|
||||
M6UQ5TMC!S<_/S<;;W-!675Y%1%Y0UMO,RO7TR,371'9Y9&%@861Y<4)1WLSW
|
||||
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
|
||||
M]O/TQMW5U=9?04U(2TIV<4I#0%E245345U;4T]G%V]O%QL'`P,'"S,W,P\'&
|
||||
MQL7>W==44%A'04-,3DE.3D]`0$=%6EE<4%36TMW>QL?$P\##PLW"P\#`QMO?
|
||||
MW]+655%27%A%1D-"0T)"0T=$65)05E37T]_8VL3'QL?8W]#75U%34E)24E!6
|
||||
M5-;3W=S>W]S2U]75U=75U%75T]!7U]S3T-/6U]9445-<6%M$041:1$5;65]2
|
||||
M5]71W-G;V]O8V-O9WM[?W=+2T-#2TMW?W-W=T%545%%=7UM%6UM:6%]<7UU3
|
||||
M4534UM#3T]/3T=#6U=755515U];1T]#0T];4U%55U-355%545=34UM'7U]?6
|
||||
MT=;4U=35U557459745965E%04%%145;5U]?7U]?1UM?1T-#0T-;6UM?4U]=5
|
||||
M5M77U-345=77UU575U145%555U965E%65U1555555=37U]?7U]?7U]75U=36
|
||||
MT=;7U]?7T-+3UM355%=65E965U15U5145E914%%15U545=71U]77U-?6U-34
|
||||
MU=75U]?1T-/2T-;7U5555%1555=65E=45=77U]'0T=?4551445!34E)35E=6
|
||||
M5=37T=;7U];6U]?4U-34U-34U=36T='1U594U5=75%15U=755=545U75U-?4
|
||||
MU=7555155%=55=74U-?6U]555575U-75U-34U-145%175%1555555U=4U-?6
|
||||
MUM;1T-#7U-555%=75E94UU54U5165U=75%=75-77U]?6T=#0UM;6U]755554
|
||||
M5%175U14555555175U=45=37T=;1T=;7U]?5U575U=?7U]34U=555%=45%91
|
||||
M45=5U-35U];7UM;7U%575E%15U75U=77UM?7U-555%1745975=75U=36UM;1
|
||||
MT-;6UM?7U%545%=75U=45575U-355U%65=35U-37UM;6UM'6U]?5U-=45%54
|
||||
M5%145%545U=75E=75U975]77UM'1T-'1T=;1UM34U-3455145U975E%65U54
|
||||
MU=37U-74U575U=36T-/3T=?5U5555%=75=545%104E=55=75U=74U-;6T='6
|
||||
MU-35U=74U]555%=75%145%5555555%155555U-?6T='1UM;7U-5555555%=4
|
||||
M55545=74U%545U=5555555145=;3UM'3UM?7U]?4U-75U-3555145E%75U%1
|
||||
M5U155%=7U=34U575U-?6U]?4U]?1T-'1UM?4U555U=75U5575E965E=75%55
|
||||
MU=?1T]+2T]'15%!45U945%1455=65U35U=34U=?7U-74U=34U-75U-?6U]75
|
||||
MU5145%55555555165%155575U-?6UM;7U%555%75U]34U]34U=75U=555515
|
||||
MU5=5U5=75U?5U-34U]37UM;6UM;7U=55U=34U-555%175E=65E965U35U-37
|
||||
MU]?6UM;6UM?4U5145U155=?7U5545E%04%%65%15U-;0TM'6T]#6UM?5U515
|
||||
M5575U=545%155574U5545U=75%155=75U=37U];1UM;1UM?4U5175E=75=54
|
||||
M5%14U=3555175E965U=5U-'0T-#3T]#1T]%455545%=65U=75U=75%145%35
|
||||
M5=74U=37UM;7U]37T=;6UM35U-355=34U=555%=75U965U35U-;7U5145554
|
||||
M5=75U-?7UM?7U-3555134E=65U14U-;6UM;4U=745575U]?7U]?4UM;4U=75
|
||||
M55=14%!15E=45=74UM;6UM;7U57555175%75U-?7UM'6U]555%145E%15E=7
|
||||
M5=77U-'0U]'6U%555%55U=55U=555%155%145%74U-36U]34U]35U]34U-34
|
||||
MU=575U15U=74U]34U55455575%145=75U=34U=75U=75U];6UM?45E%45E94
|
||||
M5%145=34UM'1U]155%1555=45-75U]?7U]'7U-55551755145=75U-?4U555
|
||||
M5U965U35U]'0T=;7U-34U-555%175U=45-555%37U%74U5=4U=74U-34U]34
|
||||
MU-37U%5455145=75U]34555555155%=65E=5U-?1T=;6U]34U=75U=75U-35
|
||||
MU-37U]?75%965E15U=555%15U5=5UU145515U-?4U-34U-?7U-34U-555514
|
||||
M5=555%545%55U=75551555755=75U-?7UM?7U]?4U-34U%175E=455555%17
|
||||
M5%74U]?6UM?6T];5U]155%175E975=55U=55U=37U];6U];4U-?6T=;7UU54
|
||||
M5U%145%65E904594U=?6T=;7U-34U-?6UM?7UM?4U]?4U=7555145U14U551
|
||||
M5E=05E75U-;6U]34U-34U-34U-?6UM?4U]35U55745=455145%=75U=5U=74
|
||||
MU-34U];6T=?455555575U-1555575E965E9645;5U];6T]S3T=#6U]355554
|
||||
M5U=45=55U=34U-545U=75E975%=5U=36UM;6U];7U]?7U-155%74U5545%55
|
||||
M5%=65U=45=77U];6UM=555555%155%544%355=74U]'1T-'1T='7U575U=75
|
||||
M5%=75E155=555%54U5555=7555545%75UM;1UM?4U=75U=35U=944E175=75
|
||||
M5=77U=155-555%555]71U-37U-?55-54U=37U-;1UM;7U-34U-355%145%17
|
||||
M5U1745%15E35U-36UM#2T-;7U]?7U]35U=545U145%=45%=75%75U=545=74
|
||||
MUM?6U%?5U]37U]75U555U=34U-?4U=35U-155%175E!65]76T='7U-35U=75
|
||||
MU=75U=35U=74U-?4U=7555145%965E965-77UM;55575U-?6UM?1T]1455=6
|
||||
M45!65E=75555U=75U=74U=34U-;6U]?6U];1T-'1UM;7U%164%-24U!65-74
|
||||
MU];7U-34U-?7U=34U]?7U-5455575E=75U94U-14U]?4U];6UM;7U-555%=7
|
||||
M5U15U=75U=5555545U=75575U=34U-?4U-?7U];6UM?7U]?7U%545%575U=6
|
||||
M5U5555555-75U=545%=45515T=+3T]+6U]?55%=75U=75%74UM;7U-755%=6
|
||||
M45975U=75%74T='1T='1T='1U]=55U155=75U-745%145%145%145575U-37
|
||||
MUM'6U]?55=1445555%555555U=37U]7555=75%55U=355=74U]3455145=74
|
||||
MU];7U%575E965U=45%74UM#0T-;7U5=75E?5U];1T=;4U=55555745%04577
|
||||
MU=?0UM;6U-555%1455755555U=74U-?7U-7555545E9645965E355%35U-'0
|
||||
MT='1UM?4U%55U=?7U];7U-545E=755555%%15U35U-?65%%55574U]?7U]?4
|
||||
M55555-74U-35U-34U5145%145%155555U=37T-'6U-55555455555%55U=37
|
||||
MU]?7U%545%145U=5U=75U-?7U]355571T-75U5175%145%=45=74U=755%=7
|
||||
M5%75UM#1UM;6U]37U5145E=4U=75U5145U945=37U]545U555=35U=75U=37
|
||||
MUM?7U]755-74555455%05%=7U=37UM;7U]?4U=37U]?45575U=75U-34U516
|
||||
M5E145575U-34U-75U-?7U%555555555555155%555%145%555=34U%55U=74
|
||||
MU577TMW1T=;5U55455=555555=75U-?4U5545U965U=75%145575U];1T]/3
|
||||
MTM/1U%545%145U9145975U75U-75U=555555U=37UM#0T='6T=9745934%%7
|
||||
M5U55U-;6UM?4U]34U-75U=35U-?7UM?5557555145%9145!15E155=34U]?6
|
||||
MT=;6T-#0T-'1UM?7U-7555175E965E=75%175]355]555%55U=75U-?7U]15
|
||||
M5=37T=;6UM;6T=3455145U965E=65E975=74U]34U-37U-34U]?7U-75U=?6
|
||||
MT-'1U]555%145U145%145-755E;55%=45=34U-?4U-37U]?7U-75U=755554
|
||||
M5555U=75U-74U]?4U-37U-35U%545%1455545%35U=5555555=55U-35U=75
|
||||
MU=?6U];7U=?0T=?7U5=645%75U=75%=75U145555U=74U];1T-/3T]#6U-55
|
||||
M5%=75U945=7555=45%75U]15U555U=74U-?7U]?7U-75U555U=75U5545%%4
|
||||
MU-77U]75U=75U];1T='6U-545E%15E975%145555U=5555545U=4U=;1T-#0
|
||||
MT-;6U]?7U-?4U=545%545U=65E965E=65E35U]'0T=;6T]'4U]75U=74U=75
|
||||
MU=3555175U155%145%555555U=15U=?7UM;1U]545E=75U15U=75U=74U575
|
||||
M55555U975-74U-?6UM'0T-'6UM?7U]515U115E=755145=77T=;4U%545=74
|
||||
MU=545555U=?7U-155=75U=75555555145%14U-?4U]34U-155%75U-?7U]?6
|
||||
MU]355%145U175554UM/0UM;4U5545U175%555515U=37U-?7U]755515U=75
|
||||
MU=555=545%155=37U]34U5555555U=355514U=?4UM;7UM?4U-755%=75U54
|
||||
M5-355-?6U]37U]545U=75=74U=35U-1555545U545U155=75U-;6T='7U-55
|
||||
M5515U=?4U55455145%15U=7555=75%=75%74U-34U-34U-34U=?3U-74U-75
|
||||
M5%575U915E97U=;1T='6T='7U-?4U];6T=;755=65E=75E%04594U=?6UM?7
|
||||
MU%55U=34U-?7U-37U]35U=74U5=75U915E=445)7U=36T=;6T='1U]34U-55
|
||||
M5555U=74U]3555545-555=5455145U35U]?4U-75U-?7U]34U%545%=5U-34
|
||||
MU%5555145%145%55U-?7UU74T=;6T=?5U5145U975U75U=?7U];1UM155%=7
|
||||
M5U%15E=45E95U-?1T-#0TM/1T-?4U%75U=77UM;7UU555%=45E!75%=14U;4
|
||||
MUM'6T=?5UE56U=?6T=;45-74UM'755=655965E914-?`VDU.U<K79&W>X,'/
|
||||
M_,C-_G-L2.*6\&L4T=GS57G:?47$^_Q"9&="V?OOX$9[0WAM6-CZY\WT\E=V
|
||||
MW_?WRU]T0TQQ?&5D6M#>P_/PSU52R<C;05+SS%S=W%7&\5UD9$]8<E]71.7W
|
||||
M6<'43U?&R<+&R<]%7<=(7T9^3,+*QT-E2$?*__#W5,9`6M59]<GP4W=30$%7
|
||||
M1DY9T-=4W=S&QL)57,+975)U=UG65-32W-_=Q51=WU78P%E"U]U644W8V]S:
|
||||
MT<!7U5A+3T163<3TV]M16UW&S-'6U5==6]5>4-K/U5I:7M955MG?U%-#T=#4
|
||||
MWM'"R%Q!7EE?W-?1VU-=0=;%W])'05_<V5%66UK4W-??T]+8W=C45]S55U1%
|
||||
M7M_>UUE5WU705T=&T-U04$595\':WMK2QUY.7E-74]'0W-%6Q]G%VUY>5MC4
|
||||
M4EU&4M#34=717EY5QMY645_7U=16W-A5U5E3W=I76-53W=E56D/=Q<740%I8
|
||||
MU][>TE765-_0T=+?V]9445%25U-2T]934%Q775Y3U=;9W=70TMM54E!?4]?;
|
||||
MT];2TM=45E]=4-=74=31U]144US4U-'77UU4TM#?U-+8WME14EE4UU-26%?5
|
||||
MTM36T==47-;<TUQ=5]'3U]+2W=/4T];74UA:65#0UM%44=;5U=744U!75-?2
|
||||
MW]!55=/4UM'5U%%17=117-?6WM54U];54U-1TMQ5TM1`<'1#65?0W]K'QL'&
|
||||
MQL3%V-G<W=#1U-545U%14U-24E)24E-24U-04%965U=45-75U-74U-?7U]?6
|
||||
MU]?7U]37U-?4U-34U=35U-75U=75U5755=55U5755=55U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M__________________________________________________\`````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
:````````````````````````````````````
|
||||
`
|
||||
end
|
@ -1,278 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 2.al
|
||||
MU]?455175U14U=375U;55U145%175U75U]'0T]/0T=?4U5545%175E%15U15
|
||||
MU=?6UM564U-045=75E34UM#2W=W=TM#6U-555=5555=65U15U=55U=555U%1
|
||||
M5E;4UM?1T-'1T=?7U%75U=545U=45%145U145E915U75U-?7U-34U]34U]?7
|
||||
MU];1T=;6U%175E975U=65E35U-37T-+3T-;455175%175U?5U%35T='6T==5
|
||||
M5U965E975U=5U=37T=#3T];7U-545E=45%15U=37U]555%=75U965E975%75
|
||||
MU-55U=37T='1T='1T='1UU545%15U=35551755575%=65E915E;5UM'0T=#0
|
||||
MT-;4U-35U5575U=75%1555145=55U555U=75U=74U]'0T-'4U-155U965E96
|
||||
M5U14U=36U];6U-555515U=15U='6T=#6UM?4U%175E%15E175%55U=555=74
|
||||
MU];7U-34U575U575U-3555545U555=545U=45%145=37UM;7U]?7U=75U=75
|
||||
M5=75U=74U]+0U]'6U-345%145%175U=65E=4U=355=755=75U]?6T=;4U-75
|
||||
MU=75U-7555545U=45%74U-555%75U]575%55U=?7U]?7UM34U514551745%6
|
||||
M45145555U]?6TMW3T]#7U]=75-1455515511U5=7U5%55535U-=4U-56U-;7
|
||||
MU]'3UM'65514U5555U%1453555745U;5U-=55-;4U=77UU77T-#0UM'1UM17
|
||||
M45%65E%75U35U-'7U554U=545%7555755=36T=/0UM?4U5175E=45%555555
|
||||
MU555U=37UM;6U]?4U-34U-34U5155%%4U%145%=455545E=75-75U=31T-#6
|
||||
MU-;6U]5445?5U-?4U=?6UM;55%145%545%914515U=34U]?6UM?755145%14
|
||||
M5%15U=36UM?5U-74T-=5U5=65U=55%35U]'1UM34U-555%=45%15U=?6UM?4
|
||||
MU55745%65U=55=36UM#3T]#1UM;55%555%145U975-76UM?7U-555%165%15
|
||||
MU%57U=;1T-/0T-?5T=51UU!355-6U515UM54U%=655175514U];1T-=75=?0
|
||||
MW-_3UE565-7555=04U%65=36T=1175)6U=;6U]34UM+=TM#55=145=545U=6
|
||||
M5U7555145U14U-?7U-35U=75U-?7U5545U74U-545U155=75U-355555U=75
|
||||
MU=75U-?7UM;6U]34U=55U=35U-?6T-'6U]517UU<7%-15-?6T-+2T-#0UM;1
|
||||
MU-545U175%1455155%155%175U=65U15U-?1T-/0T-'6U]3555175%=75U97
|
||||
M5%74U-75U=74U55455545U375574U=37U]?6UM;7U5575U=45574U]?6U]?4
|
||||
MU-54551745%15U145%74U];7U]75U=74U-?1T=/0UM;6U-755U9645975U96
|
||||
M5-77UM#0U%?55%975U=55=755574U]'1T='6U]75U51555545U145%55U=34
|
||||
MU-34U55555145%=45%55U-35U-?7U];6U-155%=75555U=77U]?6U%1455%1
|
||||
M45%15%77T=#1T-'1UM?7U-?455=45-74U]7555175%=645965%75U-?6T=;6
|
||||
MUM?7U]37U-155%175%5555555%975-75U-5555545U=6U-34T-#3T]'6U-75
|
||||
MU5165E945=74U]?6U%545U975=35U-37UM?4U=77UM#3T-=55U%34E)34%=5
|
||||
MU=74U-?4U]55U575U-34U]?7U]?7T=/7U]145U915E945=74U-?7U-345517
|
||||
M5U=45=77U];6U]?4U-?455555575U5545%75U-37U-75U555U=37U-74U-34
|
||||
MU]35U=755514555745555U=45%545-75U]'1T-/3T-'1U]55U555U-35U517
|
||||
M5E9145%145%65U?5U]'0T]#6U]?1UM?45%145%75U]34U%755%145U=645%0
|
||||
M5M?3T='1UM;7U-55U5545%=75U55U5545U965U=4U=37T=;6UM'1UM?7U=75
|
||||
MU-?4U-35U5545%175U=45%74U];7U-?455145%74U-34U-?75U945%=75U96
|
||||
M5U?5U-34U-;6T=?4U5175%145=76T='1T-#0UM;4U5=65E975E9645=75E=7
|
||||
M5575U-?4U]34U]?6T-#3T-;55555U555559555!65E%65U15U=36T-/3T=?7
|
||||
MU-555%55U=7555555%=75U=75%555%75U=74U]?6UM;1UM34U-55U575U555
|
||||
M55145=555%145575U575U5=7U-37T='1UU?4T-505=-44=?75=76U5?5U%96
|
||||
M5U%25E175-?7U=?1UM37T=?7T=95U=3555575E=455=75%545%555=55U-37
|
||||
MUM'0T-;1T]/5U-155%175U965U%65U155%75U=75U]?7U]?7UM;6U]?7U-15
|
||||
MU=545U=75U!15E=75-74U];6UM;6U-75U=75U-;6T=#0UM155%165U=34516
|
||||
M5E145=74U-36UM'0UM=555175=36T=#0T=3555=04%%04%%65U75U=36UM'1
|
||||
MT-;7U]34U-34U=75U-34U%555%=65E=75U=75U=5U-+2T-+3T-+0T=;55%=6
|
||||
M45%65U=5U55555=65E=75U15U-'0T]/3T]#6U]75U575U5545U9645=65E=4
|
||||
MU5555=5555545%74U]?1T-#1U]?75U964%%65U35U-?7U];6U]34U5545U=5
|
||||
MU-?7U-35U=34U-35U=34U]34U5575E%75%75U-5555555555U555U=75U]?6
|
||||
MUM;6U-?555555U955%!45U15U=35U=?7U-37U=74U=75U-?6U]?45=555%=6
|
||||
M5U=75%155%75U-155=75U=35U=31UM?7T=#0T='7U-545E%04U!045=5U=74
|
||||
MU5=5U]36UM;0T-'6U-?4U=7555165%145%=65E=65E965-74U]?1T-#3TM#7
|
||||
MU=34U5575E=45=35U575U5545U9145=45=77T-#0T]'0UU55U%575515U=34
|
||||
MU5545U915E1555545%15U-;1T]/3T-#1U%545U=75%=45%145%=45=74U-?4
|
||||
MU-37UM;6U]355=36UM?7U=555%=645%75%924%965=37UM;1T='6U]?4U-15
|
||||
M5-37UM'7U]155=555U9645!65U=45574U]?7U]?5U-?4U=75U=75U=34U-34
|
||||
M55145U945555U575U]?4U]#7U-;4U-?4U]?4U5545%145U965U175U155575
|
||||
M5=55U=34U]?7U];6U];7U=7555175U=75%55U=?7UM;4U5555=74U-37U]?7
|
||||
MUM?4U-35459745=5U=37U-55U=5555175%145%15U=77UM;6UM;6U]155517
|
||||
M5%1645%75-74U-?6U]155%=45%555%75U-?6T='1UM?7U=355%755-7455=5
|
||||
M5%145%35U-34U-?55=75U=555=55U=37UM;1UM545U915E975-75U]?6T=;7
|
||||
MU55555145=74U-37U5175U175U155575U=74U-345537T='1UM155574U]34
|
||||
MU-75U%5455145U=14%%65%75U-?1T-#3T]'4U5165E94U=54U55555575U=1
|
||||
M5]74U];7U575U=77T='0TM/0UE75UU=645!15E=55=35U-?7U-75U=555%17
|
||||
M5%74U]?4U-55U=34U]35U=755%=75U74U]34U-34U-75U5545575U-;6U]?4
|
||||
MU-75U-35U-37U]57U5575%=15E=75%35U575U=75U-?7UM'6UM;1U]345%17
|
||||
M5E%65%15U-34U-37U]?4U=74555555555=35U-75U5555U145%175U=4U=37
|
||||
MT]_0T]#6U%545U=65E?7]>9`8,E]?\AQ4LA%U\[6VL'0QL15WME=W=)#Q%%9
|
||||
MW-'TV'KBVAW[6VOA<'7C<MCX6O'%4<#ER&;'U&'.2W?W6O#GQ7[41&/!<=_T
|
||||
M</'4P\I!RE3`4DW87M#F<&61;&?N%OK":.EEVN%OYE-4SW/WS$GIQ73!>MM_
|
||||
M;?!R?/=U\=#$]DGG_7[[PU?=6]9:0=]U2<A(1/1S\$I:^V?]5D7R7\5;S%;'
|
||||
MTOKT:>,5>/%N_5)Y[W?,YW#Z]]+;1%+=9,-T7U=<5%S%7U??W<U#T?%U\5-`
|
||||
M\D3`7M'6PD!<55C<><1'0?5]\-O?U=;*4U[4=]O>?_ET]<U\],!<VE5"Q<5Q
|
||||
MP=/=77[T54WU=\;.=]U2W45:75?8V=Y<R?1V]<-:7%W32M//>O__?/1!YV=Q
|
||||
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
|
||||
MW=S<TM'45=74T=/<WM_?W-'7U];755=14UU<7UU24U-15%=75=54U=75U%55
|
||||
MUM?4U-75U-'3T]/3T-#0T=?4U-355%%34E)1U=;1T-#6U55745975U=645%7
|
||||
M5%76T-+2T-'45U-=7%E87U)1U-W9VL?&QL?:V=_3UM1645-=4U-05E=75%=7
|
||||
M55905E%=7%Q=4E%75-31T-+2W=W<W-S?TM#1U]55U5575E%15E%15E94U=35
|
||||
MU=345515U=15U5575U975U35U-?7UM=55=;4U];6T='1T-;7U=755%555=37
|
||||
MU-7555=45U=65U915U75U-37U]37U]?7UM?555145%145%74UM'1UM545E97
|
||||
M5U=75%755574U]'1U-'15=34U=555U55U=74U-36T=345515551645%15E35
|
||||
MU-?6T-#7U]?4U-545E%645=5U=?7U]34U-55U=555%55U=77UM'1UM;6U]15
|
||||
M5E%075)75E?4U=76UM'7U-34U%545=77T-+2TM+3UM1445-=7%)04%%65%34
|
||||
MU];1T-'0T==55%555=55U-?7U-34U-555U9645%65E9645=45=?2W=/3T=?7
|
||||
MU]34U575U-34U=555-545U=45%=455755=75U=34U555U-?4U]?4U-34U=74
|
||||
MUM;7U]?555=65U96459745=45=34UM?4UM;1UE14U%7555545%75U-36UM35
|
||||
M55914U!65E=4U-;1T-#3TM/1UM35U5755=545%=45%15U=555%=65U965%14
|
||||
M5=36T=;1UM'0T=;4U5555514U]54U%5555545%545U=75U=55555U-37UM;1
|
||||
MT=#3T-'7U]?7U-35U5175E965E=75E975E=45=77T=#0T-'1U]545%=65U=5
|
||||
M5=74U-34U%565-555=34U-35U-34U]?7UM;7U=555%175E!05E965U74UM;6
|
||||
MUM?1T='6UM?7U]34U-34551445!15E965%145=75U=34U];7U];6UM'7U]+1
|
||||
MU-?4U5575E975U=45=555%175U555=74U-36UM34U]355=75U-?555545%55
|
||||
M5%=4U=755555U-37U-355%75U-?7UM;6UM?7U5155=555E355=545U54U555
|
||||
M55555=755%145%15U-;1T=#1U]545U%05E965U355515U=75U-34U=77U]?4
|
||||
MU=34U-;1UM35U5575E175E%15E%75-70T='3T-;6UM'6U5165E=75574U]?7
|
||||
MUM?4U=755%=65E=75%145U35U]35U-34U]?4U=55U=55U=35U=55U=35U-35
|
||||
M5=555%=75U155=365595U515U=76T=;7U]'1UM?7U-555%=145%65=74U-37
|
||||
MU]?7U=37U5175U=45-74U-35U5575%145E945%=5U=75U]'0T-'1T=;7U-55
|
||||
M5%94UE57U5165-555=36U555U=74U=34U%77U-?6U]?6UM3555145%175=54
|
||||
M5-75U=?45%155%745595U514U-;1UM37U]75U-5555=75=575=5655575U57
|
||||
M5=?4U-?1U-30T=;4U=355%75553555975U905%54U575U-37UM;5UM/1UM;6
|
||||
MU]145-?45%975%145]76U5555U%45%%75%37T]/45=?4U-74T-=55=55U-?5
|
||||
MU=5555164594U-?5U='0T=;1UM35551145945%55U=755=37U]#1U]355514
|
||||
M5U34U]545U35U=34U=74UM165E755555U5545E-7U535UM?4T='7U];6T-;5
|
||||
MU=545-145-75U=575E144E-45U155=?0U-?0UM?1U]?6U-?1UM3455145%94
|
||||
M5%965U155577U-?6U-355%=755165-37U=74T=;4UM=45E=45%1455575]?6
|
||||
MU-76T=;7U];6UM?6UU545-5175!45%97U=55U5=6U]W3T=;7U-75T=W0U%=7
|
||||
M459075?6U]36T=#65534UU5645!455%65=34U-75U-?7U%545=34U%915-'7
|
||||
MU=?1T]/1T='7U5165E9645975E?5T-'6UU514%=75U36T];7U-?2TM#1T-/7
|
||||
M5E)24E!04E-045;5U]/=TM#1T]+0U]?45U904U%55596U-#75U70TM+255%4
|
||||
M45Q<4U!75U!7T=+<WM_=W=/55=545%!3U-/3T=145%5745745U-=7%#5U]?7
|
||||
MU=7755?5T]/1UM15U5575-77UM;1T-/755934U;55%=5U=545E%5U]75U]?4
|
||||
M55965=37T='6U]?1TM+6T=167%U7U=355U%4U-31UM74UU9275)7U]15U-/<
|
||||
MV=[?W-W1U%%34%-24U-24U%75=36T-%45M76T-/0U]144U-75=?6U-?6UM#6
|
||||
MU]'75%115E77U517U5115E76T-/75%=65-37U]'45E)?7%/5U-71T-/2T]+<
|
||||
MW]+1U5%245-24U-65U15U=74U-;1T=?7T==75]75U5555=34U-;45-555U97
|
||||
M5U96U=?6U-?4U]?4UM#1U]1645175%55U]955-74UM#6U=355U%24U?55%55
|
||||
MU-'6UM;6UU555U1645955=36UM?4U]575U555%175555U555U=34UM'3T]#1
|
||||
MU]755%?5U%17U5575U175]55U5575E35U-'6UM#6U]3455175U175U155%34
|
||||
MU]34U5175=55U];6UM'0UM;1U]15555555155%1455545%=15U145%15U];7
|
||||
MU]'6U]?4U=?45=55U=3455555%155=37U];1U514U=55U]'6UM?7U=545U17
|
||||
M5U=65E%65E;4UM#0UM;7T=#1U-355U355=555%1745%645!75U=5U-37U-31
|
||||
MT]+3TM+0T-#6U]1545%14E)05E1455555=77U]3555545U15U=37UM;6T=?5
|
||||
MU=555=555=755=77U-555U=65U=75%15U-34U];7U]?5U=555=355-74U-?7
|
||||
MU-?4U55745%75E=65E=75=36UM'3T]/3T-?4U-?7U5=05-575E=75=35U-?6
|
||||
MT=;6U5175E965E=45%15U-35U=?455145=75U-?6T-+=W=+1U-555U965U15
|
||||
M5=75U-3555=645%34E)=4E945=?6T=_=T]S<T]/0T]'6U]?4U]?4U-555U%1
|
||||
M4U%6459755545U915E145=37UM;6T='0T-#1UM;6U-55U5545U=75E975E96
|
||||
M5U=5U=34U]?6T-#65=?75%545%15U=34U]?4U=755%145U915U74T=;6UM;1
|
||||
MT=#6UM145U964%!075U<4E-6U=?6UM;0TMS?WM_<TM'45%=14U)24E)=4%;5
|
||||
MU]#<TM#3UM?7U-35U5115E!34%%65574UM#3TM/3T-'7U-545U%14%%65U35
|
||||
MU-?7U]34U-34U=545%75U5755555U=55U=55U-35U-?7U-3455?5U-36U]75
|
||||
MU-75U-36T=#6UU545U965E=75U145U145=77U];7U-36UM?4UM'6UM155=55
|
||||
M5%175%555U175E=45U=4U=35U=555=74U]?1W=/0T];4U%545E945%75U-74
|
||||
MU%145U=75555U=75U]'6U]?7U=555U175E15U-?6UM;6U]155U1455555%17
|
||||
M5U=75=77UM;1UM?45=5555=05E=15=75U];1T='1U%545U75U-37U-34U-77
|
||||
MU]?4U5575U914%!15E=455555=37T=#3T]'1UM74U]34U-?6T=;455904E)=
|
||||
M4E-05E96U-/0T=/1UM;6UM'6UM;7U]?7U-3555145U914%!04%%45=37UM#1
|
||||
MT=;7UM?6T='6U]35U5545%5555145%=75%145%145575U-?6UM?4U]=55]55
|
||||
M5E145%145575U-34U%55U-75U-35U=75U-?7U-?4U=34U];1UM?55U975U14
|
||||
MU=74U5545E%65E975=34U];6UM;6U-?7U]34U-75U=?0U-755%145E%14597
|
||||
M5%175E=5U-?7UM'1UM;1T='6UM34U5904%!15E745%?5U]36T];45%375%35
|
||||
MU]?4UE55U]?7U-555%145U%75=755%31T=;6U-77U%75U=75U%55U=74U%54
|
||||
M5U=65E=64%975U74U]?7U]?6UM'6U]?7U]34U-?7U-555%165E9755145%14
|
||||
M5%15U=37UM?7U];3W]/2TM;7U%=14%!04U!65E965%175U74U];1T-#0T]+1
|
||||
MT=#6U-555U%15E=75E945%145U=75-74U]?7U];6UM;1T=;55-555%555535
|
||||
M55915%165%75U-?4U5545=34U];6U];7UM?7U%5555145%545U145%=65E97
|
||||
M5=74UM;4U-;6T='1UM;6U-75551455145U=75%=65E=75U=6U-/6T=#0T-#0
|
||||
MT=;7U575U575U5=75E=65U965-5555755=75U];6T=;6U]34U-1555175%=6
|
||||
M5E155=75U-3555545%155=75U-36UM'6T-94451745965-34U];6UM;7U]35
|
||||
MU-74U5545%=65E=75=74U%555555U=36U-34U=34U-?7U-355%15U5555517
|
||||
M5-75U-?7UM;7U]155=545]36U5555%5745=75575U-36UM;6UM'6T=#1UM;4
|
||||
MU5555%1445!045%65%75U=555575U-?7U];6UM'0T='7UM1555164%!64597
|
||||
M5%5555555E;55=77U];0T-#0T=;4U5545U75U-?4U-555%1645975%165U35
|
||||
MU-;1UM'6U]755=74U]74U-34U-75555555545U=75-74U-?6UM34U-77UM75
|
||||
MU-545E965U14U=7555175U75U-?6T=#1T-'1T=;7U=75U55455545U964%!1
|
||||
M5E=45=74U];7U]'0T-'6UM;6T-'7U5575E%15E7555%05%97U=77U];7U-55
|
||||
MU=75U5755575U=74U]34U-545U=45%145U35U-;6UM;7UM?7UM;45%175E15
|
||||
MU=75U=75U=75U=75U-34U5545%=4U]=5U]355%145%?55=77U];6U]?7U]35
|
||||
M5%965E=45=755515U-37UM?6UM?6UM;4U%575E=5U=545E=45U965E914%94
|
||||
MUM#0T-/=TM/3T-=45=15U=545=545%=75U975U=5U-?6U]34U-75U-3455=1
|
||||
M5E=45U%7U5575]30T-#=W=#3T]%55U945%!65]555=?555945%=445545=;0
|
||||
MW]_2U-=54U?:VW)U\\]A$5V5VE3L^];D711@_)V6:!YMEY=]%V/E_M9\RN1X
|
||||
M%FC@E);L8F%656%K>%/NE>;^4USP]W-S4E=`2D=90&!XW_7Q\OO;=GM:SMU3
|
||||
M=\#FX?S"]][<=F%I9-1>2$+`_^16=,A:Q?G+T'!4UM)97L7!WWQXP_+)UF=\
|
||||
M4]/\P\E51-A`QEA0]L+'25_2=%752UI,WM;?RL;]Q])64MA=07-P25#;75?>
|
||||
MP,'9V];5TM57<'#4\\W!4%'SP-Y.5=!"14Q-3U%=TO#V]L1<<$'26T1?T%?<
|
||||
M54[5]?;-UG15VE-#=L[8UE-&S=+'T-#.7ME>='=-S]?0V%+>U]/<U]9:5,';
|
||||
MW49?4EW!TM/51U/7VU5$75'1UE]/UL[!7U7%TMO624+5QL346T9=QMK4T5?'
|
||||
MUT)/25];5MS9S=C8QL;&UT%%TM]>4T5&V<;3U=U77UY0Q=9:05;3T]?5PL?:
|
||||
M5$'4TM5:0%C5R-I;0%',S-!=2UG15]W74-;4V-!5T]S`UUY94-5<65#7Q=%0
|
||||
M55!245?77-C<4M#2Q]Q44EM45%#65=?6TE117=74U-Y7T]'5T==66%_4T=C7
|
||||
M7%574%'1U-;0Q-)<6U+;UEU'7=_&P==45]904M%4U%Y64];24-;2W-;7W-11
|
||||
M7T%:4-G:W-+5T-_755986%U14-/<T][5U]/=U%U04%->4E935-W8V]'1WM1=
|
||||
M15M7T-W1U][<W='45U)=7%!=5M==5M#3U-?0W-C57E?7U5)0U=';T%'3W=10
|
||||
M4EU75%)<5-!55EU35=W:T]'3W=16T=#0U%U55-35U=1!<'5#6%;6W-C$Q\;'
|
||||
MQ\7:V-[<W=#1U]155%=645!04%-34U!34%!04%%65U=45%55U=74U-34U]?7
|
||||
MU]?7U]37U-34U-34U-34U-74U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75________________________________________________________
|
||||
#____
|
||||
`
|
||||
end
|
@ -1,323 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 3.al
|
||||
MU=755537UE1555=75E=75%145%75U-?1UM;1UM;7U-555%=75U=75575U=?7
|
||||
MU]?7U]355%545%155%15U-?7UM;1T=?4U-5555175E965E=45=?0T]?4UM55
|
||||
M5%=45%=5U=;0W=+3UM145E%15E!145=45%555%=75U74U-77T=#0T=;6UM?6
|
||||
MU]34U-545U145=77U-355%=645%75U15U=74U]?6T]#4U]545%74U];1T=?4
|
||||
MU5145U914%%75574U-34U]'1UM?4U51145945=74UM;6UM?455=645%15E=5
|
||||
MUM/2TM+3T=?6U]?7UU5445)24U%05]?4U-?4U555U=37U-35U574UM'3T]'1
|
||||
MU]35U5575U975%=755145U145%555=555=74U-34U-74U]34U-?6T='6U]15
|
||||
M55175E965-77UM#65%1745965E94U=37UM'3TM/1UU5555545U145%75U-?4
|
||||
MU=555U915U=4U=?6UM;6U]?4U5145%175E%65U=5U=74U-'0T-/1T=;5U=75
|
||||
M5U77U-35U5545E9145?5U=?7U]3555=14%%4U-;3W=W2T-=55%=75E145%14
|
||||
M5%77T=;4U5545%145U=65E975=?1T]/3T-?5551745=45-?3T-37U%545E%1
|
||||
M4515U=37UM;6U]355%145%545=74U5555%35U]?6U]?7U]3555545%15U=37
|
||||
MU-?7U]?7U55455175%=65E145%75U=34U%74U%145-75U];6T=#1T=?7U]15
|
||||
M555555575U=75U915E35U-?1UM?7U]?7U]?7U]?1UM?7U-34U55745!14594
|
||||
M5%1555545U15U-?1T-;1TM;5U5755=75U=545%145U975%=75%155535U-'3
|
||||
MW=S3T-'7U5545E!04U!65M74U]?555155515U=?6T-/3T]#1U];7U5175U93
|
||||
M4U!15U=6U=34U];4U=555%75U=555=34U-?4U-37U-75U%5455175E%65%75
|
||||
MU]?7UM;4U5545U74U-;1T='0T=?455155%=75U145%55U=555555U-'4U-?5
|
||||
MU=555%175U15U]?6T=155%=45=3555145-75U-?4U-34U575U=34U-34U-34
|
||||
MU-3555145%175U=45=74U-77UM#3T]'6U]34U-145E145U555=37U5174%)2
|
||||
M4U%15E15U-;1T]/3T-/0UM?5U=545575U=3555=55=77U]5445%05E=75-77
|
||||
MT=;4U-35U-?6U]?7U=75U=755=3655=55=75U=555-5555145=75U-?6UM?4
|
||||
MU5545U=75%15U=74U-75U=74U-755%175U15U=?7U]?7UM;6UM'6UM355517
|
||||
M5U=45%75U5755U9455155575U-'0T-#1UU545%145%145%145U=55%=65E35
|
||||
MU=36T=#1UM34U%55U=37U-37U-37U]=55U%145975E=5U-37UM;6UM;7U-76
|
||||
MT=35U]55555455555%55551555175%75U=34T=#3T-'455175E975-74U-75
|
||||
M5%75U5545%75U=75U=75U=75U-?6T-#1UM34U-555U9455%1555555145%54
|
||||
M5=37UM;7U]?7UM'0T-#6U-545E%145%65U975%35U-36U]?45%=75U355=37
|
||||
MU]'0T-#1T=?55%915U=65U155555U-?4U]=75-74U-34U-755554U=36T=;4
|
||||
MU55555545U=65E=4U=?7U]3455175=74UM;0T]'6U]545U75U5545%175%57
|
||||
M5U=45574U];6UM#0T-=75E545%545%35U-;6UM?45U9145%7U=34UM?7U-75
|
||||
M5%175U55U-37U-?4U]?6U-?6UM?55%%045%65U35U=37U-?7U]?4U-?7UU55
|
||||
MU-34U-'155555=5555=65U=75U=75%75U=?7U-35U]'1T=;1T-;7U5545U=6
|
||||
M5U=75U5555545U=75=77UM'1T-/0UM?4U5175U=455145%=145=45E?7U=37
|
||||
MU]?6U]37T='3TM/0UU575E915E975U=45%75U5545U975=71T]+3T=?4U=75
|
||||
M5=555575U-155E975E=45U145%75U-;1T]/2UM36UU1555175U965]77T=#0
|
||||
MUM545U%15U145U=5U=74T='3T-'6U%565]55U=75551555545%175%=75=74
|
||||
MU]'0T-/3T=?55%175-74UM'0T51455%15E975%155%145=55U=34UM'0T-#0
|
||||
MT=?555145E!14595U=34U=755=75U]?4U575U535U=?6UM'0T=?4U5175E%0
|
||||
M45%15E35U]?7T-'7U]?4U]?4U=75U-34U=74U]3555175E965E965%75U=55
|
||||
MU=37U=74U5145=37UM'6U-?7U]?7U]1555=45%155%975%=75%15U-74UM=4
|
||||
M5=34U]'6U]?4U]'1UM;45%904%!15E975=74U];1T='6UM;4U5545U15U=74
|
||||
MU-34U5555E%15U=75U14U-;1T]+2T]'6U-5745!04%%65='1U];7U]35U554
|
||||
M5%975%55U-;1T='1T='755165E=75%175U=75]74U-?7U-35U=35U=74U]?7
|
||||
MU]37U-555575U=555%=65%55U=75U-?55E745575U=?7U]?7UM;6UM?55514
|
||||
M5%=65U145%355%145%155=77U-?7U]?4U-77UM;6U]35U5545U=15E=55555
|
||||
M5%145%75UM'1T='1UM'0UU555U=75=75U=37U%175E975U145%145%34UM;1
|
||||
MT-#1U]3555=75U14U=75U5555%74U-?7U]=55%=75%75U-;6T=;6U]375=75
|
||||
M55145U%45%965U=455555%965U34U-;6T]+2T]+3T-'755=65E%65U155557
|
||||
M5%145%=75U=75=74UM#0T]+2T-;555=645975%965E965U155574T-=5U]?6
|
||||
MT='0UM?755145%75U-3555555%=65E=75E75U-?6UM;7UM?6U]155U975U=5
|
||||
MU=?1T]/0UM;7U-545E%05E975%77U]?6UM?5U51655175=37T]W<W=#54UQ<
|
||||
M75U=75)6U-+<W=/6U]?1T-?4U-77UM?55575U];7U5145%155%=65E=75U=4
|
||||
M5=37UM;6T='1UM155%=145%15-15U=?4U-74U=755%175E975=?1T=;1T-#0
|
||||
MT=;45%914%!15E145%74U]?7U]555575U=76T=#6U-74U-37U-7555=75=34
|
||||
MU=5555175-564%155%555=?6T='1T-;7U-?6U]?455545%175U145U975E-1
|
||||
M5E=75]75U];6T='1T-'0T=/0UM?4U-575E%04UU245=4U=31T-'1T='55=?0
|
||||
MU=74U=155575U-355%574%975U915U=5U-;2W=W3T==555175574U=545554
|
||||
M5%74U-545%7555=455555=77UM'1T='6U-35U-545%755E'5U=7455545%14
|
||||
M5555U-37U]?7U=37U-?7U5555%75555555545=75U=75U5545515U=75U=35
|
||||
M5554U=?1T=;455175E975-75U=?4U-30T]37U-74U5545%=45U=5U-75UM'1
|
||||
MT=?55%965U35U-;1T=?7U]155%=75E%145945=37T=;6T='55535U=745596
|
||||
M55175535U-?0UM;1UM55UU115%75U-37UM?45=555U914%%65U=5U-?7U]36
|
||||
MT='1U];455145-74U=36UM;755904%%65E75U=75U555555555555-35U=77
|
||||
MUM?7T-#4U];7UM155U=75U%14%-15=74U];6T=/3T]#1UU575U945%77U]34
|
||||
MU=5745%04%975=75U=34U-36T=#0UM3455555555U5575%145=575-;4U-34
|
||||
MU=55U=75U-34U];7U-5555175%545%145%1745975%55U=?1T='1T-#6U];4
|
||||
MU-74UM'6U]155%=04U-15E=75E?5U=;1T=;7U]'655555-75U-5555145U75
|
||||
MU=34U5165U=75=74U]?1T=#1U]355%9145145U15U-?6U]7555555%975-77
|
||||
MT=#3TM+2T]'45%9145965U144%%75E975-75U-37UM37U]?7UM;6UM'6U=35
|
||||
MU=555%74U-755%115E%45=76UM505]555=?1U%54U=77U='2T]=55%!34594
|
||||
M5574UM'4UU75U-)71E9<5E=7U-3<T]W1T]/2T-'7UU745E904U%75U155%15
|
||||
MU]9445=5U];7U-77T=?7UM#1U-?75%%145%75U545%75U%14U=76T-#1U]37
|
||||
MUM76UE96U-'3W/'[W$1A84)]6$+4V,W"QL?#R\??WL764%975%)<7U#74]!4
|
||||
MT%%155;4T=;05U14TU34U%%05U%4U%374%704592U=72T]#<W]-4T%54U%=4
|
||||
M4%?4W]94U5=55]=64%54TM165571W=114%51U-=4U=305%)4U%9%UMK3V]15
|
||||
M7U;77-W0U]%2TM;255M4T]I=45-:4EU2U-[<V=[?TU]25,745U%>V=?2W-O4
|
||||
MW5)25T=70U950<=;V%+3TM3=U][#W=9?TEA"4$/"3U117,K,P-)5TD/65%55
|
||||
MUM1!U5)34]G67=]77]/2U-_2W]=>7M57555'6-S9V%E?VU]6P=_U7U!35,;4
|
||||
M6GU%7\#:6O%9\?9>]73=7E'/</5Q2M%X\$I7P$+_P,#Q4,A!T%AX5']!4]#*
|
||||
M4-W<P</7SM5755#44M7=1=-3V]!&1EW$==)U4?3"S-#'UO906TEVP$E-ST'W
|
||||
MS'WR3M?U=_%;6_]4P-=U2EI;WE%/V4/2R4/1QE?]P%/:3D14>5K85<99W?W.
|
||||
M\-37S-K=W'5Y6'_=4W#&0-?_W-7(34+.=E3>>=G?6?#!T?/=T]78?-C2>,Y>
|
||||
M><O16>10W.;?1=5/<%-%8U3;3_#-0L;\2MKR2=_/0T'"VT_*QGSTUWO.WGC>
|
||||
M]'52\TQ5_71<]T!3PD92RDA=^T]+\-!TP%YWSDI=U5G&V]=$Q]M:P%=55]/=
|
||||
MV\%`U,Q+1MM0T])<TMQ3TEQ87%K?U%W<V<?>7]E=4590WW;5W%#6W5-=S591
|
||||
MQ]!;W\185U#54%G5V437QM135-%<UTS<]G76]EA%5]W?Q-+!5UQ7V5Y(64'$
|
||||
M4=?P4%U5T=!WUU+9P%I4U%M!W<%25%?>P%3'V-A765]1T]5&TEQ-5%M0T\?>
|
||||
MQMA$4E]74U7+UM7&W5A<U]%?4=[?0D7'5]=05,Q#?5W-QT36_=Q.W\K26U/=
|
||||
MU-5>6U980-/.4UY!P,I%7];"05GRWT5VP/!>TUIW6==,U?=55=K4P-I;6L7;
|
||||
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
|
||||
MT-'6U-545U975%755]775%554%!27U];1$=$1$1;6%A<4%?5T=[8VL3&QL3%
|
||||
MV][2TM#6T-'4U5=14U-7U=77UM;6T-#6T='7U5914%-=75!04U!15%55U]15
|
||||
MU-15U-564%U<65E<4E%65];1TMW<W-W?V=G9V]K:Q=G?W=;55U%27%]>7E)3
|
||||
M4577U=37UM?5UU514%Q?65A?65Y<4U94UM+<WM[>W]W2TM/3TM+3TM/2TM/1
|
||||
MU]3555=645=14U-375]?7%]<4U%7U=?0T]+2TM/3T]'6U]755575T=/7U]14
|
||||
M55575E904%!05E=5U=37U-555%15U-;6T-/3W=W3T]#1UM3555=65E904%%7
|
||||
M5U=45575U5555515U-34UM?4U=74U-36UM1455514%175E145%54U=37UM;1
|
||||
MT=#3T-'6T='1T=;7U-37555745%34E)34EU345=45=77UM?7U]?7U]?7U]75
|
||||
MUM;6T=#=W]_<T];45%904EU=4E36U]#3T-#6U-564%!04U)34%965U145=75
|
||||
MU]?6UM?45=74U]'2W-[>V=_=T=?4U55455545%175E%14%!05E%04%!24E)3
|
||||
M4595U-;6T-+<T]/?W=/0T=#1UM'1U]155U=45%75U-545E%34E)34U!65=36
|
||||
MT]/0T]'7U575555555545=55U=75U-35U-37U]?4U]?7U=34U55745%145#5
|
||||
MU%35U=77U]55U=75U=75U=74U];6UM?4U-35U-35U=?4U574U5175E975%17
|
||||
M5]77U];1UM?7U];6U]?4U5=75%975=74U];7U-545U=65E-35U95UM;0T-;7
|
||||
MU-74UM'1T=;7U555551455175%175U=75U175U15U=?6T=#0T-#6U%545U%1
|
||||
M5E=75U35U-;6UM?455=65E=4U=37UM?0W-+6U]545E965U=75U5555755U97
|
||||
M5-75U-?6UM'6UM?4U=155=75U=75U-34U-145U=75U155574U-37T-'6U%16
|
||||
M5E=75=37UM;6U]?4UM165E=04%%15]74U];1UM;7U]?4U-?7U]?7U]355575
|
||||
M55555%175E%65E975%74U-75U554U-?6UM37U-37U];6U-555U145U=75%55
|
||||
MU=15U]/3T=#1U]?55%15U5545%965E%15E?5U=37U]?4U5545%155574U-;1
|
||||
MT='7U];6UM1555145%=75U=455575]74U-74U-75U=37UM'1UM'75%155%17
|
||||
M5U=45=75U=7555555%75U=34U]?6UM?6U]35U=55U-355575U=75U-155%=6
|
||||
M45%65E=4U=?4U-35U=74U-?6U]?4U-35U=555-30UU555U=45555U-37U]15
|
||||
M5%145%155%75U=?1T]/3T-'7U5165E965E35U=75U555U51555145]74U]?6
|
||||
MU]34U-35U-?4U5755575U51645U15574UM;7U-;6T=;7U]37UM;7U-37U555
|
||||
M5%=145%15E=45%75U-34U]?6UM;6U]?4U-?4U51645%75%155%175U=4U-34
|
||||
MU];7U-?1UM;1TM?5U5115E=75U1555555%75U=75U554U=37U]34U-34U-34
|
||||
MU-75U5575U975%545%15U-34U=75U=?1T-/3T-955%=645%65U77U];7U%10
|
||||
M5U145%=4U=74U-37U]?6T='7U]545U9645975=75U=75U=75555555175=75
|
||||
MU-34U%145U145=36UM'1T='0T=?4551645!045965U75UM+6UM'45555U-37
|
||||
MU]37U]755%145E=75U=4U=35U=355575U=34U]?7UM;6UM;6U-555%=64597
|
||||
M5%75U=37U]345555U=34U-?7U-35U-?45=?7U-7555145U=75-5555=75U=5
|
||||
M55755574U=34U-?7T='1T='1UM;7U51745945U=455555%15U5545%=45575
|
||||
MU]?1T=;7U]?7U-34U=?65%3555555%175U=5U=74557555155=55U-?6U];6
|
||||
MUM?4U5575E975U14U=34U]?6T='0T=?45%145%55U=34U]?4U%545U%15U14
|
||||
M5=345%?4U-31T='1UM'1U]?7U-355575U=555E%04U975=;45=36U=76U%11
|
||||
M5M34U-;3T=;1U]7555=65E%04U975]77U-75U-?7T='6U]345%31TM'1UM15
|
||||
M55545U=65%=645975%74U-;1T='6U]355514U=37UM;4U5574%!045!15U75
|
||||
MU]'0T]/0T=?55575U=74U];6U-555%145U9755=7U-34U]37U%555%155=74
|
||||
MU]?4U-?4U-555%=65E15U=?6UM?4U-55551455545%75U575U-74U-34U-?6
|
||||
MU]34U=35U=75U-5455=65E!35%565-55U];6UM?6UM'6T='7U]34U-35U555
|
||||
M55=65E=75E=75-755554U=37UM#0T=;7U%575U145%=5U=74U-34U%75U=55
|
||||
M55155=74U-145-?55=74U-?6U-545U=75U55U=37U];1T='1UU545%14U555
|
||||
MU=555=5555145%545%74U-34U-77U]77U]155%155575U-35U5575%55U=;6
|
||||
M5%555U35U-?7U]?5U=35U=555=74T=;6UM;75555U-3555575U975%=45%=6
|
||||
M5U145=36T='7U]?7U-34U=74U-35U-;0UM=55%934%!34E#5U=77U-?7U];4
|
||||
MU=34U-545515U=355=74U]?6UM355=755=75U=75U5555=755=74U]34U%75
|
||||
MU5555%145%145575U-34U-34U5555%70T-?1UM35U55555=75U=75-55U=75
|
||||
MU5545U=4U=75U-?6T='6T]/0T-#6U-355%9645%65E975U=75%175%155=77
|
||||
MT=/2TM+0T]#6U%1745Q=4%%75=755=75U=55U515U=74U]?4U-?4U51645=4
|
||||
M5=75U-34U=74U%555U=75%74T=#0T-'7UM145U=75U145%75U-75U=75U-35
|
||||
MU%15UM?5U]35U-34U=74U=5555145%75U5555%965U35U-?1UM;0T=?555=1
|
||||
M5E=5U-36UM?7U-3555145=75U-?6UM?555145U=75%55U-;1T==75-54U=75
|
||||
MU-?7U-75U5=64%975=?0T-'1UM34U5545E975E945=74U]?7U-155U=75U74
|
||||
MU]?7U=34U=74U-355=75U=75U=555%175U55U-/1U]=55U9645!05E34UM#0
|
||||
MT-#1T=;7U-155%35U-?7U5145U=45%975U965U175]75U=34UM?4U]34U]?7
|
||||
MU]?7U-355%555%175U35U=544%95U=37UM'0T-#1T=;7U5=75%145U54U=34
|
||||
MU-75U5165U9045975=36T=/2TM+2T=?555=65E9145!15E75U-3555145=75
|
||||
MU=75U-;6U]#?T];6U]34U=7555145E9145%65U75U]?555555575U=34U-75
|
||||
MU=74U-37UM;6UM?4U-75555555755555U5175U54555555145%55U-'65594
|
||||
M5%=75%74U]?6T-'1UM;7U-55U=55U=555%145574U]34U5555E%65U=75=74
|
||||
MU];1T='1UM?4U=5555545%=75U965E945%175E35U-71TM#1T];6UM?5U-;7
|
||||
MU-?7U-755%=65E%14%%65=37U]35U-?7U];6UM?7U]?6UM?4U5575U915U=4
|
||||
M5515U-?7U]15U=545=34U-35U=75U5=15%555%75U555U515U=75U=37UM'6
|
||||
MU]3455=75U155=74U-34U]34U-3555555%=75%145%545U55U=37UM?4U];6
|
||||
MU]?6U]?4U=55U=55UM#555104E)34U!15E15U]'0T-#3T-'6U]545%15U=34
|
||||
MU];455145U9645%75-77UM;1T=?5U-34U=75U=35U5=7U5555595UM;7U=74
|
||||
MU5905M145]76TMW=T=;45U%34E%65]555U%65=31T]W2UU=4U-?6UM?6U%57
|
||||
M45!65577T=;7U-555%155E-35U575]?0T=#1T=564%!15]30T]W=T]+=UE17
|
||||
M5U=7TE!T6E%<P=],<M'DVT)>W?OD1VQ2Y?/?T'1G\/%)?F!4^>/`95/<=F1)
|
||||
M\>/^?61.UE?5W\'YX^[E0GIP44UY?T'.QEQP3452R=]7RO+,44AQ5]C4V?']
|
||||
M\<1,=T?5=WYP7O3*]%)0]??<<4%#4/7%5E+-W-+435=;24A:5_7TU45>Q,?"
|
||||
MUEE7UME0T%92P]]46UM435]?1M'4Q5'1R\CQUU]114%$14Q0Q,S/T575U]5%
|
||||
M15+45=/85U)5T]O4U5-2W=-545!25%114][>VL'9TT%)0-':UU9:5]S6TU?1
|
||||
MUM117D9=Q=W2WLW>V59>5%#%5%U?3=1%5E90R,W!74515--95%Y1P=C=4]95
|
||||
M45=7U=#0T=-55EE=TU164593T=A545+3V]916M'1U=5355O6V]+1T=)0U5Q<
|
||||
M5U-5U-[2W=-7TM154%/55=G2U5Q5Q=%26%#54-#7U-11U-'05=W05%-65$5<
|
||||
M4U'75MW'Q=-25=;2T%526U)6T-S45U;1T-)46%31W-5?4-'24=;1T]51UE%3
|
||||
M5-_65]#3TU=14%%14%!1TMS4U-W65==66U+0T-?6T=_?U5!55%?1UE=<4U75
|
||||
M5537UE75T51?7U)4T]!65]#3TM175E?0T][05=32W-;5U-1545)65E-<7E!0
|
||||
MT=G6U5'755%27]74T=?2V]G;W=W75==65EY25E%74]575='0U5/5UU175-;7
|
||||
MTM+0TU7455!<7%5645=5T=;6U]375%57U-56UM/1U=;1U-+3U571UE504U?4
|
||||
MU5U35-'745U3U-'7U5=5U]=5U=;1T-%45=#75=3655355U-15E36T=;3T=;4
|
||||
M5E30U%!45U77UUIP=$!95]#?VL3&QL;&Q,78V=S=T-'4U51745%04U)24E)2
|
||||
M4E-34U!145975U145=75U=34U]?7U]?7U]?7U]?4U-34U-34U-34U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
:____________________________________
|
||||
`
|
||||
end
|
@ -1,323 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 4.al
|
||||
M5-77UM'0T]/0U]31UE975U=45U=45%165E=75%155575U-?7U-34U=?6UM35
|
||||
MU=37U55555175E=75%75U-?4U-;1T-;1T=34U=555%545555U]?4U]?45514
|
||||
M5%!05U965U34UM;6UM;1UU545U=75-74U];1T=#0T=;55%%045%15E155=54
|
||||
MU=75U]?4U=35U-;6UM#4U-'545755%145E975U555=75U574T-/6T-#1T=;1
|
||||
MU]34555745%04%%65U145%=45%74U]?6U];6UM'1T=/0T]'4U5545E%04%%1
|
||||
M5E=15=34U=34U=?7U]34U%555515U-37UM=65E165U545575U]?7U]37U-55
|
||||
M5575U];7U]?7U%755U965U155575U-;6U]575E965U14U=34U];1UM?4U-?4
|
||||
MU5145U155=75U-355U9045555-37UM'0T-'1T='1U%175U145%545%555555
|
||||
MU=?7U]545E%15E97U=?1T-/3T-#0T=35U-545U%65U145U=45U=75-74U-37
|
||||
MUM;6UM;75U345=74U-355555555555545U?5U-;6U]?4U%55551455575%55
|
||||
MU-?7U]?6U]34U]37UM?5U555U=555U1555145%=755155=34U-?7U-31UU75
|
||||
MU%545E!04%945=75U];7UM?4U=?1T-#6U]?4U-555=74U]345515U=5445%1
|
||||
M5E=5U=37U]?4U=34U-75U-7555=45E=5U=34U=755%-15U94U=?7T-/2T]#0
|
||||
MT='6U%5745!04U-05M77T='6U]34U=755%=45-74U-?6UM35U5555=555%35
|
||||
M5555U5545%55U5145=74U-37U]34T-'4UM?5U=3455145%14557555555517
|
||||
M5U1555545574U-34U];6T='1T=?45514551645%15U35U];1T='0T]/0UM34
|
||||
MU=34U=7555175%=05E1645=75E975%15U=36T='6T=#1T=#1U]35U5145U=7
|
||||
M5U=75%555%75U%55U=555=75U=37UM;6UM34U-7555555575U=75U5555U91
|
||||
M5-;4U=?4U=75U-755574U]?7U-555U915E975=36T-'6U]3555545U145=34
|
||||
MU-?7U-37U]5555555%545=55U575U=77U]?45%=65%145=345-36U-;6UM'1
|
||||
MUM;7U]?455=14%!04%%15U15U=37UM?6UM;6UM?6T=?4U5755%1455545U91
|
||||
M5E%15U545=75U-?6T=#3T]/3T-#0UM155%7455945U%145!04%!15%75U-;6
|
||||
MT-/0UM?5U=74U];1T=;6U]555U%045!0459455145555U=34U]'0T=#6U]34
|
||||
MU57555155-74U-35U=755U-65%=45%75U-?6T-#1T=;6UM'7U5175U=75E=7
|
||||
M55575%755%=45U74U-?6T-#0T-'7U%5645975U145%965%155=55U=34U]37
|
||||
MUM'6UM;0W='4U]545%=75U9645!15U155-77U-77U];6T='1UM?7U555U555
|
||||
M5%15U=75U-?7U-3555165U=4U=35U-34U-75U575U5545%545=37UM=5U];5
|
||||
M551455=75%15U=545%74U];6T='7U-?6U]35U-5555555=345%%34%965U=7
|
||||
M5=36T='3T-#0T=;4U-75U%575E9145975U=45%915-?5U='6UM;1T-'0T='1
|
||||
MT=;455=145975U=75U145575555455145555U-;6T=#0T=;6UM35U=755515
|
||||
M55=75U=45=?7U-74U5575E=75U164%76UM#3T-/2T-=55U=75E965E=45%75
|
||||
M5574U-?6UM;6UM;7UM;7U=75U-5555175U=45U=65E975%555555U=34UM'0
|
||||
MT]#1U];7U]155-775U964%!145%15E15U=30T]W2T]/1U]545%555575U554
|
||||
M5U=45%15U5175U=4U=37T='6UM;7U-75U=35U5545U975%75U-37UM?7U]?4
|
||||
M5%!75%35U-37U-7555545%35U=755555U=74U51645975%55U-34U-34U=74
|
||||
MU]?7U]?6UM#0T=?5U55445!04U!15%755574U]?6UM#1U-76T];1T]'6UU57
|
||||
M5E%34U%65U=65E965U35U-36UM;6U]?6UM;6U]?5555555545575U-3555=6
|
||||
M5E975%55U=?7UM?6U]75U=75U=?4U-75U%5755545515U=74U575U=75U-?7
|
||||
MU]?4U%545%5555555-55U=75U=74U-?555145%=65U74UM'0T='6UM355%=6
|
||||
M5E=45%175E975%15U555UM#7U];7U]34U-?7U];6U-?7U]145E%04%%65U35
|
||||
MU-34U]?6U%5555545U14U=74U-?4U-34U=545=75U-74U=755=34U-?7UM15
|
||||
MU=555%104E975U55U-75U-?7U]?455155=34U-?7U5555-75U-?6UU545%14
|
||||
M5=77UM;55%=145=455=75U94U-37UM;6T='1U]3555155-75U5145-?1U-15
|
||||
M5E934U!15U76UM'1UM?7U-74U]35U]'1UM?55%=75E964597U=75U];6UU57
|
||||
M5U35U]'1UM;4U];1UU165E%65%14U=55U=74U]554%)145?4U]?7U]36U]?6
|
||||
MU];7U-35U-75U=775=?7U=15U5=55U174%915U35U='1UM;7U]?4U554U=;4
|
||||
MU=555]174517U=34U53555745-36T];7U%955]75U=5555755%155U165E34
|
||||
MUM'3T-#0U-?7U-?55%165%?5U=31U]?455=65U=755?4U-=555=4U534T=/0
|
||||
MT=;7T='4U5564%U>45!7U574U=;6U-?7UM34UM'3T=375%545='4UE175U95
|
||||
M5514U555U='6U5575U155%945-74T]#=W=/155915E934E-7U='1T]W=W='5
|
||||
MU=1045=34E!04='?T]955%=5UM145%57U]'455%05]76T=;45=;3T]%55E95
|
||||
MU]'4U5565-74U53755914%%4U5=15U=5T-_2UU55U='=W='7UM36UM-54E]>
|
||||
M5-?65UU?7%745E=4UM?7T='0W=/0UM77UE515E77UM'455155555U=1545!2
|
||||
M4E%45514UM;2WM/7U-=45-97U=945U145]#25=36T=565%134=55T-!45E36
|
||||
MUM355E37U]=15M37W==05]'<W=167U+7VMO44UA25%%45537U557U]+3W-=6
|
||||
M5MS:UEY:6E73T-14U-5765#<WM%65]'15];5U]/?WE!15=155U=>4-#65597
|
||||
MT5535E15U%545U-6TMS3UM11T-G2T=76U%?=T-'07%U>7EU3TU9<5%#1V=S1
|
||||
M4U+4W=C<W]==4]'64]''U5Q47%'0UU71TEA'U5745515U]#>V-?65%-0U]14
|
||||
M4E5<05%5VL??5EA24-/0U-14T=96TM?65%G7WMS75-164U!'4]/;TEU?7U_5
|
||||
MT-!45-?1WM+75-'>U5?6T-[6UM;?TE9=7=%77%Q97U/=V]1355%87=76UM%6
|
||||
M4];`QM%14]?6T-'5559<45'6W=?.VD1&3EA=V=!84-W>W]#6W-K%W55375A4
|
||||
MT=%14=;:5UI95MW0T-==T=%:7E??V-W=TU16T]37U%Q$4E5=U%76WMC=WU37
|
||||
MWUA055Y$6-;4TL=57M;0W<'64%I.0='`V='7UMW4U-/64$-9T\;875A7Q\_9
|
||||
M4%Y14T%)4][%P=1=75?%PMA=15A=V=9=4]W?UM#1UEY'1%E1Q,;9Q5=0U570
|
||||
MUME67E'6T-U01UA:5L?%75Y=T,?15U'4T]344=?<U-174=W'V%=?6$92V=S5
|
||||
M4%Q6TE1?U\?64U13T-O>5%M165_?P,1925%5T<;<U='775[8S-='3]'.WEU"
|
||||
M0ES;W-W8TUU&35S&Q,154-C7U%?5U5+7UE;3VE!/0EW&SME76%#1U]U615[5
|
||||
MUM'%U%]>V\-=05_2V==015O$RL9575-?U=C57E30WU-;6EW&TE717];75M/2
|
||||
MT5=?U-_$W4))7E5;5\OT]<)%2%C0T$-'6E#3]/%634Q-5MW;VM766=?7UL_)
|
||||
MQUA&7M+.Q4QV6-G/VEQ`0-/:UE=5U%U25,7%WU-0T5U55U+17UI"6MG,R,30
|
||||
M4]%57T9"4-/T\-E;4%U'5-)55L'3UU5045M97,'#V$QT7%E=1%7:P?/-T==;
|
||||
M1TE;QO7:T4595-C-Q%!S0\39Q-]>55U=TL;$54%$4]S8T5!(=D#8P,'674I2
|
||||
MP<;"U,'/TE-W=]_/Q-901EE%5]S=Q-/?7]764=]75EI#T,/24=145\3=7T=>
|
||||
M5<?.TE--U</<3D-7T-['QE9>0%Q0V\W4W=#UR4US>,3/3T%TU]O"]5'`P_?"
|
||||
M35U;0D57559#6<G90D3-PL')4'1V15?4VMQ4V=O.]-1=U=_9<4M/7=A;7%_!
|
||||
M\_3-T49`U=U:55E*4]_UR-G:6T)965=`U=W>Q-?345!<24U$T\?=TE??]?;#
|
||||
MQ5!V0T92QO7,TT-]=TOW^]!/='70\?)1=$!9^_Y?=G5&7U[=U,?&V-_(R\E>
|
||||
M2$!(W<333DI&7=C37L/<6]Q5P??P_T-:5$A:?'Q!6M13WO3VPM[8SU)$7=C)
|
||||
MQ])T=D1#4\+-UW1U7<3`_?#31U]?2=3T]E!3=7Q2PO%76'-)3=#_P5-Y=]?1
|
||||
MPL#QX?;'TU!96U#-T75%4DQ:S$90U7-524Q/7/A8T_'.P=C-1'=!4,#(]\!T
|
||||
M0\1`=EG;[>;%=VQY>$#P],+71=#W\L].3T7?T-/R]%]#<WQV0E9W2DW*YN3Q
|
||||
MV=I!WUME6]/%6D;UUM944DQ`X>+EVDA_>'=-U\G[Q5AW9'Y8S\+TU4M)=MK\
|
||||
M\_364%I?QL[V4$M91M_-SUYQ2LWPWW1'UTQ&2MKVWLY63W),P,G\]<37Q=-,
|
||||
M171^2]?/R_//7DM+1$GUQ=7>4M]61US2Q=O,^O#<=F5S?75?P?'.SM#&R,W0
|
||||
M7U-/145!7U'25-U6U?'35<564U+6W$%W1-=0V?'%QL+137]T=U/QS]-?157?
|
||||
MR<7`V$5-0T!34M3S\\+TQG)(1G%;UU3!\/C^TF5_7ES<=71'4\?Q^?+:7TYR
|
||||
M?W)34-+;]^3Y\D5T=7YW3U+2QO[]P/720T]`U-#2Q=Y9=7)A9$M7\.?F_/;+
|
||||
MP5=%1%A><WYT5</:SO3TRU]+3D=>1U#`R=]3TL38S-Y&1$%8UE%&3UU54%90
|
||||
MU,??7][*V%)>UU5%7,O_]<1?='9+2D_>R/3/QLO+SEQW?GE#4<7$45?$],)2
|
||||
M='13R?7(Q]!`<GYQ7<7%UM/"R_',U%122'9&U=[%]?;TR]I90T1:0$M"1G1.
|
||||
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
|
||||
MP<KUP]-21D)=S^7CX/G==F=A9'=2W=!%<7Y^<$33VMO35EU1T=G#S\_-Q=+0
|
||||
MT=;1W]O9W=1=6%E=5=W9V=G?W=%0141=U=/<W]/6U570W]S75U]:6U#;]/+\
|
||||
M\\)32GU_=DU85E126D-/3T)!15+4W-O:V,7%V-C>T]'65533V=C%V-W74UM'
|
||||
M7-/&P=O2U5-<4E'1V\79TM'1UM177D%,1UU4TL?/R,W9UU915U%<6T5;7UU9
|
||||
M6D5`3TE(3%A4UM'1UM;1UM31TMS>V\#U\?;UR,S`Q=_3T-#3T];45U]'049&
|
||||
M1$=`04187U-15%54U=_!PLC,W%)$1%I>5]/=UU-81T!!0$U`6U+5T-+655=7
|
||||
MT<7U\/?)P=K9V\#/RLO!W-=75E37U%Q-='%Q=G5`7]71UU54U-;6UM/9Q,?:
|
||||
MV-+6U5=75]74559=6D9&1D-"1EA=5-?6T-S9VMK8VL;`PL/'V]O%Q\78V-G0
|
||||
M55%<7U!<1T5>7UQ>1T!:7EY<4U?45U-1U=/>WM#6T-W<T-#=T]'055%4U5=5
|
||||
MU5174EY96UE35='=WM[;V=S2T=?0W=#3W=_9WMW1T==45%%>7%)?6%A;6U-4
|
||||
M5E?55U;55E-4U=76T=31TMW=TM;4UM=5U=74U5=7U];6T='1T='55E=14U%6
|
||||
M4%=55=555E;7UM?1T='0UM;6U]575E975%175=;75%114%=545945U555]32
|
||||
MW=;6UM70T];6T]/0TM?7T-5755!3U-=5U5165E-?7UQ05U=7U=36T-?5U]#3
|
||||
MT-;4T=#6TM+0TM/45%575E905E965E-<75)15U74T=+<W-+0T-#6U%755=54
|
||||
M5E915-75U-15U-175E=75%75U];4U-;6U]35U-?455555=755%965U965%90
|
||||
M5=?5U-?4U]?4U=;6UM+0UM'45%=75U=65E=65]555-?0UM'7U=745U%65M?7
|
||||
MU-;4U-'2T=;1UM36UU55559645%75U545E95UU575=37UM115=;7U5515]14
|
||||
M5E555='75=;75=?65=155M70T-+<T=77U576U%7455554%!445!65%15U597
|
||||
MU575U-34UM34UM'0TM/1U]5455%65U755U%15%915554U514U=545%55U]'6
|
||||
MT=/1U-75U='0U]37U-;1U5355=355U745%914U975='5U-;75=755=;75=55
|
||||
M5%555%34U]?6UM?7UM15U%555U!15E%4U=34T=;0TM/1UM34UM1555545554
|
||||
M5E%75534U-77U%=555?4U%77T=;0T];6T-#755=65%114%!045%04%%75-?5
|
||||
MU=?6T-#7U];2T]#0W=/0T];4U=1445)=4U=75E%15=544%-5U=74U-?7UM54
|
||||
MU-36TM35UM;6U-?7T==55U%75U%24U95U535UM#7U-;7U-?75U?4U]37U]#3
|
||||
MT]!55%=74E)7U=76U]?1T-545%145U%05U155=77T]'5U%54U5=<4E=7U5=4
|
||||
MU]#1TM/0W-W1UM?4U-175U145%565]77U=754=775%934%!75E76UM'0T-#3
|
||||
MT=;4U-355=175U=145565-545]?5U-'5U])45-%55]114=54U]%75]175E17
|
||||
M5]745554U=#6UM?7T-W0U-77UM=55E37U5534U155U=35]?55E=4U]/0U-71
|
||||
MT-=75U74U]14U=#3U]345=154%555U174U!75-74U-36U]35U%75U-?7U%55
|
||||
MUM;6UU55U-555%=5U]?5U-14UU905U165E=4U-155-75U-37U]/2T]'3T-/6
|
||||
M5%965%11453755114U%15E=1U-'55-37T=W6U];0T-'55-75U5=05-145%96
|
||||
M5=145E=4U=;6U-'1UM;7U]'6U]34U%545U5555355%145%15U=555]715594
|
||||
M5=?1U5=4U-'3T='3W=#755=05E915U175]74U-755E345U%65E?4U]77UM?0
|
||||
MT-#7U]'75%14U-554%!5U=35U=;3T='45=?75]155U7455945=575%145=56
|
||||
M5E=55U915=;1T='6UM?5U577U]54U=355%57U]'6U='1U-145E=65U%05]75
|
||||
MUM'5U]#7U=175E545==4U]/6U=75U-145E34T-%45%55U=534%15U5145=?7
|
||||
MUM35U%145%14U]?7UM=7U=?7U=55U-355%%655545-74UM35UU55U5914515
|
||||
MU=75T=35U=74UM75T-+4U]74U%975U35UM15U-?4U5175U=65U=7U=355-76
|
||||
MT]#1T-'6UM=5U-?4U-145U115U%275)25-74U=35T=#7U]?7U]17U=?7T=#1
|
||||
MW=W54-555=5445=55%!24U;5U594U=;1T=?2TMW0T=30T]95U-77U-54U557
|
||||
M5E-05-545%975U965-755-'0T=;6U=55U5?45%545534U=71T-W055544%%4
|
||||
M5=75U=?6U]37U]'0T-77UM545U%75-565E%74%-15574U]75U-;7U]36T-'1
|
||||
MT-;7UU165%=5U557U5=14534UM?75-75U%345%76U%77UM95U554U==55575
|
||||
MU=75UE575]575574U]555U=455945=76T-;6UM#7UU54U=;5U5?4U]'555=5
|
||||
M55165E%65=545]77T=94U=75UM15U]#4U=;5U=9555165]=7U=515=;5U-54
|
||||
MU-'55-74UM#55E=5U5514]?4U]35U-/6U-945%114%=65=?7U]#1UM#0UM=7
|
||||
MU=9755965%=35%=1U==4U-34T=;7U]?6T=;4U=175E%45E1645555]74U]'3
|
||||
MU-;1U]345U75U%74U-;1T=?5U=31U=?5U=755E9045-345755=345517U==4
|
||||
MU-75U]=4U]30T-#4T='1U-=5U-=55%965=9455=5U-145E975%575%75U]15
|
||||
MU]/2T]#7T-/755575=565E74U=75UM;7U]37U]5445)<4E%05M74U=37UM;6
|
||||
MU-?0U-;4U=30UM#05=?45%%14%904E!7U='45='3U-34U-775E345537U=71
|
||||
MU];7U5775%=75E=74%!5U]775=;0UM/3T='3UU=7U5544%)35]755U77UM;6
|
||||
MU='0U];4U=30U=1555755]545E=645!74U)14%955U?7TM+=T]'3T];6UM;1
|
||||
MT575U-74U5%75E544EU15E?4U]77UM'6U%?5U=74U5%75574U594U-77U%=7
|
||||
MUU755535T=;1U%54U%14U-;4UM#55%16U==75E57U5134=?4U-56U-55U=94
|
||||
MU]'3UM35U]155E57U=545M35U-145-36T=;4UM'7U]15U5565]15U-164575
|
||||
M5]345=345%555]175U575U17U=;1T]W=TM/1U%515-74U-34UU915%!05517
|
||||
M5%165%575U74U]?5UM;3UM37T=#1UU55551045%75-74U-55U=77T=34U%35
|
||||
MU-75U-74UM945%1455=65];7UM74U]?45%97U%575%1555945%36UM77UU35
|
||||
MU-?55=37U577U-36U-36U-77U-77U-74UU3555=75=37U5945=7755?5U5%1
|
||||
M45!75U%4U=;3T-/2T-34U5=7U515UM;6T=5755575E!24%955U15UM/1U-;1
|
||||
MT='65U15U=?6U=31UM5745?55E575M375=755-375%775=?45-71U%565E76
|
||||
M5%955-745U34U-?55U;4UM;7U-;3T]?55=5555145=5445)05M55U577T-'7
|
||||
M5-74UM74U-37U-74U57555=75537U]=45%74U]75U-?1UM35U-?7U%574=34
|
||||
M5E!7U=545U?5UM75U=375596U=155%?5T=545=?7UM;7UM#1T=?6U]37U-36
|
||||
MU=555%164%)645=645=55-34U-30UM35U];6T='3W=+3U5155E!=4E%54%!1
|
||||
M5E1445%5U-77U-'3T-'0W=+7U-?7U]?45-?555=14%=64%!75%15U575U5=4
|
||||
M5]?6UM'0T=#1T='1T=;4U=175E155%%75U9755165%=5U=?4U-?6U]?5T='7
|
||||
MU%14U5555%=45U965E=55575UM#3T-'7T-#6U55755575]7455=75U755U%6
|
||||
M5E975]77UM?7UM'3W='6T]#1U]755%114E%65U965E%45E?5U]#6U]37U-37
|
||||
MU=375=?755155U555%37U]=5U-55U=57U=?55==5U=55U-37U=545=5445?4
|
||||
MT]945==45U975=;1T-34U-575E=65U=75%15U-77U]35UM?6UM;4U]545%15
|
||||
MU=?6U-755U%145!4U5175535U=;6T-W=T]#0U]545E175E!15]145]74U=54
|
||||
M5=745=36T-#3T]/3T]'6UM?45E975%%145975U945U165=74U55555555577
|
||||
MUM;7UM#3T-'7UM'1U=545U904%97U=34U-?55E=45-355575U=555=76UM=5
|
||||
M5%755575U];7UM?7U]?55=755575U]75U57555=5U-55U5545%55U=555516
|
||||
M5-75U555U=?1T=;6UM;7U-?6U=775%1555555%15U5165E%15U=45=75U=?6
|
||||
MT='0T-/1T='6U-3455545U155%545U145%14U-355=55U=37U]'1UM'7U-54
|
||||
M5E%24E-145-4U-74UM#1T=?4U-34U-34UM;6T=;6T=155U165E!045965%14
|
||||
M5555U-;6T]#0T]'4U-?55-755555553555145%=45%=45%975U=4U-;2W-;7
|
||||
MT=?7U-555=3555145-74U%545%155U145%155%75U-;3TM+3T-#6U5155575
|
||||
M55965U=65U=45%155-75U=555-74U]?1T=#1UE5555=15=34U]'0T=;45574
|
||||
M5U%04U)65U=65-77U577TM+2V=G=U5=65%135%115%54U=;6U]145U9075Q3
|
||||
M45?7T]#0T]S?V=+0W-!555%075Y35E7>S$U\5<588&SDZEU4^]K<Y5-K<>N<
|
||||
M=1)N]I7B>A][__-?T^!#;VY6Z.'DVV50_L1E8&3>[^#\V5[7Y<-]64QP4-):
|
||||
M<GME0%[1\_[?0EM6SO/!VE;(\?/UT]=;<7)R9DK+V4=7V/;W5TY50-'TWMY8
|
||||
MS<'?Q5'565QS3\#-S59\?%;/__7$=756U<-84<7"VDU=UM590DU(1,W#WMW$
|
||||
MS?3(6M7WTDUT=4!34U#6WU%3P\761=S015Y!T\W;T'54S,_&1M34U5Q=TUE7
|
||||
M6%?UQ]996UI2U5U;W<725U%?4\_WQ4!!V-/05DW/]=!.2=E75%Q8U%+275M;
|
||||
M5_7=T=16U]G:55926=G)VE%%4%%35--764U<R<S61%W=T==44=;;TUC6W-72
|
||||
M545$U][>T45%5MC?U]97T]5>1T511%3?T\?8Q,3:V5-'4]O06E997=;9V%U2
|
||||
M5U%<V=M74EW5W=Q75-O>T5]:TL311D%=W,+<7D55Q-]<1$!0T]#=U%56U-O6
|
||||
M4%/?VM%17E'0W%-7W-G=5U104%U<T%'<T%C1W-U17UY945#0UE39TM+4U=3>
|
||||
MTU3=U514UM/45D53W=W;5EY24UU2UM77U]_275]5WM596E?;WM/7T]?54%72
|
||||
M55Q=U%75UM#4V=-4T=/?45Q87=71TU764-7?UE9=7U%4U]3>WM+=4%-4UU98
|
||||
M7%=75M;45E71T=?4U]?44%74T][2T=?2T%565E-?7%975-=54-70T%5=4M'0
|
||||
MU%?=VME8<75`6%;1W-O%Q\?'Q,7:V=[=TM#6U-545U914%-34U)24E-34%!1
|
||||
M45965U=45575U-34U]?7U]?6U]?7U]?7U]34U-34U=75U=75U=75U5555555
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M__________________________________________________________\`
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
:````````````````````````````````````
|
||||
`
|
||||
end
|
@ -1,369 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 5.al
|
||||
MU];7U-35U=75U=75U=?4U];6UM355%=555=5U5145%145=37UM?7U-34U=55
|
||||
M55175%15U]?6T='6UM35U5145U=64594U=55U-?6U]34U5545%755=75U-?6
|
||||
MT=;6U]545%145%7555%35E97U=?6UM'6T='6UM'6U]?7U5555%=75U=64591
|
||||
M5E=5U=74U]?7U]?1T=;6UM;4U=3555=75%15555555175%555555U=555=77
|
||||
MUM?7TMW6UM=55%=75U145%=7U=34U-35U5165E=45=75U-355=74U-?7U]75
|
||||
MU=74U-?7U%555=75U=34U=35U]?4U-34U=75U=34U-75U-1555565E575U15
|
||||
M5=7555155U15U-?4U]'1UM;1T=?55555U=37U-755%175E%04%-05E15U=36
|
||||
MT='1UM?6UM?7U];7U]?7U-34U5145U%145965-755U74U-;1T='7U]55U555
|
||||
M55145%55U=?4U-74U]34U=555%145515U-?6UM?55514U=75U5545%=45%75
|
||||
MU=36U]34U5555%15U=35U-375%77U=74U-?7U];4U5555%75U=75U=34U-35
|
||||
M555555545%15U=34U=74U-145U=455555=74U-55U=545=75U555U];7UM;6
|
||||
MU-74U=755577U%145%965U355=34U-75U=?7UM?4U-34U-75U=55U=74U-55
|
||||
M5%=45=7555175E975-74U]?6T='7U]=55%5555555=74UM?4U-555%=645-6
|
||||
MU534T='1T=?4U-34U=37U-155=545=7555175U=5555555545U=5U=37UM;6
|
||||
MUM?7UM3555555=555%=65U=75%=75-75U=37U];7U]37T]'7UM;7U]75U557
|
||||
M5E904%%65U=45575U=34U]?4U-?7U];1T=/0UM?4U51645!045%75U=45%74
|
||||
MU-?7U]?7U]37U-?5U555U=75U]35U%5145%05E=75=?7U];7U];7U]?6T='1
|
||||
MUM;7U5545U914594U=36U]?4U-75U5145575U=35U-355534U-7555=65U15
|
||||
MU=37U]?7U]575E975=;6U]#1UM;7U5545U=455545%1555165U145=74UM?7
|
||||
MU]35U=77UM;7U]?6T-#0UM?7U51145%14%!65%55U=34U]34U-37U]?7U]35
|
||||
MU=555E77U-34U-555%=75U=75U155=74UM;7UM'1UM;7U-545%75U-755%14
|
||||
M5U175575U=75U-37UM;7U-355=55U=75U=55U-?6U]37U-555=76U-755517
|
||||
M45%145965U15U-?7U]37U]?1UM'6UM;5U5555%=65E=65E975U=55=36U]?6
|
||||
MT=;1T]#1T=;6U]355%=65E%15E=75U=75U=55%94U534U];0T=#2TMW2T=14
|
||||
M5U965E=65E945%145%145%55U=55U=74U-31UM;6U]34U-34U%545=355%57
|
||||
M5U975%74U]74U]?4U-34U]37T-;6T==55U975E=45U965U965U35U]?7UM?4
|
||||
MU]34U=755=77UM'1UM?55%145%=75U=45%74U-75U=36T-#1T=;7U5155=55
|
||||
M5%=65U=5U%575=545=55U]37U]75U-36T=#1T=?5557555=645!34%%7U555
|
||||
M55555=75U]34U-?7U-?7U]?4U]?5U575555445975%145=37UM;6U]15U==5
|
||||
M5U55U=?6UM?7U]34U-35551455175%=65U=45U1455755575U-36T='6UM#3
|
||||
MTM#6U]545U=45U=75U9045-15%35U-74U-34U-34UM'7U=;6U-?7U=755554
|
||||
M5%=65E965U55U-?7UM'0T='1UM?55=545%145%175%145%=65U945U975-75
|
||||
MU-;1TM/2T]/0U]155%175U975%555%7755155%155%55U=35U=34U]34U-;6
|
||||
MUM;7U-545%145%15U-3455545%55U-5555545=75U];7U-?7U-35U5555%14
|
||||
MU=36U5#4U%_4TE-7UE#5T-74T=15UM95U]+1T]/455165E=45U755=74U%54
|
||||
MU5555=75U-37U-555=74U-575U=45%175%545%155575UM#3T]#1T=34U-75
|
||||
MU574T=34U-555%965E%145965E=45U15U-77T=#0T='1T=;6T=35U5545=55
|
||||
M5%74U5555U145%9645%65=37U];6U]?5U=74UM;4U-?4U-34U%115U175E%1
|
||||
M45%65U74UM#3T-#0T=#0UM?7U]545U975-5555175E915U=65%75U=76T='6
|
||||
MU]?7UM?4U]15U=555U=75E945515U-?7U-75UM#4U-;4U=3455175%75U=75
|
||||
M5U=75E145%555=75UM;1UM;6T=;7T=;5U=74U-?4U]155U%15E=455=75U54
|
||||
M5%14U-37U]55U=?6U]?7U]=55-?7U-;6U]?55%=65U145U=45%145%35U]?6
|
||||
MU]?4U-35U-?7U-75551455555%145%975U=55=74U];6T=;1TM/3T='7U=54
|
||||
M5E%75%555-3155175U=75U355=34U]34U];6UM;7U-155%175E975U=75U35
|
||||
MU-?7UM;7U%55U=37UM?6UM345=555U=75U=75%145%5555155=34U]?75=76
|
||||
MUM;1T=;1UM?7U]?7U]155E%04U!045965%15U=37U];6UM?55=75U-37U]?7
|
||||
MUM?6T=;1UM355U%34E-045975=37U]?7U];7U-35U=70T-;0T=?6UM345517
|
||||
M5U905E%65E965U=45-74U]?7U]?6UM;1T=;6UM?4U=545U975E%15E=75U=6
|
||||
M5=36UM'1UM?5U=75U=34U-35U575U%=15U975%35U-?6U]?7U-?7U];6U]?7
|
||||
MU]?4U5175%145U=75U145%175U=75U=75U74T=+=W=W3T]#0T=?55%915E%1
|
||||
M5E=45U904%!05E35T-#7T=#3TM+3T-'1UM;7U]355%%045%04E-15U=5U=36
|
||||
MUM?1T=;6T-#1U]3555165E=75%175=355%=75E=45-37U-31T=36T=;7U556
|
||||
M5U=24-555=?4U-?4UM?4U]755-745=37UM;7U];7U%=745915U155=37U-?6
|
||||
MUM;4U-555-75U-55U5165U!6U574U=;6T=#7UM55U5145U=45-?6U55445-0
|
||||
M4E-75E965=36W=W=W=+2T]/1UM;6U-35559645%15E=745-34%%45-37T=/1
|
||||
MT-'6T-#0T-;455175E%65E965U=75%75U-;75U36U];6U-?4U=35U-?6U-37
|
||||
MU-54U=555U%145%75-55U=;7UM;7U]?7U-37U-34U]?4U]35U-555U=75E96
|
||||
M5U145574U]'1UM'0T=?55=71U]74U55555145E!34UU24U%65-37UM#3T]W<
|
||||
MW-+3T-;7UM35551645975U175U=64%!15E155555U=;0T]/2W=W2T]#1U]14
|
||||
M5U%14U-145-6551455145%74UM?4U];6U-?6U]34UM;6U]15U55645!15-75
|
||||
M5=75U=55U=35U]35U=?4U576UM?5U=545%15U5145U=45575U];7U555UM15
|
||||
MU-34U-75U-15U];6U]34U-555U=74%!15E965%74U=37UM'1T=;6U]74U]'1
|
||||
MU=77U]555=75U5=645!15U=64574U]?5U-'0UM?7T=%45=145%175]76UM37
|
||||
MU-575E965E=5U-?4U];0T]'7U]355%94U=555U=5551145965E=55=?4U=34
|
||||
MU]37UM?6U]?7U]?7U-545-?05515U==74E!7U5175-77U]155=37UM'6T=/0
|
||||
MT-#655144U-34%%6U=145=36UM75U=?45574U]=45-?6U]37UM'455907%#5
|
||||
M5E;55E75U-'3T-W15-;7U=;4U==55%14U]95U517U-174%57459655=65=?0
|
||||
MT--75M#3T];6UM=4U]=15E?4U5975555W=)%7%9455+4U=?7U531T=;4U];1
|
||||
MT='0T=?55U355-95U%545%36UU=575!5UM505%?1U]33UM?2T]=15%75U%;7
|
||||
MU=745=74U%104=155U-05576W-S0T-;3TM?55E%275%1U5-4U%;4UU=755?6
|
||||
MU%945M#1U]/2W-W64%33UM;<T%%15=9=6%9=4E345]=5U]?7TM=4W=)44574
|
||||
M5]?05537U551W-E46=50UE%975305%=4T-#0T-57TM/4W%14T5U15]-77M;=
|
||||
MTU-5U-;8U5U05U;5T-'6U=W6U]525E?175915-)65%;4U]#=55325U!11U77
|
||||
M4]38T==4UM+2TE57UM?6T5=>5U#55=374-37UU375-)34EU04%I6UM_1UM_7
|
||||
MQ=U0UMC35E-5TE=96=3=TUU=W-Y77ES7T=%54M15U-W1U%)1W-_15E!0TM]=
|
||||
M65974%-5U]955E?>WU=17-31WM575=C$S]!/45E:4%75UM79W,/R765W2EM!
|
||||
M3U_%],?;R?':T]?9Q=!$3E[=PM[<5D)2U-U52$#4U%975-?6UE=6V]G>T5+6
|
||||
MV=%/3=70UE[4P-U45E/?UMU94%U8Q=745U=7Q-U575C24];94U774E_:QU?4
|
||||
M7=/0UU71UW76W=575]]55-#'WU%7153745E(VLK(UT501-34UMK*U4%%1-=>
|
||||
M44U=S,'$0UA=TL32QE]85M+T]--615W?TE%'6-;!UD9.1]W5VM-24]/?5D5'
|
||||
MT]#675/2V])3V=ST55'`T=165T-025C0W%)7]]!W6=%03$#1S_W$4U[)4-]4
|
||||
MU-E.6$O!S$5.2=[+T]?$T,U<35%&WE-0W5?5V\1#U=U2V%[UTEI>T-A`2U+$
|
||||
MT%E*Q>37=W+,\=]90=-5SEA65$347?U46U?;W=[-0]AV=5_3PEE#V-W>45)1
|
||||
MV=;8WM744-';1UG,3-Y-3<51QMY>U\KPUE%U6<9+1'%9]<E6=/3U4T;5U=73
|
||||
MU<_#TEI;PD).145%4<G?W\!85L!65E?<7=O6T$92TU?00$/!QM9-5/!=W-M=
|
||||
MP=Q#6UQ=75C=U-K`7DI6WD/,VE'W5==/<T79\=U?157']UI"7]_,4D547M%8
|
||||
M4?=>6]32WM;&WDC5UL[#=$]35_;"74C2\E172UC<7\G66E)144?25DQ>V?79
|
||||
M45I4T=G05U?7T]]0W<9>44C84$905MSU6%++5UY54]C"6=O(7$9S0_1!3=?\
|
||||
MV%G94M_5U]17P-5:<7U;V<?%V=K1RLI6U$5.TM)<6%K;WT--\-A%Q]Y53E?U
|
||||
M0']$V<+UUE!6T]C8U]G47]=91M!"0O7?7T!5Q%7,6UO<741!TD?5]L/U]]+4
|
||||
M1T9>5]Y$5\5"1ES$P%U7UEI0PLW;6M-44-%:0]?PVU%0<$155,#?1];45\Q<
|
||||
M7T3#]MU<=%+?<%+;4?3/V754P%%65M#?6-CR5UG04%I'149715/>S_;3T'Q5
|
||||
M75W%U<%3UEIUV/3;ULC!3-3:2G5Q6O?UQMQ'=5'TS\37UUQS<]796717XO!%
|
||||
M471\W_71Q,-:4\;8S---1$7#T4Q-3%G?TE#<1$]0VL')P5U%5,;WUD!<WL;9
|
||||
MUE3`05;>U<5;2W55W=W.W5I(<D_05UY4R_?!R-3<4D%>4]S4VM[<UM)$4U10
|
||||
MU-%8T-C1WEY`U<??6T'6P]IVW\1<4$%>WM[635M$R\1!4M!5WL_3WU5&5L[)
|
||||
MUT)=U==#6=+%WU+6]-K614;65=)5P_79=GIR=%74UL;+\<W-U$=,3%QW6E?;
|
||||
M],]06?WTVE1R1M/;5,S2U_'<7$E-27-P0]?15-G;S,/(R-/!Q,7"7TE+1%Q8
|
||||
M75Y05-;57%M4W=?1SO/T4DE,0%U6T]?7T%3=U%+0W\_Q\-YS?W=`7-_5W<[Q
|
||||
M]%5%4UA"5E)<4M3=T]901U'?V--=5-#7U]=<1EG6VLG#WM_6U--16D195==0
|
||||
MU-)>7-#=Q/7)WE1:2DY`7E/3Q]_6T-/7U]107T56V=K24$%/4]["P-/>VL?%
|
||||
M5%I#4U!95=+765_<VU5'04=94E'4W=S%R/?*Q%!%65U=7%-15=?1U5;5UU->
|
||||
M7%U24U7<V,3%V]S>WU9:1UA35]'?VMG?W5!`2TQ:5=C>UM;3V\'&VM%34UU<
|
||||
M5]?3V=G=4D1'045=5%564%%6U]W2TM#445E2UMC%W-#3W=C;TE9?7EY34%?4
|
||||
MT,3,R\#16T]"7-+>TU1>1T=$15/4W=K"S-I437%W6-S`S=I57%-17D5975;<
|
||||
MP]M47UM8U<#(P-C:Q\;,S=C35UE#0EO=]/#QR\;?TM/774=.=G][>GEV0$1&
|
||||
M1DQT=TA`7-/$PL[+S\3>U%U5S/W[^//U]/'V\/[\RM1/?V1_UI2'@)GV%P<#
|
||||
M!Q-B=$)[8V5`S/[]4GEE?G12Q,K]X>F5Z^5:9V-^Q./KZ>?;=WYP6MOT]=A?
|
||||
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
|
||||
M1=;3U532P-[4T-C2T=)6T]-<6M78W]'1V]Y74%75TU=?4M=6553455]87MW7
|
||||
M6%U675+6T]?>V-[?V=_1S=]34=_67EE05%-&0=51TU)5V=%5U-_=5E!57499
|
||||
M5%76557=T-#1U=[<75+0T-#0T-G<UM?5U=-65%!7V%Q945=37]=64-W16%3$
|
||||
M5413Q-I35L3355;0T5Y4UM96U-=<UM#47=+&64-;4E545M+;V]16T]33UU]7
|
||||
MU5]4T5U5V%Q3WM-3U\Y15MS=55]61%;24\?2UU-5V%)=6-E115=3T53<5]'U
|
||||
MP-O1V%5314]05MA30]75547>P='37='2TU]#5E_=75S=U]I4T]7?W5S0T-U1
|
||||
M4-)1WMW15E+40EI15M'&UEE54]?=W=C:WD%%5E357-G!Q-W0TD=>W5=7UE9>
|
||||
M5==?T=+3U=1>1UU`U<#>U=_)TU]5W-E>4%=044Y&4=+1UMC)Q]C.T45U3EI9
|
||||
M0%Y3TL7$UM?#V%Q7ULGWP]-;65E$2E%5WL/5U=[84D!91U15<$'#]_?!U578
|
||||
M0G5?R=Q,4U/64%7=W=_9Q]O4P=5W==Q62%+%QM7'W%M8T51`7,[,1%S9T%!7
|
||||
M4EU<T\701%/,5-W'T%91T%Q17%+`W]U0VUU`5UM=6\;96];;QU[1TU+7V<;=
|
||||
M441(6$)TP?#UT=Q`<5'/WEOVR]9&=TM?VU#9]<_,PE!&<'!U7M'3U\?;VMY6
|
||||
MWM3=6U_05-305=W%7M_>4M3;7D720UE2TEG5VU3<V--5U=U4UEQ>P=-5W%=>
|
||||
MW59:6U#3W%]5T5)7Q-1:U<3%443<UU32T%?$TM!<5-)87];74M!10U/7TU!1
|
||||
M55=?W<=$UL/04,W;4MW07%-45U1175??V%;5TT%:WU734EU9W=!175[3T-U4
|
||||
MWM!7V<S?4,!4459!6]C875304M937E!85,/<7MQ24-99V_7%5%51=$925U15
|
||||
M5MC#6]S0P\=-5=?:W$-:5=)&5-E*UL?U5%G$4]M675Y5Q-501]O4=<_93$'5
|
||||
MQES=U578WMA?V=-9W=;4UE-04=#475[<QUQ>TU%-U=I85,725L3<6]%15=!4
|
||||
M5EU<5E1$U<O"UD79QE!24DM?TE;=5]17TMW7WUW7T%9?5M'5T%]5UU3%V<?!
|
||||
MQ%U$5UM5T75T4=M65\'$U=/%5UM77]3375U44M/>5]'0TU?15MC9T-G7T=)3
|
||||
M4D],64=-6\7=U,+U45#UP];?UUU0Q<Q$=%W74EI43%G;V4=&S]_'TE?'T51>
|
||||
M45)37%39T<W=5,'27$5=U5=004-?4=;?5='4W,_8U<7&15_55TM?R\S45-!>
|
||||
MT=E43%Y24]];6-S64U7?4M-86==8U%?<V<;$T,W$U-Y6T59`1M?65MU;6M_%
|
||||
M5DS=Q=/27%!?U5/57%/:TM756%C8VE97TMK&V%'6W%U=05;775=75%!15-7=
|
||||
MUM/6T55=W]U555]4UMG=0%?04%G3V538U5!94E54R,1'5\'+4$]$05A7UE?<
|
||||
MUMS?T5%=Q<7%UE514E5-6M'5T5=5UU;0U%S6V,G<4U94UU541US9W5->7U[0
|
||||
MW-145M#24U)<6-'6WMS0V=K95]514%125E!2W\345=[77M=17EW45EM5WU%9
|
||||
MTMQ05<3>U]'<UU?74-#=UM%94U%24%?9U5565-U>75756%W67E;<W]+2W]3?
|
||||
MVM147]?<T=96W-=3TUU24D594-3>T%165U!7TU)>WL_17=S3U%'0TEY7U-12
|
||||
MUE10W='47E3>45E=U]O?U%#6W-W15=U45]72TUE?4=77U%->UM=5U]?76U#1
|
||||
M7E)05M+=UM/9VU70V]955U?2W-52U59%0%Q74=77W57<W-[$7U;=V-1?U-92
|
||||
M6592U-O0W=!64E/2UU-75EE1W%=1U514T-)1U-#45-33TMQ5V-_655Q4U]16
|
||||
M5%U;4T!<UE97U-I4TL7<VE]275'775)<V=G?T5=45-O57E57U]S24E+0U-/1
|
||||
MU597T-38T%%5W==96UM14E#6W]-7T-?274?7TM11T]G3WE9<1T!65==2U-+7
|
||||
MV-G%V]Q75,73U=_=55=44UA36%%45UY945U7U%76W-S1V</=U51445Y14U%6
|
||||
M5=[0U%;7W]W1UM787%C55%!:7%/3W]93T,'1T=[05D]/24Y94-CT_?W]]-A0
|
||||
M0'5^97AP05#3S??W]_?"TM964%=4V<7,S<;:TMU90$M+2W5V<GU]=UC$R,S/
|
||||
M_?O\SMA31$5?4-'-R_WVS]C04DIP<G-W=G=W3$5:75?=R_#Y_O'W]_;:UUA&
|
||||
M6$=!2UQ45-1=U]335%]:3T]$64=#653>VM[:R<O*R\#&S<W;T59<75Q&3W5,
|
||||
M05Y905/1V\;&V]+&Q-W05EQ=4U];7%)>7U]24%35U][9Q=G8WM/>V=G2U%14
|
||||
M5U-6U5)97%!44%-24557U5=15M79W]75U-+45]34U-/9T=31UU36TU73W553
|
||||
M4=575E%34U-=7UU75U!4U=;;Q-]6U-/7W=S>T=#25U=555]87EE<7%)34M74
|
||||
MTMS2WM_>W=W0U]574%!15E;5UM36T=115=;455)?5E345%U24U71W=C<T]/0
|
||||
MU%=64%945555U=?4UM;4U];4U5755%755E%745)=75U65=34T=/=W-'7UM=5
|
||||
MU=#1T]S<TM#3UU544EQ24U)=4%U>4U%5UM?7T=+0T=35U]'65%?4T-_8W];5
|
||||
MUM=55%!=7%)=4E=04%;4T=/2U%74UM;0T]?7W-S445-24%%14%74U=155M76
|
||||
MU%74UU75U5%3T-_3W=%5U=945]?5U=;=T]545=#055Q>4EU=4U;5UM/2W='7
|
||||
MUM=55%75U5114=30UM?6UU565E!1U=55U-;7U=?45]73T5575=33T-=55]?5
|
||||
M5U!05-515E=75]755=?2W]S15%955%-2U=/3W=W2UM=74E-05U175E=55%17
|
||||
M5]?3T=;55-70T]#0UM?75595U5%655=5U5%25E915-575M75U-#6U]#2T]W=
|
||||
MT-#655%04U?55E;4T-=55%=55E!4U-?6U]76TU16U=575=35UM'6T=#75E17
|
||||
M4%945U=75U37U]75U%105M35U=34U-#<T=31T='7557555574%U15%975U35
|
||||
MU=355%=15-?1T='3TM'7U514UM#7UM'1TM!74%114%164%955U-05U75U=?1
|
||||
MT]+1U]'0U%345571U%-7U5=4U%35U%%6UU57U575T=11U=975-36U]35U=57
|
||||
M5-74UM=45=?45%114%36U];3UM;1U%34U%1555915%145U%6U]/7U-#=T]'4
|
||||
MU-?55U)145%55%37UM;0U%34U5%755=7U5=1U=575=74T='4U-;5U]104-;7
|
||||
MU=#2U=?3UU145E?55U%5U-545U%455!25E175]31UM'3TM/1U-34TMW0T-#6
|
||||
M5%%75E%=75174=5445955E37U];6UM'1U%755515UM+6U]355%545]?44577
|
||||
M5E955%?7UM'1U534U5=75E?4T=37U]30T-?4T-/555==4U934=74U]?5U=54
|
||||
MU==5U=?4U]=55%9655515-?7T-;5U==5U-;5U-955U545U155-36U-375=74
|
||||
M5U!4U5=4U=55U-?7U];6U];5453455%5T=?6T=;6T]=5U]35UU565-165=%1
|
||||
M5-'55=564%754U=45M375=;3T-;7U5745=575U75U=36UE555%565-545]36
|
||||
M5=755U355576U];0U]37U=3455975%=75U?5U-55U-;1T%55T=/75=37U]95
|
||||
M5=74UM145-77U%164%?55U)35%175U%4U-'6UM;1T='6U];3T-'1T-/15U!4
|
||||
M5U%15U=145=05E905]34U=31T=#0T]S<T-/3UM17U=3455=65%==7%!=4E=7
|
||||
M5M77T=#1T-/3T-/3T-?1U5!75E-05E!0U-56U=15U-;7T=35U-15U=;5U='1
|
||||
MU-7455555-555-575%565-'75-74U-974=35U]'75=;65=555M755%144575
|
||||
M4%;55=;0U-33T-'7U=755%355%37UU54U-34U%555%37UM;75E775%945E;5
|
||||
M5%%755155%%6U]?6T-;5U]#7U]?4UM#1U]'1U=355E%15%97U%=7U=?7U=34
|
||||
MU-=45%175E=14%;5T-96U]/45-555U=75U15U-?7UM?0UM77T=?7UU54U]57
|
||||
M55=4T==5U=355%57U574T=75U534U575U];55U555%%14U=45E965-54U='1
|
||||
MU5534-=55-73W=+>W]#=W]/6UM7555%04UQ34U!05E74U=34U5574U-55577
|
||||
MT]/2W=/0T-#1UM95U==75]355%=04E-145!145'5T==4U-;6UM+3U];7UM;4
|
||||
MU]'6U%575U=15M755%34UM?4U5=6U517U=;455145595U]?4U]'0U]34U=77
|
||||
MU-555%164U#4UM70W=;5T5515%575=?1T-/65M7655745%355U'7U]74U535
|
||||
MUU575%%75-7455%7U]55UM?1T]=45]5455175%175U145M745-?7U]?1U]36
|
||||
MU];6UM;6U]145U%75E955=76UM3655?55%945514U]#1UM145-7455955%16
|
||||
M45%5U=76U]?6T];7UU55U-14U-%55=?4U%505M574U!05E155=?6UMW<T-'0
|
||||
MT-;55U=55U-7U-37U-76UE514%=04U%75U=4U-'7UM'6U-?7U-#1U-;1U-34
|
||||
MU];7U5=25]=445775%355U775E=45%5545?55-77U-+<T-'0UU94U5=5T=;7
|
||||
MUU565U!34%%45535U=;0TMS=W]S3T-?555164%=65=545=15U5=05E=145=1
|
||||
M5-?6U]?7UM'6U=34U-355U34U5=15=?5U];1T-'4U556U=145-31UU?4U%71
|
||||
MUE;5UM545U35U%165%96U=75UM'65536U574U515U5545E76U%77T=;0T%75
|
||||
M55=145%65=155U74U=575-70T=35U]+0U]?7UM;455155E345U!045%75%35
|
||||
MU]?5U=?75U34UM;0T-'=W=;4U-=55=545]545]575E=64U-15%915M77T-;4
|
||||
MU]?4U-57U-;4UM'7U=;6U=75UM?4U%555U!65=34U-?7U%545E955%975U35
|
||||
MU595T='2TM#6U];55E%75595U-?6U]55U-355%=5U%5555=4U-54U=75U-16
|
||||
M5]365535UM14U=77U]35U-76U]?5U]?455=45%965E%7U%17U=?7UU75U-75
|
||||
MUM'4U-'0U]37UM75U575U%175=545=35U555U%54U=155U=555?4U577UM/7
|
||||
MU==5U5555%155U975]355E76U]34U];6UM;55%165E15U=?5U=76T-'55-?5
|
||||
M5E%15E355-31U];4U5545=36U%77UU75U-37T-15U%1655165E14U=755%15
|
||||
MU=?6U-76T574T=77U%=5U-54U575UU57U%515E%05]75UM#1TMW3T=+75=57
|
||||
M5=155%555%5555=5U%97UU9<5E=05U11U-#6T]/3TMS=T=#0UE75U%574%!6
|
||||
M5=5555155517U575U=36U515U5555%;5UU575-'6U5745=545E745-74U=77
|
||||
MUM?7U=75UM94U=175514U=345=77UM35UM15U%165=355-75U=55U=?7U%15
|
||||
MU=77UE?5U%17U51755155E%75%76U]34T=;0U-375=375=?0U]34U=154U54
|
||||
M7U'15U945U;7U%77U-?7U]35UM'1UM;0T=355E!45%=455?5U5=4U=365%94
|
||||
MU535U]36U574U]31UM;6UU755U=65-77U57555975-?1U=?6U]145%165%=6
|
||||
M5]74UM;1T-;6T='45U7755%45]745-70U]74U5=745-645;5U%35U]'1U]31
|
||||
MUE165=55U-74U%7555=4U=?1T=;45E;65U36UM34U%=4U%5645!34U-055?4
|
||||
MT=;0T-;0T=;1T='1UM?7U]71T-175%575E!65U=15E=14%915=555]37UM#0
|
||||
MT]/1T=%45E555M70T=37UM'6U]75U=545%=55%545E3455145=37U]76UM35
|
||||
M5%94U5555=75U-54U=15U5555%34U=77U];1T=;6T=55U%575U%05E=65E77
|
||||
MU]54U%74U]34U=77UM55U=?1T=;7U]15551745%65U=6U='7U-;655145535
|
||||
MU=36UM#0T]#0T-=45U9045965E155E9455=75%75UM75UM55T='5T-15UM?4
|
||||
MUM;4UM145557U=545%=655565=?7UM'4T=#75=545U545E75U5545]75U=74
|
||||
MU-;6U=76UM37U]'0UM?75=755E945E%45%=74535U=74UU74U=71U]37U]#1
|
||||
MU];7U-55U534U5175U35U514U=7555145-?6U];1U];65535U=74U-355514
|
||||
M5%5445914%-24%%75-77T=W2UM+0T=;45-37U=34U]'1U]?7U5545E965E97
|
||||
M5=77U=74U-575U15U-75U534U%35U]54U%56U5545=37T='4U];7U-34U-74
|
||||
MU%74U]'0U-3655355%?5U5%65U965E94U5575%=4U-77UM?755'5T]'7UM'1
|
||||
MUM?6UM?4UU=045-14U)65U74UM?5U]15U-;0W=W=W]W7U%564%U34E/1UU%7
|
||||
MU=;65%965=#-4WM3RM%(:W.6YEO"ULCYSF-H5)F3%AQOYY+-$1'0Z^#1UTY[
|
||||
M<'+SY^7G2G-;6W=[?W'Y[>_G<&3`Y=/24G==1E],8&ET]<WP^?3%T4]6\L50
|
||||
M5<[(V\/75=%:=79E?='81]'7V_+$6,%01O/UT$96PL347EA;4DE+T_?(U71]
|
||||
M4\7S\<1;=U51W5Q8TMC`7%S66T5?5U=9V]S7T-C-QL!34<S26W1W34755%31
|
||||
M5U3%V-G7T\?$5DW7PMW42EC0W<]?4M;745]115-1U<_'V51?1E_9V41:W=O9
|
||||
M5%Q>U_7+1G;5W5'61E3&WE-:T5#8Q-7<55=14D=$QM[=W5!<5<724%A$T,W9
|
||||
M55I07U+?V5!44=?%Q\1?6-=45E=;6-/26E#=T=C?64!<WMI415E6W]O1T%_3
|
||||
MQM=96=1>U=)7TU?>Q-/25%]3VL'54%]=4-'07%U145'9Q%1=75+7W=%5T]S3
|
||||
M5%A6TM9<7-30VMA06E_9P]=:0UE5T=-14-=5Q=A17=+!T]=26=3=5U%4U=96
|
||||
M5EQ'7U/>5=?$5M/?VM-25-564='?5-'0T]=74E514]964E?1TU154%_0TMQ5
|
||||
M7%964U;7U='<Q-)075'=U%)27];:V-%47M?75=!55E_6UE745U30UM944514
|
||||
M4UA<U-_;T-W4U=+455)94E?75=30U]-15=75TE53U=914=537=;0T571TM+5
|
||||
M5%36TM+65-?7UU%75%U05U'5UE51U=;1UU1%=TM'7U30W]O%Q\?'Q,7;V=[=
|
||||
MTM#6U-545U914%!34U-34U!04%!145975U155=75U=34U-?7U]?7U]?7U]34
|
||||
MU-34U-34U-34U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M________________````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
$````````
|
||||
`
|
||||
end
|
@ -1,278 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 6.al
|
||||
MU=74U-74U=755U965U=65U=45575U-?6T=;6U-34U-155=75U-1555545U=4
|
||||
M5%155555U=75U=37U%755=55U=56UM#2W=/0UM955=74U-36UM1555545U!3
|
||||
M4E)05E=45-?0T]#6U%54U];7U-15U=37UM145U77U%=0451455575U34UM?6
|
||||
MUM'1T=/3T]'4U]/45E!0459645=55=77UM=55E155%97U=;0TM#75=36T556
|
||||
M5=37551645=45555U=34U-355U15U=?6U]75U-3455=75U145=74U-34U=35
|
||||
M5-755=34U-?7U5145555U=?6T=;6U]?4U=545%965E975U15U=74U]?4U=55
|
||||
M5%145=75U-?7T-/1UM?5U%575%545E%145%15U175E34U];2T='3T=?7U-55
|
||||
MU=37U]5555=645=45%114%95U575UM'7U];6UM?6UM;6U]75U=74UM;455=1
|
||||
M4%!34%975=34U];6T=;4U5175U?4UM'6U5355%=5U5175U=75577U-?7U]?4
|
||||
MUM;6UM?6UM;7U-37U]575E%14%975555U-355%=5U=555=75U=?7UM'6U]34
|
||||
MU-?4551455175%555U=5U5=4U-34U535U%555=36T=#1UM?7U-7555175%=7
|
||||
M5U=55=7555175U35U%74U]?6T=;4U-?7U514U=34U=34U5575E975575U-?7
|
||||
MU-77T==4U-7555=75U75U-34U]?4U574U=555%=75U=5U=74U];7U-545%14
|
||||
M5U35U-34U-36T=#0T=;455555%%15E975%555%35U-15U=?7UM35UM#45=74
|
||||
MU-35U-7555165E1645%65U755=77U]37UM;7U];7U%55U=34U=555=755514
|
||||
MU=;7U-555=74U-31T]/1UM?55U965E914%%45=174%145%555=36U];1T]/3
|
||||
MT-;7U]?7U-34U-5745%145!045975U75U-34U-355=74U]?7UM'1T='1T-'0
|
||||
MU]5555165E!045%645=5U-34UM+<T-#1U%5645915E?5UM#1UM;7U%545E%1
|
||||
M4594U=?4UM'1T-'6U]555U9645!15U545%55U-34U=77U-555=74U]37T='1
|
||||
MUM?7U]=55%3545-65U355555U=75U=74U-34U]?7UM;7U]?4U-?455545%91
|
||||
M4%%75U=75=75U-36UM?4U]155%=75%75U-34U-74U-355575U=74U-34U=76
|
||||
MT575U-555%34U5555%145%=75=75U=37U];7U]355%=45U145=34U-?55517
|
||||
M5U35U-75U]?5U=74U]'7U-75551555145-37U-?7U]?4U597U]?7UM?4U=37
|
||||
MU-3555145%975U55U5545%14U=36T=?7U-;6UM?6T=;4U%575U=75%555%17
|
||||
M45%145=5U=74U-36T]/1UM?7U]555%75U-145-55U=545%975574U=745554
|
||||
M5=36T='6U];7U-?55=545%75555555555%175%145=74U]?7U=74UM;7UM;6
|
||||
MU%555%=65E=65E15U5565-15U-;6UM34U575U=?7U-34U]34U-555%1645%1
|
||||
M45=5U=74U-?7U]'3T];4U];4U-75U55445965U175%175U145=77U]?7U-37
|
||||
MU]?5U='1U-'1UM545E9145%65E155=35U=35U-?6U]545=31T]/0T=;455=7
|
||||
M5%555%=14594U=77U];7U];7U]?6T=?5U-?7U-?4U515U=75U5577%U04%35
|
||||
MU-;7U]34U-34U-7555145=37U]?4U=545514557555155535U-34U-34U-35
|
||||
MU=75U=34U-34U-75U=37U];6UU545%145%755576UU155%=45%145=75U=75
|
||||
MU=74U-34U-35U5164%%15E145575U];1T-'0T=;7U]155U=75=75U-75U575
|
||||
MU-34U-545U=65U74U]?6T=;6UU35UM74U-555-75U-?4U]3555145U965U17
|
||||
M5%=75U155=75U=?7UM;6T=;1T=;755914%!15E3555575U54U=37UM?7T=#0
|
||||
MT-'6UM'75517U5=05E%65%75U%75U555U5555=75U=?6UM'6UM;7U5914%%7
|
||||
M5U965U=45-77T=/2TM'4U-37U]34U=75U=755%=45%145%75U%555555U-57
|
||||
M5=35U-?555555555U=74U-37U]?7U-?7U]35U-555%=65E%65U=45575U-34
|
||||
MU]?7U-34U-34U%75U5755555U=555U915E=45-74UM;6T-S3T]/1T=;45514
|
||||
M55545=555%=645965E=75U=5U=?1T-#1T='6U]35U5575E%65%555=755%75
|
||||
MU=34U-35U-75U5555574U-34U]?6T='45U=75U145U=75%74U-?6UM?55555
|
||||
MU=34U-37UM;7U-555U=455545%175-55U=34U]?7U=74U]?7U%545%15U=74
|
||||
MU];7U%575U%145%14576U];1T='6U]35U=?6UM?4U=74U-75U=555%555=75
|
||||
M55145U=75U15U-?7UM'6UM;7U-75U-35U574U]?6UM?55U=65E!15U15U-37
|
||||
MUM?7U5?7U]37U]155U=65E=75=34U]?7U]34U5575E975-74U]?1T=;7U]35
|
||||
M55555=755=75U=55U=74U=755%35U574UM;1U]34U=34U-355595U%75U-74
|
||||
MU%545U=14%%65U155=74U];0T-'0UM?555165U=5U=37UM?55U=45U15U=;1
|
||||
MU]34U-575U175=74U]'1U]37U-75U%545%15UU11U-=45=555%=45%=5U-;6
|
||||
MUM'1T=#1U%15U5925M7655?4U-544U'55515UM;7T='0UM'6UM#1U594U516
|
||||
M5==74E%75=355535U5=4U=15U]/1T=;5U-?7U]155E!045-15=355=55U=?1
|
||||
MT-?6U-77T=55UU55U]?7U]175%=14U%45E;5U%555%37U]'2T=?5U]#75=#0
|
||||
MT]W=T=575U=34E934U975%165E75U%15U514UM95U=31U]'2U]'6T-%4U='7
|
||||
M55%75%!05-514%345536U]#0T==55=75U-34U-77U577UU745575UE504%?7
|
||||
M5U95U-74U];0UM77U5?555=4U]'7U=?5U535U]345]75U=1755575U375=?7
|
||||
MU]75UM%75=?55U745514U%34U5?5U%=55U91U=;4TU545M775=;0U]'3T]?5
|
||||
MU]575]37UM%04M37U-55U5=045)4UU14U-#3UM?4T-34U5%645!75U94U];6
|
||||
MU%76T=144594U%74T=?1T]'5T-'4U=75U=5745!745!44%'75=37U='7T=+7
|
||||
MU]#35%?1UM=4UM%05%=45U144U174%=45E545=30W-W7UM'445;6U]1455?3
|
||||
MW=73T-757%U35%9<5-125E=5TM#7TM/0U5315M?45=?655!4T=345U74U5=5
|
||||
MU%%4U=555-;1UM+0U-71U]77U=76T5535%9645U>5%)75=;95]+1T51=5]74
|
||||
MU]?0W=S4T=%4W=15UUU745=54E)=UU]1T5'6T%'0U-W4U=?1UM'9T-77W]=<
|
||||
M4%=64]765=-645-6557255)64=)44E32UM76T]525MS=U]/?UE=25U=55U77
|
||||
M5--65];1U5)35%=4UU=5TUS1U-?6UMG44U)6UMW44]W55E1<UM504U;2U%15
|
||||
MT-_4U]S44575W])27--54U19W]985E325%W05=)37<;14=3=U]754]=6T-Y3
|
||||
MUUY4TU'2UU%>UM-3U%11U=U7U=S16%35V-95T5#57U'=W]U6U][9UT?6W%1>
|
||||
M4-Y47%U=U%7555=4UE!04]G55M;6Q-%5T];=T%344]=%6%%6QE-4P]#04T?7
|
||||
MU%-76=?5T-+7U='75]_?U5/5UU_<6E[4T51?U-7<U5W0UM#8T])3W-)6T=)0
|
||||
M7%14U==1T='7TUA67UQ$7-/6WU?<Q]-75=;<55I>UM31UM73U%/<4U36V=-=
|
||||
M45537555T]/6U-5>4-=74]305=S5U,''W5U64%Q<4M-4T=95T55:5-/1W5Y!
|
||||
MW=->55355-K?5%)4WUY<PMQ<V][9TM'4W-U50U=92M=>1MA40-W37=C-U=[&
|
||||
MW5W"UT)655M?3UC25<?9P-A>UL=!6-5=7M;?7UM1457/R\#-W'11T4YUWLW/
|
||||
MR%M,7EA66D]3Q<S=TME94]C?4%!84E?04E'UWUW>V%3$U5C=TU180%9=1E#5
|
||||
M5U=1U-W:V5]?P\165]=54533UU]1T=W3T5+1VD1<Q]-;5M954U%9U-C5UM1=
|
||||
MTM145591U-_1T5-6UD%'TE75V\#9V]K8T4!/4MU'5]72W=!31E?57=?76EY=
|
||||
M5E'3U=)0WL7:T=W%QL''P_?&5%;4UUE$65%%1UE<6D1+6E!<15734$5$3$-+
|
||||
M<W%$6T?4]/CGX>+OZ>_L[NS@^O'62F5L%!81$Q`7%&AC9'YP=43>Q-#<QL?(
|
||||
M^.R6GYJ-BH.:AYO[8AT&`P(+-0,%&!?4[IR$A(2!A97/16\>!P8'&A\0>.?K
|
||||
ME9.>G)3@^NR!B)'F@X/@>F,1'1@+"@4>!@5;DY^6D9J:X69M=F@%!!(7$A\4
|
||||
MV^/TV^F$B+2UB[6U@.=M'08(-C$T#@(&:>F;A(&)BH'H]T40``\"!@<'$MSO
|
||||
MX>V<A9_IY^.'MH+<AK6<86H7'!L)-P,6!0-HD9&0A8>$F?QB>6$$`!D3&!@1
|
||||
M9_#XUN.<D>^%M+:,@HF-D&49!`8(-C0"!@8=])V:FH>,@I;6UGP>```%&1L>
|
||||
M8/_YP.*3D>+R_92#BX"$CHZ?PF44&`(U-0T!`P=_Z)26A8*-F^#@X&L&!AH'
|
||||
M``<1<U-0YIV?E.Z4EH2*B82#CH3T8Q8%`@LT"`$!!FGOD)"8@8V!D_KZ7!X!
|
||||
M!`4&!A]M7,'SE)^2ZNGI^>B"C9^$C(:5T681&@(*"0$``QW>XNB2A("`FNOH
|
||||
MYA0'!`0"`@009-?SEX6;DYV?[5STA(Z6^(."E69C>1`!"0\;&@T%VNKYYIJ#
|
||||
M@9/CZN46!P49!@,;;$/>Y9V%G):1Z5]R[YB;FYB!@Y+(1'<3`@\#`PT"&&??
|
||||
M\^B:@8::DI7X8QX;&@8`&VIZ4>"3F9Z=DY7P<&)4FH;EEHB"[L?MR1T&`@,&
|
||||
M#`X%>WUCX82&A9B8G^QD%A4<``$2%!9G_^B5E):0E_C8\I68AYN8@H'E5_=B
|
||||
M!P,!`@P"`1EB3]N5A8>$A)Z7Y$L5$AX%!!X1%7K%Y>^7D9&7Z.;ZY):&AY2>
|
||||
M@YU`=M,7!@8&``,!!1!A<-R4FYN?GYF7PG%D:AX;'1`0%7/&^>V4D9"6E>[@
|
||||
MY)6$F_J0A^IE?_05!!H>!0$$'A%I8'7AD9"7G9Z5^_;89!05%181:7EU4_#M
|
||||
MZ^N5E>OLX>"0F.CAG)?=<,9)$A(7$@4:$A(3%6=#PN'KE924ZN#^]U-_9F%M
|
||||
M;F%P0U;]XNSIE97NX^'PV5;8]-9,V_15<EG8<F%E?V)J;6=F8'Y:4%;8]O;/
|
||||
MS_?,W-K#V]_`R<CU]O'W]\G!Q]C74E-06D=:7EY25%75UM'74%U=6T%%649`
|
||||
M65U;6%954E/7TM#2V,7:V-_=W=W75=77U%575]154U#6T-30VL;:V=C?T=16
|
||||
M4UU?6T5>7D5:4E914=?2T-#=W]/4U];755;5T]96U=9775)145!4T-S<WMS<
|
||||
MW='4U5514%=74%'5UM55T=#755145U904%?5U-?1TMW=W-+6U5=075]>7U)6
|
||||
MU=36T]#55%574U%5U]?1TMS=W-_=W-W6U-155E)34%)=4E965U755=745%=4
|
||||
M5U%65=31TMS?W]_=T];55%%27%U05U15UM/1U]'1UM?455575E?5UU14U=?4
|
||||
M5U%14UQ=5]?45=/=T]'1T=9545%645-15%75U=?3W=W<WMG?T]/3T=565E=1
|
||||
M75]24U)<7%-375-7U=?0W-_>W]W=T];4U=555%=65U=5U-34U]'7U=7545%5
|
||||
M5E94U=55U=75U];555145E%14%%75%55U-74UM'0T='6UM'1U]77UM55U=15
|
||||
M5U145U175U34U51555=75U=75U74U]37U-?4U]355=30T];1UM;65%=75U=4
|
||||
M5U9755=65-75U-;6U%35U5545554U=34U]#3T]'6U]?45%=45%=65%545U14
|
||||
M5E975515U=37U]?7UM;7U]'0T-'0T%175%965E965E904%955-77UM;1UM;0
|
||||
MT]/1UM174%!14594U575U=755=5555555575U574U];0T]#6U]?55U145U=6
|
||||
M5U55U=77U]?5U555UM?5U5145555U=36T=#6U=555U145U35U]75U-555%17
|
||||
M5U155=75U=74U];6T=/1U]34U-545U945%=455545%175U175%555=36T=;0
|
||||
MT-=4U-'7UM'6UM3555145%904%-15U=4U=34U=3455155555U-37U]?6T=;4
|
||||
MU=75U57555145%15U=34U-34U=75U5555%35U-75U-35U=545=;45=155=34
|
||||
MU=75U=36UM;7U-75U5175E=75575U]?6U-7555145=35U=34U5155U155=76
|
||||
MT=34U-34U];3P?')67Q[<$=4U5=4T\3"QMG0UMW?UU=755565-/=T-77T-#1
|
||||
MUU545%9145!145-?653SXN1:8VQ]W=M`?'-3\?S,T]SU\O3;U]767D5&6UU9
|
||||
M45165]+9W=W1W]!645?655A?U-1865?4UU-045/2T-S2T\?$5U_<VEA:5M15
|
||||
M5%!755A=T-75U-7#T]'7WM/7WE/7UU5415G64UU55M!=4MO4UE_2Q]!?7\;<
|
||||
M5%/3Q]!<4-?8U$!6U%-=6U9<5==<UMS1TM/45-W1U5W2W]%5U-O95$;4VUQ8
|
||||
M5%+5T59?4M947E;3VMW5UM/5T]#65]+8UU%;4-567EQ5TE%04MW?7=#15-37
|
||||
MW%9>T=+14%'1T%]1TE36UM;0T554T5!;45'5U-'=U];54]/14=34UU365%;5
|
||||
M4M?44=!5TE=1U5W4U='15]+3U]954E?54M/45M%55U155]375%;5U]!55-70
|
||||
MU]'6U=73T5U0U%935%30T-/44==7T%=?U5-3UU?6U=;0U=?6W==75]=25M95
|
||||
MT=76WU374=;4U-11U]55UM=14%715=Y55M=5T%)355=075#655?5U]U=W=_3
|
||||
MW-55T]_44%745UY5W555U]'4U%9445547U91UM%6UE70U5104=#=T-31UE/6
|
||||
MTU145E305U3=UE105=_175G4UUY=4]70UMC>TMQ6T%!?5%%65=?05U35U=;5
|
||||
MTU]7T%354M?65=95TE%4U%%24=_0W-#4T]%47UW7UE-24-71TM16T=%44]/7
|
||||
MU%;7TM;7UM%4U===5M1?U%!4UU344-?0TE]0V-U45]S55%355-%44=#155/5
|
||||
M5-765U?5U]36U594U5=45E'0T%50UM%6UE71T=105=;=UU/1UUW2TE56UM35
|
||||
M5E!44%74U=#04]365=73U%/1UU%77=Y35%77W5934=W2U595U=315U#2UM%6
|
||||
M4U77T]/75=#74%;65%_55ES0UU=1TU?4W=55T-S55%?7WM514%'45-37T=71
|
||||
MUE!04=;655?6UU9=U]-6T=974%705U'44=;14595T-7655?0U]31U5135%-5
|
||||
MU--44E34U%%6T=;7UM;?U-55U-15U%75U5175-!?5=915=;44U/6UM31W=/5
|
||||
MUM985U124]/35=/65M;<W%91T];145]=4E144]37U5+65=3<T]+2U5+7UM;5
|
||||
MUU74U]?64M5545505575TEU?4=%4T=%55M74U554T='?UM?2W-54U535UM75
|
||||
MUU355%117=577UA6T]?6U='2U]%7U-;05=;65=#<4E+645=65E505%514-/1
|
||||
M5]75UE36U-#1TM%44%!75=555=!65E%545)5W]!35M;>5]?2T-/1T=135%#7
|
||||
MUU50T<;365[7T5]<4U;74%30U]56WM=4T=75T51?5=+1U%36W=+=5]945E92
|
||||
M4EQ3U-/4U=70U]'44]364=?75-;1UU915-/245+1U]=25M30TU/65E14U5!2
|
||||
MT=?35=31T]!4T-;35-?54-5455)65]-74-S1UE76U]?57=164E755%'7T-W3
|
||||
M5%?6U5-=4514UU77UM364=?4T-W755;5UU165=?4TM[=4]307E547UU0UE57
|
||||
M4='35-94W-/54-79T5=5U];54%/5UU10U='45-507U?0T-36T=;74E-6U%14
|
||||
M5U555%16TU30TM15T=[5U=?6T%3155;4U5)6U5]675!65M95U='1U]'?T=?3
|
||||
MUU12TU9=5E705=?6UM/15]31TE96U]574U-5U=535]/0T]?45-K245U445]2
|
||||
M5=?0T-W0UE!;65A91D525U15W-O&PL'&Q</&V-?455%54U]>5M5045I>7U)2
|
||||
M65Q?5E%6U531T=+9WMO;VMG>WM+6U5=14U!27%-65U=55U975E%14%-45537
|
||||
MT-/<W=+0TM/3T-#0T-=445904U!75E=5U%565U1755545575U-?1T=#1UU16
|
||||
M5-74U]'1UM555U=75]77U]'6U5175U355537UM35U]'0UE5555=14%!34597
|
||||
M5=75U=;6U]?1UE74UM?7UM#6U]175E175%545U145-77U5145U14U='0T=;6
|
||||
MU]?6U]37UM3555=45%=45=36T==45E914U-04U%4U=36T=/3T-#<W]W2T=54
|
||||
M5U%24U975U165U575E!05]355=355=;6U]/<W]G9W='0U%155E!655=65E%6
|
||||
M5%905]54U=575E15U=?4U]W<T];1T-;55%1445%64%95U5=45%%15-76T=;1
|
||||
MT]#6T=?5U=145-74U=755%=55%%65=555575U]37U%74T-#555175%175=;3
|
||||
MW-/5U-'545964534U=74U%=04U-15E35U]#3T-W=T=76UM345%!655915E%1
|
||||
M5U96U-;5U-?5U-;4U-'7U]#0U];45%554U!55%?7T=;0T-;45%)245!34%-1
|
||||
MU]'6T]+6T-W3T=/1UM=675-14%-4U-'0U=72UE=75E;55%965]76U535U5=5
|
||||
M5=74U]37U%14U-54U='1UM34T-/6U5514U!=4E355-'<W=S?T]#2T55555=5
|
||||
M4%Y24EY<5U15TMW6U]54U5905E=4U-?5UM+1T=+1UM/6U-355U144=745E34
|
||||
M5E=54U-65U;4T=?6TM;4T=;4UM#6UM'455=145!24U145%74U]?7UM'655=6
|
||||
M5-;4U='1UM34U-145-54U=?1UM545E!24E)25M75T=+6T=#4U=;7U]#0U-;5
|
||||
M5M7655155U?55%9555%55%975U;5U%37TM;4T-/6T=?5U-=74E?5U]#1U-'0
|
||||
MU%755U!745U15%37UU35UE57U=75U574U]75U]?4UM?5UM145%75UM;7U]?4
|
||||
MU%57555645-05%175-35UMS2UM'2T-15U=#3U%75UM%55U1445U=4%-15U16
|
||||
M5-?1U]?1T='1T-'1UM145E1555175U965%17U='7U-?45=?7U5145=75UM+2
|
||||
MT];1T-;555574%-15U175%35U=?7U-?7U]555%7555=75=35U-55U-?5U]'7
|
||||
MU];555755%555=355E%45%165]77U]34U-#0UM75U]37U]35U=37U577U%55
|
||||
M5E!645U0U555U]55T=%55U55U-15U-74T-#1UM;6UM?4U-;55=755U=44%;5
|
||||
M5%3455=45U=75577UU74T-35T=#55='1UM'6U-5745975%=45=7455!15517
|
||||
MU-355=355577T=;4UM;6UM'7T=955U=04E!75%14UM'4U-'65575U=75U-?4
|
||||
MU-35U577UM74UU5755915E915E15U535U-37T='6T]#7T=95U=74U]35U%17
|
||||
M5U%15%=7U=55U%575554U-;7U];4UM;4U-;455165E175U7555=65=155%34
|
||||
MU]77T]'6T='0UM37UU1345915E1645=4U-55UM95U=34U]?4U=75U-74UM/6
|
||||
MU]'0U5=64%U345=5U=74U-?55%545-5645145=345=?0T]S=T=+?T];6U]31
|
||||
M55%74%)045!65E345%?5U571UE=5U594U]34UM?6T=?7U-345555U-?5U5=0
|
||||
M5E965%55U-15U-;5U]'7U-=45]15U=;45-375=355=34U-=5U='6U-?7U-'1
|
||||
M5E!45U914E%64%-75]74U]'1UM;1T=;1T-;7U]155%1555165E975%=15E55
|
||||
M5U=7U-'1UM'3T-#7U574551455755575U-?7U=77U%545E'4UU;5T=37U%=4
|
||||
MU517U554U555U-15U517U-;6T=34UM;4UM75U%115U9045975-74U]74UM?5
|
||||
MU555U-;7U]+=TM/1U]?7U]155%904%!04%)15%75U]'6U-37T=+0U]#1U-?4
|
||||
M5%745U=45%=14U%15E?55=36U];1U]?7U%5145%74597U=77T-+0UM;7U]?7
|
||||
M55=65E945=;3T]/3UM;1TMW4U5564U-24E'55574U]'1UU515E=64%9455=4
|
||||
MT-'4U]#7U]'5U=;7U-37551455565-=5U5575%55U=15U=;4U=?4U=?45%75
|
||||
MU%=7U-565=95U-'6U-?4UM;5U]945=575E=75=35U=3555145%=645%65U77
|
||||
MUM+3T='6U]?4U]155%145%=45=36T=?4551645=75U55U-'65=555=;45=;1
|
||||
MU];7U-?7U=?755155%55U=75U=75U5755%555U155%=55%145%77U5545%75
|
||||
M5=?1UM/2T=?4U5555%75U%155=55U=?7U-74U]1445955E=45=;6U-?55535
|
||||
MU]'0U]?75%164594U5545U=45=37U]?6UM145U14U=75UM?5U-75U-37U%54
|
||||
M5-575U55U-74U]=55%145555U-?1U5355U945575U-?7U]35U=?7UM?4U-?5
|
||||
M5=77UM34U]34U55455175U965E945]76T='6U=3755355577U-76T-;6U554
|
||||
M5E!345965U31UE74T=;1T=;6T=#0UM;1UM355%145U%14U-3459145%65=35
|
||||
MU=?1T-#6U]?6T='6UM36UM?6U-37U5145U)15U%65%=4U514U=355554U=37
|
||||
MT]'7T-=45%545%545=74U-;55=?5U=555=755=74UM#1U-?555%045914597
|
||||
M5U75U]34U]?1T='6UM;4U]?7U-?4U-34U=35U575U51645)<5M54U-;4U];5
|
||||
MU=?4U];6U-?6U-?6U]?455565E%65U975U975U=4U-34U];6U]#0UM;0U]54
|
||||
M5U=75U1555145-5555555=74U-;7UM'7T=W0UM'55U%04U)045945=555=37
|
||||
MU-75U=34U]34U]?6U%75U]?6UU5455555%=455555=555555U-55U5155515
|
||||
MU554U=355=34U=?1T=#75=36U-155U545U=45%35U-545U94557555555=36
|
||||
MU]?6T='0T-'7U%555U155U545U=455555%1455145=74U-;1UM#3T=;6UM54
|
||||
M5%=65E34U=74U]15U=7555=455555=37U]?5U574U]34U-35U=545%555517
|
||||
M5U145%=4U-?7T=;7U-545U=75%=45575U-34U]'7U-555%=45%7555?4U-36
|
||||
MUM;0T-'6UM;6U]34U-34U=75U=555%=745!24%%65U74UM'1UM?7U-35U=35
|
||||
MU=35U=37U-?4U-355%1745965U15U-34U-?7U-36T]?7UU575U145=75U=?6
|
||||
MUM'6U]?4U51745!75U%04%?55%74UM#0T=W=T=77U5%04%35U='3UM;5U]=5
|
||||
M5U!14%537E'4T]W>TM%5U,_*<'[^TQ<3\9#:TO[I[-5L%DC@D95D!1.2F',2
|
||||
M>.';0$;T^VX4;>R9D.P5%7A<3Q053I6=D>=W=\+'7$!WW<EW9W5"9WQ;T?GB
|
||||
MYU1D9D7ZP$=;W^3]R5/&_\EW:6=YQLI)?];B^M!\W%;?_]5$=-?<]5!(],%,
|
||||
M9G_)XOU#>V55P/;)SM5W1E[>U5C#RMS7S\5!0=9,='%9Q,3$T_#V5-C'SU1'
|
||||
M?&5T35%3V\W=RL+&Q%'555)^<-;*V-?7U/7PP%C5T%-?2TQ`14'0__;PU79"
|
||||
M7,991U#7QUM56E[)VL#20-;=0'1'\,M47E?"T<7;UL]%T5]P2$'"U=?34MK2
|
||||
MW=)11$'0P-Y3459:7MG"S-9+4]/.W%Q17=-<6D/>S%!15MG8QM%,0E_>W]5?
|
||||
M1U['VL7:T\??64Q:6EE25MG$T,7$Q=A?0EA4U5=115[2V]C>VM9=75/>Q4=V
|
||||
M4]S=WU/;R]A?3%;35UE:1-7!QUM'U-GTWEY&7E95QM!?5%7$Q=?7V,#16$-2
|
||||
M55A-7-_`T5]75E74U5;4P=S1W=?:V%990EC44%36W-71TUY=4=73UEU?U]+<
|
||||
MT-9<5-G;WE924E9?4]#3UM''T%]%4-_=7DQ9W\//T%;6U-==U=1=65C45='2
|
||||
MV<31T]+>545'0D96Q<?:V=[9TM'45$="1EA3U]/<Q]#0WMW74U!?74504U+4
|
||||
MU]S0U='=UE]%7=#2W-S=V=_<U-%14E]85-33T%14T-S64E/4T%Q%5E145=55
|
||||
MTMQ45-_<5%935]/75M'%Q=)015]6T=%74-345U-4T]506E36U=94T-77W-+6
|
||||
MU5%<5]?75E?4U-74W]C54U)044%W2452U-W8Q,;!P<;'Q-K8WMW3T=;555=6
|
||||
M45!34U)24E)24U-34%!15E975U155=75U-37U]?7U];7U]?7U]?4U-34U-35
|
||||
MU=75U=75U=7555555575U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=7_________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M_____________P``````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
M````````````````````````````````````````````````````````````
|
||||
#````
|
||||
`
|
||||
end
|
@ -1,232 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 7.al
|
||||
MUU565E!05E=145=45=36T=;6U]3555755-74U];1T-/0UM155U9145%15E=4
|
||||
M5U14U=75U-74U-34U]?4U-34UM;555555U14U=?4U555U%565U55U-35U=37
|
||||
MU-37U]755515U=545%=75%=4U=36UM?4U]?7U]?4U555U=37UM?7U%575U96
|
||||
M5E=45U965%74U]?6U]34U=755555U=54U-+0T='45=555%155%545U=75U97
|
||||
M55545=75U=75U=74U-34UM'0TMW2T]#7U=75U51445!14%!15E945575U-55
|
||||
M5%74U-?6T=;6UM36T='75U544%%15E=45%155575U=77UM?6T=#6UM;7U555
|
||||
M5%145=75U5545U145%175%=75-75U=34U];6U]?5U-34U]34U=34U=?45517
|
||||
M5U155=?2T-?755145E965U15U=755574U574U];6U];7U]75U=555%=75E91
|
||||
M5U15U=?1UM;0T-#1UM;7U-575%=65E=5U=75U5555U%15E965U34U536W=W=
|
||||
MTM/1UM1555165E%65U=75-75U-5555545%75U=74U];7U-34U-34U]34U-34
|
||||
MU=75U=75U=75U5545%175U155=75U=355=75U=37T-;7T=?7U]?455155554
|
||||
M55545U=45-75U=75U=75U=74551555=75U=65U75U=74U-?6UM;6U]?7UM;7
|
||||
MU]155=75U-?4U-75551555=75U%25E14U=34U]?6UM'1UM?5U555U=555=75
|
||||
MU=7555145U=75%155575U5555575U-?7UM37U]?4U5555%545U15U=34U-?4
|
||||
MU=34U]=55=54U-'4U-;4U=555%=45=75U-?4U-?55574U5175U=455755=?6
|
||||
MT]+3T-;4U%7555145E=75E975U=75%965U145=37U-?6UM'0T=#0T=;6UM95
|
||||
M5U175E945%555U=75U=7U=34U]?1T='7U-?7U-155%=75%555%=755575E=6
|
||||
M5%155=37UM?6U-34U-35U=34U%5555545=75U575U-155-?1U=74U=74U-34
|
||||
MU55455=55%75U=35U=5555555%75U-155=755555U-355574U-36T-/1T=?4
|
||||
MU=155%=75%35U=3455175E965U9645?4U537UM;1T='3T]'7UM=55%=45U14
|
||||
M5=37U];455165U=65U94U-;0T-/0T='6U%=14U-15E=45%755555U555U-?6
|
||||
MU-37UM?6UM?45=355U94U%?5U5=455175E175-74T=;0T-'6T-35UU74U=34
|
||||
MU-?65=54U5575U=75U9655?5U=?5U5555E17U=15U-'7U-31T=#3T-'6U=75
|
||||
M5%975%!245!35E95U-55U];3TM/1UM?6U]35U-;6U-55U5544U9145!345?7
|
||||
MU%37T=;3T=;6TM#6UM31UM57U=564UU04=545U%5UM15U]375%;4UMC1U]/0
|
||||
MTE545-7745!34%915E965%?7UM?6UM=5U=;6T];7T-#1U575U=?545%555=6
|
||||
M5]=45U-6U-;6U=76U574U5545=75U-?0T-/1U]945U%65=74U5155=5645%7
|
||||
M5E145-55U];1UM74U=55U-;5U];4U%555=555]555U55U5=045775=74T=S3
|
||||
MUM?6UU35U-564E165%=4UM?4U-?15-?6U594U%75U-34UM37T=?4UU555E=6
|
||||
M45=05596U5145]75UM=4U%54U-'0T=31U-;55-?7U=37U-?6U5555U=45557
|
||||
M55145U=45-=445;4T=#2UM'=U%74U]?555755U555]964%11U=515=7445?7
|
||||
M5M;4T-S6WU35WU-25-+74]'545#4U5/44%-55M;0T%%5V-/5U-'0UE?0U%Y7
|
||||
MT-35UM525U5?4]5>U-;55%3<UM;55]31WM31U53>5E954=;0UU%3U%!<4-77
|
||||
M4%'4T510U5?5UE;0T=/=UM?7UUW5UE32T%575M;6U5!7U]554U%545165M'7
|
||||
MT%15W]#3U-33TM54UE915%?54=37U=?44%#04UU7UM%24=74UU;0TMG1U]=0
|
||||
MUE175U%45M72U%U2U-%=5M14W-[4UM#555;=V=+54M/05-11UUQ355!15M92
|
||||
M4]%24U34T=#2U-W1V=G1T=354='74E16T-%<5M;2U%-05=196U7<U]?7T-Q4
|
||||
M5-545-52U=Q55=14W=Q04=S1U%905M#55E915%115]314%#15-'05=_=5-=4
|
||||
MUM36U-5=4]=4U-;4W]C04U%?U]505=;75%Q?U-/<553<UM364%935M%5T-S3
|
||||
M4U+4U]U64%+475Y=45=4U]#1U]G9W5!3P=)3UE'24E-5U\51U%9?U%554E35
|
||||
M4E335U71UM72VM71W%30U%%07E7<UEQ=55)7W--74E74T=535=_47U/0W=%1
|
||||
M5=S64=7355?1UM+=4EA$5-)25-W14E?76E;%U-S05-=04-?67='>WMW44%I0
|
||||
MUM)05]/>V=%=7U/5U-W54=_>5E%15-125U?0U5S6UE;?U5==5=)7U5Y7TE]6
|
||||
MT--6T]-1VMC2T])46-35UU575E71T5S15U)6TE1%UM]61%5=55+5V%37P-##
|
||||
MTM%67]17W%325EA64-C25-%7V4E*55765M71T=%6U5965L78W]-9VU36W%Q>
|
||||
M7U-77-;'T]W64=927===5=177=+3UL#55-+27='3T%E>Q-1!0EC05%S15MK%
|
||||
MU\'`7U-24493W-+8TM/4TM+1WM'7TE;70UE76M5<4U;26$;2V%U7VE_>W5[7
|
||||
MQM5!55/?W%72W<[64=952U7=U554UE-0T]_85MK15]944%/44-?6557<65=2
|
||||
MW%)655%555%855=<5-U2Q-C;T5%3T]5>TE'2P\;6UM==U=%;UL)47]900%A3
|
||||
M7E#55U'6UE?<V%_5Q-Y>7];9TU53UMI57%?&WU%35M955%%55=9155=15EU;
|
||||
M65%74=;<T='9V=#3W]O3T5965=_15]G$W5!25E!?65I>5]5065-365A25%%0
|
||||
M4E-14%)4T-5=U<7&QLKQ]/?P],S#VM_3UE=4U-W6741"3G1]?GY]<'%W2D)!
|
||||
M3G=W3UM<4='8]?WR]O+Y^?CX_/;EG(*!ZOGE5!`'`@`%'1P0=^'KZNKI[^#"
|
||||
M?V9[9VEO?=#T\O+[X>?.1G9R?WYY?4?.^N;N@;&WF.CHT@4)-#4`'AX6_IF%
|
||||
MF)^7YO1\%AT3$11C0_#C[^+D\]Y)9&-@?DQ'1=GE[Y69M+V)E^WY$P@W-@D9
|
||||
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
|
||||
M7UG7V,//]/S[^_O[^^7E^/+VR,540'9P<'Q[>WY]<W-Q3EE1U=;0W\7%TU?9
|
||||
MY.[[_>F5X/_U55!??61D9F!@;6]@97]U15C4VM%?4=S"]??P^^;G_O_EY?GS
|
||||
MR\#'UD9W<G)R?WA^<W=*3D]`7%%05M?0TM/7TOSLY_SLE>_E\-Y54W9E9&%@
|
||||
M8&)L8&1X=T=;5]K85%3<P/7P]O/[Y?[Q]O/]\<[`Q-Q11DIW=W=P<W!T275U
|
||||
M0%A<4-75T=O8U-79\^'Z_>/HXOCTTE=2=WME9V9F8&UA>'UU15S4V=U45=S'
|
||||
MSO?Q\_[[_O/Q\//QR<?>UUQ`2W5T='9S=G5(2$Y-05E15U31V\;;WM[/^^?_
|
||||
M_^#BY//"T59$<'YX9&=G86%D>7)+1D12W=-4T,7-R/7T\?S_\O/R\O#WS\'%
|
||||
MTU-'3$AU=W%Q=W5+2$A-1EA25E72WMS>WMS:\.3X_^;BYOGUWM9<='QX9&=F
|
||||
M86!G97YW0%A4TM!5W<?-]/'T\/[\\/#Q\?'TS<'%T%!80$U,2W=T=71*2TM.
|
||||
M0$5;7E'4TM_8Q,'#]/_Y__[EY?_UV]==0G=P?'AE97IX?GUW345<5-?1TMO'
|
||||
MPLK)RO#P]_'Q]/7(S<'%TU9?1TU/24M+24Q#3$E,1UE?7U;=V][?V\?!S/#Y
|
||||
M\OWZY?W(V%1=0'9R?'AE961E>7-T0EE0U]W=W-['R??T]/#]\_'Q]/7UPMK9
|
||||
MTU!;0$Y)24IU2TA(3$U-1EM=5-'=VL'&P<'!P,'$Q\_W]\K*]<G&T%9<04AW
|
||||
M<7-R?7UR<W%U341>5]S:Q,')]/7T]_3*SL#$WM+<W=#7U5137%A%6UM:14='
|
||||
M6EY<75'7T-/<WMC:V]G?W=[9T];3V]O<W=G$V-975U!91TU(2TM*=4I+0D18
|
||||
M75;1V,'`Q,;,S<3>V=G;V=[;Q]K?W-+0U%924E!=6D9&15A86%Q0U=;1T=;2
|
||||
MW-S=UM+9WM/7U]36UU=5W-G>W-+2TM=64U-=7%Y:04=%6D1$6EE<7U]05%55
|
||||
MU]#=V=O%Q,7'PL;8Q,'%V-S0T-/44U-75E%07%E97UQ96EE=4E)05M71T=?1
|
||||
MT]W?W-/2W=+=W-#6T]+65EU?7%E$1T5;65A;6%Q=4E?4UM+?WMC%Q,7$P<'%
|
||||
MQ=G=W][2T=#755517%Y<7UE96UA96%A<4E)6U=?0W=W1T-W0U-76U]36T-'0
|
||||
MTM'7T]W0T=;1T==45E%24E-=75)=7U]>7U)34%?5UM+=TMS9VMK;VMO:V]S2
|
||||
MW=%45=507%U24E)=4E%04E)34EQ>7EU75%37W=[?W]C;Q=C2T]W355174%%6
|
||||
M4%-35E555U%6U=564%37UM145=;75=36UM+05%%455914536UM;1T-'0TM#7
|
||||
MT=;6T=5555=04%-=4E=45E34U]34U-77UM15U5175U34U-31T-#7U-54U555
|
||||
MU];6T=#65%145U%37E]65E%75=37U-37T='1UM;7U]'3T-34U];55%555514
|
||||
M5-555U=55%345%!045!15U75T-#7T-W3T-/3T-34U]145E=75E975%174534
|
||||
M5U'4UM555U77U]34UM/6U-77U]?4U57555=75U77UM175=555596U=164U%4
|
||||
MU=34U-'3T]'7U]37UM36T=;4U-37U%1145145U=75%555%145%975=77UM?1
|
||||
MT=?7U]545%75U574U515U]545U355%=55=74U];0T-?4U]145U=75U94U557
|
||||
M5E175=75U=37U575U]'6UMW<UM?1U5?5U575T==55%!045-15E%7U]?7T=;7
|
||||
MUM955%155%14U=155=?6U-37U-345%7755975=555%=4U-31T]#0T=?0T-57
|
||||
M551645!75517U=155=3555115]57U=37T='7U-'0UU34UM145]745%175=74
|
||||
M55155U945%975=55U=36T]#6T='1T='455117%U34%;55=77UM34U%565%17
|
||||
M4534UM;1TMG<TMS2T-;755555U%34U-34%%75534T=;455=65U55U=36T='7
|
||||
MU-34U];4U517U=175M355=36U];6U]#1U];155=45%=04U-15E965%755E?4
|
||||
MU=?55=?0T=;1T=?6T];7U-77T-95U];55=5445%34U=65E544%%45U95U=31
|
||||
MT=?6U]74U-?6UM;6T=?4U-37U%54U5575%145U=75M745U945E?5U=?1UM#3
|
||||
MT-'7557455355%355%76T-155%=645%75575U]?5U];1T-'7T]/7U]15U-16
|
||||
M5]545-?45-;1U5175]174U-15E375%#6T]36T=37T-=55=35U5915=555%=4
|
||||
MU=555=36T-/45=375%%455155%71T=34U]?6UM575E97U574UM;75%34T-'4
|
||||
MU];4U%515M555E94UM1555=745!34%975-74U];3TM#0T=#0UE155535U515
|
||||
MUM14U-37U%=7U%565E115E=4U=?5U-;7T=#7U]#1U%545U=75E;5U=37U%15
|
||||
MU%=34516U=75UM/2T=#0T-?5U5755=145%175%545-3455=65E=65U=75%%0
|
||||
M5-75U-?7T=#0T]/0T]/1U-?0U%555%975U%65E!34%!15M75UMW<T-'3TM?5
|
||||
MU514U5165%=75E965U75U-;1T-?4U5545554U];6UM?6T==45%=145!045=4
|
||||
M5U145=77U-?1W=+3TM+6UM'4U=175U165U9175%74%155]31U];6U-31T='0
|
||||
MT=#1UM;6UU5745%75U=65U145U=75]555=?0U%75U-31U]30T=?6UU14U5%=
|
||||
M4%!25]35UM#1T-/1UM'45=?1U5554%%45U?7UM37U]545U=45515U-?7U];7
|
||||
MU-?55U145U15U575U%145%=5U-?7U-545%975U755515U-?7UM;1T]'55=75
|
||||
M5%35U]'1U595U576U]36U]1545!045965%34U-35U-;0T=?4U5555U%65U=5
|
||||
MU5=4U]15U-;7UM95U=?55%965-;65534U51555=5U]35U=75U];7U=74T-57
|
||||
MU=75U]?4U%565E514U36U-745=71UM33TM;655965U155=77T-;5U%575E96
|
||||
M5U=5U=75U];6T=?7U]'6U-7555=65U145%95U554U5=6U575U]15U]?4UM#0
|
||||
MT]#1T=15U55645%15U=65-545-34U=?55=345%15U-;7U-;0UM'0T=?7U%55
|
||||
M5U%15E%15E175-755=545=35U=37UM#7UM/6U-36UE575%1455545=545U=7
|
||||
MU=37T=155575U555U-?7U]?5U=34U];55U915E914U%45=;1T-#0T-#1UM?6
|
||||
MT=;6U515U554U=564E!15E915]75U=545%755=31T=#0UM?6UM;7U55645%3
|
||||
M4U95U574UM'0T-'6U-34U%115-35U=?6UM?4U=755%=14%%15U15U=?6UM?5
|
||||
M5=?2U]775514U-15U=555%545%175-74U-?6U];6U=75U-35U]155%=65U17
|
||||
M5]55U575U=;7U-?7U%75U577UM?7U]?5U5=15U55U=37U]?75U!45574U];6
|
||||
MU];4557555%15E934U945-36T='6UM?5U=755%74U]34UM'1T==55%1145%0
|
||||
M4E945E%75=31UM;3T]#0T-'1T=?4UM145%94U%575U%65E175%545%555555
|
||||
MU=77T=#3T-'6UM545U975%175=37U=3455555U=45U945554U-;1U]77U]?4
|
||||
M5%77U]?6U]55U5175%75U%=1U=35U555U-?7U]#0T=#45%=45U=75U155U?5
|
||||
MU5145514U554U=?5U=555=37U-?7U-;1U-34U=555%155%145-36UM?45=34
|
||||
MU]?4U-35U-?5U=?55U945%=75%75U=7555=75%=75-74U]'1UM;1T=;7U-35
|
||||
M55=455=4U-?7U]=45%1645975E975]71U];0T-?5U-355574U-36T='55=?5
|
||||
M5=755%965E%145965%74U]36T-#1T='6T='7U575U=?5U=34U5175E%14U-2
|
||||
M4U%65U75U=;0T-#3TM+0T=;7U=545E=75U35U=745=765=345%1555=45-77
|
||||
MU]?6UM#0UU75U5175E%15%545-?6T=;7U-7555145]34U-'6UM?7UM=55554
|
||||
M5%=14%%65U14U=37U]55U%35U%555U?5U555U=75U=34U]'3T='1UM35U=54
|
||||
M5U545%745555U=155E945U945%75U577U]36UM?7U%165U54U=37T=#0T=?5
|
||||
M5=355%545%=45%77UU755%9745!75%15U-?7T='1T-'0T-;6U];6U]545U96
|
||||
M45%65%=65E175U545=74U=75U=77T=;6T=#0T]/0UM?555575E%15E37UM?6
|
||||
MT5565%=45%=45%5555745=77U]?6U]?7U5175%975=74U-35U5175E=75%74
|
||||
MU=?5U-?6T]/3T-'6U=74U5545U%05E975U34U-55U=74U575UM'4U-37U]37
|
||||
MU575U51455=65U%15E95U=75U-'3T]/2TM/6U%575E%65E=5U5545U155%75
|
||||
M55555U34UM?1U]?6UM?6UM?7U]35U-5455105E545=?45=55U=75U-75U-75
|
||||
M5575U=75U5175%=75-75U-?7UM;6UM?4U-75U-77U]35U=54U5575U545557
|
||||
M5%35U-?7U5164%%75-74UM/3U];6U]37U]545=77U]'0T]'4U5545E%14%!0
|
||||
M45=75%75U]?7U-545%155=74U-75U-?6UM'1UM;6U5175U975U=5U]'1T=#1
|
||||
MUM34U=345E!375)04%;5U]?4UM;1T=#3T]?55%=04E96U='0TM/1U-355E=7
|
||||
M4E]<4U;5U]?6T=+<U%955555U=?1W-%4U5545]365U)05]?0U57555?5UM?2
|
||||
MV<S1?4O2V==E8?_N45E41>;A=6)-[95D%';GE=9H%WWBY4%%SL1Q>TCW_N7=
|
||||
M9='T0WEZ?<OO_.7DW%?U54A?<'14W$)E9GY7V,?W_?#87T/2P5)#T/7R\\'5
|
||||
MU%I$7WYP7U10U-=$P<I'5]M?V,#"7EG*WLK93$]=1G-,T_7#77=7Q<3)W%5/
|
||||
M5=M=TE;=VLW91=_015I/14!:W573QL+)SM-$WMI`=71:5-555]+'UM+>T%->
|
||||
M55324EO?P,1=1MK'V]!=T-)07%Q%6==?TLG84U976%/85D92U=-64U%4P,W7
|
||||
M65W$V--21,?!T4!&W=]57U?;45Y=1%I0W]70U5?1TM]7U%%5Q\';4UU4U='1
|
||||
M4%-44-+'PU5:T5507UY95-Q?7]_2T-Q57%;2TM9;6E32V571T%3<T5!%5-5?
|
||||
MT='<V]#>TM324T!?W51;75;1WMY14E544E?<UE#44]'9U5'0V=W<5US1T%%&
|
||||
M7M;3T-596-_!TU!07-S34594T]55TM534]'?TM535-S04U%5T%%97%!17=76
|
||||
M5<32UMG3UE)=4%9>4=#7T]/4U-944516U])7T][<W-177537U-5=7%-7U597
|
||||
MT]#4U5!04E?65%=3T<78W]U5U]1155914E;>UM#65];3TU57U=537D535]'7
|
||||
MU]#5WM-04E)=5='5U=S2U515T=36U%!5UM%655505=?6U%=4U]575570WM/7
|
||||
MT=+7U5-65E-7U=;4T554UU905U%7U-964];3T5=4U-'25U?0W-115M32UU!0
|
||||
MU-904%)0U='=UM37T%75UM74U5155555U%575=3755%75=;55E'4UM?7U=#1
|
||||
MUU54UUIV2T=?5=/>VL3'QL?'Q=O9W]W3T=;5551645!34U)24E)24U-04%%1
|
||||
M5E975%155=74U-37U]?7U]?7U]?7U]?4U-34U-34U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
9U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
`
|
||||
end
|
@ -1,323 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 8.al
|
||||
MT]945E=14%975%145%145%15U=75U=555=74U];7U]'1T=?4U-545%=65E97
|
||||
M5U=45%155-75U-?6UM34U]34U-?7U]?1UM?7U-355%=145%375!14574U];0
|
||||
MT-#1UM'1T=;7U-3555%25E175U?4U5755=555574U575U=36UM'6UM;7U-15
|
||||
M5%965E=755155577U]355=?455915-77U=745M76T='7U-77U%165-?4U-?4
|
||||
MUM?4U514U5=45U945E755%16U-#7UM;7U]7555=55U=45=35U-?1UM?1UU13
|
||||
M4517U574U-37U]?6UM'1U-77U%545U15U5165E145514U=3555175-37U-;1
|
||||
MUM;1T-35U5575E975U175E15U=35U-34U-555%74U];6U];4U=34T=;45577
|
||||
M55175%545%%6U515U-;6U%145=355=37UM575-71T-?45=5445=45=575%14
|
||||
M5U=5U-36U-77U]?4UM/1T=1555555%35U5555%175U=65U=75%55U]?6W=+6
|
||||
MT=?4U];7U]?555545-545%145%%05E145=74U]?7U-'2W=/7UM'75%35U554
|
||||
M5U155%145U=75E!15U75U=?1T='1T-#7U-34U51755504%=645!15]74U];3
|
||||
MTM#1UM;6U-35U=575%35UM;1UM?6U5355%145%175U=65E945%35U]?4U-34
|
||||
MU-75U-?7U-74U]?5U-36U]545%175M345=3555545%35U-35U=555=75U=?7
|
||||
MU-77UM;4U-34U515U5175E=45555U-?6T=;6UM'1U]35U-545%=75U175]55
|
||||
M5%145%=45%75U=345=31T=/2T=?455545%145575U-?4551555175U175E97
|
||||
MU=?7UM#3T-'6T='1U%5555175U75U5145%1745%65%55U=35U=37T=#0T-/3
|
||||
MT=;1UU355%914%!145=45%=45=74UM'1UM?5U=755=77UM;7U=37U]75U557
|
||||
M5E%65%15U-34U=77UM;6U];7U=75U=75U=77U534U]755%1445)05%=65%77
|
||||
MT='0T=#1U]345514U=34U-36T=?55%=75E%045=45=34U-34U-37U]37UM'6
|
||||
MU%75U-3555755=75555745975%75U=345515T-#6T]'7U]155%=65E%65U=5
|
||||
MU=74U=555%=75%55U=37U];0T]#1T=;4U=75U5575U174%945%15U-?4U=37
|
||||
MUM?4U-?6UM'3T]/6U5=75%%=4E%05E75U]34U5755555U5545E=5U=77UM;6
|
||||
MUM?4U-?6U]55U514U=7555545U=75U=555555=75U=74U=74U-?6U]?4U-75
|
||||
M5=55U=?5U=955M555%15U-74U];755175E1555555=555514U-W%W5-65=%0
|
||||
M7U!65U)0U='6U576T]#5U=?6U5=4U-?4U=;1UE575E964%!65U=75]?6U=31
|
||||
MT]/6U=?1UM;7UM;45534UM?4U]?45%965U914U!15E34T]+3T=;45U%15E55
|
||||
M5574U]?6T=#6U%545U965U35U-34U]'1U-31T-?55-775%%45%965U164595
|
||||
MU]?1T='6UM355=74U=755=55U=?6U]34U-74U%575U=14%94U=;0T='6T=;7
|
||||
MU-34U%1145=55=555=555=34UU545U!15%945=36T='0T=/0T-'7U-545%15
|
||||
M55145=74U5145%114%945%14U=75U-;3TM#0U]34U5175-555%=7U=?7U];4
|
||||
M55175E=45E975U95T-/3W-+1UM575E=45U=75%15U=?6UM'4U-555%34U514
|
||||
M5]75U-?6T='4U5545517U=755%=5U-34U-?7U%575E915E=45575U]'0T]/2
|
||||
MTM=65]545%55U=545%15555555145%55U=?7U]?4U=75U]'1T=1555545U97
|
||||
M45%15E14U=37UM37UM;0T-#0UM;6U];7U51745%04%!045945='6U-'6U]?7
|
||||
MU]?7U-?455165U975U=45=77UM'1T='6U%145%5555545%14U=76T-'6U]15
|
||||
M5%145%75U=75U]?6U]345%965E=55%75U-355-31UM;1U]745575U=555%16
|
||||
M5U75U5555U!04U!7U=?7U]?7UM#0T-/1UM75U-7555175U=75E965E%15-74
|
||||
MUM'6U]?6T='1UM;6U]?4U-?1U5=75E-34%975%35U-755=75U-34U-355575
|
||||
M5574U]?6UM355%=75-55U=34UM?7U]7555175E=75%74U-35U=34U=74U-74
|
||||
MU]?6UM?7U%94U5145=75U=74U-37UM;1U]155=75U5175%75U5545%145E!1
|
||||
M5E=75%75U=36T=;6UM;7U]?7U-74U=75U-34U-155U!045%65U35U-76TM/3
|
||||
MTM#1UM145U=15E965555U575U5145%555-74U-?7UM#6UM?4U]34U]355%17
|
||||
M5U145U=75U=4U=35U=?7U-75U5555=77UM'1T-#0T-9455575E%145%75U=7
|
||||
M5-77U]35U=?7U]?7UM?6UM;1UM1555755%=75E=75U=65U145%=45=74U-?7
|
||||
MUM;7U-37T=#0T=?55%175U=65E%15E545-15U=37UM?6UM?6UM?7U5555=55
|
||||
M55545%54555555145U75U=?7UM#0T-'1UM;6U-555U%04%!15E=45%555=74
|
||||
MU]?7U-555=74U-?45=?6U-;7U-5555145=37UM?4U-355%5555555%=75U15
|
||||
MU=34U]34U-37U-34U-?4U]?7U]155U=75%575E975U945%=45=75U-?7U];6
|
||||
MU]?0U534U5555U=65E975E15U=37UM?6UM?4U=77U]?6U];7U-7555545U91
|
||||
M4%-05E?5U];6UM'1UM;6UM;7U]34U-555%=75U145=5555755%975U%45=74
|
||||
MUM'0T-#75575U-37U5545U=45=5555=75%1555145U155=34U]'0T-#1T='0
|
||||
MT=;4U5914%945-7555175E975%175U155=31W]W=W=#1U]75U5165E%04%%1
|
||||
M5E145%14U=34U-?6U]34T=#3T-'6U]?4U5555%114%!045945555U=77UM;6
|
||||
MUM;7U-34U=34U]?7UM;7UU5045904%975%175U=4U=?6T-'6U-75U=755555
|
||||
M5=34U]35U-?555145=74U5145%=5U=37U]?7U-34U-74U=545E975=?6U]35
|
||||
M55=75U=75==55-555=34U]?7U=75U=75U=74UM;6UM35U5175E%65U155%14
|
||||
M5%75U-37UM;7U]'1UM?7U]3555175E=45=75U-545U=455755=75U-;45=;0
|
||||
MT-/0U]555%=75E%65%555%75U-355%=75E94U=34U]?7U]?6U]34U-?4U-54
|
||||
M55175U975U=5U-;7U]?555155=74U-34U];6UM'6U=745U%45%545U=45575
|
||||
MU]35U=7555545-34U-34U]?4U-?7U5145%555%145%=145975%74U];6T-/0
|
||||
MT-;4U-74U5555=755%175U965%155%!75535U-?1T=/2T]+0UM145U165E=5
|
||||
M5575U=74U=555%975U=75-77UM;6UM'1T=?5U=34U=5555=75%15U=74U554
|
||||
M5%=75%75U=36U]?6T]?4UM35U5545%545%545%145=75U=74U-?7U]34U-?4
|
||||
MU=34U-34U]?7U-755%=75E=45=5555145U75U5545%14U=?6UM;7U];6T=;1
|
||||
MT=145=545%=15E9045915E=45=77U];6UM;6UM?7UM;6T='6UM;7U-545U%6
|
||||
M45%145965U15U-;1T='6U]37U%555%145-55U=34U-7555165]555-75U-?7
|
||||
MUM'0T=;4U-35U5545U975E=45%555%175U155=77U]?4U]'0T]'6U]34U-55
|
||||
MU=555%=75U14U=55551555155%545%75U]'6U-;1U]34U=75U-34U5575E96
|
||||
M5U15U=75U-34U575U5555U=4U=37UM'0T=;4U-555%145U965U15U=74UM'1
|
||||
MUM74U-555%35U]?7U-355=3655755%=645%15E?5U=3455555=75U];6T=?4
|
||||
MU];6T=#0U%545E965E=45=55555555555=75U-34U]?6T=#6U]5455545=74
|
||||
MU575U5555E-145!75%75U=37UM?7U];6UM?4U]355=75U=555=5555175U=7
|
||||
M5U=4U=?0T]+2T]/6U]545%=45%145%145U=75U145-75U-355=37U]36T]?7
|
||||
MT-#0T=?6U]75U51145!34%%75U145%34U-?6UM;7U-35U=75U];1T=;45514
|
||||
M5U175U=645965U55U-;6UM34U-355555U=?1T]+2TM165%934U!65E9145?5
|
||||
MU=37U]?4U-75U-37UM?1T-'6U%5445%04U%645945555U-355575U-?0T-/3
|
||||
MT-'6UM;6UU575U9145%15E155=37UM#4U5575%965=36T-/0T='6U]155%=7
|
||||
M5U=65%1455555U=75E35U=77UM?5U=37U]?6T-?5U=75U5575U355%74U%54
|
||||
MU-;7U5%7U5915=?45M?1UM?4U]'45=31T=3555145E%5U]15U]!44%174595
|
||||
M5576U5?4UM?4T-#4U-155%165U14U574U%35U]14U554U]15U-'55-;1UM#0
|
||||
MT]W1U-?445-745U<4E945E74T=/3TM#0T-545%35U=34U]%45-?55U'45%E?
|
||||
M55=34=#15-73W=34T--55]30UU97U-904]'155345U=45E95UU%35]54U='2
|
||||
MW=W?TM'6T=105]'65U76U]15U=754%]25E987U1065'44%;3T]30T]S"P]%1
|
||||
MW=%#1U%74=_#RO?UQLW+U$=;74U/6EI!1T=:7U]$1%M`=75,0D74WM54S/#%
|
||||
M5\KQW-;;Q\G]R</EY^B?D=SU_V(='!86%F)(]?GW\N7X66EB?6QJ9<'T].3C
|
||||
MX?/<T]Q'2=/.\OCE[.+E^OM=VH:!9'>?UP4`'A,$&!3:E/[!ZY'Q:6U)>&AD
|
||||
MSOGY\_KC]TE*5T][=U3>QO;DY/GXYOM$U,1^<U;N@HS][(37!@T$!`T'%/.6
|
||||
M[96>G\T4;&(2'WJ5YMN1G.!W0U!@:F-4PEI4Y>S_T??Y]%I.4T5$24]3F[RT
|
||||
M!9NU&C<T&0(W!6*8A_N=@X47!F`7`0!KZ)F!FYJ`[100:A@$;M'E[^J3D>5.
|
||||
M=UMA:F]S1T'SX>?ME9F.B\1ZF6(."`4:`Q!T[I+O[)?K81QN:1,4]Y7LE9:4
|
||||
M^G1E969H9M[`7<[F^MY7VLE?=U911]3*_\C@BK+N9H[L#S0!!@H`'/.?[.F:
|
||||
MA,,38V\8!Q;EZ.:0AIGV5<UD$A%D?WI8^NGL_O_[QG-E>65_4<+PYYNSMVV2
|
||||
MCQ$T"QL."P1MEY?MG(&<;!5X$P<:=/C3XX6%[?SG4&X7;&1@9-?@XOCG[?[6
|
||||
MUT%\2'5S3>RUL^WXM>,-"P0"-`(8W>GED(&&\WI4;!H'%DQ-TI:%D/KHX605
|
||||
M87IK;$G!_O[^X^'PR]G37'-,6?"-LY)5M9,!#QL`-PT%8?#UE82'XESP>1(9
|
||||
M%'IG1.V0Z>'IYTQG<'!M9D34W,O]_/+W\O950U#1]8&PA=2(F@4,!0$T#@84
|
||||
M4%[IA(?K_^-)$QUJ;!5_^N[CX.KIWGE!4F)L6=5"Q//(\^7R]/+T5$#JM;3?
|
||||
MG(K8```>"30-!&)\4)&'F.?M[F40%&(4%$OR_OGBE>=1U<%^:7)2=$S)\\CR
|
||||
M^>+@4O?_XXNV_I>U_``&'PDT#08787+JA)COE95U:FAN$1=ET_7][93M]_/S
|
||||
M=6-R=V1V5E[6^?OG[>GHR)JQ@&>`@QP"&04U"0$?8F/&GX7KX)'R;&QG:!%K
|
||||
M<=[9R.R5^<GZRWAX3WU^2T77V\;D[/CBD(&VC>:,A!`!!0$W"@T'$&GSGX6=
|
||||
MDI_@6G,5'Q\3%V!$\^B7E93ORT=U9&EL9WY,Q.7OE):0C+&"ZXZ$$@8%`C<*
|
||||
M#P8<%\2=FYR9F^OSVF@?'!X?%V1&^.J7D9;L^\!V8V]B;&)!S.64DH.QM)B/
|
||||
MCW0:!0$W-PL,!AAZE9F?FH&>[NU:'1\?!!L68TGEZY&2ENCM\'!A9FX58'[5
|
||||
MX):`L;>&M8CV%!(!-S<T-0P!%_N3GH:"AYZ?\!81&``&&!QJS>"7GI^=DN_1
|
||||
M7WX6%6UK?OJ1CK&/C[&`PF<4##<T-S4+`A;.Z9^#@H&`A/)E8P4"`0<'$G[!
|
||||
M[I*>FYF7[>1U;FUJ%&3"A+2-@K&)D./'&`@+-#0T"@$0?."%@8&-CYKR\GD'
|
||||
M``<!`!]@1N66F86>DI+BU45G%6EFTH&.DHZVA967Q`0"#S4U-`@&'&CFF(6!
|
||||
MCHR8D>MF&`4&`P$;$6;-Z9.?GIB=Z.'_<V%S?.N.GI>W@^*7E6@&!`\)"@H#
|
||||
M!!AM[I>=@(R&GY_H81`=!`$'&1-O5N&4D)^8DI25Y$1215N$@/2!BNK@E_09
|
||||
M&`<,#`@,!@4?0.+BGH.`A9Z?YF%K$`0&&AD<;U_^[Y&?G)"1E>7UQUR6C93N
|
||||
MBIKQZ.]K!1\``@X/`00%%?7QZH2!A)F8D\%Z8A(%&AD8$V!)SN*6DIV=DY?C
|
||||
MY_?X@(1$@XW,Y.]$&AT'``(.`0<$'%[&^9Z'AX69F.ET<VX8&A\8&15D=\CO
|
||||
MEY&3D9"4YN'YD(WJ[8N2V^SF%QL=```/#08'!6O44.F%AX6;A9+]T7,1&1\9
|
||||
M&A)H9DW_Z921DYV2D>;]EX6:QX:`T.'B4QD0&`$`#0<&!!UX<LR0F9J%F9F0
|
||||
M]=%\$1P2&1D6:V!'\."5EI&0EY7HY)2-G?6.F\7NX&8<$0<'#0T&`08096']
|
||||
MD)Z%FYJ$E/G[<A`1$QL?%Q1M0??D[Y>0EI>6Z/KI@871@X95[^%V'18:!``-
|
||||
M!P8''6-MTI6=F)Z:A)?MXEH5:A89'Q`1%'M6R^"5EI&1D9?BE8&$R("&TNGF
|
||||
M=A,6!0<`#`8!!A]I:UWLEIF:F82>ZY7]8&UK'Q\3$A9B>='XXY61EI&6Z>#K
|
||||
MA)O9AH17Z.9U%A49&@8#!`8''VD52.?HG9F=A9B5E>-+9V86$A`1$15F2M7P
|
||||
MXNGJEI;I[Y:'A?^!A_+NY=L1%QP%`0,$`089%!=\\N^0F9R:A)&6ZLU_>Q40
|
||||
M$!(0%&Y[6]WE[>B4EY3KE9*&E.V`Z_;O\&%K:A@>!@<$!@00%A18\N&0F9*;
|
||||
MF)&7[L=.>&L7%A`6%&MZ2ES_X.^5EI65ZI.&ZNB`Z/OH^V1B:Q\<!@<%!@83
|
||||
M$A%SV_V6G9:%F9"2E_G-4&%L%187%Q1F97W.^>7IE>CJZ^Z?FN62A>3G[<MC
|
||||
M9103'P0%&@0%$!(7?-_WE)26F)R1D)3[_]A^9V(5:VAJ861SU?7SXN[LZY7L
|
||||
MZ)^1_9*1S?;^6FUD%1<2'A\=&1P4%&ESWL'C[.B6EI64E>?X\%%W<&=@86=\
|
||||
M=4W0]_/XY^?ZY_O^\_#^^-O!\]E'6E!S>'AE8&!C8F%A97YU3%+=Q<_W\?#R
|
||||
M]_7URL/`Q]C8W-/<T-73T570T]'1W-S<V]G9W-W=U5914EA%1$5%6EY7U-3?
|
||||
MV-W1W]'55UU=7D=!14%"0T9'15]15E?1T]+;Q\/#S\[/S,W"QL7>W=-54EU?
|
||||
M6D5$14584E-05=?7T]S2T]S2T=/1U%164EU<7UY97EY?75-0U='6T]#0TMW=
|
||||
MW-S<W]+0T==55%=34E975U77U%74T-'6T]_=T=+1U]?55%104E%=7%!04U%4
|
||||
M5E34UM#1T=#6U]?4U-31U]575E=34%%05U=34557U=#2T-/0U-?7UM?4U-=5
|
||||
M5-75U=;3T-/3T='1UM?4U5545%545%1455=15E=45%=745974%%4U%75UM;4
|
||||
MU='1UM375%145%%15]55U-W<T]W=W]S2T-#6U-1445914%965E555%145%97
|
||||
M5%155%=5U=34U]?4U-355%175E!65%55U-;6UM#2TM+2T-;1U]545E%145!6
|
||||
M5E945U1545955515U=77UM#3TM+2T]'6U5=14%!345=45-74U]35U-75U]35
|
||||
MU=555-555-555=55U=77U-355%355575U=37U]?7U]37U-34U]355U;55%%4
|
||||
M5%74U];0T];455=75U=75%=75U=75E95U]?7UM'6T=#7U]?7UM;6UM?7UM55
|
||||
M5U%14%-05U965-55U]?4U]?6U]37U]?7UM;7U55455%155=75U%65U15U=35
|
||||
MU=345=31T=/3T-;7U]?4U575U=74U-345=155%=65U175%915U1455755=?6
|
||||
MU]'1U]?55U=65U=65U35U=36T=;6T-'4UM;6T='6U]755%=455=45%=64596
|
||||
M5U145515U=37U-34U-74U]35U=35U-35U-75U=75U-37U]34U5545%175%74
|
||||
MU=?7U]?7UM?6UM175U165E175-75U%74U]555%904U%75=37T=#3T]/0T-#6
|
||||
MU%175E%15,7/=$'03,5&W=56TU;>5M;4T]#2UMW1TE77U5%65%%44E565M16
|
||||
MT=;9UM#=U]%75=345E%74U%345=555345=35U=#0U=17U%54U]365='4U%55
|
||||
M5-545%97U5!15537T=?8U=S5TM;6TE#14]!155'75%16UM1=W<'EVWYE?G=!
|
||||
M6L'#V<',\578T]_;WLQ=YL)F6W%!1TO&=-I)T,Q&Q]S$TMC5VE7`653#7\1+
|
||||
MU=9(Q4S065#56<9&WU[&7-M;\'?_<<E?QUU>R$W(</!+]7;R=<M%W5Q4VDK_
|
||||
MP.%Q=69^9W%:V?)*X<STRM'TV-Y35][4<-)85U!<5=])UT3;V$K>T=U0U%3"
|
||||
M4]E1Q=A'45=>V5C1U5[%7UO;6\=<S]_+Q%15>5IE24'>4?7"]?;%]=C<V433
|
||||
M7-=%6T'364#9=]E%TU#:T=!7S=;8S%[!5]%?T5AUVD#<2,5;4-Q;P%W47<W$
|
||||
M6]12T%#>V-#64T'<QM7?3L=<PUU1]TI;7%'/7U32W<-Q65#?64W`4<3?3<]1
|
||||
MSG;+]539=-Y%TDI3VU372\G>R5K0VMU>4$'25]),TLUUUDS9W%[26?-#6--7
|
||||
M]$-1V=S:=5'+T<Q#]MY06%_274Y$V%9)V%[V6U5<TL%%453;1-)!R%)2U-KV
|
||||
M7L!0R=;00D'$<$5`W]%&WT3:T5!2]=-/S5W"1])<W,_55%_P3MU$UU55U4_U
|
||||
M4LY!4-YTPTK>6\E1=_'8T47Q<M7"0T;$SW#<R$/?SE!!U5%P]-!90<I;2,O7
|
||||
MU=[]5L;.0]W76G#%TDS$5$/44GC`]U19]]%95GW2\?5)7_/>05A4Q-!$4L7&
|
||||
MVW79T=U,<\1`]$E65,=:3]+!\%+25\U1==K8V%I>W=?1U%7?2-)`7454R55,
|
||||
MV]M57$'84?%>T,;WUD/'QT)'5-C;07%9S55P6<_8V$;:TMM$?O'7V7+6WMK*
|
||||
M1L+.P]5>T%O5<W7<\U9'W,W;05=<\%Y7=5S"6%U;Q\%(0=WUT5Q#S%3?3%W/
|
||||
M4-Y>\%[>1TM57-!;W-S27=+4VM/905??7]'05L715D=3T%G'6]I6]%=9TT7%
|
||||
M=EUR7%-#S=7_7-S&S<%07];-14W;PMW455C9549?U]-/5]+&W-Q=5-9<14K>
|
||||
M4U%-P,M0UM7:5-]45-+3U%K-7E;67D!?W5E15=C2S%+;S-=;1M5%5-+2Q5=;
|
||||
M7]3!U=O>4-G6W$)96$305U11P-57Q\365U1!U=!.0]327=K;V,W%UE?'05]7
|
||||
MUM965W504%_0T]Y1WEG0Q-G46%1;TE115L?94%=5TE354]#45$=2T%964%/6
|
||||
MW];5T\36U5-75U35U<?8V-#>W-S56UY#14);7-?2U5?3P=W8TMS25%-<W=19
|
||||
M6E'5T]%6W]O=4U17U-U104Q27U%5UM+?TM#`S=E265U36D==V\/&TM#<5%Q;
|
||||
M4%974%-4U-35V<';U==74%!<5U315E=17U!25-?=W=W255%?4%!7T=[%Q=_2
|
||||
MU];6U5-24EU=6D1<U=#0W=_<W=;54E!55E=14%!35U?0T-[;VM_3TU977UY3
|
||||
M5U55T=[<U];2T%=375Y<75Q25=7655?4U=/0V=K9TM144UY!6UQ4UM/8WMO<
|
||||
MT-?55U)65U=7U=14U-37557555;5T-=7455455514EU55U;1W]S3TM'1T=51
|
||||
M5-=445'6T]S3UM;0T5-?65U?7%=4T=+0UU555%35TM#0U-#=UU924U?55%%5
|
||||
MTMQ54U/4T%507=7=TU55W-[15E!4T-#55-7755%=75Q=4UU65-75U]/<V]+4
|
||||
M5%577%]?5-W8W-S9WMS?T]74U59?7EQ25%1555=45E74UM?4U-154%'5U-?7
|
||||
MU-36T=;0W=9545!34E!25-?6T]/15%74UE==4U!45%74U]'0W-+0T='6U];4
|
||||
MU515U=755%%65%=04E-05]944E32W=;4UM?6U536T='55=175E=55=345=37
|
||||
MUM955E945E!14515U=15U=77UM?6U-37U-?7UM?6UU=4U5755=75U-175=51
|
||||
M45745%76U-31T-'6UM?55U!75E%7U5165%?5T='0T]W3W=S65E964U!04U?4
|
||||
MU-77UU75U574UM=45U114%%34E94U-#0T=+?W=#3T=/=T5165U%14%U=5U55
|
||||
M5='1T=15555745945%575E?4T=;1T-#=TM/<W=/0U5%24U-?75%4U=34U=?7
|
||||
MU=355%=5U-?455155515U-?0TM'6U]155=35U=545U904U!65E76T-#1T-'3
|
||||
MT]?4U=75U5145514U5545EU25U75U]'4U-955]345-74U=345=30T=/=T]#1
|
||||
MU%174%!04E)24E%4U=31T='1UM?4U-34U=37UM75U]?4U-755%175U=45517
|
||||
M55575U14UM'6T-'7U=755%755=?7U574U%14U-?4U]?5U-555U=75U75U=37
|
||||
MT='455545U%65U%75E=4U=?7U-?6UM?4U-;6UM?6U-755U15U=?4U-565%=6
|
||||
M5E965U=55=36U574U575U-75U555U-77T]+0T]/0T=;455145U165E104%14
|
||||
M5E%64%%65%155%36T-/3T]+=T];4U-36U]345515U-=55U164%%14%!15E=4
|
||||
MU-77T='6U]?7U=?6T='6T=#0T=?55E%65E%045945%555%755%155575UM;1
|
||||
MT-#0UM355%=75E=75U355575U-?45E37U=545U37UM?0TM'1UM54U5=75%91
|
||||
M5E965%545%145575U];1T-#1T-'6UM;6U=37U5575U9645!04%%645!75%74
|
||||
MU-?7UM;1T-/0UM#=T=37U]?7U%175%545U975%545=555U9145!15=37UM#3
|
||||
MT='6U-555%=65U55U=36UM36UM35U=55U=?6T-/1T=;555=145!145975]75
|
||||
M5U95U574U-77UM;4U-;1T=?5U=74U=75U-37U-575%555%35U-74U%55U]'5
|
||||
MU=555%155=74U-75U-37U=77U-35U-75U-545%=65E%65]77UM37T-;7U-37
|
||||
MUM'6U]75U%15U5555%9145%045!15U=4U=?1TMW<W-+3T-;6U5=45%%045=5
|
||||
M555455=14597U=37UM#6UM#1UM#1U]=55U%35E=65%5555555=35U=35U-?7
|
||||
MU-7555545-74U-34U]?4U=5555145%15U=755=77U%55U5545%175%555575
|
||||
MUM;6U]?1UM?7U]155554U=;7U-5455165E%05U15U575U]?4U=75U-;7T='4
|
||||
MU5575E%65%165U545-77U]?5U=37U];1T=#0T='6U%555U=65E=75%175=55
|
||||
M5-74U-155E77U-;6UM'6UM=55=355%34557555155=555U=55%=75%155=36
|
||||
MU]?7U-?7U555U-34U]15U554U-?6U-545=545U145=75U=?1T-;45=?3UM37
|
||||
MU=?7U%545-55U5545U!24%%75=74U-?6U]37UM#3TM/1UM175E914U-045?5
|
||||
M5575U-74U-75U=75U-37UM#0T-?7U=35U-545E=64U)75U955535U=77U575
|
||||
MU-74U];1T-'6UM;1UM575U1455545%145=555515U5175%35U%55U=?4U]?7
|
||||
MU]?555175E=5U55555155U355576TM'1T-;4U]34U-34U-74U]?6U]555556
|
||||
M45%045%15E=45=77T-+2T-#6U]?4U=545U965U=5U-?7U-3555555%965-75
|
||||
MU-?6T=;7U%75UU115%175=55U=34U-;6U]?4U5545%14U=77U-?7U-?7U-35
|
||||
M55145%9145%65E965U35U];6UM;4U-?7U-74U-34U]?7UM'6UM?4U%5145%1
|
||||
M5-?555545=7555555%=75%75U];6T-+2T]'1UM155U=75%=65E965U=45=74
|
||||
MU]35U-34U=37UM'6UM?4U]?555555575U-355U975%=14%904E=4U=;6T=#1
|
||||
MT=#0T=;6U-?4U5145555U=74UU575U15U=75U=34U-37U]?4U5555%155515
|
||||
MU=34U-555%155=75U=35U=74U-?7U]?7U=3655555U15U=75U=5555555535
|
||||
MU-755=755=55U=;4UM'55-?6U=30UU115]565E=45E355%77U]355%975=75
|
||||
MU=;1T='0T]/3T==55U=64E]04U-7U=77T=#1UU155=75U];6UM;7U5555=75
|
||||
M5%545E%15E=75%35U=77UM;6UM?5U=755%555=75U-34U5545U975U555-74
|
||||
MU-74U=;1TM;4UM3555555%555%175U145%75U-75U-37U]?7U-75U-34U]?5
|
||||
M55575%75U55555555%74U]'1T='1UM1455175E=65E=5U=36T=/0T557U=34
|
||||
MU]5555145=75U=155%=65E=45575U-34U]?6UM;7U]5555555%75U=755=55
|
||||
M55545=555%145U35U]?6UM?7UM;6U]75U-34U-54U==45=545=5555=75%97
|
||||
M5%15U];7U-755=74U];7U]?7U]34U-75U-34U-555%1555555%=65%145555
|
||||
M5=75U5545%555555U=?7U-?7U]=55E545U74UM'1UM'0T-'6U]35U5155U15
|
||||
M5%175U914%%7U=36UM?4U=37UM;0T-'755=75E=4U=35U-145U145%=65E14
|
||||
M5=74U-;0T=;6U]'3U-?6U-34U-555%555%155=555=555-555%145=77T=;6
|
||||
MU]355U915E=45=34U-35U=34U=74U=?55=555555U=74U];0T=?555175U75
|
||||
M5U%55535U]?7U-545U155%965U14U=?6T-+2T]#1UU5745%75U=65E%75U55
|
||||
M5=77T='1T='7U-37UM?7U]145%=75%=75E975%545%555%?4T=37UM?4U-35
|
||||
MU=74U-155%=45%3455545-74UM'0T-;75517U=37U%545E945=75U=?6UM?7
|
||||
MU-37U-5555545%=45%165-74U=?7U-35U5=155545515U=34U];6UM;1UM?4
|
||||
M55575E965%75U]'0T-/0T=;555164%!045=75=75U=?7U-555%545U975%74
|
||||
MUM'0T-/0T=?5U=75U=54U-955%=145%15U145%15U-37U]'6U]?4U]34U]34
|
||||
MU=55U=155=37U-37U-5555175%=45%145=75U-?7U]?7U-?75574U555U=34
|
||||
MU]35U];55=?455755%145%=75%=75%74UM'0T-?555%04U)05E74U]?1T-#1
|
||||
MT=;7U=75U-355%35U5545=75U-34U55555555%75U-?6UM?7U-355=365=74
|
||||
M55755%=65E=75U145U7555555=76UM#0UM?6U]?6UM?4U5575U%045975U15
|
||||
M5=74U];1T==55U=45=77T='0T=;6U]5555545%1745%55%35U]35U=355515
|
||||
M5%555555U=55U=74U];6U-755%5555=45U975%145-75U=36UM;6U]34U];6
|
||||
MU]?4U=75U5555%175U=75%914%'5T=;0TM#1UM?7U-37U-54557555555514
|
||||
M5U=65U975574U]37UM?7U]?7U]34U5145U15U=75U-35U=555=34U]?7U=75
|
||||
MU=75U=;6UM;7UU115U%15E955%=45%55U-37UM?6U%55U575U-34U]37U]37
|
||||
MU];7U]3555=75U=45U=75U74U5555=545%=45%74U]'1T-/3T]'455545%=1
|
||||
M5-575-35U=555575U=74U=74U-75U-555575U=34U5545%145%77UM'6U]'6
|
||||
MU-74U%75U=77U-?7U%75U-7555545%145575U555U=34U-;55-15U=75U555
|
||||
M5%=45U975-36T=#1T='7U%545U=65E=4U=35U]?6T=#0T=;6U]555U965E35
|
||||
MU=74U-34U5555U915E%15E15U-?7U]?6T=/2U]?1U-555554U=55U5=45%=4
|
||||
M5-75U=555-37UM'1T=;6UM34U=75551555545U15U=755=74U=545U=45%75
|
||||
MU];1T-'1UM35U5175E=445!45%74U];6UM;6U-745575U-75U=75U-355514
|
||||
M5U965E9645=4U-?7T='3TM#0T=35U5555555U%555515U5545U=75U155=55
|
||||
M55545U?6T-;1T-'1UM355%=75E=55=74U]555%145%75U-555%945%74U-;6
|
||||
MT='7UM;6UM?455175E=45%75U=7555545%15U=75U]?7U-?6U];7UU115%=6
|
||||
M5%34UM'1UM155=5555175U15U=?4U-155U975U=4U=3455555%145-37U]'1
|
||||
MT-/1T=;7U-755%=45U=555555=75U];6U-75559155565E155=74U];7U]75
|
||||
M55=65U=4U=37T='1T=;6UM?7U]=55%=745%14%975=36U]355575U-;6U]?4
|
||||
MU-34U-?1UM155U975U=45%5555565M34UM'6U]37UM'1T='7U%5645%15E96
|
||||
M5U5555555=75U-55U=37UM'6U]155-555%145%145=74UM?5U5545575U]35
|
||||
MU=75U-?6T-#6U]'65U96459645965577T=#3T-#6U-545%175U=75U=45=77
|
||||
MUM;6U%755%=75U=75575U=555555U=74U]'1T=#0T='6U5=65%15U-355U97
|
||||
M4U#5U-;0T-'6UM;6U]574%)=4EU05U965-35U=;0W=S0TMW=T-'755=65555
|
||||
MU-;1U-#6U5114%!24%Y:7%7`RTUURL1C$E#KPOSCX]_UQ&UA\)SJ%AIODI-,
|
||||
M'Q'R^N)`]<9M;F3LEY3A8&+2\607%GSCE)'G1%'R_5=Q<'?3S<!Q8F]F6=O\
|
||||
MY^#(>&-SS_721-CAX^3]S]C>3V`5;5U<<WC2YN[!0LY2_>7#?&9<P?'7TMO9
|
||||
M0V1^4OOW765@7LK@]-/=5OG9VDQ^S<K*7D-1<=77?4MWTMQ=R</]S,S"T<]2
|
||||
M6GYE2%/%7E[9P/7/P=585-#<<'-7R<[95%+*],U=35Q>UEES=DY%S__X^=Q.
|
||||
M=%_;1TA>TM=1T$Y?]/#+U4M6TT-/=<S$P-=.QMG]R5?>3<)9<G!*SU31T-?8
|
||||
M5,?77D5-4=C=4%744%3.P\376]S2W-!?7%I04UE(T<_>4U'%TMK73$)<Q=I0
|
||||
M6T!2S\O%TM'.QUE#3TQ:6-78QL/'V]W:U$)86%-?14]"Q<G$W][=7=79V-U&
|
||||
M3E#655=8W<W;W5I2W55?3$30P<='0E'&]]I425[6Q=E:05[2P-K5U=_;W%=8
|
||||
M4E)?7M';S-Q7U%]7UU-$0]_26%+4P]I045A2W=7=U-W2WM9<4%S6TE1?7==5
|
||||
MT5127E#9Q-K54=%64E%27%;?S-Q>65?%WU)-6=G!QM934U;04-%37$53U]31
|
||||
M4=;;V-O9W]906$A-7M/15571V=_<T-=?6%35U=#>V-E15=+3U%-065A'6%E?
|
||||
MT=[:W-30Q=#57T535=/4UMW%V-'74%9175!15-505M73UU77TMK55U!05E?3
|
||||
MUM'645+6TU574UU6T=76W-K;55A=5=+>5%#5T5135U974UE74534U=#6T]_>
|
||||
MW=_54%;45UQ=4EQ35-;65515U]'1T='0T]#7U]W?T%105D=Q=4%>5]'<V\7$
|
||||
MQ\3$VMO>W]W3T=;455175E%04%-34U-34U!04%%15E=75%15U=74U-34U]?7
|
||||
MU]?7U]?7U]?4U-34U-34U-75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U?______________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
:____________________________________
|
||||
`
|
||||
end
|
@ -1,232 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 9.al
|
||||
M5U145-75U=75U574U-145E=5U-?1T-35UU55U5=5U-;6U5165E75U]355U%6
|
||||
M5U15U5555U;6W]1<4U545=31W=[?W=#4T=#1U]545U=04U-15U1455545U14
|
||||
M5=74U]=55%55U-;6T]+0T-'7U]35U5=14EU=4E!15U155-75U]'1T='1T='1
|
||||
MU];1UM;7U-555%145U965U=455555%74U];1T='6UM?4U-555U975U=75=74
|
||||
MUM=75M7555545%74U%555%74U-?6T=;6UM?4U5545E=75%=4555555555=35
|
||||
MU5175-75U=74U]37UM?7U];4U555U=75U]?6U-75U55555145='6U=?7U]?4
|
||||
MU555U5555%175U=75U=75%5555545%75U];7UM3555155=37U]'1UM?6U]75
|
||||
M5%145U=45U=75U=45=?0T-/3T]#6U]155%144U-75E35U=74U-3555=15E=4
|
||||
M5=37T=#1T-#6U-555%145%145%145514555555155-74U-?1T-'6UM'7U-55
|
||||
M55145%555U945%555555U=30T=37U5155U15U-35U-?6T=;1U-15U=355%15
|
||||
M55175E965-75U-3455145%=4U-;7U]?7UM'0T=;45%=75E=65%=55=75U=75
|
||||
MU=34U%75U5=5U]37T=;7UM?6UM?7U-555=545U=75U945575U-34U-?4U554
|
||||
M5-74U=34U-?7U-75U=555=75U555U5145U155%555=75U]34U]37U];6T-95
|
||||
M55145575U=34U5175%1455555=35U=55U=36UM?7UM;1UM?4U]3555145%=7
|
||||
M5U=145975%145=37T=#3T]/0T=?4U=75U=555U15U5124%9045915E34U]'0
|
||||
MT-#0T=;6U]75U=75U55555=65U=75555U-34U]?7U-34U=75U555U575U]34
|
||||
MU5545U=75U=75-37U]?6UM;1UM?55=1445145%5555145%355=74U-74U];7
|
||||
MU]37U]34U]34U-35U5175E965%75T=#0UM?4U5575U%15E=45%=4U=?6T-#6
|
||||
MU-355=75U=75U-?45]775=755=755=55557555545%15U=?6U]?7U-555%=4
|
||||
M5%555=74U=7555555=75U=75U=755=74U]?7U]34U-74U-?7U]37U]?6U-75
|
||||
M5%3455%65E965E965E=4U=;1T]/1U-75U-35U=74U-?6UM;455575U965E=5
|
||||
M5%75U-?6UM;6T=#3T-'7U-555%175U965E=75U14U554U=745%!4U=36UM'1
|
||||
MT]/3T-;755175E%045=75%555555U=74U]15U5175-75U-?1UM;6T=;7U=55
|
||||
M5%=14%%65%35U]?4U-34U=75U=75U]'1T];1TM#4U5145U965U145U=75=55
|
||||
MU=75U=75U-?7U-355515U=37U]?7UM?555155U=45%175%545=755=77U];6
|
||||
MUM;4U5145%155=75U=37UM=5U=145%175%14U555U=?7U];7U]?7U-75U515
|
||||
M5=74U]355555U=75U5175U145=34U=75U-34U=555=75555555545%555=75
|
||||
MU575U]15U]W0T='55575U=755514557555155%145=75U555U555U-755575
|
||||
M5=75U-;6U]?4U-35U=7555145U=45E?5U-?7UM;7U]355=75U=34U-?55U75
|
||||
M5%155%=455545U35U-55U-?7UM?6UM'1UM?455545%55551745!145?5U=34
|
||||
MU-155515U=37UM;7U]37U]37U-?4U-75U5545U965E?55%?55=77U]35U=74
|
||||
MU];1UM?6UM;55%=75U15U574U]?6U]?455545U965U=45=36T=#0T==55%17
|
||||
M5U=455155514U=34UM;7U-15U-37U5%555=4U=34U=555555U=75U-?7U575
|
||||
MU-?6UM?4U-35U=7555145U175%145%75U];6UM;6U-7555175U145%555515
|
||||
MU5555=74U-?6U]?1TM;7UU545U=75E%145%15U=4U-;0T]#1UM?4U5545=74
|
||||
MU];0T-'6UU5645975U35U=55U=34U-37U-555%1455555=75U555U=34U-55
|
||||
MU5=15=54U=34U-75U555U-37U-74U-155%=45%=755555=74U-?7U]555515
|
||||
M5575U=35U=36T=#3T]#7U5545E945%74U-3455175E9145%15=;7UM#0T]/6
|
||||
MU5145%145%545555U555U=75U=74U-355=55U=74U-34U-;7U]?4U-355%17
|
||||
M5E145%155575U=34UM;6U]37U]3555145=174%=75U155=77UM?7U%74U-37
|
||||
MU]?7U]5455175%1555555=35U=?4U=75U=74U=75U575U-?4U-34U%545%75
|
||||
MU=34U-75U=?4U-3555175E775%145%555U14U=74U]?4U=37U]36UM?55554
|
||||
M5%14U=34U-5555145%=75E14U=34UM'1UM34U=555%145%=45=75U-35U555
|
||||
M5555U=37U537U]?6UM'1UM3555=145%65E15U-74U]?7U-75U-;7U514U517
|
||||
M5%35U=75U555U=755575U-74U-75U=755=75U-?5U5545=77UM;1UM36T=74
|
||||
MU=7555175E975E%15U1455545=?1T-#1UM?4U-74U];1T='55%=14U-345%7
|
||||
M5U145=74U=34U-37UM;6T-'1T=;4U5555U145U15U5!245=5U=?6U];6UM?7
|
||||
MUM;0T]'6U-755%965E=75U15U=35U5545%165U555-55U-?7UM'1U]34U=75
|
||||
MU-75U5145%965U75U=?6T=?4U516U=14U=75U]?4U=755=545%175%=45%14
|
||||
M55555=37UM'0T-/0T=;6U]?7U]34U555U=555U=75E=65U=65E%65E755=37
|
||||
MU]?7UM?1T='6U]175]=55%155%=75554U=37T='1T]+3T=;4U554U=155U15
|
||||
M5%965E975U965E%145!15U15U];1T=;7U]?4U-34U]'1T=/3T-/0T-#3T]#6
|
||||
MT=+1U=555=555U175E914EU<7%]>6$5:6EI;6%]24%95U-?6TMS<WMG;Q<;!
|
||||
MP<#"P\/"P,78V=W0W=G<W-C9W]W64UA!27=S?'YY>'AY?W!U3D=0UM[&PL[+
|
||||
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
|
||||
M1<GE_.7IZ^#DY<)%07!A8F)I%6MK:&-X=D3=S/'\\_3Q_?;U]_7+]<K/R_?T
|
||||
M]/3(P=O34%M#2G=V=G=*3D=?7M'^X?CGZ.GD^__91$%P9V%C;FAN:&EC97U)
|
||||
M4=[,]/?T]OW]\_#S\_'W]/;WRLC`QL735%U=64-/0DUU=4Y.3T986U3QY_KE
|
||||
M[NCAY.7T55U.>F9@:6IK:A5N9GY*7-W/]O;U]OS\\O#S\_'W]<OT]_3.PL'9
|
||||
MUE%?6UM914),0T9`0$%%7UQ25<#_Y?CA[^/Z^??50'1X9F!L:&AN;FQG<T-3
|
||||
MWLGT]/7V\/'P\/;TRL_!Q\#/R<O+SL/&VM-755536$1`0T-,3D!97EM97=+W
|
||||
M\/?ZX.;^_/?37$-R>'IA;&UM;&)D<$=4WLGQ],OT],KT],G/S,38Q<7&R/3U
|
||||
M]/?UPL?>T-=76DU/279S=DI)0D5?4EU<W/+^\N?LX?[RR]%30W)^>6=B8FUL
|
||||
M8V1]3U'9PL["P,/!P,CUSLS/PL##S<KS_/W]_?#+P][45U)`=71V<GUP<71,
|
||||
M0T5<4%!4T,S_^/_DX?KQ]<=01$ES?WAG8V)@9F5R3E/9QL'"S\W!QL#"S<#$
|
||||
MQL_U]/?R^?G\\/?)Q=-06$%,=')R=G!P2T=;4];1U]/>T%=7T,;#Q<WV]L[!
|
||||
MQ]G05EM#3G=\>7E^?WQV1EQ35-'?V-[9Q,W.SL_,SLO(SLKW]O;TR</:T5-?
|
||||
M7UQ91T181TU-3$Q!1D!%7EI:7%)25='0Q_7URO#R]\K*QM+74D-.2'%]<GUR
|
||||
M<'=U0T5:4]77T]_;Q<//R<KT]_;V\?'V]/7*S<''V-9164-*=W%P<79V=$Y,
|
||||
M0T=;4='1T-G:W]_8V<3/SLGW\/?)S\'9TU%;1TUW<W)\?GQS<75-1%Q05=/8
|
||||
MQ\++]/;P\_+\_/#W]\O!V-)17U]:04-,2DI(='9U3$Q,1%]>7UU0U=#3WL?`
|
||||
MS\G.R_3W]??WR</"VE1814]W<')]<GU\<W1*3UA05]S:Q<W(SL[U]<KU]<C(
|
||||
MR</$Q-K?TM%55%1?0$%$3W=T24M+0D!%4E=7T\7:VL'&Q<?'VMC9WMW0T=/=
|
||||
MT=77UE=24%U86UM:6%E:6EA:6E)44U365=7=W]S9VMC9V-[2TM[9W-/=TM;4
|
||||
MU-34U51455115E=75U%34%!34U%145%5UM515-=74U745E?1T];0W=/=V=W0
|
||||
MTMS0UM;455164UE?4%927%154U977UU47%A7UE=7T-'6TM+1W]C=T-S?TM+0
|
||||
MU]/=T='2T]'0U5%4U5!<4%9=6%A>4E-<4-?1U]?1TMW6U=?45U?555975=70
|
||||
MWM_>V=[?T];45EQ?75U>6%U<7U]?7U#6T='=W]W15%975E34UM;0T]'6T]W=
|
||||
MW][<TM#45=555%=745!27EQ145-7U-;1T=;0T-'2TM#3W-915=164%)25E17
|
||||
M4%?455555=76559455965574U];6TM+0T='1UM54U-=55-37U-7455%75%-2
|
||||
M45165E75U-77T='3W=S<W]S3UU575E915=505E545]545U174U;55%;55535
|
||||
M55?5UU77TM+0TM#7T=975U56455445755U%45E?5U-?1T]#1T=?7T=?5U-37
|
||||
MU%5455165-755U945U%04E965%175=?6T=#=W=+0T]'4U]14U=?45%1445!0
|
||||
M5E545U34U-77U-76U5%6U517U='1T='1T-;5U-'55=3755165U155=31U]37
|
||||
MU5915E745U=55514U-?4U]=55=545%75U=77U-55U];4U-7455=45-74U]75
|
||||
MU-75U5575%175U155=74U=755515U574T-#7UM#6UM;1T-'55%574E)64%;5
|
||||
MU=7555=4U-74U]?45555U]?4UM;555575U=65E=45-77UM?7U=155=77U]34
|
||||
MU=375%74U574U-74UM;7U];7U%54U=5455165E71UE77U%9045965U74U];6
|
||||
MU]?7U]?4U-?7U%575%145%=75=75U-;6U]37U]145%545U355]77U575U5=4
|
||||
MU=75U=35U575U=75U=34U]?4U%57U]55U-75U5575U145U55U=?4U=345575
|
||||
MU=77UM;1UM;1U%55U5165%=75%?4U]55U=14U-155555555555175%545=75
|
||||
M5=37U-36U%55T==5U=34U-37U%55U=7555555575UM?4UM?4U=555U175E!0
|
||||
M4%%75=31T=#1T-#1UM?6U-555%75U=37U]?6UM?5551645=65E=65U=75-54
|
||||
M5]?4U-?7UM#1T='6U=5555=75-75U5545U155%75U-75U5145-74U=?6UM?7
|
||||
MU];7U57555=45%1455145U965E%65=36T-'1T='6U-35U=#3U-34U5145U14
|
||||
M5=7555555%=745965U145%35U=36T=#0UM35U=75U]74U5555=55U-?4U517
|
||||
M5E965=55U=155-77U];6T=;5U-34U-5545!45E945%155=55U=74U-745=74
|
||||
MU]'1T-/1U]?45%75U%545%=75%=75-37U]34U%555%145575U-75U=355555
|
||||
M5555U5175U=75%34U-30UM77U-75U574U-?7U];6U]?4U5175U=645965E96
|
||||
M5U55U=?1T]#0T='7U]35U=74U-7555155=74U=755575U5555%175U75U-?7
|
||||
MU-?1U%%=45!6U];7U]?4U-175%?4T-#0U-14U]#5453455%>4%?7U-71U5;7
|
||||
MTM;6UM#3T=%5U=74U]=54E)<4E=75E-7U-;3TMW2T=15U5504U/4S]1^6,3:
|
||||
MQGINVNO'V-USY>I;%F?^D.UG%7'C^&040?G]T=7WTWUA3M/YY_Y285U^>41T
|
||||
MR^'OZ>_;8&1:U]!'>E_QVG]L8$'GX_#34-C;0G75S\O9WMY6U]M41E%<96-?
|
||||
MS,']\D35_%=TW49&R/)9?<+/V-M?0D=>2D7-],U52TA`U_3WVUO=V5)$7M;%
|
||||
M\]I"5D1#=D/45L/!W5U4R<G!6%_36UQ;=$[1WMC&P-9=U]167U%9U=]<5=_2
|
||||
M55#0Q\?>TU134]Q43U+55%+4P\?2U4E%W]Q>7M+9TU=&7$%6]\Y=15165-?>
|
||||
MQL[?7%127]+15UI%5E9`6U]5S,3345W3T=G27=?;Q5=!T]-<5MW44M76WM'6
|
||||
M55A265G645'7V==9U-+=W=537-#?U]16T]W=WU-=UM+57UM;1%S7W</%5=[$
|
||||
MTEE>U5'7UU105];6T5-1UM%07=C:55-?4E94U=/?U-;57EW15E_<W=3<T%Q?
|
||||
M5=S<W%5<U=74W='7T=55U%=25]/75E!?45905-_:T]765$50TE!2W=G7UMW3
|
||||
M5U]44UA4TM%7W=-65-5?6='=5U%7U-'1UE=1T-C>W5%<5=1445=5TM[<U5A0
|
||||
M5U?755%5T=S15]505E94T]115];3U%'5V]_4U-555E9?7EU0UM+45-33U-74
|
||||
M4594W-+1W=?1T%5=4%-?5M145];55M;0T=/45M'=5%)35U70T]76T-#7UE=2
|
||||
M75945]545%70UU355M30T%54U]?1UM+7U]?5U=775E=45]'75E34W=-66UU4
|
||||
MU]!65=95UM16U515U=345-76U=?4UU75UU%65=555E57U=34U]#0U='<UE?6
|
||||
MUU%25=S6UM#555?45U=5UU55U5-65$1V2D9?5-/>VL3&QL;'Q=K8V=S=T-'4
|
||||
MU5175E%04%-34E-34U-04%%15E975U155=75U=34U]?7U]?7U]?7U-?4U-34
|
||||
MU-34U-34U=35U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75
|
||||
MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=7_
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
M____________________________________________________________
|
||||
9____________________________________
|
||||
`
|
||||
end
|
@ -1,15 +0,0 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/8/93
|
||||
# $FreeBSD$
|
||||
|
||||
FILES= 0.al 1.al 2.al 3.al 4.al 5.al 6.al 7.al 8.al 9.al beep.al msg.al
|
||||
|
||||
CLEANFILES+= ${FILES}
|
||||
|
||||
.SUFFIXES: .uu
|
||||
|
||||
.uu:
|
||||
uudecode < ${.IMPSRC}
|
||||
|
||||
FILESDIR= ${BINDIR}/isdn
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,107 +0,0 @@
|
||||
# $FreeBSD$
|
||||
begin 644 beep.al
|
||||
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
|
||||
2L(T&)"8PF;BYB6<'<YN6`SD[
|
||||
`
|
||||
end
|
1506
share/isdn/msg.al.uu
1506
share/isdn/msg.al.uu
File diff suppressed because it is too large
Load Diff
@ -36,7 +36,7 @@
|
||||
.\" $Whistle: netgraph.4,v 1.7 1999/01/28 23:54:52 julian Exp $
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd July 1, 2004
|
||||
.Dd May 25, 2008
|
||||
.Dt NETGRAPH 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -689,19 +689,6 @@ The message may have travelled from
|
||||
.Dq Li Frame1:
|
||||
to B
|
||||
as a synchronous reply, saving time and cycles.
|
||||
.Pp
|
||||
A similar graph might be used to represent multi-link PPP running
|
||||
over an ISDN line:
|
||||
.Bd -literal
|
||||
[ type BRI ](B1)<--->(link1)[ type MPP ]
|
||||
[ "ISDN1" ](B2)<--->(link2)[ (no name) ]
|
||||
[ ](D) <-+
|
||||
|
|
||||
+----------------+
|
||||
|
|
||||
+->(switch)[ type Q.921 ](term1)<---->(datalink)[ type Q.931 ]
|
||||
[ (no name) ] [ (no name) ]
|
||||
.Ed
|
||||
.Ss Netgraph Structures
|
||||
Structures are defined in
|
||||
.In netgraph/netgraph.h
|
||||
|
@ -25,7 +25,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd December 30, 2001
|
||||
.Dd May 25, 2008
|
||||
.Dt SPPP 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -91,7 +91,7 @@ will cause the interface to operate in
|
||||
.Em dial-on-demand
|
||||
mode.
|
||||
This is also only useful if the lower layer supports the notion
|
||||
of a carrier (like with an ISDN line).
|
||||
of a carrier.
|
||||
Upon configuring the
|
||||
respective interface, it will delay the administrative
|
||||
.Em Open
|
||||
|
@ -24,7 +24,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 9, 2008
|
||||
.Dd May 25, 2008
|
||||
.Dt RC.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -3530,75 +3530,6 @@ to be used within a jail.
|
||||
If set to
|
||||
.Dq Li YES ,
|
||||
allow applications within a jail to use System V IPC.
|
||||
.\" ----- ISDN settings ---------------------------------
|
||||
.It Va isdn_enable
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
.Dq Li NO
|
||||
by default.
|
||||
When set to
|
||||
.Dq Li YES ,
|
||||
starts the
|
||||
.Xr isdnd 8
|
||||
daemon
|
||||
at system boot time.
|
||||
.It Va isdn_flags
|
||||
.Pq Vt str
|
||||
Set to
|
||||
.Dq Fl d Ns Cm n Fl d Ns Li 0x1f9
|
||||
by default.
|
||||
Additional flags to pass to
|
||||
.Xr isdnd 8
|
||||
(but see
|
||||
.Va isdn_fsdev
|
||||
and
|
||||
.Va isdn_ttype
|
||||
for certain tunable parameters).
|
||||
.It Va isdn_ttype
|
||||
.Pq Vt str
|
||||
Set to
|
||||
.Dq Li cons25
|
||||
by default.
|
||||
The terminal type of the output device when
|
||||
.Xr isdnd 8
|
||||
operates in full-screen mode.
|
||||
.It Va isdn_screenflags
|
||||
.Pq Vt str
|
||||
Set to
|
||||
.Dq Li NO
|
||||
by default.
|
||||
The video mode for full-screen mode (only for
|
||||
.Xr syscons 4
|
||||
console driver, see
|
||||
.Xr vidcontrol 1
|
||||
for valid modes).
|
||||
.It Va isdn_fsdev
|
||||
.Pq Vt str
|
||||
Set to
|
||||
.Dq Li NO
|
||||
by default.
|
||||
The output device for
|
||||
.Xr isdnd 8
|
||||
in full-screen mode (or
|
||||
.Dq Li NO
|
||||
for daemon mode).
|
||||
.It Va isdn_trace
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
.Dq Li NO
|
||||
by default.
|
||||
When set to
|
||||
.Dq Li YES ,
|
||||
enables the ISDN protocol trace utility
|
||||
.Xr isdntrace 8
|
||||
at system boot time.
|
||||
.It Va isdn_traceflags
|
||||
.Pq Vt str
|
||||
Set to
|
||||
.Dq Fl f Pa /var/tmp/isdntrace0
|
||||
by default.
|
||||
Flags for
|
||||
.Xr isdntrace 8 .
|
||||
.\" -----------------------------------------------------
|
||||
.It Va harvest_interrupt
|
||||
.Pq Vt bool
|
||||
@ -4061,8 +3992,6 @@ Default
|
||||
.Xr ipf 8 ,
|
||||
.Xr ipfw 8 ,
|
||||
.Xr ipnat 8 ,
|
||||
.Xr isdnd 8 ,
|
||||
.Xr isdntrace 8 ,
|
||||
.Xr jail 8 ,
|
||||
.Xr kldxref 8 ,
|
||||
.Xr lpd 8 ,
|
||||
|
@ -1,7 +1,7 @@
|
||||
.\" DO NOT EDIT-- this file is automatically generated.
|
||||
.\" from FreeBSD: src/tools/build/options/makeman,v 1.8 2007/12/12 16:39:31 ru Exp
|
||||
.\" $FreeBSD$
|
||||
.Dd March 29, 2008
|
||||
.Dd May 25, 2008
|
||||
.Dt SRC.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -300,9 +300,6 @@ Set to build Hesiod support.
|
||||
.It Va WITHOUT_HTML
|
||||
.\" from FreeBSD: src/tools/build/options/WITHOUT_HTML,v 1.1 2006/03/21 07:50:49 ru Exp
|
||||
Set to not build HTML docs.
|
||||
.It Va WITHOUT_I4B
|
||||
.\" from FreeBSD: src/tools/build/options/WITHOUT_I4B,v 1.1 2006/03/21 07:50:50 ru Exp
|
||||
Set to not build isdn4bsd package.
|
||||
.It Va WITH_IDEA
|
||||
.\" from FreeBSD: src/tools/build/options/WITH_IDEA,v 1.1 2006/03/21 07:50:50 ru Exp
|
||||
Set to build the IDEA encryption code.
|
||||
|
@ -32,7 +32,7 @@
|
||||
.\" @(#)hier.7 8.1 (Berkeley) 6/5/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 28, 2007
|
||||
.Dd May 25, 2008
|
||||
.Dt HIER 7
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -101,10 +101,6 @@ bluetooth configuration files
|
||||
gnats configuration files;
|
||||
see
|
||||
.Xr send-pr 1
|
||||
.It Pa isdn/
|
||||
isdn4bsd configuration files;
|
||||
see
|
||||
.Xr isdnd 8
|
||||
.It Pa localtime
|
||||
local timezone information;
|
||||
see
|
||||
@ -548,8 +544,6 @@ ASCII text files used by various games
|
||||
device description file for device name
|
||||
.It Pa info/
|
||||
GNU Info hypertext system
|
||||
.It Pa isdn/
|
||||
ISDN
|
||||
.It Pa locale/
|
||||
localization files;
|
||||
see
|
||||
|
@ -229,7 +229,6 @@ WITHOUT_${var}=
|
||||
GPIB \
|
||||
GROFF \
|
||||
HTML \
|
||||
I4B \
|
||||
INET6 \
|
||||
INFO \
|
||||
IPFILTER \
|
||||
@ -316,7 +315,6 @@ WITH_IDEA=
|
||||
GPIB \
|
||||
GROFF \
|
||||
HTML \
|
||||
I4B \
|
||||
INET6 \
|
||||
INFO \
|
||||
INSTALLLIB \
|
||||
|
@ -9,7 +9,7 @@ SUBDIR= boot
|
||||
|
||||
# Directories to include in cscope name file and TAGS.
|
||||
CSCOPEDIRS= boot bsm cam compat conf contrib crypto ddb dev fs gdb geom \
|
||||
gnu i4b isa kern libkern modules net net80211 netatalk \
|
||||
gnu isa kern libkern modules net net80211 netatalk \
|
||||
netgraph netinet netinet6 netipsec netipx netnatm netncp \
|
||||
netsmb nfs nfs4client nfsclient nfsserver opencrypto pccard \
|
||||
pci rpc security sys ufs vm ${ARCHDIR}
|
||||
|
@ -451,120 +451,6 @@ device ichwd
|
||||
device coretemp
|
||||
device k8temp
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN4BSD
|
||||
#
|
||||
# See /usr/share/examples/isdn/ROADMAP for an introduction to isdn4bsd.
|
||||
#
|
||||
# i4b passive ISDN cards support contains the following hardware drivers:
|
||||
#
|
||||
# isic - Siemens/Infineon ISDN ISAC/HSCX/IPAC chipset driver
|
||||
# iwic - Winbond W6692 PCI bus ISDN S/T interface controller
|
||||
# ifpi - AVM Fritz!Card PCI driver
|
||||
# ifpi2 - AVM Fritz!Card PCI version 2 driver
|
||||
# itjc - Siemens ISAC / TJNet Tiger300/320 chipset
|
||||
#
|
||||
# i4b active ISDN cards support contains the following hardware drivers:
|
||||
#
|
||||
# iavc - AVM B1 PCI, AVM B1 ISA, AVM T1
|
||||
#
|
||||
# Note that the ``options'' (if given) and ``device'' lines must BOTH
|
||||
# be uncommented to enable support for a given card !
|
||||
#
|
||||
# In addition to a hardware driver (and probably an option) the mandatory
|
||||
# ISDN protocol stack devices and the mandatory support device must be
|
||||
# enabled as well as one or more devices from the optional devices section.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# isic driver (Siemens/Infineon chipsets)
|
||||
#
|
||||
#XXX#device isic
|
||||
#
|
||||
# PCI bus Cards:
|
||||
# --------------
|
||||
#
|
||||
# ELSA MicroLink ISDN/PCI (same as ELSA QuickStep 1000pro PCI)
|
||||
options ELSA_QS1PCI
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ifpi2 driver for AVM Fritz!Card PCI version 2
|
||||
#
|
||||
# AVM Fritz!Card PCI version 2
|
||||
#XXX#device ifpi2
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# iwic driver for Winbond W6692 chipset
|
||||
#
|
||||
# ASUSCOM P-IN100-ST-D (and other Winbond W6692 based cards)
|
||||
#XXX#device iwic
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# itjc driver for Siemens ISAC / TJNet Tiger300/320 chipset
|
||||
#
|
||||
# Traverse Technologies NETjet-S
|
||||
# Teles PCI-TJ
|
||||
#XXX#device itjc
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# iavc driver (AVM active cards, needs i4bcapi driver!)
|
||||
#
|
||||
#XXX#device iavc
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN Protocol Stack - mandatory for all hardware drivers
|
||||
#
|
||||
# Q.921 / layer 2 - i4b passive cards D channel handling
|
||||
#XXX#device i4bq921
|
||||
#
|
||||
# Q.931 / layer 3 - i4b passive cards D channel handling
|
||||
#XXX#device i4bq931
|
||||
#
|
||||
# layer 4 - i4b common passive and active card handling
|
||||
#XXX#device i4b
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN devices - mandatory for all hardware drivers
|
||||
#
|
||||
# userland driver to do ISDN tracing (for passive cards only)
|
||||
#XXX#device i4btrc
|
||||
#XXX#options NI4BTRC=4
|
||||
#
|
||||
# userland driver to control the whole thing
|
||||
#XXX#device i4bctl
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN devices - optional
|
||||
#
|
||||
# userland driver for access to raw B channel
|
||||
#XXX#device i4brbch
|
||||
#XXX#options NI4BRBCH=4
|
||||
#
|
||||
# userland driver for telephony
|
||||
#XXX#device i4btel
|
||||
#XXX#options NI4BTEL=2
|
||||
#
|
||||
# network driver for IP over raw HDLC ISDN
|
||||
#XXX#device i4bipr
|
||||
#XXX#options NI4BIPR=4
|
||||
# enable VJ header compression detection for ipr i/f
|
||||
#XXX#options IPR_VJ
|
||||
# enable logging of the first n IP packets to isdnd (n=32 here)
|
||||
#XXX#options IPR_LOG=32
|
||||
#
|
||||
# network driver for sync PPP over ISDN; requires an equivalent
|
||||
# number of sppp device to be configured
|
||||
#XXX#device i4bisppp
|
||||
#XXX#options NI4BISPPP=4
|
||||
#
|
||||
# B-channel interface to the netgraph subsystem
|
||||
#XXX#device i4bing
|
||||
#XXX#options NI4BING=2
|
||||
#
|
||||
# CAPI driver needed for active ISDN cards (see iavc driver above)
|
||||
#XXX#device i4bcapi
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# System Management Bus (SMB)
|
||||
#
|
||||
|
@ -1511,62 +1511,6 @@ gnu/fs/reiserfs/reiserfs_stree.c optional reiserfs
|
||||
gnu/fs/reiserfs/reiserfs_vfsops.c optional reiserfs
|
||||
gnu/fs/reiserfs/reiserfs_vnops.c optional reiserfs
|
||||
#
|
||||
# isdn4bsd device drivers
|
||||
#
|
||||
i4b/driver/i4b_trace.c optional i4btrc
|
||||
i4b/driver/i4b_rbch.c optional i4brbch
|
||||
i4b/driver/i4b_tel.c optional i4btel
|
||||
#XXXBZ#i4b/driver/i4b_ipr.c optional i4bipr
|
||||
net/slcompress.c optional i4bipr | i4bisppp
|
||||
i4b/driver/i4b_ctl.c optional i4bctl
|
||||
#XXXBZ#i4b/driver/i4b_ing.c optional i4bing
|
||||
#XXXBZ#i4b/driver/i4b_isppp.c optional i4bisppp
|
||||
#
|
||||
# isdn4bsd CAPI driver
|
||||
#
|
||||
i4b/capi/capi_l4if.c optional i4bcapi
|
||||
i4b/capi/capi_llif.c optional i4bcapi
|
||||
i4b/capi/capi_msgs.c optional i4bcapi
|
||||
#
|
||||
# isdn4bsd AVM B1/T1 CAPI driver
|
||||
#
|
||||
i4b/capi/iavc/iavc_pci.c optional iavc i4bcapi pci
|
||||
i4b/capi/iavc/iavc_isa.c optional iavc i4bcapi isa
|
||||
i4b/capi/iavc/iavc_lli.c optional iavc i4bcapi
|
||||
i4b/capi/iavc/iavc_card.c optional iavc i4bcapi
|
||||
#
|
||||
# isdn4bsd support
|
||||
#
|
||||
i4b/layer2/i4b_mbuf.c optional i4btrc
|
||||
#
|
||||
# isdn4bsd Q.921 handler
|
||||
#
|
||||
i4b/layer2/i4b_l2.c optional i4bq921
|
||||
i4b/layer2/i4b_l2fsm.c optional i4bq921
|
||||
i4b/layer2/i4b_uframe.c optional i4bq921
|
||||
i4b/layer2/i4b_tei.c optional i4bq921
|
||||
i4b/layer2/i4b_sframe.c optional i4bq921
|
||||
i4b/layer2/i4b_iframe.c optional i4bq921
|
||||
i4b/layer2/i4b_l2timer.c optional i4bq921
|
||||
i4b/layer2/i4b_util.c optional i4bq921
|
||||
i4b/layer2/i4b_lme.c optional i4bq921
|
||||
#
|
||||
# isdn4bsd Q.931 handler
|
||||
#
|
||||
i4b/layer3/i4b_q931.c optional i4bq931
|
||||
i4b/layer3/i4b_l3fsm.c optional i4bq931
|
||||
i4b/layer3/i4b_l3timer.c optional i4bq931
|
||||
i4b/layer3/i4b_l2if.c optional i4bq931
|
||||
i4b/layer3/i4b_l4if.c optional i4bq931
|
||||
i4b/layer3/i4b_q932fac.c optional i4bq931
|
||||
#
|
||||
# isdn4bsd control device driver, interface to isdnd
|
||||
#
|
||||
i4b/layer4/i4b_i4bdrv.c optional i4b
|
||||
i4b/layer4/i4b_l4.c optional i4b
|
||||
i4b/layer4/i4b_l4mgmt.c optional i4b
|
||||
i4b/layer4/i4b_l4timer.c optional i4b
|
||||
#
|
||||
isa/isa_if.m standard
|
||||
isa/isa_common.c optional isa
|
||||
isa/isahint.c optional isa
|
||||
@ -1814,8 +1758,8 @@ net/if_media.c standard
|
||||
net/if_mib.c standard
|
||||
net/if_ppp.c optional ppp
|
||||
net/if_sl.c optional sl
|
||||
net/if_spppfr.c optional i4bisppp | sppp | netgraph_sppp
|
||||
net/if_spppsubr.c optional i4bisppp | sppp | netgraph_sppp
|
||||
net/if_spppfr.c optional sppp | netgraph_sppp
|
||||
net/if_spppsubr.c optional sppp | netgraph_sppp
|
||||
net/if_stf.c optional stf
|
||||
net/if_tun.c optional tun
|
||||
net/if_tap.c optional tap
|
||||
|
@ -366,83 +366,6 @@ i386/svr4/svr4_locore.s optional compat_svr4 \
|
||||
warning "COMPAT_SVR4 is broken and should be avoided"
|
||||
i386/svr4/svr4_machdep.c optional compat_svr4
|
||||
#
|
||||
# isdn4bsd, needed for isic | iwic | ifpi | ifpi2 | ihfc | ifpnp | itjc
|
||||
#
|
||||
i4b/layer1/i4b_hdlc.c optional ihfc | itjc
|
||||
i4b/layer1/i4b_l1dmux.c optional ifpi | ifpi2 | ifpnp | \
|
||||
ihfc | isic | itjc | iwic
|
||||
i4b/layer1/i4b_l1lib.c optional ifpi | ifpi2 | ifpnp | \
|
||||
ihfc | isic | itjc | iwic
|
||||
#
|
||||
# isdn4bsd, isic
|
||||
#
|
||||
i4b/layer1/isic/i4b_asuscom_ipac.c optional isic
|
||||
i4b/layer1/isic/i4b_avm_a1.c optional isic
|
||||
i4b/layer1/isic/i4b_bchan.c optional isic
|
||||
i4b/layer1/isic/i4b_ctx_s0P.c optional isic
|
||||
i4b/layer1/isic/i4b_drn_ngo.c optional isic
|
||||
i4b/layer1/isic/i4b_dynalink.c optional isic
|
||||
i4b/layer1/isic/i4b_elsa_qs1i.c optional isic
|
||||
i4b/layer1/isic/i4b_elsa_qs1p.c optional isic pci
|
||||
i4b/layer1/isic/i4b_elsa_pcc16.c optional isic
|
||||
i4b/layer1/isic/i4b_hscx.c optional isic
|
||||
i4b/layer1/isic/i4b_isac.c optional isic
|
||||
i4b/layer1/isic/i4b_isic.c optional isic
|
||||
i4b/layer1/isic/i4b_isic_isa.c optional isic
|
||||
i4b/layer1/isic/i4b_isic_pnp.c optional isic
|
||||
i4b/layer1/isic/i4b_itk_ix1.c optional isic
|
||||
i4b/layer1/isic/i4b_l1.c optional isic
|
||||
i4b/layer1/isic/i4b_l1fsm.c optional isic
|
||||
i4b/layer1/isic/i4b_siemens_isurf.c optional isic
|
||||
i4b/layer1/isic/i4b_sws.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s016.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s0163.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s08.c optional isic
|
||||
i4b/layer1/isic/i4b_usr_sti.c optional isic
|
||||
i4b/layer1/isic/i4b_diva.c optional isic
|
||||
#
|
||||
# isdn4bsd, iwic
|
||||
#
|
||||
i4b/layer1/iwic/i4b_iwic_pci.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_dchan.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_bchan.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_fsm.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_l1if.c optional iwic pci
|
||||
#
|
||||
# isdn4bsd, ifpi
|
||||
#
|
||||
i4b/layer1/ifpi/i4b_ifpi_pci.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_isac.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_l1.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_l1fsm.c optional ifpi pci
|
||||
#
|
||||
# isdn4bsd, ifpi2
|
||||
#
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_pci.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_isacsx.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_l1.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_l1fsm.c optional ifpi2 pci
|
||||
#
|
||||
# isdn4bsd, ifpnp
|
||||
#
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_avm.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_isac.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_l1.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_l1fsm.c optional ifpnp
|
||||
#
|
||||
# isdn4bsd, ihfc
|
||||
#
|
||||
i4b/layer1/ihfc/i4b_ihfc_l1if.c optional ihfc
|
||||
i4b/layer1/ihfc/i4b_ihfc_pnp.c optional ihfc
|
||||
i4b/layer1/ihfc/i4b_ihfc_drv.c optional ihfc
|
||||
#
|
||||
# isdn4bsd, itjc
|
||||
#
|
||||
i4b/layer1/itjc/i4b_itjc_pci.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_isac.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_l1.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_l1fsm.c optional itjc
|
||||
#
|
||||
isa/atrtc.c standard
|
||||
isa/syscons_isa.c optional sc
|
||||
isa/vga_isa.c optional vga
|
||||
|
@ -237,83 +237,6 @@ i386/svr4/svr4_locore.s optional compat_svr4 \
|
||||
warning "COMPAT_SVR4 is broken and should be avoided"
|
||||
i386/svr4/svr4_machdep.c optional compat_svr4
|
||||
#
|
||||
# isdn4bsd, needed for isic | iwic | ifpi | ifpi2 | ihfc | ifpnp | itjc
|
||||
#
|
||||
i4b/layer1/i4b_hdlc.c optional ihfc | itjc
|
||||
i4b/layer1/i4b_l1dmux.c optional ifpi | ifpi2 | ifpnp | \
|
||||
ihfc | isic | itjc | iwic
|
||||
i4b/layer1/i4b_l1lib.c optional ifpi | ifpi2 | ifpnp | \
|
||||
ihfc | isic | itjc | iwic
|
||||
#
|
||||
# isdn4bsd, isic
|
||||
#
|
||||
i4b/layer1/isic/i4b_asuscom_ipac.c optional isic
|
||||
i4b/layer1/isic/i4b_avm_a1.c optional isic
|
||||
i4b/layer1/isic/i4b_bchan.c optional isic
|
||||
i4b/layer1/isic/i4b_ctx_s0P.c optional isic
|
||||
i4b/layer1/isic/i4b_drn_ngo.c optional isic
|
||||
i4b/layer1/isic/i4b_dynalink.c optional isic
|
||||
i4b/layer1/isic/i4b_elsa_qs1i.c optional isic
|
||||
i4b/layer1/isic/i4b_elsa_qs1p.c optional isic pci
|
||||
i4b/layer1/isic/i4b_elsa_pcc16.c optional isic
|
||||
i4b/layer1/isic/i4b_hscx.c optional isic
|
||||
i4b/layer1/isic/i4b_isac.c optional isic
|
||||
i4b/layer1/isic/i4b_isic.c optional isic
|
||||
i4b/layer1/isic/i4b_isic_isa.c optional isic
|
||||
i4b/layer1/isic/i4b_isic_pnp.c optional isic
|
||||
i4b/layer1/isic/i4b_itk_ix1.c optional isic
|
||||
i4b/layer1/isic/i4b_l1.c optional isic
|
||||
i4b/layer1/isic/i4b_l1fsm.c optional isic
|
||||
i4b/layer1/isic/i4b_siemens_isurf.c optional isic
|
||||
i4b/layer1/isic/i4b_sws.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s016.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s0163.c optional isic
|
||||
i4b/layer1/isic/i4b_tel_s08.c optional isic
|
||||
i4b/layer1/isic/i4b_usr_sti.c optional isic
|
||||
i4b/layer1/isic/i4b_diva.c optional isic
|
||||
#
|
||||
# isdn4bsd, iwic
|
||||
#
|
||||
i4b/layer1/iwic/i4b_iwic_pci.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_dchan.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_bchan.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_fsm.c optional iwic pci
|
||||
i4b/layer1/iwic/i4b_iwic_l1if.c optional iwic pci
|
||||
#
|
||||
# isdn4bsd, ifpi
|
||||
#
|
||||
i4b/layer1/ifpi/i4b_ifpi_pci.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_isac.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_l1.c optional ifpi pci
|
||||
i4b/layer1/ifpi/i4b_ifpi_l1fsm.c optional ifpi pci
|
||||
#
|
||||
# isdn4bsd, ifpi2
|
||||
#
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_pci.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_isacsx.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_l1.c optional ifpi2 pci
|
||||
i4b/layer1/ifpi2/i4b_ifpi2_l1fsm.c optional ifpi2 pci
|
||||
#
|
||||
# isdn4bsd, ifpnp
|
||||
#
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_avm.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_isac.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_l1.c optional ifpnp
|
||||
i4b/layer1/ifpnp/i4b_ifpnp_l1fsm.c optional ifpnp
|
||||
#
|
||||
# isdn4bsd, ihfc
|
||||
#
|
||||
i4b/layer1/ihfc/i4b_ihfc_l1if.c optional ihfc
|
||||
i4b/layer1/ihfc/i4b_ihfc_pnp.c optional ihfc
|
||||
i4b/layer1/ihfc/i4b_ihfc_drv.c optional ihfc
|
||||
#
|
||||
# isdn4bsd, itjc
|
||||
#
|
||||
i4b/layer1/itjc/i4b_itjc_pci.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_isac.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_l1.c optional itjc
|
||||
i4b/layer1/itjc/i4b_itjc_l1fsm.c optional itjc
|
||||
#
|
||||
kern/imgact_aout.c optional compat_aout
|
||||
kern/imgact_gzip.c optional gzip
|
||||
libkern/divdi3.c standard
|
||||
|
@ -743,14 +743,6 @@ DCONS_POLL_HZ opt_dcons.h
|
||||
DCONS_FORCE_CONSOLE opt_dcons.h
|
||||
DCONS_FORCE_GDB opt_dcons.h
|
||||
|
||||
# Static unit counts
|
||||
NI4BTRC opt_i4b.h
|
||||
NI4BRBCH opt_i4b.h
|
||||
NI4BTEL opt_i4b.h
|
||||
#XXXBZ#NI4BIPR opt_i4b.h
|
||||
#XXXBZ#NI4BING opt_i4b.h
|
||||
#XXXBZ#NI4BISPPP opt_i4b.h
|
||||
|
||||
# VFS options
|
||||
LOOKUP_SHARED opt_vfs.h
|
||||
|
||||
|
@ -39,19 +39,6 @@ VGA_WIDTH90 opt_vga.h
|
||||
|
||||
ATKBD_DFLT_KEYMAP opt_atkbd.h
|
||||
|
||||
# -------------------------------
|
||||
# isdn4bsd: passive PCI cards
|
||||
# -------------------------------
|
||||
ELSA_QS1PCI opt_i4b.h
|
||||
# -------------------------------
|
||||
# isdn4bsd: misc options
|
||||
# -------------------------------
|
||||
# temporary workaround for SMP machines
|
||||
I4B_SMP_WORKAROUND opt_i4b.h
|
||||
# enable VJ compression code for ipr i/f
|
||||
#XXXBZ#IPR_VJ opt_i4b.h
|
||||
#XXXBZ#IPR_LOG opt_i4b.h
|
||||
|
||||
# -------------------------------
|
||||
# EOF
|
||||
# -------------------------------
|
||||
|
@ -102,42 +102,6 @@ SPIGOT_UNSECURE opt_spigot.h
|
||||
# Enables NETGRAPH support for Cronyx adapters
|
||||
NETGRAPH_CRONYX opt_ng_cronyx.h
|
||||
|
||||
# -------------------------------
|
||||
# isdn4bsd: passive ISA cards
|
||||
# -------------------------------
|
||||
TEL_S0_8 opt_i4b.h
|
||||
TEL_S0_16 opt_i4b.h
|
||||
TEL_S0_16_3 opt_i4b.h
|
||||
AVM_A1 opt_i4b.h
|
||||
USR_STI opt_i4b.h
|
||||
ITKIX1 opt_i4b.h
|
||||
ELSA_PCC16 opt_i4b.h
|
||||
# -------------------------------
|
||||
# isdn4bsd: passive ISA PnP cards
|
||||
# -------------------------------
|
||||
CRTX_S0_P opt_i4b.h
|
||||
DRN_NGO opt_i4b.h
|
||||
TEL_S0_16_3_P opt_i4b.h
|
||||
SEDLBAUER opt_i4b.h
|
||||
DYNALINK opt_i4b.h
|
||||
ASUSCOM_IPAC opt_i4b.h
|
||||
ELSA_QS1ISA opt_i4b.h
|
||||
SIEMENS_ISURF2 opt_i4b.h
|
||||
EICON_DIVA opt_i4b.h
|
||||
COMPAQ_M610 opt_i4b.h
|
||||
# -------------------------------
|
||||
# isdn4bsd: passive PCI cards
|
||||
# -------------------------------
|
||||
ELSA_QS1PCI opt_i4b.h
|
||||
# -------------------------------
|
||||
# isdn4bsd: misc options
|
||||
# -------------------------------
|
||||
# temporary workaround for SMP machines
|
||||
I4B_SMP_WORKAROUND opt_i4b.h
|
||||
# enable VJ compression code for ipr i/f
|
||||
#XXXBZ#IPR_VJ opt_i4b.h
|
||||
#XXXBZ#IPR_LOG opt_i4b.h
|
||||
|
||||
# Device options
|
||||
DEV_APIC opt_apic.h
|
||||
DEV_NPX opt_npx.h
|
||||
|
@ -77,19 +77,6 @@ SPIGOT_UNSECURE opt_spigot.h
|
||||
# Enables NETGRAPH support for Cronyx adapters
|
||||
NETGRAPH_CRONYX opt_ng_cronyx.h
|
||||
|
||||
# -------------------------------
|
||||
# isdn4bsd: passive PCI cards
|
||||
# -------------------------------
|
||||
ELSA_QS1PCI opt_i4b.h
|
||||
# -------------------------------
|
||||
# isdn4bsd: misc options
|
||||
# -------------------------------
|
||||
# temporary workaround for SMP machines
|
||||
I4B_SMP_WORKAROUND opt_i4b.h
|
||||
# enable VJ compression code for ipr i/f
|
||||
#XXXBZ#IPR_VJ opt_i4b.h
|
||||
#XXXBZ#IPR_LOG opt_i4b.h
|
||||
|
||||
# ct driver options
|
||||
CT_BUS_WEIGHT opt_ct.h
|
||||
CT_USE_RELOCATE_OFFSET opt_ct.h
|
||||
|
@ -856,235 +856,6 @@ device ichwd
|
||||
#
|
||||
device coretemp
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN4BSD
|
||||
#
|
||||
# See /usr/share/examples/isdn/ROADMAP for an introduction to isdn4bsd.
|
||||
#
|
||||
# i4b passive ISDN cards support contains the following hardware drivers:
|
||||
#
|
||||
# isic - Siemens/Infineon ISDN ISAC/HSCX/IPAC chipset driver
|
||||
# iwic - Winbond W6692 PCI bus ISDN S/T interface controller
|
||||
# ifpi - AVM Fritz!Card PCI driver
|
||||
# ifpi2 - AVM Fritz!Card PCI version 2 driver
|
||||
# ihfc - Cologne Chip HFC ISA/ISA-PnP chipset driver
|
||||
# ifpnp - AVM Fritz!Card PnP driver
|
||||
# itjc - Siemens ISAC / TJNet Tiger300/320 chipset
|
||||
#
|
||||
# i4b active ISDN cards support contains the following hardware drivers:
|
||||
#
|
||||
# iavc - AVM B1 PCI, AVM B1 ISA, AVM T1
|
||||
#
|
||||
# Note that the ``options'' (if given) and ``device'' lines must BOTH
|
||||
# be uncommented to enable support for a given card !
|
||||
#
|
||||
# In addition to a hardware driver (and probably an option) the mandatory
|
||||
# ISDN protocol stack devices and the mandatory support device must be
|
||||
# enabled as well as one or more devices from the optional devices section.
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# isic driver (Siemens/Infineon chipsets)
|
||||
#
|
||||
device isic
|
||||
#
|
||||
# ISA bus non-PnP Cards:
|
||||
# ----------------------
|
||||
#
|
||||
# Teles S0/8 or Niccy 1008
|
||||
options TEL_S0_8
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.maddr="0xd0000"
|
||||
hint.isic.0.irq="5"
|
||||
hint.isic.0.flags="1"
|
||||
#
|
||||
# Teles S0/16 or Creatix ISDN-S0 or Niccy 1016
|
||||
options TEL_S0_16
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0xd80"
|
||||
hint.isic.0.maddr="0xd0000"
|
||||
hint.isic.0.irq="5"
|
||||
hint.isic.0.flags="2"
|
||||
#
|
||||
# Teles S0/16.3
|
||||
options TEL_S0_16_3
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0xd80"
|
||||
hint.isic.0.irq="5"
|
||||
hint.isic.0.flags="3"
|
||||
#
|
||||
# AVM A1 or AVM Fritz!Card
|
||||
options AVM_A1
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0x340"
|
||||
hint.isic.0.irq="5"
|
||||
hint.isic.0.flags="4"
|
||||
#
|
||||
# USRobotics Sportster ISDN TA intern
|
||||
options USR_STI
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0x268"
|
||||
hint.isic.0.irq="5"
|
||||
hint.isic.0.flags="7"
|
||||
#
|
||||
# ITK ix1 Micro ( < V.3, non-PnP version )
|
||||
options ITKIX1
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0x398"
|
||||
hint.isic.0.irq="10"
|
||||
hint.isic.0.flags="18"
|
||||
#
|
||||
# ELSA PCC-16
|
||||
options ELSA_PCC16
|
||||
hint.isic.0.at="isa"
|
||||
hint.isic.0.port="0x360"
|
||||
hint.isic.0.irq="10"
|
||||
hint.isic.0.flags="20"
|
||||
#
|
||||
# ISA bus PnP Cards:
|
||||
# ------------------
|
||||
#
|
||||
# Teles S0/16.3 PnP
|
||||
options TEL_S0_16_3_P
|
||||
#
|
||||
# Creatix ISDN-S0 P&P
|
||||
options CRTX_S0_P
|
||||
#
|
||||
# Dr. Neuhaus Niccy Go@
|
||||
options DRN_NGO
|
||||
#
|
||||
# Sedlbauer Win Speed
|
||||
options SEDLBAUER
|
||||
#
|
||||
# Dynalink IS64PH
|
||||
options DYNALINK
|
||||
#
|
||||
# ELSA QuickStep 1000pro ISA
|
||||
options ELSA_QS1ISA
|
||||
#
|
||||
# Siemens I-Surf 2.0
|
||||
options SIEMENS_ISURF2
|
||||
#
|
||||
# Asuscom ISDNlink 128K ISA
|
||||
options ASUSCOM_IPAC
|
||||
#
|
||||
# Eicon Diehl DIVA 2.0 and 2.02
|
||||
options EICON_DIVA
|
||||
#
|
||||
# Compaq Microcom 610 ISDN card (Compaq series PSB2222I)
|
||||
options COMPAQ_M610
|
||||
#
|
||||
# PCI bus Cards:
|
||||
# --------------
|
||||
#
|
||||
# ELSA MicroLink ISDN/PCI (same as ELSA QuickStep 1000pro PCI)
|
||||
options ELSA_QS1PCI
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ifpnp driver for AVM Fritz!Card PnP
|
||||
#
|
||||
# AVM Fritz!Card PnP
|
||||
device ifpnp
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ihfc driver for Cologne Chip ISA chipsets (experimental!)
|
||||
#
|
||||
# Teles 16.3c ISA PnP
|
||||
# AcerISDN P10 ISA PnP
|
||||
# TELEINT ISDN SPEED No.1
|
||||
device ihfc
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ifpi driver for AVM Fritz!Card PCI
|
||||
#
|
||||
# AVM Fritz!Card PCI
|
||||
device ifpi
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ifpi2 driver for AVM Fritz!Card PCI version 2
|
||||
#
|
||||
# AVM Fritz!Card PCI version 2
|
||||
device ifpi2
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# iwic driver for Winbond W6692 chipset
|
||||
#
|
||||
# ASUSCOM P-IN100-ST-D (and other Winbond W6692 based cards)
|
||||
device iwic
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# itjc driver for Siemens ISAC / TJNet Tiger300/320 chipset
|
||||
#
|
||||
# Traverse Technologies NETjet-S
|
||||
# Teles PCI-TJ
|
||||
device itjc
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# iavc driver (AVM active cards, needs i4bcapi driver!)
|
||||
#
|
||||
device iavc
|
||||
#
|
||||
# AVM B1 ISA bus (PnP mode not supported!)
|
||||
# ----------------------------------------
|
||||
hint.iavc.0.at="isa"
|
||||
hint.iavc.0.port="0x150"
|
||||
hint.iavc.0.irq="5"
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN Protocol Stack - mandatory for all hardware drivers
|
||||
#
|
||||
# Q.921 / layer 2 - i4b passive cards D channel handling
|
||||
device i4bq921
|
||||
#
|
||||
# Q.931 / layer 3 - i4b passive cards D channel handling
|
||||
device i4bq931
|
||||
#
|
||||
# layer 4 - i4b common passive and active card handling
|
||||
device i4b
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN devices - mandatory for all hardware drivers
|
||||
#
|
||||
# userland driver to do ISDN tracing (for passive cards only)
|
||||
device i4btrc
|
||||
options NI4BTRC=4
|
||||
#
|
||||
# userland driver to control the whole thing
|
||||
device i4bctl
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# ISDN devices - optional
|
||||
#
|
||||
# userland driver for access to raw B channel
|
||||
device i4brbch
|
||||
options NI4BRBCH=4
|
||||
#
|
||||
# userland driver for telephony
|
||||
device i4btel
|
||||
options NI4BTEL=2
|
||||
#
|
||||
#XXXBZ# IPR and ISPPP are not usable until I4B is locked.
|
||||
# network driver for IP over raw HDLC ISDN
|
||||
#XXXBZ#device i4bipr
|
||||
#XXXBZ#options NI4BIPR=4
|
||||
# enable VJ header compression detection for ipr i/f
|
||||
#XXXBZ#options IPR_VJ
|
||||
# enable logging of the first n IP packets to isdnd (n=32 here)
|
||||
#XXXBZ#options IPR_LOG=32
|
||||
#
|
||||
# network driver for sync PPP over ISDN; requires an equivalent
|
||||
# number of sppp device to be configured
|
||||
#XXXBZ#device i4bisppp
|
||||
#XXXBZ#options NI4BISPPP=4
|
||||
#
|
||||
# B-channel interface to the netgraph subsystem
|
||||
#XXXBZ#device i4bing
|
||||
#XXXBZ#options NI4BING=2
|
||||
#
|
||||
# CAPI driver needed for active ISDN cards (see iavc driver above)
|
||||
device i4bcapi
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# System Management Bus (SMB)
|
||||
#
|
||||
@ -1200,7 +971,6 @@ options FB_INSTALL_CDEV # install a CDEV entry in /dev
|
||||
options PECOFF_SUPPORT
|
||||
options PECOFF_DEBUG
|
||||
|
||||
options I4B_SMP_WORKAROUND
|
||||
options I586_PMC_GUPROF=0x70000
|
||||
options KBDIO_DEBUG=2
|
||||
options KBD_MAXRETRY=4
|
||||
|
@ -1,150 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
Message-ID: <3AF56886.7D92609A@cubical.fi>
|
||||
Date: Sun, 06 May 2001 18:06:47 +0300
|
||||
From: Juha-Matti Liukkonen <jml@cubical.fi>
|
||||
Organization: Cubical Solutions Ltd
|
||||
|
||||
Please find the attached diff and tarball for our support software for
|
||||
CAPI 2.0 and AVM's active T1 and T1-B (primary rate) and B1 (basic rate)
|
||||
ISDN adapters for isdn4bsd. The implementation has been made from
|
||||
scratch by us, based on reverse engineering of the Linux driver provided
|
||||
by AVM GmbH and available in ftp.avm.de. Cubical Solutions Ltd offers
|
||||
this implementation for the BSD community free of charge and assuming
|
||||
absolutely no liabilities whatsoever. Feel free to modify the
|
||||
implementation any way you see fit, but please retain our one-liner
|
||||
copyright statement somewhere in the comment headers in the capi and
|
||||
iavc driver modules.
|
||||
|
||||
That said, the attached tarball is i4b-00.96.00-beta with our
|
||||
modifications integrated, and the diff contains all modifications we
|
||||
have made to the original (including the new capi files). Our mods add
|
||||
pseudo-device i4bcapi, which attaches to i4b layer 4, and device iavc0,
|
||||
which implements a link layer driver for AVM's active B1 and T1 adapters
|
||||
for i4bcapi. There are also a couple of related improvements to isdnd,
|
||||
and a number of modifications to isdnd and layer 4 to implement support
|
||||
for up to 30 channels per adapter (for primary rate use).
|
||||
|
||||
We have developed the software explicitly for our telephony application,
|
||||
to be used with AVM's T1 adapters, and the implementation has been
|
||||
tested primarily with this functionality in mind. There may be
|
||||
interesting side effects with eg. the ipr and isppp drivers; we do not
|
||||
use them and therefore their testing has been cursory at best. The
|
||||
i4btel driver works well with the T1 (our primary use), and the i4brbch
|
||||
driver has been verified to work with T1, T1-B and B1 adapters (ftp'd
|
||||
some files over a dialup PPP connection with each adapter). Only the PCI
|
||||
versions of the adapters (equipped with the AMCC DMA controller) are
|
||||
supported, although the basics (PIO mode communication) for the older
|
||||
ISA model support is in place, so only the bus attachment modules should
|
||||
be required to support the older hardware.
|
||||
|
||||
All of the AVM active adapters use downloadable firmware, which is not
|
||||
included in the attached package. The firmware files (t1.t4, t1b.t4,
|
||||
b1.t4) can be found from ftp.avm.de in adapter specific subdirectories,
|
||||
or from the CDs provided with the adapters (in directory
|
||||
'cardware/firmware').
|
||||
|
||||
Our primary development platform is our own embedded build (we call it
|
||||
'ebsd') based on FreeBSD 4.2-RELEASE. The implementation has also been
|
||||
tested on standard FreeBSD 4.2-RELEASE system. The implementation should
|
||||
not contain any FreeBSD (or even FreeBSD release) specific issues, but
|
||||
it has not been tested or even compiled on any other platforms;
|
||||
specifically, only the FreeBSD overinstall.sh script is modified to
|
||||
install the capi/iavc support in the kernel source tree.
|
||||
|
||||
This code is not under active development here since the functionality
|
||||
we use (i4btel, T1) has been working since the beginning of March. We
|
||||
are also not planning on any further development (no need seen at this
|
||||
point), but I am naturally interested on whatever bugs and development
|
||||
ideas pop up on the community and will keep a keen eye on the isdn
|
||||
mailing list. I personally may be available for consultation, debugging
|
||||
and possibly development projects, but with notable reservations on my
|
||||
time (the current IT industry recession seems to be pushing even more
|
||||
work for us, which tends to keep us pretty busy these days).
|
||||
|
||||
Here are some specific technical notes:
|
||||
|
||||
* isdnd supports new keyword 'firmware=</path/to/file>' in section
|
||||
'controller'. This keyword is supported for all controller types, and
|
||||
causes I4B_CTRL_DOWNLOAD ioctl to be invoked with the specified file as
|
||||
an argument. In systems equipped with both active and passive adapters,
|
||||
and the passive cards being detected first, dummy 'controller' entries
|
||||
are required for the passive cards to get the correct firmwares to
|
||||
correct adapters. (I hope you did not have other uses for this ioctl in
|
||||
mind?)
|
||||
|
||||
* isdnd supports new keyword 'clone=<entry name>' in section 'entry'.
|
||||
This causes the entry to be copied from the existing named entry. At
|
||||
least entry specific 'name' and 'usrdeviceunit' values should be
|
||||
specified after a 'clone'. (Makes configuring 30 or 60 entries way much
|
||||
easier.)
|
||||
|
||||
* a bug in i4btel driver read routine corrected. The conditions in the
|
||||
while() clause caused the receive queue to be referenced before checking
|
||||
if a channel is connected, leading to kernel panic (do a 'dd
|
||||
if=/dev/i4btel0 of=/dev/null' on an unconnected tel device, panic will
|
||||
follow). Correction was to reorder the while clause conditions to check
|
||||
for connectedness first.
|
||||
|
||||
* isdnd and i4b layer 4 support up to CHANNELS_MAX (=30) channels per
|
||||
adapter. The msg_ctrl_info_req_t message reports the number of channels
|
||||
provided by the adapter, the number is stored in the nbchan field of the
|
||||
controller state structure. The fixed stateb1 and stateb2 entries in
|
||||
controller state stuctures are replaced with an array, and all fixed
|
||||
references there are replaced with loops up to nbchan. Passive stack
|
||||
layer 1 and 2 are not modified, layer 3 sets this field to fixed value 2
|
||||
for all adapters (but it could be delegated to the layer 1 driver's
|
||||
attach request).
|
||||
|
||||
* the i4bcapi driver maps i4b channels to logical channels identified
|
||||
with PLCI/NCCI values in the CAPI protocol using the sc_bchan[] array.
|
||||
The PLCI/NCCI handling is merged in the channel mapping and is greatly
|
||||
simplified from the reference state machine model, because in practice
|
||||
there can be only one PLCI/NCCI per channel active at any given time.
|
||||
|
||||
* the i4bcapi driver does not provide any kind of user level interface
|
||||
(such as the /dev/capi20 interface provided by the linux driver), but
|
||||
could relatively easily be extended to do so (and if done, interface
|
||||
compatibility with the linux implementation would probably be a good
|
||||
goal).
|
||||
|
||||
* there are some gritty details in the iavc driver, inherited from the
|
||||
linux code. Despite us being a legitimate company in the telecom
|
||||
business, AVM failed to produce any programming reference material for
|
||||
us (at least in a reasonable time frame), so some guesswork remains due
|
||||
to classic reverse engineering process (particularly there are a few
|
||||
magic numbers in the card initialization sequence whose meaning I do not
|
||||
know).
|
||||
|
||||
* pseudo-devices i4bq931, i4bq921 and some passive stack layer 1 driver
|
||||
(such as iwic) are required to compile, as the required ctrl_desc[]
|
||||
array is in layer 3, which requires layer 2, which requires layer 1.
|
||||
Some architectural cleanup would come in handy here, but we did not want
|
||||
to start making any major changes (and we use iwic in test setups
|
||||
anyway, so we simply always compile it in).
|
||||
|
||||
To summarize: unpack, overinstall, add the following lines (with the
|
||||
usual passive stack configuration including at least one L1 driver) to
|
||||
your kernel configuration file:
|
||||
|
||||
pseudo-device "i4bcapi"
|
||||
device iavc0
|
||||
|
||||
...and the following to your isdnd.rc:
|
||||
|
||||
controller
|
||||
firmware = /usr/lib/isdn/b1.t4
|
||||
|
||||
...compile your new kernel, make sure the firmware file is in
|
||||
/usr/lib/isdn, and your B1 adapter should boot up and Just Work (tm). If
|
||||
you have multiple adapters, you need a 'controller' section for each to
|
||||
have them loaded and booted on isdnd startup.
|
||||
|
||||
Have fun -- and let me know if there are any complications, or if I can
|
||||
be of further assistance,
|
||||
|
||||
- Juha
|
||||
--
|
||||
Juha-Matti Liukkonen, Cubical Solutions Ltd
|
||||
Phone: +358(0)405280142
|
||||
Email: jml@cubical.fi
|
@ -1,130 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/capi.h The CAPI device interface.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _I4B_CAPI_H_
|
||||
#define _I4B_CAPI_H_
|
||||
|
||||
/*
|
||||
// CAPI driver context: B channels and controller softcs.
|
||||
*/
|
||||
|
||||
#define INVALID -1
|
||||
|
||||
enum capi_b_state {
|
||||
B_FREE, /* channel free, ncci invalid */
|
||||
B_CONNECT_CONF, /* wait for CONNECT_CONF */
|
||||
B_CONNECT_IND, /* IND got, wait for appl RESP */
|
||||
B_CONNECT_ACTIVE_IND, /* wait for CONNECT_ACTIVE_IND */
|
||||
B_CONNECT_B3_CONF, /* wait for CONNECT_B3_CONF */
|
||||
B_CONNECT_B3_IND, /* wait for CONNECT_B3_IND */
|
||||
B_CONNECT_B3_ACTIVE_IND, /* wait for CONNECT_B3_ACTIVE_IND */
|
||||
B_CONNECTED, /* channel connected & in use */
|
||||
B_DISCONNECT_CONF, /* wait for DISCONNECT_CONF */
|
||||
B_DISCONNECT_B3_CONF, /* wait for DISCONNECT_B3_CONF */
|
||||
B_DISCONNECT_IND, /* wait for DISCONNECT_IND */
|
||||
};
|
||||
|
||||
typedef struct capi_bchan
|
||||
{
|
||||
/* Channel state */
|
||||
|
||||
int ncci;
|
||||
#define CAPI_CTRL_MASK 0x000000ff
|
||||
#define CAPI_PLCI_MASK 0x0000ffff
|
||||
#define CAPI_NCCI_MASK 0xffff0000
|
||||
u_int16_t msgid;
|
||||
int busy;
|
||||
enum capi_b_state state;
|
||||
|
||||
struct ifqueue tx_queue;
|
||||
struct ifqueue rx_queue;
|
||||
int rxcount;
|
||||
int txcount;
|
||||
|
||||
/* The rest is needed for i4b integration */
|
||||
|
||||
int bprot;
|
||||
int cdid;
|
||||
|
||||
struct mbuf *in_mbuf;
|
||||
isdn_link_t capi_isdn_linktab;
|
||||
drvr_link_t *capi_drvr_linktab;
|
||||
} capi_bchan_t;
|
||||
|
||||
enum capi_c_state {
|
||||
C_DOWN, /* controller uninitialized */
|
||||
C_READY, /* controller initialized but not listening */
|
||||
C_UP, /* controller listening */
|
||||
};
|
||||
|
||||
typedef struct capi_softc {
|
||||
int sc_unit; /* index in capi_sc[] */
|
||||
int ctrl_unit; /* index in isdn_ctrl_tab[] */
|
||||
int card_type; /* CARD_TYPEC_xxx, filled by ll driver */
|
||||
int sc_nbch; /* number of b channels on this controller */
|
||||
int sc_enabled; /* is daemon connected TRUE/FALSE */
|
||||
int sc_msgid; /* next CAPI message id */
|
||||
char sc_profile[64];/* CAPI profile data */
|
||||
enum capi_c_state sc_state;
|
||||
|
||||
capi_bchan_t sc_bchan[MAX_BCHAN];
|
||||
|
||||
/* Link layer driver context holder and methods */
|
||||
|
||||
void *ctx;
|
||||
|
||||
int (*load)(struct capi_softc *, int, u_int8_t *);
|
||||
int (*reg_appl)(struct capi_softc *, int, int);
|
||||
int (*rel_appl)(struct capi_softc *, int);
|
||||
int (*send)(struct capi_softc *, struct mbuf *);
|
||||
} capi_softc_t;
|
||||
|
||||
extern capi_softc_t *capi_sc[];
|
||||
extern int ncapi;
|
||||
|
||||
/*
|
||||
// CAPI upcalls for the link layer.
|
||||
*/
|
||||
|
||||
#define I4BCAPI_APPLID 1
|
||||
|
||||
extern int capi_ll_attach(capi_softc_t *);
|
||||
extern int capi_ll_control(capi_softc_t *, int op, int arg);
|
||||
|
||||
#define CAPI_CTRL_READY 0 /* ctrl ready, value=TRUE/FALSE */
|
||||
#define CAPI_CTRL_PROFILE 1 /* set CAPI profile */
|
||||
#define CAPI_CTRL_NEW_NCCI 2 /* new ncci value, assign bchan */
|
||||
#define CAPI_CTRL_FREE_NCCI 3 /* free ncci value, clear bchan */
|
||||
|
||||
extern int capi_ll_receive(capi_softc_t *, struct mbuf *);
|
||||
|
||||
extern int capi_start_tx(capi_softc_t *, int bchan);
|
||||
|
||||
#endif /* _I4B_CAPI_H_ */
|
@ -1,447 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/capi_l4if.c The CAPI i4b L4/device interface.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#include <i4b/include/i4b_debug.h>
|
||||
#include <i4b/include/i4b_ioctl.h>
|
||||
#include <i4b/include/i4b_cause.h>
|
||||
|
||||
#include <i4b/include/i4b_l3l4.h>
|
||||
#include <i4b/include/i4b_mbuf.h>
|
||||
#include <i4b/include/i4b_global.h>
|
||||
|
||||
#include <i4b/layer4/i4b_l4.h>
|
||||
|
||||
#include <i4b/capi/capi.h>
|
||||
#include <i4b/capi/capi_msgs.h>
|
||||
|
||||
static void n_connect_request(u_int cdid);
|
||||
static void n_connect_response(u_int cdid, int response, int cause);
|
||||
static void n_disconnect_request(u_int cdid, int cause);
|
||||
static void n_alert_request(u_int cdid);
|
||||
static void n_mgmt_command(int unit, int cmd, void *parm);
|
||||
static int n_download(int unit, int, struct isdn_dr_prot *);
|
||||
|
||||
capi_softc_t *capi_sc[MAX_CONTROLLERS] = { NULL, };
|
||||
int ncapi = 0;
|
||||
|
||||
/*
|
||||
// i4b_capi_{ret,set}_linktab
|
||||
// i4b driver glue.
|
||||
//
|
||||
// i4b_capi_bch_config
|
||||
// Called by i4b driver to flush + {en,dis}able a channel.
|
||||
//
|
||||
// i4b_capi_bch_start_tx
|
||||
// Called by i4b driver to transmit a queued mbuf.
|
||||
//
|
||||
// i4b_capi_bch_stat
|
||||
// Called by i4b driver to obtain statistics information.
|
||||
*/
|
||||
|
||||
static isdn_link_t *
|
||||
i4b_capi_ret_linktab(int unit, int channel)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
return &sc->sc_bchan[channel].capi_isdn_linktab;
|
||||
}
|
||||
|
||||
static void
|
||||
i4b_capi_set_linktab(int unit, int channel, drvr_link_t *dlt)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
sc->sc_bchan[channel].capi_drvr_linktab = dlt;
|
||||
}
|
||||
|
||||
static void
|
||||
i4b_capi_bch_config(int unit, int chan, int bprot, int activate)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
|
||||
i4b_Bcleanifq(&sc->sc_bchan[chan].tx_queue);
|
||||
sc->sc_bchan[chan].tx_queue.ifq_maxlen = IFQ_MAXLEN;
|
||||
sc->sc_bchan[chan].txcount = 0;
|
||||
|
||||
/* The telephony drivers use rx_queue for receive. */
|
||||
|
||||
i4b_Bcleanifq(&sc->sc_bchan[chan].rx_queue);
|
||||
sc->sc_bchan[chan].rx_queue.ifq_maxlen = IFQ_MAXLEN;
|
||||
sc->sc_bchan[chan].rxcount = 0;
|
||||
|
||||
/* HDLC frames are put to in_mbuf */
|
||||
|
||||
i4b_Bfreembuf(sc->sc_bchan[chan].in_mbuf);
|
||||
sc->sc_bchan[chan].in_mbuf = NULL;
|
||||
|
||||
/* Because of the difference, we need to remember the protocol. */
|
||||
|
||||
sc->sc_bchan[chan].bprot = bprot;
|
||||
sc->sc_bchan[chan].busy = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
i4b_capi_bch_start_tx(int unit, int chan)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
int s;
|
||||
|
||||
s = SPLI4B();
|
||||
|
||||
if (sc->sc_bchan[chan].state != B_CONNECTED) {
|
||||
splx(s);
|
||||
printf("capi%d: start_tx on unconnected channel\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sc->sc_bchan[chan].busy) {
|
||||
splx(s);
|
||||
return;
|
||||
}
|
||||
|
||||
capi_start_tx(sc, chan);
|
||||
|
||||
splx(s);
|
||||
}
|
||||
|
||||
static void
|
||||
i4b_capi_bch_stat(int unit, int chan, bchan_statistics_t *bsp)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
int s = SPLI4B();
|
||||
|
||||
bsp->outbytes = sc->sc_bchan[chan].txcount;
|
||||
bsp->inbytes = sc->sc_bchan[chan].rxcount;
|
||||
|
||||
sc->sc_bchan[chan].txcount = 0;
|
||||
sc->sc_bchan[chan].rxcount = 0;
|
||||
|
||||
splx(s);
|
||||
}
|
||||
|
||||
int capi_start_tx(capi_softc_t *sc, int chan)
|
||||
{
|
||||
struct mbuf *m_b3;
|
||||
int sent = 0;
|
||||
|
||||
_IF_DEQUEUE(&sc->sc_bchan[chan].tx_queue, m_b3);
|
||||
while (m_b3) {
|
||||
struct mbuf *m = m_b3->m_next;
|
||||
|
||||
sc->sc_bchan[chan].txcount += m_b3->m_len;
|
||||
capi_data_b3_req(sc, chan, m_b3);
|
||||
sent++;
|
||||
|
||||
m_b3 = m;
|
||||
}
|
||||
|
||||
if (sc->sc_bchan[chan].capi_drvr_linktab) {
|
||||
/* Notify i4b driver of activity, and if the queue is drained. */
|
||||
|
||||
if (sent)
|
||||
(*sc->sc_bchan[chan].capi_drvr_linktab->bch_activity)(
|
||||
sc->sc_bchan[chan].capi_drvr_linktab->unit, ACT_TX);
|
||||
|
||||
if (IF_QEMPTY(&sc->sc_bchan[chan].tx_queue))
|
||||
(*sc->sc_bchan[chan].capi_drvr_linktab->bch_tx_queue_empty)(
|
||||
sc->sc_bchan[chan].capi_drvr_linktab->unit);
|
||||
}
|
||||
|
||||
return sent;
|
||||
}
|
||||
|
||||
/*
|
||||
// capi_ll_attach
|
||||
// Called by a link layer driver at boot time.
|
||||
*/
|
||||
|
||||
int
|
||||
capi_ll_attach(capi_softc_t *sc)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (ncapi == (sizeof(capi_sc) / sizeof(capi_sc[0]))) {
|
||||
printf("capi%d: too many units, increase MAX_CONTROLLERS\n", ncapi);
|
||||
return (ENXIO);
|
||||
}
|
||||
|
||||
/* Unit type and subtype; sc is partly filled by ll driver */
|
||||
|
||||
ctrl_desc[nctrl].unit = ncapi;
|
||||
ctrl_desc[nctrl].ctrl_type = CTRL_CAPI;
|
||||
ctrl_desc[nctrl].card_type = sc->card_type;
|
||||
|
||||
/* L4 callbacks */
|
||||
|
||||
ctrl_types[CTRL_CAPI].get_linktab = i4b_capi_ret_linktab;
|
||||
ctrl_types[CTRL_CAPI].set_linktab = i4b_capi_set_linktab;
|
||||
|
||||
ctrl_desc[nctrl].N_CONNECT_REQUEST = n_connect_request;
|
||||
ctrl_desc[nctrl].N_CONNECT_RESPONSE = n_connect_response;
|
||||
ctrl_desc[nctrl].N_DISCONNECT_REQUEST = n_disconnect_request;
|
||||
ctrl_desc[nctrl].N_ALERT_REQUEST = n_alert_request;
|
||||
ctrl_desc[nctrl].N_DOWNLOAD = n_download;
|
||||
ctrl_desc[nctrl].N_DIAGNOSTICS = NULL; /* XXX todo */
|
||||
ctrl_desc[nctrl].N_MGMT_COMMAND = n_mgmt_command;
|
||||
|
||||
/* Unit state */
|
||||
|
||||
sc->sc_enabled = FALSE;
|
||||
sc->sc_state = C_DOWN;
|
||||
sc->sc_msgid = 0;
|
||||
|
||||
ctrl_desc[nctrl].dl_est = DL_DOWN;
|
||||
ctrl_desc[nctrl].nbch = sc->sc_nbch;
|
||||
|
||||
for (i = 0; i < sc->sc_nbch; i++) {
|
||||
ctrl_desc[nctrl].bch_state[i] = BCH_ST_FREE;
|
||||
sc->sc_bchan[i].ncci = INVALID;
|
||||
sc->sc_bchan[i].msgid = 0;
|
||||
sc->sc_bchan[i].busy = 0;
|
||||
sc->sc_bchan[i].state = B_FREE;
|
||||
|
||||
memset(&sc->sc_bchan[i].tx_queue, 0, sizeof(struct ifqueue));
|
||||
memset(&sc->sc_bchan[i].rx_queue, 0, sizeof(struct ifqueue));
|
||||
sc->sc_bchan[i].tx_queue.ifq_maxlen = IFQ_MAXLEN;
|
||||
sc->sc_bchan[i].rx_queue.ifq_maxlen = IFQ_MAXLEN;
|
||||
|
||||
if(!mtx_initialized(&sc->sc_bchan[i].tx_queue.ifq_mtx))
|
||||
mtx_init(&sc->sc_bchan[i].tx_queue.ifq_mtx, "i4b_capi_tx", NULL, MTX_DEF);
|
||||
if(!mtx_initialized(&sc->sc_bchan[i].rx_queue.ifq_mtx))
|
||||
mtx_init(&sc->sc_bchan[i].rx_queue.ifq_mtx, "i4b_capi_rx", NULL, MTX_DEF);
|
||||
|
||||
sc->sc_bchan[i].txcount = 0;
|
||||
sc->sc_bchan[i].rxcount = 0;
|
||||
|
||||
sc->sc_bchan[i].cdid = CDID_UNUSED;
|
||||
sc->sc_bchan[i].bprot = BPROT_NONE;
|
||||
sc->sc_bchan[i].in_mbuf = NULL;
|
||||
|
||||
sc->sc_bchan[i].capi_drvr_linktab = NULL;
|
||||
|
||||
sc->sc_bchan[i].capi_isdn_linktab.unit = ncapi;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.channel = i;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.bch_config = i4b_capi_bch_config;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.bch_tx_start = i4b_capi_bch_start_tx;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.bch_stat = i4b_capi_bch_stat;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.tx_queue = &sc->sc_bchan[i].tx_queue;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.rx_queue = &sc->sc_bchan[i].rx_queue;
|
||||
sc->sc_bchan[i].capi_isdn_linktab.rx_mbuf = &sc->sc_bchan[i].in_mbuf;
|
||||
}
|
||||
|
||||
ctrl_desc[nctrl].tei = -1;
|
||||
|
||||
/* Up the controller index and store the softc */
|
||||
|
||||
sc->sc_unit = ncapi;
|
||||
capi_sc[ncapi++] = sc;
|
||||
sc->ctrl_unit = nctrl++;
|
||||
|
||||
printf("capi%d: card type %d attached\n", sc->sc_unit, sc->card_type);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
// n_mgmt_command
|
||||
// i4b L4 management command.
|
||||
*/
|
||||
|
||||
static void
|
||||
n_mgmt_command(int unit, int op, void *arg)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
|
||||
printf("capi%d: mgmt command %d\n", sc->sc_unit, op);
|
||||
|
||||
switch(op) {
|
||||
case CMR_DOPEN:
|
||||
sc->sc_enabled = TRUE;
|
||||
break;
|
||||
|
||||
case CMR_DCLOSE:
|
||||
sc->sc_enabled = FALSE;
|
||||
break;
|
||||
|
||||
case CMR_SETTRACE:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// n_connect_request
|
||||
// i4b L4 wants to connect. We assign a B channel to the call,
|
||||
// send a CAPI_CONNECT_REQ, and set the channel to B_CONNECT_CONF.
|
||||
*/
|
||||
|
||||
static void
|
||||
n_connect_request(u_int cdid)
|
||||
{
|
||||
call_desc_t *cd = cd_by_cdid(cdid);
|
||||
capi_softc_t *sc;
|
||||
int bch, s;
|
||||
|
||||
if (!cd) {
|
||||
printf("capi?: invalid cdid %d\n", cdid);
|
||||
return;
|
||||
}
|
||||
|
||||
sc = capi_sc[ctrl_desc[cd->controller].unit];
|
||||
bch = cd->channelid;
|
||||
|
||||
s = SPLI4B();
|
||||
|
||||
if ((bch < 0) || (bch >= sc->sc_nbch))
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if (sc->sc_bchan[bch].state == B_FREE)
|
||||
break;
|
||||
|
||||
if (bch == sc->sc_nbch) {
|
||||
splx(s);
|
||||
printf("capi%d: no free B channel\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
cd->channelid = bch;
|
||||
|
||||
capi_connect_req(sc, cd);
|
||||
splx(s);
|
||||
}
|
||||
|
||||
/*
|
||||
// n_connect_response
|
||||
// i4b L4 answers a call. We send a CONNECT_RESP with the proper
|
||||
// Reject code, and set the channel to B_CONNECT_B3_IND or B_FREE,
|
||||
// depending whether we answer or not.
|
||||
*/
|
||||
|
||||
static void
|
||||
n_connect_response(u_int cdid, int response, int cause)
|
||||
{
|
||||
call_desc_t *cd = cd_by_cdid(cdid);
|
||||
capi_softc_t *sc;
|
||||
int bch, s;
|
||||
|
||||
if (!cd) {
|
||||
printf("capi?: invalid cdid %d\n", cdid);
|
||||
return;
|
||||
}
|
||||
|
||||
sc = capi_sc[ctrl_desc[cd->controller].unit];
|
||||
bch = cd->channelid;
|
||||
|
||||
T400_stop(cd);
|
||||
|
||||
cd->response = response;
|
||||
cd->cause_out = cause;
|
||||
|
||||
s = SPLI4B();
|
||||
capi_connect_resp(sc, cd);
|
||||
splx(s);
|
||||
}
|
||||
|
||||
/*
|
||||
// n_disconnect_request
|
||||
// i4b L4 wants to disconnect. We send a DISCONNECT_REQ and
|
||||
// set the channel to B_DISCONNECT_CONF.
|
||||
*/
|
||||
|
||||
static void
|
||||
n_disconnect_request(u_int cdid, int cause)
|
||||
{
|
||||
call_desc_t *cd = cd_by_cdid(cdid);
|
||||
capi_softc_t *sc;
|
||||
int bch, s;
|
||||
|
||||
if (!cd) {
|
||||
printf("capi?: invalid cdid %d\n", cdid);
|
||||
return;
|
||||
}
|
||||
|
||||
sc = capi_sc[ctrl_desc[cd->controller].unit];
|
||||
bch = cd->channelid;
|
||||
|
||||
cd->cause_out = cause;
|
||||
|
||||
s = SPLI4B();
|
||||
capi_disconnect_req(sc, cd);
|
||||
splx(s);
|
||||
}
|
||||
|
||||
/*
|
||||
// n_alert_request
|
||||
// i4b L4 wants to alert an incoming call. We send ALERT_REQ.
|
||||
*/
|
||||
|
||||
static void
|
||||
n_alert_request(u_int cdid)
|
||||
{
|
||||
call_desc_t *cd = cd_by_cdid(cdid);
|
||||
capi_softc_t *sc;
|
||||
int s;
|
||||
|
||||
if (!cd) {
|
||||
printf("capi?: invalid cdid %d\n", cdid);
|
||||
return;
|
||||
}
|
||||
|
||||
sc = capi_sc[ctrl_desc[cd->controller].unit];
|
||||
|
||||
s = SPLI4B();
|
||||
capi_alert_req(sc, cd);
|
||||
splx(s);
|
||||
}
|
||||
|
||||
/*
|
||||
// n_download
|
||||
// L4 -> firmware download
|
||||
*/
|
||||
|
||||
static int
|
||||
n_download(int unit, int numprotos, struct isdn_dr_prot *protocols)
|
||||
{
|
||||
capi_softc_t *sc = capi_sc[unit];
|
||||
|
||||
if (sc->load) {
|
||||
(*capi_sc[unit]->load)(sc, protocols[0].bytecount,
|
||||
protocols[0].microcode);
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
@ -1,163 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/capi_llif.c The i4b CAPI link layer interface.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#include <i4b/include/i4b_debug.h>
|
||||
#include <i4b/include/i4b_ioctl.h>
|
||||
#include <i4b/include/i4b_cause.h>
|
||||
|
||||
#include <i4b/include/i4b_l3l4.h>
|
||||
#include <i4b/include/i4b_mbuf.h>
|
||||
#include <i4b/include/i4b_global.h>
|
||||
|
||||
#include <i4b/layer4/i4b_l4.h>
|
||||
|
||||
#include <i4b/capi/capi.h>
|
||||
#include <i4b/capi/capi_msgs.h>
|
||||
|
||||
/*
|
||||
// capi_ll_control
|
||||
// CAPI link layer control routine. Called by a link layer
|
||||
// driver when its state changes.
|
||||
*/
|
||||
|
||||
int
|
||||
capi_ll_control(capi_softc_t *sc, int op, int arg)
|
||||
{
|
||||
switch (op) {
|
||||
case CAPI_CTRL_READY:
|
||||
if (arg) {
|
||||
sc->sc_state = C_READY;
|
||||
|
||||
/*
|
||||
* Register our CAPI ApplId and send CAPI_LISTEN_REQ
|
||||
* with CIP Mask value 1 (match all).
|
||||
*/
|
||||
|
||||
sc->reg_appl(sc, I4BCAPI_APPLID, sc->sc_nbch);
|
||||
capi_listen_req(sc, 0x10007);
|
||||
|
||||
} else {
|
||||
sc->sc_state = C_DOWN;
|
||||
/* XXX go through cds and notify L4 of pdeact? XXX */
|
||||
}
|
||||
break;
|
||||
|
||||
case CAPI_CTRL_PROFILE:
|
||||
bcopy((char*) arg, &sc->sc_profile, sizeof(sc->sc_profile));
|
||||
break;
|
||||
|
||||
case CAPI_CTRL_NEW_NCCI:
|
||||
case CAPI_CTRL_FREE_NCCI:
|
||||
/* We ignore the controller's NCCI notifications. */
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("capi%d: unknown control %d\n", sc->sc_unit, op);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
// i4b_capi_handlers
|
||||
// Array of message-handler pairs used to dispatch CAPI
|
||||
// messages sent to I4BCAPI_APPLID.
|
||||
*/
|
||||
|
||||
static struct capi_cmdtab {
|
||||
u_int16_t cmd;
|
||||
void (*handler)(capi_softc_t *, struct mbuf *);
|
||||
} i4b_capi_handlers[] = {
|
||||
{ CAPI_LISTEN_CONF, capi_listen_conf },
|
||||
{ CAPI_INFO_IND, capi_info_ind },
|
||||
{ CAPI_ALERT_CONF, capi_alert_conf },
|
||||
{ CAPI_CONNECT_CONF, capi_connect_conf },
|
||||
{ CAPI_CONNECT_IND, capi_connect_ind },
|
||||
{ CAPI_CONNECT_ACTIVE_IND, capi_connect_active_ind },
|
||||
{ CAPI_CONNECT_B3_CONF, capi_connect_b3_conf },
|
||||
{ CAPI_CONNECT_B3_IND, capi_connect_b3_ind },
|
||||
{ CAPI_CONNECT_B3_ACTIVE_IND, capi_connect_b3_active_ind },
|
||||
{ CAPI_DATA_B3_CONF, capi_data_b3_conf },
|
||||
{ CAPI_DATA_B3_IND, capi_data_b3_ind },
|
||||
{ CAPI_DISCONNECT_B3_IND, capi_disconnect_b3_ind },
|
||||
{ CAPI_DISCONNECT_CONF, capi_disconnect_conf },
|
||||
{ CAPI_DISCONNECT_IND, capi_disconnect_ind },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
/*
|
||||
// capi_ll_receive
|
||||
// CAPI link layer receive upcall. Called by a link layer
|
||||
// driver to dispatch incoming CAPI messages.
|
||||
*/
|
||||
|
||||
int
|
||||
capi_ll_receive(capi_softc_t *sc, struct mbuf *m)
|
||||
{
|
||||
u_int8_t *p = mtod(m, u_int8_t*);
|
||||
u_int16_t len, applid, msgid, cmd;
|
||||
|
||||
capimsg_getu16(p + 0, &len);
|
||||
capimsg_getu16(p + 2, &applid);
|
||||
capimsg_getu16(p + 4, &cmd);
|
||||
capimsg_getu16(p + 6, &msgid);
|
||||
|
||||
#if 0
|
||||
printf("capi%d: ll_receive hdr %04x %04x %04x %04x\n", sc->sc_unit,
|
||||
len, applid, cmd, msgid);
|
||||
#endif
|
||||
|
||||
if (applid == I4BCAPI_APPLID) {
|
||||
struct capi_cmdtab *e;
|
||||
for (e = i4b_capi_handlers; e->cmd && e->cmd != cmd; e++);
|
||||
if (e->cmd) (*e->handler)(sc, m);
|
||||
else printf("capi%d: unknown message %04x\n", sc->sc_unit, cmd);
|
||||
|
||||
} else {
|
||||
/* XXX we could handle arbitrary ApplIds here XXX */
|
||||
printf("capi%d: message %04x for unknown applid %d\n", sc->sc_unit,
|
||||
cmd, applid);
|
||||
}
|
||||
|
||||
if (m->m_next) {
|
||||
i4b_Bfreembuf(m->m_next);
|
||||
m->m_next = NULL;
|
||||
}
|
||||
i4b_Dfreembuf(m);
|
||||
return(0);
|
||||
}
|
@ -1,950 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/capi_msgs.c The CAPI i4b message handlers.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#include <i4b/include/i4b_debug.h>
|
||||
#include <i4b/include/i4b_ioctl.h>
|
||||
#include <i4b/include/i4b_cause.h>
|
||||
|
||||
#include <i4b/include/i4b_l3l4.h>
|
||||
#include <i4b/include/i4b_mbuf.h>
|
||||
#include <i4b/include/i4b_global.h>
|
||||
|
||||
#include <i4b/layer4/i4b_l4.h>
|
||||
|
||||
#include <i4b/capi/capi.h>
|
||||
#include <i4b/capi/capi_msgs.h>
|
||||
|
||||
/*
|
||||
// Administrative messages:
|
||||
// ------------------------
|
||||
*/
|
||||
|
||||
void capi_listen_req(capi_softc_t *sc, u_int32_t CIP)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 18);
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for listen_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msgid = sc->sc_msgid++;
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_LISTEN_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, 1); /* Controller */
|
||||
msg = capimsg_setu32(msg, 0); /* Info mask */
|
||||
msg = capimsg_setu32(msg, CIP);
|
||||
msg = capimsg_setu32(msg, 0);
|
||||
msg = capimsg_setu8(msg, 0);
|
||||
msg = capimsg_setu8(msg, 0);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_listen_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t Info;
|
||||
|
||||
capimsg_getu16(msg + 12, &Info);
|
||||
|
||||
if (Info == 0) {
|
||||
/* We are now listening. */
|
||||
|
||||
sc->sc_state = C_UP;
|
||||
ctrl_desc[sc->ctrl_unit].dl_est = DL_UP;
|
||||
|
||||
i4b_l4_l12stat(sc->ctrl_unit, 1, 1);
|
||||
i4b_l4_l12stat(sc->ctrl_unit, 2, 1);
|
||||
|
||||
} else {
|
||||
/* XXX sc->sc_state = C_DOWN ? XXX */
|
||||
printf("capi%d: can't listen, info=%04x\n", sc->sc_unit, Info);
|
||||
}
|
||||
}
|
||||
|
||||
void capi_info_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 4);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t PLCI;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for info_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &PLCI);
|
||||
|
||||
/* i4b_l4_info_ind() */
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, applid);
|
||||
msg = capimsg_setu16(msg, CAPI_INFO_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_alert_req(capi_softc_t *sc, call_desc_t *cd)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 5);
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
u_int32_t PLCI;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for alert_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msgid = sc->sc_bchan[cd->channelid].msgid = sc->sc_msgid++;
|
||||
PLCI = (sc->sc_bchan[cd->channelid].ncci & CAPI_PLCI_MASK);
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_ALERT_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
msg = capimsg_setu8(msg, 0);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_alert_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t Info;
|
||||
|
||||
msg = capimsg_getu16(msg + 12, &Info);
|
||||
|
||||
if (Info) {
|
||||
printf("capi%d: can't alert, info=%04x\n", sc->sc_unit, Info);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// Outgoing call setup:
|
||||
// --------------------
|
||||
//
|
||||
// CAPI_CONNECT_REQ -->
|
||||
// <-- CAPI_CONNECT_CONF
|
||||
// (notify Layer 4)
|
||||
// <-- CAPI_CONNECT_ACTIVE_IND
|
||||
// CAPI_CONNECT_ACTIVE_RESP -->
|
||||
// CAPI_CONNECT_B3_REQ -->
|
||||
// <-- CAPI_CONNECT_B3_CONF
|
||||
// <-- CAPI_CONNECT_B3_ACTIVE_IND
|
||||
// CAPI_CONNECT_B3_ACTIVE_RESP -->
|
||||
// (notify Layer 4)
|
||||
*/
|
||||
|
||||
void capi_connect_req(capi_softc_t *sc, call_desc_t *cd)
|
||||
{
|
||||
struct mbuf *m;
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
int slen = strlen(cd->src_telno);
|
||||
int dlen = strlen(cd->dst_telno);
|
||||
|
||||
m = i4b_Dgetmbuf(8 + 27 + slen + dlen);
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for connect_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
cd->crflag = CRF_ORIG;
|
||||
|
||||
sc->sc_bchan[cd->channelid].cdid = cd->cdid;
|
||||
sc->sc_bchan[cd->channelid].bprot = cd->bprot;
|
||||
sc->sc_bchan[cd->channelid].state = B_CONNECT_CONF;
|
||||
msgid = sc->sc_bchan[cd->channelid].msgid = sc->sc_msgid++;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_RSVD;
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, 1); /* Controller */
|
||||
|
||||
switch (cd->bprot) {
|
||||
case BPROT_NONE:
|
||||
msg = capimsg_setu16(msg, 0x0010); /* Telephony */
|
||||
break;
|
||||
|
||||
case BPROT_RHDLC:
|
||||
msg = capimsg_setu16(msg, 0x0002); /* Unrestricted digital */
|
||||
break;
|
||||
|
||||
default:
|
||||
msg = capimsg_setu16(msg, 0x0002); /* Unrestricted digital */
|
||||
}
|
||||
|
||||
msg = capimsg_setu8(msg, 1 + dlen);
|
||||
msg = capimsg_setu8(msg, 0x80);
|
||||
strncpy(msg, cd->dst_telno, dlen);
|
||||
|
||||
msg = capimsg_setu8(msg + dlen, 2 + slen);
|
||||
msg = capimsg_setu8(msg, 0x00);
|
||||
msg = capimsg_setu8(msg, 0x80); /* Presentation and screening indicator */
|
||||
strncpy(msg, cd->src_telno, slen);
|
||||
|
||||
msg = capimsg_setu8(msg + slen, 0); /* Called & */
|
||||
msg = capimsg_setu8(msg, 0); /* Calling party subaddress */
|
||||
|
||||
msg = capimsg_setu8(msg, 15); /* B protocol */
|
||||
if (cd->bprot == BPROT_NONE)
|
||||
msg = capimsg_setu16(msg, 1); /* B1 protocol = transparent */
|
||||
else
|
||||
msg = capimsg_setu16(msg, 0); /* B1 protocol = HDLC */
|
||||
msg = capimsg_setu16(msg, 1); /* B2 protocol = transparent */
|
||||
msg = capimsg_setu16(msg, 0); /* B3 protocol = transparent */
|
||||
msg = capimsg_setu8(msg, 0); /* B1 parameters */
|
||||
msg = capimsg_setu8(msg, 0); /* B2 parameters */
|
||||
msg = capimsg_setu8(msg, 0); /* B3 parameters */
|
||||
|
||||
msg = capimsg_setu8(msg, 0); /* Bearer Capability */
|
||||
msg = capimsg_setu8(msg, 0); /* Low Layer Compatibility */
|
||||
msg = capimsg_setu8(msg, 0); /* High Layer Compatibility */
|
||||
msg = capimsg_setu8(msg, 0); /* Additional Info */
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_connect_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t msgid;
|
||||
u_int32_t PLCI;
|
||||
u_int16_t Info;
|
||||
int bch;
|
||||
|
||||
msg = capimsg_getu16(msg + 6, &msgid);
|
||||
msg = capimsg_getu32(msg, &PLCI);
|
||||
msg = capimsg_getu16(msg, &Info);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECT_CONF) &&
|
||||
(sc->sc_bchan[bch].msgid == msgid))
|
||||
break;
|
||||
|
||||
if ((bch == sc->sc_nbch) ||
|
||||
(cd = cd_by_cdid(sc->sc_bchan[bch].cdid)) == NULL) {
|
||||
printf("capi%d: can't find channel for connect_conf PLCI %x\n",
|
||||
sc->sc_unit, PLCI);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Info == 0) {
|
||||
sc->sc_bchan[bch].state = B_CONNECT_ACTIVE_IND;
|
||||
sc->sc_bchan[bch].ncci = PLCI;
|
||||
|
||||
i4b_l4_proceeding_ind(cd);
|
||||
|
||||
} else {
|
||||
SET_CAUSE_TV(cd->cause_out, CAUSET_I4B, CAUSE_I4B_L1ERROR);
|
||||
i4b_l4_disconnect_ind(cd);
|
||||
freecd_by_cd(cd);
|
||||
|
||||
sc->sc_bchan[bch].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[bch] = BCH_ST_FREE;
|
||||
|
||||
printf("capi%d: can't connect out, info=%04x\n", sc->sc_unit, Info);
|
||||
}
|
||||
}
|
||||
|
||||
void capi_connect_active_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 4);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t PLCI;
|
||||
int bch;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for active_ind\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &PLCI);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECT_ACTIVE_IND) &&
|
||||
(sc->sc_bchan[bch].ncci == PLCI))
|
||||
break;
|
||||
|
||||
if ((bch == sc->sc_nbch) ||
|
||||
(cd = cd_by_cdid(sc->sc_bchan[bch].cdid)) == NULL) {
|
||||
printf("capi%d: can't find channel for active_resp, PLCI %x\n",
|
||||
sc->sc_unit, PLCI);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, applid);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_ACTIVE_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
|
||||
sc->send(sc, m);
|
||||
|
||||
if (cd->crflag == CRF_ORIG) {
|
||||
capi_connect_b3_req(sc, cd);
|
||||
|
||||
} else {
|
||||
sc->sc_bchan[bch].state = B_CONNECT_B3_IND;
|
||||
}
|
||||
}
|
||||
|
||||
void capi_connect_b3_req(capi_softc_t *sc, call_desc_t *cd)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 5);
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
u_int32_t PLCI;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for connect_b3_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
sc->sc_bchan[cd->channelid].state = B_CONNECT_B3_CONF;
|
||||
msgid = sc->sc_bchan[cd->channelid].msgid = sc->sc_msgid++;
|
||||
PLCI = (sc->sc_bchan[cd->channelid].ncci & CAPI_PLCI_MASK);
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_B3_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
msg = capimsg_setu8(msg, 0); /* NCPI */
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_connect_b3_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t msgid;
|
||||
u_int32_t NCCI;
|
||||
u_int16_t Info;
|
||||
int bch;
|
||||
|
||||
msg = capimsg_getu16(msg + 6, &msgid);
|
||||
msg = capimsg_getu32(msg, &NCCI);
|
||||
msg = capimsg_getu16(msg, &Info);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECT_B3_CONF) &&
|
||||
(sc->sc_bchan[bch].ncci == (NCCI & CAPI_PLCI_MASK)))
|
||||
break;
|
||||
|
||||
if ((bch == sc->sc_nbch) ||
|
||||
(cd = cd_by_cdid(sc->sc_bchan[bch].cdid)) == NULL) {
|
||||
printf("capi%d: can't find channel for connect_b3_conf NCCI %x\n",
|
||||
sc->sc_unit, NCCI);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Info == 0) {
|
||||
sc->sc_bchan[bch].ncci = NCCI;
|
||||
sc->sc_bchan[bch].state = B_CONNECT_B3_ACTIVE_IND;
|
||||
|
||||
} else {
|
||||
SET_CAUSE_TV(cd->cause_in, CAUSET_I4B, CAUSE_I4B_OOO); /* XXX */
|
||||
i4b_l4_disconnect_ind(cd);
|
||||
freecd_by_cd(cd);
|
||||
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[bch] = BCH_ST_RSVD;
|
||||
|
||||
printf("capi%d: can't connect_b3 out, info=%04x\n", sc->sc_unit, Info);
|
||||
|
||||
capi_disconnect_req(sc, cd);
|
||||
}
|
||||
}
|
||||
|
||||
void capi_connect_b3_active_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 4);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t NCCI;
|
||||
int bch;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for b3_active_ind\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &NCCI);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECT_B3_ACTIVE_IND) &&
|
||||
(sc->sc_bchan[bch].ncci == NCCI))
|
||||
break;
|
||||
|
||||
if ((bch == sc->sc_nbch) ||
|
||||
(cd = cd_by_cdid(sc->sc_bchan[bch].cdid)) == NULL) {
|
||||
printf("capi%d: can't find channel for b3_active_resp NCCI %x\n",
|
||||
sc->sc_unit, NCCI);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_B3_ACTIVE_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, NCCI);
|
||||
|
||||
sc->send(sc, m);
|
||||
|
||||
sc->sc_bchan[bch].state = B_CONNECTED;
|
||||
i4b_l4_connect_active_ind(cd);
|
||||
}
|
||||
|
||||
/*
|
||||
// Incoming call setup:
|
||||
// --------------------
|
||||
//
|
||||
// <-- CAPI_CONNECT_IND
|
||||
// (consult Layer 4)
|
||||
// CAPI_CONNECT_RESP -->
|
||||
// <-- CAPI_CONNECT_ACTIVE_IND
|
||||
// CAPI_CONNECT_ACTIVE_RESP -->
|
||||
// <-- CAPI_CONNECT_B3_IND
|
||||
// CAPI_CONNECT_B3_RESP -->
|
||||
// <-- CAPI_CONNECT_B3_ACTIVE_IND
|
||||
// CAPI_CONNECT_B3_ACTIVE_RESP -->
|
||||
// (notify Layer 4)
|
||||
*/
|
||||
|
||||
void capi_connect_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t PLCI;
|
||||
u_int16_t CIP;
|
||||
u_int8_t x, y, z;
|
||||
int bch;
|
||||
|
||||
if ((cd = reserve_cd()) == NULL) {
|
||||
printf("capi%d: can't get cd for connect_ind\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
cd->controller = sc->ctrl_unit;
|
||||
cd->channelexcl = FALSE;
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if (sc->sc_bchan[bch].state == B_FREE) break;
|
||||
sc->sc_bchan[bch].state = B_CONNECT_IND;
|
||||
cd->channelid = bch; /* XXX CHAN_ANY XXX */
|
||||
|
||||
cd->crflag = CRF_DEST;
|
||||
cd->cr = get_rand_cr(sc->sc_unit);
|
||||
cd->scr_ind = SCR_NONE;
|
||||
cd->prs_ind = PRS_NONE;
|
||||
cd->bprot = BPROT_NONE;
|
||||
cd->ilt = NULL;
|
||||
cd->dlt = NULL;
|
||||
cd->display[0] = '\0';
|
||||
cd->datetime[0] = '\0';
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &PLCI);
|
||||
msg = capimsg_getu16(msg, &CIP);
|
||||
|
||||
cd->event = (int) msgid; /* XXX overload */
|
||||
cd->Q931state = (int) PLCI; /* XXX overload */
|
||||
|
||||
switch (CIP) {
|
||||
case 0x0010:
|
||||
case 0x0001: cd->bprot = BPROT_NONE; break;
|
||||
case 0x0002: cd->bprot = BPROT_RHDLC; break;
|
||||
default:
|
||||
NDBGL4(L4_CAPIDBG, "capi%d: unknown CIP = %d", sc->sc_unit, CIP);
|
||||
cd->bprot = BPROT_NONE;
|
||||
}
|
||||
|
||||
msg = capimsg_getu8(msg, &x); /* Called party struct len */
|
||||
if (x) {
|
||||
msg = capimsg_getu8(msg, &y); /* Numbering plan */
|
||||
z = x - 1;
|
||||
if (z >= TELNO_MAX) z = (TELNO_MAX-1);
|
||||
strncpy(cd->dst_telno, msg, z);
|
||||
msg += x;
|
||||
x = z;
|
||||
}
|
||||
cd->dst_telno[x] = '\0';
|
||||
|
||||
msg = capimsg_getu8(msg, &x); /* Calling party struct len */
|
||||
if (x) {
|
||||
msg = capimsg_getu8(msg, &y); /* Numbering plan */
|
||||
msg = capimsg_getu8(msg, &y); /* Screening/Presentation */
|
||||
if ((y & 0x80) == 0) { /* screening used */
|
||||
cd->scr_ind = (y & 3) + SCR_USR_NOSC;
|
||||
cd->prs_ind = ((y >> 5) & 3) + PRS_ALLOWED;
|
||||
}
|
||||
z = x - 2;
|
||||
if (z >= TELNO_MAX) z = (TELNO_MAX-1);
|
||||
strncpy(cd->src_telno, msg, z);
|
||||
msg += x;
|
||||
x = z;
|
||||
}
|
||||
cd->src_telno[x] = '\0';
|
||||
|
||||
i4b_l4_connect_ind(cd);
|
||||
}
|
||||
|
||||
void capi_connect_resp(capi_softc_t *sc, call_desc_t *cd)
|
||||
{
|
||||
struct mbuf *m;
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
u_int32_t PLCI;
|
||||
int dlen = strlen(cd->dst_telno);
|
||||
|
||||
m = i4b_Dgetmbuf(8 + 21 + dlen);
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for connect_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msgid = (u_int16_t) cd->event;
|
||||
PLCI = (u_int32_t) cd->Q931state;
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
|
||||
switch (cd->response) {
|
||||
case SETUP_RESP_ACCEPT:
|
||||
sc->sc_bchan[cd->channelid].cdid = cd->cdid;
|
||||
sc->sc_bchan[cd->channelid].ncci = PLCI;
|
||||
sc->sc_bchan[cd->channelid].state = B_CONNECT_ACTIVE_IND;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_USED;
|
||||
msg = capimsg_setu16(msg, 0); /* Accept the call */
|
||||
break;
|
||||
|
||||
case SETUP_RESP_REJECT:
|
||||
sc->sc_bchan[cd->channelid].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_FREE;
|
||||
msg = capimsg_setu16(msg, 2); /* Reject, normal call clearing */
|
||||
break;
|
||||
|
||||
case SETUP_RESP_DNTCRE:
|
||||
sc->sc_bchan[cd->channelid].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_FREE;
|
||||
if (sc->sc_nbch == 30) {
|
||||
/* With PRI, we can't really ignore calls -- normal clearing */
|
||||
msg = capimsg_setu16(msg, (0x3480|CAUSE_Q850_NCCLR));
|
||||
} else {
|
||||
msg = capimsg_setu16(msg, 1); /* Ignore */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
sc->sc_bchan[cd->channelid].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_FREE;
|
||||
msg = capimsg_setu16(msg, (0x3480|CAUSE_Q850_CALLREJ));
|
||||
}
|
||||
|
||||
msg = capimsg_setu8(msg, 15); /* B protocol */
|
||||
if (cd->bprot == BPROT_NONE)
|
||||
msg = capimsg_setu16(msg, 1); /* B1 protocol = transparent */
|
||||
else
|
||||
msg = capimsg_setu16(msg, 0); /* B1 protocol = HDLC */
|
||||
msg = capimsg_setu16(msg, 1); /* B2 protocol = transparent */
|
||||
msg = capimsg_setu16(msg, 0); /* B3 protocol = transparent */
|
||||
msg = capimsg_setu8(msg, 0); /* B1 parameters */
|
||||
msg = capimsg_setu8(msg, 0); /* B2 parameters */
|
||||
msg = capimsg_setu8(msg, 0); /* B3 parameters */
|
||||
|
||||
msg = capimsg_setu8(msg, 1 + dlen);
|
||||
msg = capimsg_setu8(msg, 0x80); /* Numbering plan */
|
||||
strncpy(msg, cd->dst_telno, dlen);
|
||||
msg = capimsg_setu8(msg + dlen, 0); /* Connected subaddress */
|
||||
msg = capimsg_setu8(msg, 0); /* Low Layer Compatibility */
|
||||
msg = capimsg_setu8(msg, 0); /* Additional Info */
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_connect_b3_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 7);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t NCCI;
|
||||
int bch;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for connect_b3_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &NCCI);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECT_B3_IND) &&
|
||||
(sc->sc_bchan[bch].ncci == (NCCI & CAPI_PLCI_MASK)))
|
||||
break;
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, applid);
|
||||
msg = capimsg_setu16(msg, CAPI_CONNECT_B3_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, NCCI);
|
||||
|
||||
if (bch == sc->sc_nbch) {
|
||||
printf("capi%d: can't get cd for connect_b3_resp NCCI %x\n",
|
||||
sc->sc_unit, NCCI);
|
||||
msg = capimsg_setu16(msg, 8); /* Reject, destination OOO */
|
||||
|
||||
} else {
|
||||
sc->sc_bchan[bch].ncci = NCCI;
|
||||
sc->sc_bchan[bch].state = B_CONNECT_B3_ACTIVE_IND;
|
||||
msg = capimsg_setu16(msg, 0); /* Accept */
|
||||
}
|
||||
|
||||
msg = capimsg_setu8(msg, 0); /* NCPI */
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
/*
|
||||
// Data transfer:
|
||||
// --------------
|
||||
*/
|
||||
|
||||
void capi_data_b3_req(capi_softc_t *sc, int chan, struct mbuf *m_b3)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 14);
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for data_b3_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msgid = sc->sc_bchan[chan].msgid = sc->sc_msgid++;
|
||||
sc->sc_bchan[chan].busy = 1;
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_DATA_B3_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, sc->sc_bchan[chan].ncci);
|
||||
msg = capimsg_setu32(msg, (u_int32_t) m_b3->m_data); /* Pointer */
|
||||
msg = capimsg_setu16(msg, m_b3->m_len);
|
||||
msg = capimsg_setu16(msg, chan);
|
||||
msg = capimsg_setu16(msg, 0); /* Flags */
|
||||
|
||||
m->m_next = m_b3;
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_data_b3_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int32_t NCCI;
|
||||
u_int16_t handle;
|
||||
u_int16_t Info;
|
||||
|
||||
msg = capimsg_getu32(msg + 8, &NCCI);
|
||||
msg = capimsg_getu16(msg, &handle);
|
||||
msg = capimsg_getu16(msg, &Info);
|
||||
|
||||
if (Info == 0) {
|
||||
sc->sc_bchan[handle].busy = 0;
|
||||
capi_start_tx(sc, handle);
|
||||
|
||||
} else {
|
||||
printf("capi%d: data_b3_conf NCCI %x handle %x info=%04x\n",
|
||||
sc->sc_unit, NCCI, handle, Info);
|
||||
}
|
||||
}
|
||||
|
||||
void capi_data_b3_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 6);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t NCCI;
|
||||
u_int16_t handle;
|
||||
int bch;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for data_b3_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &NCCI);
|
||||
msg = capimsg_getu16(msg + 6, &handle);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_CONNECTED) &&
|
||||
(sc->sc_bchan[bch].ncci == NCCI))
|
||||
break;
|
||||
|
||||
if (bch == sc->sc_nbch) {
|
||||
printf("capi%d: can't find channel for data_b3_ind NCCI %x\n",
|
||||
sc->sc_unit, NCCI);
|
||||
|
||||
} else {
|
||||
if (sc->sc_bchan[bch].bprot == BPROT_RHDLC) {
|
||||
/* HDLC drivers use rx_mbuf */
|
||||
|
||||
sc->sc_bchan[bch].in_mbuf = m_in->m_next;
|
||||
sc->sc_bchan[bch].rxcount += m_in->m_next->m_len;
|
||||
m_in->m_next = NULL; /* driver frees */
|
||||
|
||||
(*sc->sc_bchan[bch].capi_drvr_linktab->bch_rx_data_ready)(
|
||||
sc->sc_bchan[bch].capi_drvr_linktab->unit);
|
||||
|
||||
} else {
|
||||
/* Telephony drivers use rx_queue */
|
||||
|
||||
if (!_IF_QFULL(&sc->sc_bchan[bch].rx_queue)) {
|
||||
_IF_ENQUEUE(&sc->sc_bchan[bch].rx_queue, m_in->m_next);
|
||||
sc->sc_bchan[bch].rxcount += m_in->m_next->m_len;
|
||||
m_in->m_next = NULL; /* driver frees */
|
||||
}
|
||||
|
||||
(*sc->sc_bchan[bch].capi_drvr_linktab->bch_rx_data_ready)(
|
||||
sc->sc_bchan[bch].capi_drvr_linktab->unit);
|
||||
}
|
||||
}
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_DATA_B3_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, NCCI);
|
||||
msg = capimsg_setu16(msg, handle);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
/*
|
||||
// Connection teardown:
|
||||
// --------------------
|
||||
*/
|
||||
|
||||
void capi_disconnect_req(capi_softc_t *sc, call_desc_t *cd)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 5);
|
||||
u_int8_t *msg;
|
||||
u_int16_t msgid;
|
||||
u_int32_t PLCI;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for disconnect_req\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
sc->sc_bchan[cd->channelid].state = B_DISCONNECT_CONF;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[cd->channelid] = BCH_ST_RSVD;
|
||||
msgid = sc->sc_bchan[cd->channelid].msgid = sc->sc_msgid++;
|
||||
PLCI = (sc->sc_bchan[cd->channelid].ncci & CAPI_PLCI_MASK);
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, I4BCAPI_APPLID);
|
||||
msg = capimsg_setu16(msg, CAPI_DISCONNECT_REQ);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
msg = capimsg_setu8(msg, 0); /* Additional Info */
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_disconnect_conf(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int32_t PLCI;
|
||||
int bch;
|
||||
|
||||
msg = capimsg_getu32(msg + 8, &PLCI);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state == B_DISCONNECT_CONF) &&
|
||||
((sc->sc_bchan[bch].ncci & CAPI_PLCI_MASK) == PLCI))
|
||||
break;
|
||||
|
||||
if (bch == sc->sc_nbch) {
|
||||
printf("capi%d: can't find channel for disconnect_conf PLCI %x\n",
|
||||
sc->sc_unit, PLCI);
|
||||
return;
|
||||
}
|
||||
|
||||
cd = cd_by_cdid(sc->sc_bchan[bch].cdid);
|
||||
if (!cd) {
|
||||
printf("capi%d: can't find cd for disconnect_conf PLCI %x\n",
|
||||
sc->sc_unit, PLCI);
|
||||
} else {
|
||||
i4b_l4_disconnect_ind(cd);
|
||||
freecd_by_cd(cd);
|
||||
}
|
||||
|
||||
sc->sc_bchan[bch].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[bch] = BCH_ST_FREE;
|
||||
}
|
||||
|
||||
void capi_disconnect_b3_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 4);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t NCCI;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for disconnect_b3_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &NCCI);
|
||||
|
||||
/* XXX update bchan state? XXX */
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, applid);
|
||||
msg = capimsg_setu16(msg, CAPI_DISCONNECT_B3_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, NCCI);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
||||
|
||||
void capi_disconnect_ind(capi_softc_t *sc, struct mbuf *m_in)
|
||||
{
|
||||
struct mbuf *m = i4b_Dgetmbuf(8 + 4);
|
||||
u_int8_t *msg = mtod(m_in, u_int8_t*);
|
||||
call_desc_t *cd;
|
||||
u_int16_t applid, msgid;
|
||||
u_int32_t PLCI;
|
||||
u_int16_t Reason;
|
||||
int bch;
|
||||
|
||||
if (!m) {
|
||||
printf("capi%d: can't get mbuf for disconnect_resp\n", sc->sc_unit);
|
||||
return;
|
||||
}
|
||||
|
||||
msg = capimsg_getu16(msg + 2, &applid);
|
||||
msg = capimsg_getu16(msg + 2, &msgid);
|
||||
msg = capimsg_getu32(msg, &PLCI);
|
||||
msg = capimsg_getu16(msg, &Reason);
|
||||
|
||||
for (bch = 0; bch < sc->sc_nbch; bch++)
|
||||
if ((sc->sc_bchan[bch].state != B_FREE) &&
|
||||
((sc->sc_bchan[bch].ncci & CAPI_PLCI_MASK) == PLCI))
|
||||
break;
|
||||
|
||||
if (bch < sc->sc_nbch) {
|
||||
/* We may not have a bchan assigned if call was ignored. */
|
||||
|
||||
cd = cd_by_cdid(sc->sc_bchan[bch].cdid);
|
||||
sc->sc_bchan[bch].state = B_DISCONNECT_IND;
|
||||
} else cd = NULL;
|
||||
|
||||
if (cd) {
|
||||
if ((Reason & 0xff00) == 0x3400) {
|
||||
SET_CAUSE_TV(cd->cause_in, CAUSET_Q850, (Reason & 0x7f));
|
||||
} else {
|
||||
SET_CAUSE_TV(cd->cause_in, CAUSET_I4B, CAUSE_I4B_NORMAL);
|
||||
}
|
||||
|
||||
i4b_l4_disconnect_ind(cd);
|
||||
freecd_by_cd(cd);
|
||||
|
||||
sc->sc_bchan[bch].state = B_FREE;
|
||||
ctrl_desc[sc->ctrl_unit].bch_state[bch] = BCH_ST_FREE;
|
||||
}
|
||||
|
||||
msg = capimsg_setu16(mtod(m, u_int8_t*), m->m_len);
|
||||
msg = capimsg_setu16(msg, applid);
|
||||
msg = capimsg_setu16(msg, CAPI_DISCONNECT_RESP);
|
||||
msg = capimsg_setu16(msg, msgid);
|
||||
|
||||
msg = capimsg_setu32(msg, PLCI);
|
||||
|
||||
sc->send(sc, m);
|
||||
}
|
@ -1,381 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/capi_msgs.h The CAPI i4b message and handler declarations.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _I4B_CAPI_MSGS_H_
|
||||
#define _I4B_CAPI_MSGS_H_
|
||||
|
||||
/* CAPI commands */
|
||||
|
||||
#define CAPI_ALERT 0x01
|
||||
#define CAPI_CONNECT 0x02
|
||||
#define CAPI_CONNECT_ACTIVE 0x03
|
||||
#define CAPI_CONNECT_B3 0x82
|
||||
#define CAPI_CONNECT_B3_ACTIVE 0x83
|
||||
#define CAPI_CONNECT_B3_T90_ACTIVE 0x88
|
||||
#define CAPI_DATA_B3 0x86
|
||||
#define CAPI_DISCONNECT_B3 0x84
|
||||
#define CAPI_DISCONNECT 0x04
|
||||
#define CAPI_FACILITY 0x80
|
||||
#define CAPI_INFO 0x08
|
||||
#define CAPI_LISTEN 0x05
|
||||
#define CAPI_MANUFACTURER 0xff
|
||||
#define CAPI_RESET_B3 0x87
|
||||
#define CAPI_SELECT_B_PROTOCOL 0x41
|
||||
|
||||
/* CAPI subcommands */
|
||||
|
||||
#define CAPI_REQ 0x80
|
||||
#define CAPI_CONF 0x81
|
||||
#define CAPI_IND 0x82
|
||||
#define CAPI_RESP 0x83
|
||||
|
||||
/* CAPI combined commands */
|
||||
|
||||
#define CAPICMD(cmd,subcmd) (((subcmd)<<8)|(cmd))
|
||||
|
||||
#define CAPI_DISCONNECT_REQ CAPICMD(CAPI_DISCONNECT,CAPI_REQ)
|
||||
#define CAPI_DISCONNECT_CONF CAPICMD(CAPI_DISCONNECT,CAPI_CONF)
|
||||
#define CAPI_DISCONNECT_IND CAPICMD(CAPI_DISCONNECT,CAPI_IND)
|
||||
#define CAPI_DISCONNECT_RESP CAPICMD(CAPI_DISCONNECT,CAPI_RESP)
|
||||
|
||||
#define CAPI_ALERT_REQ CAPICMD(CAPI_ALERT,CAPI_REQ)
|
||||
#define CAPI_ALERT_CONF CAPICMD(CAPI_ALERT,CAPI_CONF)
|
||||
|
||||
#define CAPI_CONNECT_REQ CAPICMD(CAPI_CONNECT,CAPI_REQ)
|
||||
#define CAPI_CONNECT_CONF CAPICMD(CAPI_CONNECT,CAPI_CONF)
|
||||
#define CAPI_CONNECT_IND CAPICMD(CAPI_CONNECT,CAPI_IND)
|
||||
#define CAPI_CONNECT_RESP CAPICMD(CAPI_CONNECT,CAPI_RESP)
|
||||
|
||||
#define CAPI_CONNECT_ACTIVE_REQ CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_REQ)
|
||||
#define CAPI_CONNECT_ACTIVE_CONF CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_CONF)
|
||||
#define CAPI_CONNECT_ACTIVE_IND CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_IND)
|
||||
#define CAPI_CONNECT_ACTIVE_RESP CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_RESP)
|
||||
|
||||
#define CAPI_SELECT_B_PROTOCOL_REQ CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_REQ)
|
||||
#define CAPI_SELECT_B_PROTOCOL_CONF CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_CONF)
|
||||
|
||||
#define CAPI_CONNECT_B3_REQ CAPICMD(CAPI_CONNECT_B3,CAPI_REQ)
|
||||
#define CAPI_CONNECT_B3_CONF CAPICMD(CAPI_CONNECT_B3,CAPI_CONF)
|
||||
#define CAPI_CONNECT_B3_IND CAPICMD(CAPI_CONNECT_B3,CAPI_IND)
|
||||
#define CAPI_CONNECT_B3_RESP CAPICMD(CAPI_CONNECT_B3,CAPI_RESP)
|
||||
|
||||
#define CAPI_CONNECT_B3_ACTIVE_REQ CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_REQ)
|
||||
#define CAPI_CONNECT_B3_ACTIVE_CONF CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_CONF)
|
||||
#define CAPI_CONNECT_B3_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_IND)
|
||||
#define CAPI_CONNECT_B3_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_RESP)
|
||||
|
||||
#define CAPI_CONNECT_B3_T90_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_IND)
|
||||
#define CAPI_CONNECT_B3_T90_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_RESP)
|
||||
|
||||
#define CAPI_DATA_B3_REQ CAPICMD(CAPI_DATA_B3,CAPI_REQ)
|
||||
#define CAPI_DATA_B3_CONF CAPICMD(CAPI_DATA_B3,CAPI_CONF)
|
||||
#define CAPI_DATA_B3_IND CAPICMD(CAPI_DATA_B3,CAPI_IND)
|
||||
#define CAPI_DATA_B3_RESP CAPICMD(CAPI_DATA_B3,CAPI_RESP)
|
||||
|
||||
#define CAPI_DISCONNECT_B3_REQ CAPICMD(CAPI_DISCONNECT_B3,CAPI_REQ)
|
||||
#define CAPI_DISCONNECT_B3_CONF CAPICMD(CAPI_DISCONNECT_B3,CAPI_CONF)
|
||||
#define CAPI_DISCONNECT_B3_IND CAPICMD(CAPI_DISCONNECT_B3,CAPI_IND)
|
||||
#define CAPI_DISCONNECT_B3_RESP CAPICMD(CAPI_DISCONNECT_B3,CAPI_RESP)
|
||||
|
||||
#define CAPI_RESET_B3_REQ CAPICMD(CAPI_RESET_B3,CAPI_REQ)
|
||||
#define CAPI_RESET_B3_CONF CAPICMD(CAPI_RESET_B3,CAPI_CONF)
|
||||
#define CAPI_RESET_B3_IND CAPICMD(CAPI_RESET_B3,CAPI_IND)
|
||||
#define CAPI_RESET_B3_RESP CAPICMD(CAPI_RESET_B3,CAPI_RESP)
|
||||
|
||||
#define CAPI_LISTEN_REQ CAPICMD(CAPI_LISTEN,CAPI_REQ)
|
||||
#define CAPI_LISTEN_CONF CAPICMD(CAPI_LISTEN,CAPI_CONF)
|
||||
|
||||
#define CAPI_MANUFACTURER_REQ CAPICMD(CAPI_MANUFACTURER,CAPI_REQ)
|
||||
#define CAPI_MANUFACTURER_CONF CAPICMD(CAPI_MANUFACTURER,CAPI_CONF)
|
||||
#define CAPI_MANUFACTURER_IND CAPICMD(CAPI_MANUFACTURER,CAPI_IND)
|
||||
#define CAPI_MANUFACTURER_RESP CAPICMD(CAPI_MANUFACTURER,CAPI_RESP)
|
||||
|
||||
#define CAPI_FACILITY_REQ CAPICMD(CAPI_FACILITY,CAPI_REQ)
|
||||
#define CAPI_FACILITY_CONF CAPICMD(CAPI_FACILITY,CAPI_CONF)
|
||||
#define CAPI_FACILITY_IND CAPICMD(CAPI_FACILITY,CAPI_IND)
|
||||
#define CAPI_FACILITY_RESP CAPICMD(CAPI_FACILITY,CAPI_RESP)
|
||||
|
||||
#define CAPI_INFO_REQ CAPICMD(CAPI_INFO,CAPI_REQ)
|
||||
#define CAPI_INFO_CONF CAPICMD(CAPI_INFO,CAPI_CONF)
|
||||
#define CAPI_INFO_IND CAPICMD(CAPI_INFO,CAPI_IND)
|
||||
#define CAPI_INFO_RESP CAPICMD(CAPI_INFO,CAPI_RESP)
|
||||
|
||||
/* CAPI message access helpers */
|
||||
|
||||
/*
|
||||
* CAPI message header:
|
||||
* word Length
|
||||
* word ApplId
|
||||
* byte Command
|
||||
* byte Subcommand
|
||||
* word MsgId
|
||||
*
|
||||
* Note that in the following, Controller/PLCI/NCCI is coded as follows:
|
||||
* bits 0..6 = controller, bit 7 = ext/int, bits 8..15 = PLCI, and
|
||||
* bits 16..31 = NCCI value.
|
||||
*
|
||||
* ALERT_REQ, 01 80:
|
||||
* dword PLCI
|
||||
* struct Additional Info
|
||||
*
|
||||
* ALERT_CONF, 01 81:
|
||||
* dword PLCI
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* CONNECT_REQ, 02 80:
|
||||
* dword controller
|
||||
* word CIP
|
||||
* struct Called party number
|
||||
* struct Calling party number
|
||||
* struct Called party subaddress
|
||||
* struct Calling party subaddress
|
||||
* struct Bearer Capability
|
||||
* struct Low Layer Compatibility
|
||||
* struct High Layer Compatibility
|
||||
* struct Additional Info
|
||||
*
|
||||
* CONNECT_CONF, 02 81:
|
||||
* dword PLCI
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* CONNECT_IND, 02 82:
|
||||
* dword PLCI
|
||||
* word CIP
|
||||
* struct Called party number
|
||||
* struct Calling party number
|
||||
* struct Called party subaddress
|
||||
* struct Calling party subaddress
|
||||
* struct Bearer Capability
|
||||
* struct Low Layer Compatibility
|
||||
* struct High Layer Compatibility
|
||||
* struct Additional Info
|
||||
* struct Second Calling party number
|
||||
*
|
||||
* CONNECT_RESP, 02 83:
|
||||
* dword PLCI
|
||||
* word Reject (0 = accept, 1 = ignore, 2 = reject/normal clearing)
|
||||
* struct B protocol
|
||||
* struct Connected number
|
||||
* struct Connected subaddress
|
||||
* struct Low Layer Compatibility
|
||||
* struct Additional Info
|
||||
*
|
||||
* CONNECT_ACTIVE_IND, 03 82:
|
||||
* dword PLCI
|
||||
* struct Connected number
|
||||
* struct Connected subaddress
|
||||
* struct Low Layer Compatibility
|
||||
*
|
||||
* CONNECT_ACTIVE_RESP, 03 83:
|
||||
* dword PLCI
|
||||
*
|
||||
* CONNECT_B3_REQ, 82 80:
|
||||
* dword PLCI
|
||||
* struct NCPI
|
||||
*
|
||||
* CONNECT_B3_CONF, 82 81:
|
||||
* dword NCCI
|
||||
* word Info (0 = connected, other = cause)
|
||||
*
|
||||
* CONNECT_B3_IND, 82 82:
|
||||
* dword NCCI
|
||||
* struct NCPI
|
||||
*
|
||||
* CONNECT_B3_RESP, 82 83:
|
||||
* dword NCCI
|
||||
* word Reject (0 = accept, 2 = reject/normal clearing)
|
||||
* struct NCPI
|
||||
*
|
||||
* CONNECT_B3_ACTIVE_IND, 83 82:
|
||||
* dword NCCI
|
||||
* struct NCPI
|
||||
*
|
||||
* CONNECT_B3_ACTIVE_RESP, 83 83:
|
||||
* dword NCCI
|
||||
*
|
||||
* DATA_B3_REQ, 86 80:
|
||||
* dword NCCI
|
||||
* dword Data pointer
|
||||
* word Data length
|
||||
* word Data handle (packet id)
|
||||
* word Flags (02 = more)
|
||||
*
|
||||
* DATA_B3_CONF, 86 81:
|
||||
* dword NCCI
|
||||
* word Data handle (packet id)
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* DATA_B3_IND, 86 82:
|
||||
* dword NCCI
|
||||
* dword Data pointer
|
||||
* word Data length
|
||||
* word Data handle (packet id)
|
||||
* word Flags (02 = more)
|
||||
*
|
||||
* DATA_B3_RESP, 86 83:
|
||||
* dword NCCI
|
||||
* word Data handle (packet id)
|
||||
*
|
||||
* DISCONNECT_B3_REQ, 84 80:
|
||||
* dword NCCI
|
||||
* struct NCPI
|
||||
*
|
||||
* DISCONNECT_B3_CONF, 84 81:
|
||||
* dword NCCI
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* DISCONNECT_B3_IND, 84 82:
|
||||
* dword NCCI
|
||||
* word Reason
|
||||
* struct NCPI
|
||||
*
|
||||
* DISCONNECT_B3_RESP, 84 83:
|
||||
* dword NCCI
|
||||
*
|
||||
* DISCONNECT_REQ, 04 80:
|
||||
* dword PLCI
|
||||
* struct Additional Info
|
||||
*
|
||||
* DISCONNECT_CONF, 04 81:
|
||||
* dword PLCI
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* DISCONNECT_IND, 04 82:
|
||||
* dword PLCI
|
||||
* word Reason
|
||||
*
|
||||
* DISCONNECT_RESP, 04 83:
|
||||
* dword PLCI
|
||||
*
|
||||
* LISTEN_REQ, 05 80:
|
||||
* dword Controller
|
||||
* dword Info mask (bits 0..9 used)
|
||||
* dword CIP Mask (bit 0 = any match)
|
||||
* dword CIP Mask 2 (bit 0 = any match)
|
||||
* struct Calling party number
|
||||
* struct Calling party subaddress
|
||||
*
|
||||
* LISTEN_CONF, 05 81:
|
||||
* dword Controller
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* INFO_REQ, 08 80:
|
||||
* dword Controller/PLCI
|
||||
* struct Called party number
|
||||
* struct Additional Info
|
||||
*
|
||||
* INFO_CONF, 08 81:
|
||||
* dword Controller/PLCI
|
||||
* word Info (0 = OK, other = cause)
|
||||
*
|
||||
* INFO_IND, 08 82:
|
||||
* dword Controller/PLCI
|
||||
* word Info number
|
||||
* struct Info element
|
||||
*
|
||||
* INFO_RESP, 08 83:
|
||||
* dword Controller/PLCI
|
||||
*/
|
||||
|
||||
#define CAPIMSG_LEN(msg) (msg[0]|(msg[1]<<8))
|
||||
#define CAPIMSG_DATALEN(msg) (msg[16]|(msg[17]<<8))
|
||||
|
||||
static __inline u_int8_t* capimsg_getu8(u_int8_t *msg, u_int8_t *val)
|
||||
{
|
||||
*val = *msg;
|
||||
return (msg + 1);
|
||||
}
|
||||
|
||||
static __inline u_int8_t* capimsg_getu16(u_int8_t *msg, u_int16_t *val)
|
||||
{
|
||||
*val = (msg[0]|(msg[1]<<8));
|
||||
return (msg + 2);
|
||||
}
|
||||
|
||||
static __inline u_int8_t* capimsg_getu32(u_int8_t *msg, u_int32_t *val)
|
||||
{
|
||||
*val = (msg[0]|(msg[1]<<8)|(msg[2]<<16)|(msg[3]<<24));
|
||||
return (msg + 4);
|
||||
}
|
||||
|
||||
static __inline u_int8_t* capimsg_setu8(u_int8_t *msg, u_int8_t val)
|
||||
{
|
||||
msg[0] = val;
|
||||
return (msg + 1);
|
||||
}
|
||||
|
||||
static __inline u_int8_t* capimsg_setu16(u_int8_t *msg, u_int16_t val)
|
||||
{
|
||||
msg[0] = (val & 0xff);
|
||||
msg[1] = (val >> 8) & 0xff;
|
||||
return (msg + 2);
|
||||
}
|
||||
|
||||
static __inline u_int8_t* capimsg_setu32(u_int8_t *msg, u_int32_t val)
|
||||
{
|
||||
msg[0] = (val & 0xff);
|
||||
msg[1] = (val >> 8) & 0xff;
|
||||
msg[2] = (val >> 16) & 0xff;
|
||||
msg[3] = (val >> 24) & 0xff;
|
||||
return (msg + 4);
|
||||
}
|
||||
|
||||
/*
|
||||
// CAPI message handlers called by higher layers
|
||||
*/
|
||||
|
||||
extern void capi_listen_req(capi_softc_t *sc, u_int32_t CIP);
|
||||
extern void capi_alert_req(capi_softc_t *sc, call_desc_t *cd);
|
||||
extern void capi_connect_req(capi_softc_t *sc, call_desc_t *cd);
|
||||
extern void capi_connect_b3_req(capi_softc_t *sc, call_desc_t *cd);
|
||||
extern void capi_connect_resp(capi_softc_t *sc, call_desc_t *cd);
|
||||
extern void capi_data_b3_req(capi_softc_t *sc, int chan, struct mbuf *m);
|
||||
extern void capi_disconnect_req(capi_softc_t *sc, call_desc_t *cd);
|
||||
|
||||
/*
|
||||
// CAPI message handlers called by the receive routine
|
||||
*/
|
||||
|
||||
extern void capi_listen_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_info_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_alert_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_active_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_b3_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_b3_active_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_connect_b3_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_data_b3_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_data_b3_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_disconnect_conf(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_disconnect_b3_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
extern void capi_disconnect_ind(capi_softc_t *sc, struct mbuf *m);
|
||||
|
||||
#endif /* _I4B_CAPI_MSGS_H_ */
|
@ -1,446 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/iavc/iavc.h The AVM ISDN controllers' common declarations.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _CAPI_IAVC_H_
|
||||
#define _CAPI_IAVC_H_
|
||||
|
||||
/* max 4 units supported per machine */
|
||||
|
||||
#define IAVC_MAXUNIT 4
|
||||
|
||||
/*
|
||||
// iavc_softc_t
|
||||
// The software context of one AVM T1 controller.
|
||||
*/
|
||||
|
||||
#define IAVC_IO_BASES 1
|
||||
|
||||
typedef struct i4b_info {
|
||||
struct resource * io_base[IAVC_IO_BASES];
|
||||
int io_rid [IAVC_IO_BASES];
|
||||
struct resource * irq;
|
||||
int irq_rid;
|
||||
struct resource * mem;
|
||||
int mem_rid;
|
||||
} i4b_info_t;
|
||||
|
||||
typedef struct iavc_softc {
|
||||
capi_softc_t sc_capi;
|
||||
int sc_unit;
|
||||
int sc_cardtyp;
|
||||
|
||||
u_int32_t sc_membase;
|
||||
bus_space_handle_t sc_mem_bh;
|
||||
bus_space_tag_t sc_mem_bt;
|
||||
u_int32_t sc_iobase;
|
||||
bus_space_handle_t sc_io_bh;
|
||||
bus_space_tag_t sc_io_bt;
|
||||
|
||||
int sc_state;
|
||||
#define IAVC_DOWN 0
|
||||
#define IAVC_POLL 1
|
||||
#define IAVC_INIT 2
|
||||
#define IAVC_UP 3
|
||||
int sc_blocked;
|
||||
int sc_dma;
|
||||
int sc_t1;
|
||||
int sc_intr;
|
||||
|
||||
u_int32_t sc_csr;
|
||||
|
||||
char sc_sendbuf[128+2048];
|
||||
char sc_recvbuf[128+2048];
|
||||
int sc_recvlen;
|
||||
|
||||
struct ifqueue sc_txq;
|
||||
|
||||
i4b_info_t sc_resources;
|
||||
} iavc_softc_t;
|
||||
|
||||
extern iavc_softc_t iavc_sc[];
|
||||
|
||||
#define iavc_find_sc(unit) (&iavc_sc[(unit)])
|
||||
|
||||
/*
|
||||
// {b1,b1dma,t1}_{detect,reset}
|
||||
// Routines to detect and manage the specific type of card.
|
||||
*/
|
||||
|
||||
extern int b1_detect(iavc_softc_t *sc);
|
||||
extern void b1_disable_irq(iavc_softc_t *sc);
|
||||
extern void b1_reset(iavc_softc_t *sc);
|
||||
|
||||
extern int b1dma_detect(iavc_softc_t *sc);
|
||||
extern void b1dma_reset(iavc_softc_t *sc);
|
||||
|
||||
extern int t1_detect(iavc_softc_t *sc);
|
||||
extern void t1_disable_irq(iavc_softc_t *sc);
|
||||
extern void t1_reset(iavc_softc_t *sc);
|
||||
|
||||
/*
|
||||
// AMCC_{READ,WRITE}
|
||||
// Routines to access the memory mapped registers of the
|
||||
// S5933 DMA controller.
|
||||
*/
|
||||
|
||||
static __inline u_int32_t AMCC_READ(iavc_softc_t *sc, int off)
|
||||
{
|
||||
return bus_space_read_4(sc->sc_mem_bt, sc->sc_mem_bh, off);
|
||||
}
|
||||
|
||||
static __inline void AMCC_WRITE(iavc_softc_t *sc, int off, u_int32_t value)
|
||||
{
|
||||
bus_space_write_4(sc->sc_mem_bt, sc->sc_mem_bh, off, value);
|
||||
}
|
||||
|
||||
/*
|
||||
// amcc_{put,get}_{byte,word}
|
||||
// Routines to access the DMA buffers byte- or wordwise.
|
||||
*/
|
||||
|
||||
static __inline u_int8_t* amcc_put_byte(u_int8_t *buf, u_int8_t value)
|
||||
{
|
||||
*buf++ = value;
|
||||
return buf;
|
||||
}
|
||||
|
||||
static __inline u_int8_t* amcc_get_byte(u_int8_t *buf, u_int8_t *value)
|
||||
{
|
||||
*value = *buf++;
|
||||
return buf;
|
||||
}
|
||||
|
||||
static __inline u_int8_t* amcc_put_word(u_int8_t *buf, u_int32_t value)
|
||||
{
|
||||
*buf++ = (value & 0xff);
|
||||
*buf++ = (value >> 8) & 0xff;
|
||||
*buf++ = (value >> 16) & 0xff;
|
||||
*buf++ = (value >> 24) & 0xff;
|
||||
return buf;
|
||||
}
|
||||
|
||||
static __inline u_int8_t* amcc_get_word(u_int8_t *buf, u_int32_t *value)
|
||||
{
|
||||
*value = *buf++;
|
||||
*value |= (*buf++ << 8);
|
||||
*value |= (*buf++ << 16);
|
||||
*value |= (*buf++ << 24);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/*
|
||||
// Controller LLI message numbers.
|
||||
*/
|
||||
|
||||
#define SEND_POLL 0x72
|
||||
#define SEND_INIT 0x11
|
||||
#define SEND_REGISTER 0x12
|
||||
#define SEND_DATA_B3_REQ 0x13
|
||||
#define SEND_RELEASE 0x14
|
||||
#define SEND_MESSAGE 0x15
|
||||
#define SEND_CONFIG 0x71
|
||||
#define SEND_POLLACK 0x73
|
||||
|
||||
#define RECEIVE_POLL 0x32
|
||||
#define RECEIVE_INIT 0x27
|
||||
#define RECEIVE_MESSAGE 0x21
|
||||
#define RECEIVE_DATA_B3_IND 0x22
|
||||
#define RECEIVE_START 0x23
|
||||
#define RECEIVE_STOP 0x24
|
||||
#define RECEIVE_NEW_NCCI 0x25
|
||||
#define RECEIVE_FREE_NCCI 0x26
|
||||
#define RECEIVE_RELEASE 0x26
|
||||
#define RECEIVE_TASK_READY 0x31
|
||||
#define RECEIVE_DEBUGMSG 0x71
|
||||
#define RECEIVE_POLLDWORD 0x75
|
||||
|
||||
/* Operation constants */
|
||||
|
||||
#define WRITE_REGISTER 0x00
|
||||
#define READ_REGISTER 0x01
|
||||
|
||||
/* Port offsets in I/O space */
|
||||
|
||||
#define B1_READ 0x00
|
||||
#define B1_WRITE 0x01
|
||||
#define B1_INSTAT 0x02
|
||||
#define B1_OUTSTAT 0x03
|
||||
#define B1_ANALYSE 0x04
|
||||
#define B1_REVISION 0x05
|
||||
#define B1_RESET 0x10
|
||||
|
||||
#define T1_FASTLINK 0x00
|
||||
#define T1_SLOWLINK 0x08
|
||||
|
||||
#define T1_READ B1_READ
|
||||
#define T1_WRITE B1_WRITE
|
||||
#define T1_INSTAT B1_INSTAT
|
||||
#define T1_OUTSTAT B1_OUTSTAT
|
||||
#define T1_IRQENABLE 0x05
|
||||
#define T1_FIFOSTAT 0x06
|
||||
#define T1_RESETLINK 0x10
|
||||
#define T1_ANALYSE 0x11
|
||||
#define T1_IRQMASTER 0x12
|
||||
#define T1_IDENT 0x17
|
||||
#define T1_RESETBOARD 0x1f
|
||||
|
||||
#define T1F_IREADY 0x01
|
||||
#define T1F_IHALF 0x02
|
||||
#define T1F_IFULL 0x04
|
||||
#define T1F_IEMPTY 0x08
|
||||
#define T1F_IFLAGS 0xf0
|
||||
|
||||
#define T1F_OREADY 0x10
|
||||
#define T1F_OHALF 0x20
|
||||
#define T1F_OEMPTY 0x40
|
||||
#define T1F_OFULL 0x80
|
||||
#define T1F_OFLAGS 0xf0
|
||||
|
||||
#define FIFO_OUTBSIZE 256
|
||||
#define FIFO_INPBSIZE 512
|
||||
|
||||
#define HEMA_VERSION_ID 0
|
||||
#define HEMA_PAL_ID 0
|
||||
|
||||
/*
|
||||
// S5933 DMA controller register offsets in memory, and bitmasks.
|
||||
*/
|
||||
|
||||
#define AMCC_RXPTR 0x24
|
||||
#define AMCC_RXLEN 0x28
|
||||
#define AMCC_TXPTR 0x2c
|
||||
#define AMCC_TXLEN 0x30
|
||||
|
||||
#define AMCC_INTCSR 0x38
|
||||
#define EN_READ_TC_INT 0x00008000
|
||||
#define EN_WRITE_TC_INT 0x00004000
|
||||
#define EN_TX_TC_INT EN_READ_TC_INT
|
||||
#define EN_RX_TC_INT EN_WRITE_TC_INT
|
||||
#define AVM_FLAG 0x30000000
|
||||
|
||||
#define ANY_S5933_INT 0x00800000
|
||||
#define READ_TC_INT 0x00080000
|
||||
#define WRITE_TC_INT 0x00040000
|
||||
#define TX_TC_INT READ_TC_INT
|
||||
#define RX_TC_INT WRITE_TC_INT
|
||||
#define MASTER_ABORT_INT 0x00100000
|
||||
#define TARGET_ABORT_INT 0x00200000
|
||||
#define BUS_MASTER_INT 0x00200000
|
||||
#define ALL_INT 0x000c0000
|
||||
|
||||
#define AMCC_MCSR 0x3c
|
||||
#define A2P_HI_PRIORITY 0x00000100
|
||||
#define EN_A2P_TRANSFERS 0x00000400
|
||||
#define P2A_HI_PRIORITY 0x00001000
|
||||
#define EN_P2A_TRANSFERS 0x00004000
|
||||
#define RESET_A2P_FLAGS 0x04000000
|
||||
#define RESET_P2A_FLAGS 0x02000000
|
||||
|
||||
/*
|
||||
// (B1IO_WAIT_MAX * B1IO_WAIT_DLY) is the max wait in us for the card
|
||||
// to become ready after an I/O operation. The default is 1 ms.
|
||||
*/
|
||||
|
||||
#define B1IO_WAIT_MAX 1000
|
||||
#define B1IO_WAIT_DLY 1
|
||||
|
||||
/*
|
||||
// b1io_outp
|
||||
// Diagnostic output routine, returns the written value via
|
||||
// the device's analysis register.
|
||||
//
|
||||
// b1io_rx_full
|
||||
// Returns nonzero if data is readable from the card via the
|
||||
// I/O ports.
|
||||
//
|
||||
// b1io_tx_empty
|
||||
// Returns nonzero if data can be written to the card via the
|
||||
// I/O ports.
|
||||
*/
|
||||
|
||||
static __inline u_int8_t b1io_outp(iavc_softc_t *sc, int off, u_int8_t val)
|
||||
{
|
||||
bus_space_write_1(sc->sc_io_bt, sc->sc_io_bh, off, val);
|
||||
DELAY(1);
|
||||
return bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, B1_ANALYSE);
|
||||
}
|
||||
|
||||
static __inline int b1io_rx_full(iavc_softc_t *sc)
|
||||
{
|
||||
u_int8_t val = bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, B1_INSTAT);
|
||||
return (val & 0x01);
|
||||
}
|
||||
|
||||
static __inline int b1io_tx_empty(iavc_softc_t *sc)
|
||||
{
|
||||
u_int8_t val = bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, B1_OUTSTAT);
|
||||
return (val & 0x01);
|
||||
}
|
||||
|
||||
/*
|
||||
// b1io_{get,put}_{byte,word}
|
||||
// Routines to read and write the device I/O registers byte- or
|
||||
// wordwise.
|
||||
//
|
||||
// b1io_{get,put}_slice
|
||||
// Routines to read and write sequential bytes to the device
|
||||
// I/O registers.
|
||||
*/
|
||||
|
||||
u_int8_t b1io_get_byte(iavc_softc_t *sc);
|
||||
int b1io_put_byte(iavc_softc_t *sc, u_int8_t val);
|
||||
|
||||
int b1io_save_put_byte(iavc_softc_t *sc, u_int8_t val);
|
||||
|
||||
u_int32_t b1io_get_word(iavc_softc_t *sc);
|
||||
void b1io_put_word(iavc_softc_t *sc, u_int32_t val);
|
||||
|
||||
int b1io_get_slice(iavc_softc_t *sc, u_int8_t *dp);
|
||||
void b1io_put_slice(iavc_softc_t *sc, u_int8_t *dp, int len);
|
||||
|
||||
/*
|
||||
// b1io_{read,write}_reg
|
||||
// Routines to read and write the device registers via the I/O
|
||||
// ports.
|
||||
*/
|
||||
|
||||
u_int32_t b1io_read_reg(iavc_softc_t *sc, int reg);
|
||||
u_int32_t b1io_write_reg(iavc_softc_t *sc, int reg, u_int32_t val);
|
||||
|
||||
/*
|
||||
// t1io_outp
|
||||
// I/O port write operation for the T1, which does not seem
|
||||
// to have the analysis port.
|
||||
*/
|
||||
|
||||
static __inline void t1io_outp(iavc_softc_t *sc, int off, u_int8_t val)
|
||||
{
|
||||
bus_space_write_1(sc->sc_io_bt, sc->sc_io_bh, off, val);
|
||||
}
|
||||
|
||||
static __inline u_int8_t t1io_inp(iavc_softc_t *sc, int off)
|
||||
{
|
||||
return bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, off);
|
||||
}
|
||||
|
||||
static __inline int t1io_isfastlink(iavc_softc_t *sc)
|
||||
{
|
||||
return ((bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, T1_IDENT) & ~0x82) == 1);
|
||||
}
|
||||
|
||||
static __inline u_int8_t t1io_fifostatus(iavc_softc_t *sc)
|
||||
{
|
||||
return bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, T1_FIFOSTAT);
|
||||
}
|
||||
|
||||
int t1io_get_slice(iavc_softc_t *sc, u_int8_t *dp);
|
||||
void t1io_put_slice(iavc_softc_t *sc, u_int8_t *dp, int len);
|
||||
|
||||
/*
|
||||
// An attempt to bring it all together:
|
||||
// ------------------------------------
|
||||
//
|
||||
// iavc_{read,write}_reg
|
||||
// Routines to access the device registers via the I/O port.
|
||||
//
|
||||
// iavc_{read,write}_port
|
||||
// Routines to access the device I/O ports.
|
||||
//
|
||||
// iavc_tx_empty, iavc_rx_full
|
||||
// Routines to check when the device has drained the last written
|
||||
// byte, or produced a full byte to read.
|
||||
//
|
||||
// iavc_{get,put}_byte
|
||||
// Routines to read/write byte values to the device via the I/O port.
|
||||
//
|
||||
// iavc_{get,put}_word
|
||||
// Routines to read/write 32-bit words to the device via the I/O port.
|
||||
//
|
||||
// iavc_{get,put}_slice
|
||||
// Routines to read/write {length, data} pairs to the device via the
|
||||
// ubiquituous I/O port. Uses the HEMA FIFO on a T1.
|
||||
*/
|
||||
|
||||
#define iavc_read_reg(sc, reg) b1io_read_reg(sc, reg)
|
||||
#define iavc_write_reg(sc, reg, val) b1io_write_reg(sc, reg, val)
|
||||
|
||||
#define iavc_read_port(sc, port) \
|
||||
bus_space_read_1(sc->sc_io_bt, sc->sc_io_bh, (port))
|
||||
#define iavc_write_port(sc, port, val) \
|
||||
bus_space_write_1(sc->sc_io_bt, sc->sc_io_bh, (port), (val))
|
||||
|
||||
#define iavc_tx_empty(sc) b1io_tx_empty(sc)
|
||||
#define iavc_rx_full(sc) b1io_rx_full(sc)
|
||||
|
||||
#define iavc_get_byte(sc) b1io_get_byte(sc)
|
||||
#define iavc_put_byte(sc, val) b1io_put_byte(sc, val)
|
||||
#define iavc_get_word(sc) b1io_get_word(sc)
|
||||
#define iavc_put_word(sc, val) b1io_put_word(sc, val)
|
||||
|
||||
static __inline u_int32_t iavc_get_slice(iavc_softc_t *sc, u_int8_t *dp)
|
||||
{
|
||||
if (sc->sc_t1) return t1io_get_slice(sc, dp);
|
||||
else return b1io_get_slice(sc, dp);
|
||||
}
|
||||
|
||||
static __inline void iavc_put_slice(iavc_softc_t *sc, u_int8_t *dp, int len)
|
||||
{
|
||||
if (sc->sc_t1) t1io_put_slice(sc, dp, len);
|
||||
else b1io_put_slice(sc, dp, len);
|
||||
}
|
||||
|
||||
/*
|
||||
// iavc_handle_intr
|
||||
// Interrupt handler, called by the bus specific interrupt routine
|
||||
// in iavc_<bustype>.c module.
|
||||
//
|
||||
// iavc_load
|
||||
// CAPI callback. Resets device and loads firmware.
|
||||
//
|
||||
// iavc_register
|
||||
// CAPI callback. Registers an application id.
|
||||
//
|
||||
// iavc_release
|
||||
// CAPI callback. Releases an application id.
|
||||
//
|
||||
// iavc_send
|
||||
// CAPI callback. Sends a CAPI message. A B3_DATA_REQ message has
|
||||
// m_next point to a data mbuf.
|
||||
*/
|
||||
|
||||
extern void iavc_handle_intr(iavc_softc_t *);
|
||||
extern int iavc_load(capi_softc_t *, int, u_int8_t *);
|
||||
extern int iavc_register(capi_softc_t *, int, int);
|
||||
extern int iavc_release(capi_softc_t *, int);
|
||||
extern int iavc_send(capi_softc_t *, struct mbuf *);
|
||||
|
||||
extern void b1isa_setup_irq(struct iavc_softc *sc);
|
||||
|
||||
#endif /* _CAPI_IAVC_H_ */
|
@ -1,285 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001 Cubical Solutions Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* capi/iavc/iavc_card.c
|
||||
* The AVM ISDN controllers' card specific support routines.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/resource.h>
|
||||
#include <sys/bus.h>
|
||||
#include <sys/rman.h>
|
||||
|
||||
#include <i4b/include/i4b_debug.h>
|
||||
#include <i4b/include/i4b_ioctl.h>
|
||||
#include <i4b/include/i4b_trace.h>
|
||||
|
||||
#include <i4b/include/i4b_global.h>
|
||||
#include <i4b/include/i4b_l3l4.h>
|
||||
#include <i4b/include/i4b_mbuf.h>
|
||||
|
||||
#include <i4b/capi/capi.h>
|
||||
|
||||
#include <i4b/capi/iavc/iavc.h>
|
||||
|
||||
/*
|
||||
// AVM B1 (active BRI, PIO mode)
|
||||
*/
|
||||
|
||||
int b1_detect(iavc_softc_t *sc)
|
||||
{
|
||||
if ((iavc_read_port(sc, B1_INSTAT) & 0xfc) ||
|
||||
(iavc_read_port(sc, B1_OUTSTAT) & 0xfc))
|
||||
return (1);
|
||||
|
||||
b1io_outp(sc, B1_INSTAT, 0x02);
|
||||
b1io_outp(sc, B1_OUTSTAT, 0x02);
|
||||
if ((iavc_read_port(sc, B1_INSTAT) & 0xfe) != 2 ||
|
||||
(iavc_read_port(sc, B1_OUTSTAT) & 0xfe) != 2)
|
||||
return (2);
|
||||
|
||||
b1io_outp(sc, B1_INSTAT, 0x00);
|
||||
b1io_outp(sc, B1_OUTSTAT, 0x00);
|
||||
if ((iavc_read_port(sc, B1_INSTAT) & 0xfe) ||
|
||||
(iavc_read_port(sc, B1_OUTSTAT) & 0xfe))
|
||||
return (3);
|
||||
|
||||
return (0); /* found */
|
||||
}
|
||||
|
||||
void b1_disable_irq(iavc_softc_t *sc)
|
||||
{
|
||||
b1io_outp(sc, B1_INSTAT, 0x00);
|
||||
}
|
||||
|
||||
void b1_reset(iavc_softc_t *sc)
|
||||
{
|
||||
b1io_outp(sc, B1_RESET, 0);
|
||||
DELAY(55*2*1000);
|
||||
|
||||
b1io_outp(sc, B1_RESET, 1);
|
||||
DELAY(55*2*1000);
|
||||
|
||||
b1io_outp(sc, B1_RESET, 0);
|
||||
DELAY(55*2*1000);
|
||||
}
|
||||
|
||||
/*
|
||||
// Newer PCI-based B1's, and T1's, supports DMA
|
||||
*/
|
||||
|
||||
int b1dma_detect(iavc_softc_t *sc)
|
||||
{
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0);
|
||||
DELAY(10*1000);
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0x0f000000);
|
||||
DELAY(10*1000);
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0);
|
||||
DELAY(42*1000);
|
||||
|
||||
AMCC_WRITE(sc, AMCC_RXLEN, 0);
|
||||
AMCC_WRITE(sc, AMCC_TXLEN, 0);
|
||||
sc->sc_csr = 0;
|
||||
AMCC_WRITE(sc, AMCC_INTCSR, sc->sc_csr);
|
||||
|
||||
if (AMCC_READ(sc, AMCC_INTCSR) != 0)
|
||||
return 1;
|
||||
|
||||
AMCC_WRITE(sc, AMCC_RXPTR, 0xffffffff);
|
||||
AMCC_WRITE(sc, AMCC_TXPTR, 0xffffffff);
|
||||
if ((AMCC_READ(sc, AMCC_RXPTR) != 0xfffffffc) ||
|
||||
(AMCC_READ(sc, AMCC_TXPTR) != 0xfffffffc))
|
||||
return 2;
|
||||
|
||||
AMCC_WRITE(sc, AMCC_RXPTR, 0);
|
||||
AMCC_WRITE(sc, AMCC_TXPTR, 0);
|
||||
if ((AMCC_READ(sc, AMCC_RXPTR) != 0) ||
|
||||
(AMCC_READ(sc, AMCC_TXPTR) != 0))
|
||||
return 3;
|
||||
|
||||
iavc_write_port(sc, 0x10, 0x00);
|
||||
iavc_write_port(sc, 0x07, 0x00);
|
||||
|
||||
iavc_write_port(sc, 0x02, 0x02);
|
||||
iavc_write_port(sc, 0x03, 0x02);
|
||||
|
||||
if (((iavc_read_port(sc, 0x02) & 0xfe) != 0x02) ||
|
||||
(iavc_read_port(sc, 0x03) != 0x03))
|
||||
return 4;
|
||||
|
||||
iavc_write_port(sc, 0x02, 0x00);
|
||||
iavc_write_port(sc, 0x03, 0x00);
|
||||
|
||||
if (((iavc_read_port(sc, 0x02) & 0xfe) != 0x00) ||
|
||||
(iavc_read_port(sc, 0x03) != 0x01))
|
||||
return 5;
|
||||
|
||||
return (0); /* found */
|
||||
}
|
||||
|
||||
void b1dma_reset(iavc_softc_t *sc)
|
||||
{
|
||||
int s = SPLI4B();
|
||||
|
||||
sc->sc_csr = 0;
|
||||
AMCC_WRITE(sc, AMCC_INTCSR, sc->sc_csr);
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0);
|
||||
AMCC_WRITE(sc, AMCC_RXLEN, 0);
|
||||
AMCC_WRITE(sc, AMCC_TXLEN, 0);
|
||||
|
||||
iavc_write_port(sc, 0x10, 0x00); /* XXX magic numbers from */
|
||||
iavc_write_port(sc, 0x07, 0x00); /* XXX the linux driver */
|
||||
|
||||
splx(s);
|
||||
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0);
|
||||
DELAY(10 * 1000);
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0x0f000000);
|
||||
DELAY(10 * 1000);
|
||||
AMCC_WRITE(sc, AMCC_MCSR, 0);
|
||||
DELAY(42 * 1000);
|
||||
}
|
||||
|
||||
/*
|
||||
// AVM T1 (active PRI)
|
||||
*/
|
||||
|
||||
/* XXX how do these differ from b1io_{read,write}_reg()? XXX */
|
||||
|
||||
static int b1dma_tx_empty(int iobase)
|
||||
{ return inb(iobase + 3) & 1; }
|
||||
|
||||
static int b1dma_rx_full(int iobase)
|
||||
{ return inb(iobase + 2) & 1; }
|
||||
|
||||
static int b1dma_tolink(iavc_softc_t *sc, void *buf, int len)
|
||||
{
|
||||
volatile int spin;
|
||||
char *s = (char*) buf;
|
||||
while (len--) {
|
||||
spin = 0;
|
||||
while (!b1dma_tx_empty(sc->sc_iobase) && spin < 100000)
|
||||
spin++;
|
||||
if (!b1dma_tx_empty(sc->sc_iobase))
|
||||
return -1;
|
||||
t1io_outp(sc, 1, *s++);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int b1dma_fromlink(iavc_softc_t *sc, void *buf, int len)
|
||||
{
|
||||
volatile int spin;
|
||||
char *s = (char*) buf;
|
||||
while (len--) {
|
||||
spin = 0;
|
||||
while (!b1dma_rx_full(sc->sc_iobase) && spin < 100000)
|
||||
spin++;
|
||||
if (!b1dma_rx_full(sc->sc_iobase))
|
||||
return -1;
|
||||
*s++ = t1io_inp(sc, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int WriteReg(iavc_softc_t *sc, u_int32_t reg, u_int8_t val)
|
||||
{
|
||||
u_int8_t cmd = 0;
|
||||
if (b1dma_tolink(sc, &cmd, 1) == 0 &&
|
||||
b1dma_tolink(sc, ®, 4) == 0) {
|
||||
u_int32_t tmp = val;
|
||||
return b1dma_tolink(sc, &tmp, 4);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static u_int8_t ReadReg(iavc_softc_t *sc, u_int32_t reg)
|
||||
{
|
||||
u_int8_t cmd = 1;
|
||||
if (b1dma_tolink(sc, &cmd, 1) == 0 &&
|
||||
b1dma_tolink(sc, ®, 4) == 0) {
|
||||
u_int32_t tmp;
|
||||
if (b1dma_fromlink(sc, &tmp, 4) == 0)
|
||||
return (u_int8_t) tmp;
|
||||
}
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
int t1_detect(iavc_softc_t *sc)
|
||||
{
|
||||
int ret = b1dma_detect(sc);
|
||||
if (ret) return ret;
|
||||
|
||||
if ((WriteReg(sc, 0x80001000, 0x11) != 0) ||
|
||||
(WriteReg(sc, 0x80101000, 0x22) != 0) ||
|
||||
(WriteReg(sc, 0x80201000, 0x33) != 0) ||
|
||||
(WriteReg(sc, 0x80301000, 0x44) != 0))
|
||||
return 6;
|
||||
|
||||
if ((ReadReg(sc, 0x80001000) != 0x11) ||
|
||||
(ReadReg(sc, 0x80101000) != 0x22) ||
|
||||
(ReadReg(sc, 0x80201000) != 0x33) ||
|
||||
(ReadReg(sc, 0x80301000) != 0x44))
|
||||
return 7;
|
||||
|
||||
if ((WriteReg(sc, 0x80001000, 0x55) != 0) ||
|
||||
(WriteReg(sc, 0x80101000, 0x66) != 0) ||
|
||||
(WriteReg(sc, 0x80201000, 0x77) != 0) ||
|
||||
(WriteReg(sc, 0x80301000, 0x88) != 0))
|
||||
return 8;
|
||||
|
||||
if ((ReadReg(sc, 0x80001000) != 0x55) ||
|
||||
(ReadReg(sc, 0x80101000) != 0x66) ||
|
||||
(ReadReg(sc, 0x80201000) != 0x77) ||
|
||||
(ReadReg(sc, 0x80301000) != 0x88))
|
||||
return 9;
|
||||
|
||||
return 0; /* found */
|
||||
}
|
||||
|
||||
void t1_disable_irq(iavc_softc_t *sc)
|
||||
{
|
||||
iavc_write_port(sc, T1_IRQMASTER, 0x00);
|
||||
}
|
||||
|
||||
void t1_reset(iavc_softc_t *sc)
|
||||
{
|
||||
b1_reset(sc);
|
||||
iavc_write_port(sc, B1_INSTAT, 0x00);
|
||||
iavc_write_port(sc, B1_OUTSTAT, 0x00);
|
||||
iavc_write_port(sc, T1_IRQMASTER, 0x00);
|
||||
iavc_write_port(sc, T1_RESETBOARD, 0x0f);
|
||||
}
|
@ -1,289 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2001, 2002 Hellmuth Michaelis. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/resource.h>
|
||||
#include <sys/bus.h>
|
||||
#include <sys/rman.h>
|
||||
#include <vm/vm.h>
|
||||
#include <vm/pmap.h>
|
||||
#include <isa/isavar.h>
|
||||
|
||||
#include <i4b/include/i4b_debug.h>
|
||||
#include <i4b/include/i4b_ioctl.h>
|
||||
#include <i4b/include/i4b_trace.h>
|
||||
|
||||
#include <i4b/include/i4b_global.h>
|
||||
#include <i4b/include/i4b_l3l4.h>
|
||||
#include <i4b/include/i4b_mbuf.h>
|
||||
|
||||
#include <i4b/capi/capi.h>
|
||||
|
||||
#include <i4b/capi/iavc/iavc.h>
|
||||
|
||||
/* ISA driver linkage */
|
||||
|
||||
static void iavc_isa_intr(iavc_softc_t *sc);
|
||||
static int iavc_isa_probe(device_t dev);
|
||||
static int iavc_isa_attach(device_t dev);
|
||||
|
||||
static device_method_t iavc_isa_methods[] =
|
||||
{
|
||||
DEVMETHOD(device_probe, iavc_isa_probe),
|
||||
DEVMETHOD(device_attach, iavc_isa_attach),
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
static driver_t iavc_isa_driver =
|
||||
{
|
||||
"iavc",
|
||||
iavc_isa_methods,
|
||||
0
|
||||
};
|
||||
|
||||
static devclass_t iavc_isa_devclass;
|
||||
|
||||
DRIVER_MODULE(iavc, isa, iavc_isa_driver, iavc_isa_devclass, 0, 0);
|
||||
|
||||
#define B1_IOLENGTH 0x20
|
||||
|
||||
static int b1_irq_table[] =
|
||||
{0, 0, 0, 192, 32, 160, 96, 224, 0, 64, 80, 208, 48, 0, 0, 112};
|
||||
/* 3 4 5 6 7 9 10 11 12 15 */
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* device probe
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
static int
|
||||
iavc_isa_probe(device_t dev)
|
||||
{
|
||||
struct iavc_softc *sc;
|
||||
int ret = ENXIO;
|
||||
int unit = device_get_unit(dev);
|
||||
|
||||
if(isa_get_vendorid(dev)) /* no PnP probes here */
|
||||
return ENXIO;
|
||||
|
||||
/* check max unit range */
|
||||
|
||||
if (unit >= IAVC_MAXUNIT)
|
||||
{
|
||||
printf("iavc%d: too many units\n", unit);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
sc = iavc_find_sc(unit); /* get softc */
|
||||
|
||||
sc->sc_unit = unit;
|
||||
|
||||
if (!(sc->sc_resources.io_base[0] =
|
||||
bus_alloc_resource(dev, SYS_RES_IOPORT,
|
||||
&sc->sc_resources.io_rid[0],
|
||||
0UL, ~0UL, B1_IOLENGTH, RF_ACTIVE)))
|
||||
{
|
||||
printf("iavc%d: can't allocate io region\n", unit);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
sc->sc_iobase = rman_get_start(sc->sc_resources.io_base[0]);
|
||||
|
||||
switch(sc->sc_iobase)
|
||||
{
|
||||
case 0x150:
|
||||
case 0x250:
|
||||
case 0x300:
|
||||
case 0x340:
|
||||
break;
|
||||
default:
|
||||
printf("iavc%d: ERROR, invalid i/o base addr 0x%x configured!\n", sc->sc_unit, sc->sc_iobase);
|
||||
bus_release_resource(dev, SYS_RES_IOPORT,
|
||||
sc->sc_resources.io_rid[0],
|
||||
sc->sc_resources.io_base[0]);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
sc->sc_io_bt = rman_get_bustag(sc->sc_resources.io_base[0]);
|
||||
sc->sc_io_bh = rman_get_bushandle(sc->sc_resources.io_base[0]);
|
||||
|
||||
/* setup characteristics */
|
||||
|
||||
sc->sc_t1 = FALSE;
|
||||
sc->sc_dma = FALSE;
|
||||
|
||||
sc->sc_capi.card_type = CARD_TYPEC_AVM_B1_ISA;
|
||||
sc->sc_capi.sc_nbch = 2;
|
||||
|
||||
b1_reset(sc);
|
||||
DELAY(100);
|
||||
|
||||
ret = b1_detect(sc);
|
||||
|
||||
if(ret)
|
||||
{
|
||||
printf("iavc%d: no card ? b1_detect returns %0x02x\n",
|
||||
sc->sc_unit, ret);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
DELAY(100);
|
||||
|
||||
b1_reset(sc);
|
||||
|
||||
DELAY(100);
|
||||
|
||||
if(bootverbose)
|
||||
{
|
||||
printf("iavc%d: class = 0x%02x, rev = 0x%02x\n", sc->sc_unit,
|
||||
iavc_read_port(sc, B1_ANALYSE),
|
||||
iavc_read_port(sc, B1_REVISION));
|
||||
}
|
||||
|
||||
device_set_desc(dev, "AVM B1 ISA");
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* attach
|
||||
*---------------------------------------------------------------------------*/
|
||||
static int
|
||||
iavc_isa_attach(device_t dev)
|
||||
{
|
||||
struct iavc_softc *sc;
|
||||
void *ih = 0;
|
||||
int unit = device_get_unit(dev);
|
||||
int irq;
|
||||
|
||||
sc = iavc_find_sc(unit); /* get softc */
|
||||
|
||||
sc->sc_resources.irq_rid = 0;
|
||||
|
||||
if(!(sc->sc_resources.irq =
|
||||
bus_alloc_resource_any(dev, SYS_RES_IRQ,
|
||||
&sc->sc_resources.irq_rid, RF_ACTIVE)))
|
||||
{
|
||||
printf("iavc%d: can't allocate irq\n",unit);
|
||||
bus_release_resource(dev, SYS_RES_IOPORT,
|
||||
sc->sc_resources.io_rid[0],
|
||||
sc->sc_resources.io_base[0]);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
irq = rman_get_start(sc->sc_resources.irq);
|
||||
|
||||
if(b1_irq_table[irq] == 0)
|
||||
{
|
||||
printf("iavc%d: ERROR, illegal irq %d configured!\n",unit, irq);
|
||||
bus_release_resource(dev, SYS_RES_IOPORT,
|
||||
sc->sc_resources.io_rid[0],
|
||||
sc->sc_resources.io_base[0]);
|
||||
bus_release_resource(dev, SYS_RES_IRQ,
|
||||
sc->sc_resources.irq_rid,
|
||||
sc->sc_resources.irq);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
memset(&sc->sc_txq, 0, sizeof(struct ifqueue));
|
||||
sc->sc_txq.ifq_maxlen = sc->sc_capi.sc_nbch * 4;
|
||||
|
||||
if(!mtx_initialized(&sc->sc_txq.ifq_mtx))
|
||||
mtx_init(&sc->sc_txq.ifq_mtx, "i4b_ivac_isa", NULL, MTX_DEF);
|
||||
|
||||
sc->sc_intr = FALSE;
|
||||
sc->sc_state = IAVC_DOWN;
|
||||
sc->sc_blocked = FALSE;
|
||||
|
||||
/* setup capi link */
|
||||
|
||||
sc->sc_capi.load = iavc_load;
|
||||
sc->sc_capi.reg_appl = iavc_register;
|
||||
sc->sc_capi.rel_appl = iavc_release;
|
||||
sc->sc_capi.send = iavc_send;
|
||||
sc->sc_capi.ctx = (void*) sc;
|
||||
|
||||
if (capi_ll_attach(&sc->sc_capi))
|
||||
{
|
||||
printf("iavc%d: capi attach failed\n", unit);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
/* setup the interrupt */
|
||||
|
||||
if(bus_setup_intr(dev, sc->sc_resources.irq, INTR_TYPE_NET,
|
||||
NULL, (void(*)(void*))iavc_isa_intr,
|
||||
sc, &ih))
|
||||
{
|
||||
printf("iavc%d: irq setup failed\n", unit);
|
||||
bus_release_resource(dev, SYS_RES_IOPORT,
|
||||
sc->sc_resources.io_rid[0],
|
||||
sc->sc_resources.io_base[0]);
|
||||
bus_release_resource(dev, SYS_RES_IRQ,
|
||||
sc->sc_resources.irq_rid,
|
||||
sc->sc_resources.irq);
|
||||
return(ENXIO);
|
||||
}
|
||||
|
||||
/* the board is now ready to be loaded */
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* setup interrupt
|
||||
*---------------------------------------------------------------------------*/
|
||||
void
|
||||
b1isa_setup_irq(struct iavc_softc *sc)
|
||||
{
|
||||
int irq = rman_get_start(sc->sc_resources.irq);
|
||||
|
||||
if(bootverbose)
|
||||
printf("iavc%d: using irq %d\n", sc->sc_unit, irq);
|
||||
|
||||
/* enable the interrupt */
|
||||
|
||||
b1io_outp(sc, B1_INSTAT, 0x00);
|
||||
b1io_outp(sc, B1_RESET, b1_irq_table[irq]);
|
||||
b1io_outp(sc, B1_INSTAT, 0x02);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* IRQ handler
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
iavc_isa_intr(struct iavc_softc *sc)
|
||||
{
|
||||
iavc_handle_intr(sc);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user