Compare commits
No commits in common. "master" and "capiconn" have entirely different histories.
116
.config.rpm
116
.config.rpm
|
@ -1,116 +0,0 @@
|
|||
#
|
||||
# Automatically generated by make menuconfig: don't edit
|
||||
#
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
|
||||
#
|
||||
# General configuration
|
||||
#
|
||||
CONFIG_BUILDX11=y
|
||||
CONFIG_KERNELDIR='/usr/src/linux'
|
||||
CONFIG_BINDIR='/usr/bin'
|
||||
CONFIG_SBINDIR='/sbin'
|
||||
CONFIG_MANDIR='/usr/man'
|
||||
CONFIG_RUNDIR='/var/run'
|
||||
CONFIG_LOCKDIR='/var/lock'
|
||||
CONFIG_LOCKFILE='LCK..'
|
||||
CONFIG_I4LCONFDIR='/etc/isdn'
|
||||
CONFIG_CONFFILE='isdn.conf'
|
||||
CONFIG_CALLERIDFILE='callerid.conf'
|
||||
CONFIG_USERCONFFILE='~/.isdn'
|
||||
CONFIG_COUNTRYCODE='49'
|
||||
CONFIG_AREACODE=''
|
||||
CONFIG_COUNTRY_PREFIX='+'
|
||||
CONFIG_AREA_PREFIX='0'
|
||||
CONFIG_DATADIR='/usr/lib/isdn'
|
||||
CONFIG_LIB_AREACODE=y
|
||||
|
||||
#
|
||||
# Runtime configuration tools
|
||||
#
|
||||
CONFIG_ISDNCTRL=y
|
||||
CONFIG_ISDNCTRL_CONF=y
|
||||
CONFIG_ISDNCTRL_TIMRU=y
|
||||
CONFIG_IPROFD=y
|
||||
|
||||
#
|
||||
# Card configuration tools
|
||||
#
|
||||
# CONFIG_TELESCTRL is not set
|
||||
CONFIG_HISAXCTRL=y
|
||||
CONFIG_ICNCTRL=y
|
||||
# CONFIG_ICNCTRL_DEBUG is not set
|
||||
CONFIG_PCBITCTL=y
|
||||
CONFIG_AVMCAPICTRL=y
|
||||
CONFIG_LOOPCTRL=y
|
||||
CONFIG_LOOPCTRL_LOOPDIR='/usr/src/linux/drivers/isdn/isdnloop'
|
||||
# CONFIG_LOOPCTRL_DEBUG is not set
|
||||
|
||||
#
|
||||
# Tools for monitoring activity
|
||||
#
|
||||
CONFIG_IMON=y
|
||||
CONFIG_IMONTTY=y
|
||||
CONFIG_ISDNLOG=y
|
||||
|
||||
#
|
||||
# Options for isdnlog package
|
||||
#
|
||||
CONFIG_ISDNLOG_SERV_PORT=20011
|
||||
CONFIG_ISDNLOG_USERFILE='isdnlog.users'
|
||||
CONFIG_ISDNLOG_CHARGEFILE='charge.dat'
|
||||
CONFIG_ISDNLOG_LOGFILE='/var/log/isdn.log'
|
||||
CONFIG_ISDNLOG_RELOADCMD='reload'
|
||||
CONFIG_ISDNLOG_STOPCMD='stop'
|
||||
CONFIG_ISDNLOG_REBOOTCMD='/sbin/reboot'
|
||||
CONFIG_ISDNLOG_OLDI4LCONFDIR='/etc/isdnlog'
|
||||
CONFIG_ISDNLOG_OLDI4LCONFFILE='isdnlog.conf'
|
||||
# CONFIG_ISDNLOG_POSTGRES is not set
|
||||
# CONFIG_ISDNLOG_MYSQLDB is not set
|
||||
CONFIG_ISDN_LOG_DE=y
|
||||
CONFIG_IPPPSTATS=y
|
||||
CONFIG_XISDNLOAD=y
|
||||
CONFIG_XMONISDN=y
|
||||
|
||||
#
|
||||
# Options for xmonisdn
|
||||
#
|
||||
CONFIG_XMONISDN_UPCMD='/sbin/netup'
|
||||
CONFIG_XMONISDN_DOWNCMD='/sbin/netdown'
|
||||
|
||||
#
|
||||
# Applications
|
||||
#
|
||||
CONFIG_VBOX=y
|
||||
|
||||
#
|
||||
# Options for vbox package
|
||||
#
|
||||
VBOX_SPOOLDIR='/var/spool/vbox'
|
||||
VBOX_LOGDIR='/var/log/vbox'
|
||||
VBOX_PIDDIR='/var/run'
|
||||
VBOX_LOCKDIR='/var/lock'
|
||||
VBOX_DOCDIR='/usr/doc/vbox'
|
||||
VBOX_TCL='tcl8.0'
|
||||
CONFIG_IPPPD=y
|
||||
|
||||
#
|
||||
# Options for ipppd
|
||||
#
|
||||
CONFIG_IPPPD_MSCHAP=y
|
||||
# CONFIG_IPPPD_RADIUS is not set
|
||||
# CONFIG_RADIUS_WTMP_LOGGING is not set
|
||||
RADIUS_CLIENT_CONFIG_FILE=''
|
||||
CONFIG_CAPIFAX=y
|
||||
CONFIG_RCAPID=y
|
||||
|
||||
#
|
||||
# Documentation
|
||||
#
|
||||
CONFIG_GENMAN=y
|
||||
CONFIG_FAQ=y
|
||||
CONFIG_FAQDIR='/usr/doc/faq/isdn4linux'
|
|
@ -1,28 +0,0 @@
|
|||
#
|
||||
# NOTE! Don't add files that are generated in specific
|
||||
# subdirectories here. Add them in the ".gitignore" file
|
||||
# in that subdirectory instead.
|
||||
#
|
||||
# NOTE! Please use 'git ls-files -i --exclude-standard'
|
||||
# command after changing this file, to see if there are
|
||||
# any tracked files which get ignored after the change.
|
||||
#
|
||||
# Normal rules
|
||||
#
|
||||
.deps
|
||||
.libs
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*.o.*
|
||||
*.a
|
||||
*.s
|
||||
*.so
|
||||
*.so.dbg
|
||||
*.i
|
||||
*.lst
|
||||
*~
|
||||
|
||||
autom4te.cache
|
||||
ChangeLog
|
||||
config.log
|
212
FAQ/Makefile.in
212
FAQ/Makefile.in
|
@ -1,212 +0,0 @@
|
|||
# Makefile for i4l-faq
|
||||
# (c) 1997 by Matthias Heßler (MatHes)
|
||||
#
|
||||
# Generate FAQ, support FAQ development
|
||||
|
||||
# Directories
|
||||
# After generation, install files in TARGET_DIR (if non-empty)
|
||||
TARGET_DIR = @TARGET_DIR@
|
||||
|
||||
# Program file names
|
||||
TAR = @C_TAR@
|
||||
ZIP = @C_ZIP@
|
||||
GZIP = @C_GZIP@
|
||||
SGML2HTML = @C_SGML2HTML@
|
||||
SGML2TXT = @C_SGML2TXT@
|
||||
INSTALL = @INSTALL@
|
||||
|
||||
# Source file names
|
||||
SRC = i4lfaq.sgml
|
||||
OUT_NAME = i4lfaq
|
||||
OUT_TXT = $(OUT_NAME).txt
|
||||
OUT_HTML = $(OUT_NAME).html
|
||||
# please note that also files like i4lfaq-1.html, i4lfaq-11.html,...
|
||||
# will be generated...
|
||||
|
||||
DE_SRC = i4lfaq-de.sgml
|
||||
DE_OUT_NAME = i4lfaq-de
|
||||
DE_OUT_TXT = $(DE_OUT_NAME).txt
|
||||
DE_OUT_HTML = $(DE_OUT_NAME).html
|
||||
# please note that also files like i4lfaq-de-1.html, i4lfaq-de-11.html,...
|
||||
# will be generated...
|
||||
|
||||
|
||||
# *** Generate FAQ ***
|
||||
|
||||
# Generate all FAQ versions
|
||||
all: Makefile \
|
||||
$(OUT_HTML) $(OUT_TXT) \
|
||||
$(DE_OUT_HTML) $(DE_OUT_TXT)
|
||||
|
||||
eng: Makefile \
|
||||
$(OUT_HTML) $(OUT_TXT)
|
||||
|
||||
de: Makefile \
|
||||
$(DE_OUT_HTML) $(DE_OUT_TXT)
|
||||
|
||||
|
||||
# Generate html version of FAQ
|
||||
html: $(OUT_HTML)
|
||||
|
||||
$(OUT_HTML): $(SRC)
|
||||
$(SGML2HTML) $(SRC)
|
||||
|
||||
|
||||
html_de: $(DE_OUT_HTML)
|
||||
|
||||
$(DE_OUT_HTML): $(DE_SRC)
|
||||
$(SGML2HTML) $(DE_SRC)
|
||||
|
||||
|
||||
# Generate text version of FAQ
|
||||
txt: $(OUT_TXT)
|
||||
|
||||
$(OUT_TXT): $(SRC)
|
||||
$(SGML2TXT) -f $(SRC)
|
||||
|
||||
|
||||
txt_de: $(DE_OUT_TXT)
|
||||
|
||||
$(DE_OUT_TXT): $(DE_SRC)
|
||||
$(SGML2TXT) -f $(DE_SRC)
|
||||
|
||||
|
||||
# Generate all zip versions
|
||||
zip: $(OUT_NAME)-sgml.zip $(OUT_NAME)-html.zip $(OUT_NAME)-txt.zip
|
||||
gz: $(OUT_NAME).sgml.gz $(OUT_NAME).html.tar.gz $(OUT_NAME).txt.gz
|
||||
|
||||
zip_de: $(DE_OUT_NAME)-sgml.zip $(DE_OUT_NAME)-html.zip $(DE_OUT_NAME)-txt.zip
|
||||
gz_de: $(DE_OUT_NAME).sgml.gz $(DE_OUT_NAME).html.tar.gz $(DE_OUT_NAME).txt.gz
|
||||
|
||||
|
||||
# Compress sgml
|
||||
$(OUT_NAME)-sgml.zip: $(SRC)
|
||||
$(ZIP) -l $(OUT_NAME)-sgml.zip $(SRC)
|
||||
$(OUT_NAME).sgml.gz: $(SRC)
|
||||
$(GZIP) -cf $(SRC) > $(OUT_NAME).sgml.gz
|
||||
|
||||
$(DE_OUT_NAME)-sgml.zip: $(DE_SRC)
|
||||
$(ZIP) -l $(DE_OUT_NAME)-sgml.zip $(DE_SRC)
|
||||
$(DE_OUT_NAME).sgml.gz: $(DE_SRC)
|
||||
$(GZIP) -cf $(DE_SRC) > $(DE_OUT_NAME).sgml.gz
|
||||
|
||||
|
||||
# Compress html
|
||||
$(OUT_NAME)-html.zip: $(OUT_NAME).html
|
||||
$(ZIP) -l $(OUT_NAME)-html.zip \
|
||||
$(OUT_NAME).html $(OUT_NAME)-[0-9].html $(OUT_NAME)-[0-9][0-9].html
|
||||
$(OUT_NAME).html.tar.gz: $(OUT_NAME).html
|
||||
$(TAR) cf $(OUT_NAME).html.tar \
|
||||
$(OUT_NAME).html $(OUT_NAME)-[0-9].html $(OUT_NAME)-[0-9][0-9].html
|
||||
$(GZIP) -f $(OUT_NAME).html.tar
|
||||
|
||||
$(DE_OUT_NAME)-html.zip: $(DE_OUT_NAME).html
|
||||
$(ZIP) -l $(DE_OUT_NAME)-html.zip \
|
||||
$(DE_OUT_NAME).html $(DE_OUT_NAME)-[0-9].html $(DE_OUT_NAME)-[0-9][0-9].html
|
||||
$(DE_OUT_NAME).html.tar.gz: $(DE_OUT_NAME).html
|
||||
$(TAR) cf $(DE_OUT_NAME).html.tar \
|
||||
$(DE_OUT_NAME).html $(DE_OUT_NAME)-[0-9].html $(DE_OUT_NAME)-[0-9][0-9].html
|
||||
$(GZIP) -f $(DE_OUT_NAME).html.tar
|
||||
|
||||
|
||||
# Compress txt
|
||||
$(OUT_NAME)-txt.zip: $(OUT_TXT)
|
||||
$(ZIP) -l $(OUT_NAME)-txt.zip $(OUT_TXT)
|
||||
$(OUT_NAME).txt.gz: $(OUT_TXT)
|
||||
$(GZIP) -cf $(OUT_TXT) > $(OUT_NAME).txt.gz
|
||||
|
||||
$(DE_OUT_NAME)-txt.zip: $(DE_OUT_TXT)
|
||||
$(ZIP) -l $(DE_OUT_NAME)-txt.zip $(DE_OUT_TXT)
|
||||
$(DE_OUT_NAME).txt.gz: $(DE_OUT_TXT)
|
||||
$(GZIP) -cf $(DE_OUT_TXT) > $(DE_OUT_NAME).txt.gz
|
||||
|
||||
|
||||
# *** General Stuff ***
|
||||
|
||||
# Install output files
|
||||
install: all
|
||||
if [ -n "$(DESTDIR)$(TARGET_DIR)" ]; then \
|
||||
$(INSTALL) -m 0755 -d $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(SRC) $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(OUT_TXT) $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(OUT_NAME).html $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(OUT_NAME)-[0-9].html $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(OUT_NAME)-[0-9][0-9].html $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(DE_SRC) $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(DE_OUT_TXT) $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(DE_OUT_NAME).html $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(DE_OUT_NAME)-[0-9].html $(DESTDIR)$(TARGET_DIR); \
|
||||
$(INSTALL) -m 0644 $(DE_OUT_NAME)-[0-9][0-9].html $(DESTDIR)$(TARGET_DIR); \
|
||||
fi
|
||||
|
||||
# Un-install output files
|
||||
uninstall:
|
||||
set -e; \
|
||||
if [ -n "$(TARGET_DIR)" ]; then \
|
||||
cd $(DESTDIR)$(TARGET_DIR); \
|
||||
rm -f $(SRC) ; \
|
||||
rm -f $(OUT_TXT) ; \
|
||||
if [ -e $(OUT_NAME).html ]; then rm -f $(OUT_NAME).html; fi; \
|
||||
for i in $(OUT_NAME)-[0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done ; \
|
||||
for i in $(OUT_NAME)-[0-9][0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done ; \
|
||||
rm -f $(DE_SRC) ; \
|
||||
rm -f $(DE_OUT_TXT) ; \
|
||||
if [ -e $(DE_OUT_NAME).html ]; then rm -f $(DE_OUT_NAME).html; fi; \
|
||||
for i in $(DE_OUT_NAME)-[0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done ; \
|
||||
for i in $(DE_OUT_NAME)-[0-9][0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done ; \
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
clean:
|
||||
if [ -e *~ ]; then rm *~; fi
|
||||
if [ -e \#* ]; then rm \#*; fi
|
||||
if [ -e *.orig ]; then rm *.orig; fi
|
||||
set -e; \
|
||||
if [ -e $(OUT_TXT) ]; then rm -f $(OUT_TXT); fi; \
|
||||
if [ -e $(OUT_NAME)-sgml.zip ]; then rm -f $(OUT_NAME)-sgml.zip; fi; \
|
||||
if [ -e $(OUT_NAME).sgml.gz ]; then rm -f $(OUT_NAME).sgml.gz; fi; \
|
||||
if [ -e $(OUT_NAME)-html.zip ]; then rm -f $(OUT_NAME)-html.zip; fi; \
|
||||
if [ -e $(OUT_NAME).html.tar.gz ]; then rm -f $(OUT_NAME).html.tar.gz; fi; \
|
||||
if [ -e $(OUT_NAME)-txt.zip ]; then rm -f $(OUT_NAME)-txt.zip; fi; \
|
||||
if [ -e $(OUT_NAME).txt.gz ]; then rm -f $(OUT_NAME).txt.gz; fi; \
|
||||
if [ -e $(OUT_NAME).html ]; then rm -f $(OUT_NAME).html; fi; \
|
||||
for i in $(OUT_NAME)-[0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done
|
||||
for i in $(OUT_NAME)-[0-9][0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done
|
||||
if [ -e $(DE_OUT_TXT) ]; then rm -f $(DE_OUT_TXT); fi; \
|
||||
if [ -e $(DE_OUT_NAME)-sgml.zip ]; then rm -f $(DE_OUT_NAME)-sgml.zip; fi; \
|
||||
if [ -e $(DE_OUT_NAME).sgml.gz ]; then rm -f $(DE_OUT_NAME).sgml.gz; fi; \
|
||||
if [ -e $(DE_OUT_NAME)-html.zip ]; then rm -f $(DE_OUT_NAME)-html.zip; fi; \
|
||||
if [ -e $(DE_OUT_NAME).html.tar.gz ]; then rm -f $(DE_OUT_NAME).html.tar.gz; fi; \
|
||||
if [ -e $(DE_OUT_NAME)-txt.zip ]; then rm -f $(DE_OUT_NAME)-txt.zip; fi; \
|
||||
if [ -e $(DE_OUT_NAME).txt.gz ]; then rm -f $(DE_OUT_NAME).txt.gz; fi; \
|
||||
if [ -e $(DE_OUT_NAME).html ]; then rm -f $(DE_OUT_NAME).html; fi; \
|
||||
for i in $(DE_OUT_NAME)-[0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done
|
||||
for i in $(DE_OUT_NAME)-[0-9][0-9].html ; do \
|
||||
rm -f $$i ; \
|
||||
done
|
||||
|
||||
config:
|
||||
./configure
|
||||
|
||||
Makefile: Makefile.in config.status
|
||||
./config.status
|
||||
|
||||
config.status: configure
|
||||
./config.status --recheck
|
||||
|
||||
distclean: clean
|
||||
rm -f config.* Makefile
|
34
FAQ/README
34
FAQ/README
|
@ -1,34 +0,0 @@
|
|||
In this directory you find the FAQ for isdn4linux.
|
||||
It contains answers for those questions that are frequently asked in the
|
||||
mailing list/news group for isdn4linux (and some more).
|
||||
|
||||
The FAQ is now maintained in English. A German version exists, but updates
|
||||
to the English version are only translated on a best effort basis.
|
||||
To see the latest information always use the English version.
|
||||
|
||||
The source code of the FAQ is formatted in SGML, which can easily be
|
||||
converted by using:
|
||||
sgml2txt i4lfaq.sgml
|
||||
or
|
||||
sgml2html i4lfaq.sgml
|
||||
|
||||
To download converted versions, or see the latest version online,
|
||||
visit the homepage of the FAQ:
|
||||
|
||||
http://www.mhessler.de/i4lfaq.html
|
||||
|
||||
or visit:
|
||||
|
||||
http://www.isdn4linux.de/faq/
|
||||
|
||||
|
||||
"i4lfaq.sgml" is the source code for all versions of the FAQ.
|
||||
|
||||
"_example" and "_howto" contain postings from the mailing list/news group that
|
||||
appeared helpful/interesting to me. They may be helpful to you, but be careful:
|
||||
THEY ARE ALMOST SURELY OUTDATED BY NOW!
|
||||
|
||||
See the FAQ for more information about the author of the FAQ.
|
||||
|
||||
Matthias Hessler <hessler@isdn4linux.de>
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
From: Torsten Hentschel <Torsten.Hentschel@DInet.de> Subject: Re: Now i found something else to wonder about.. (was: Re: options files) To: isdn4linux@hub-wue.franken.de
|
||||
Date: Thu, 24 Oct 1996 22:47:17 +0200 (MET DST) Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
Hello Emil & Mogens!
|
||||
|
||||
> Hello Mogens,
|
||||
>
|
||||
> You wrote:
|
||||
> > isdnctrl addif ippp0
|
||||
> > isdnctrl pppbind ippp0
|
||||
> > ifconfig ippp0 193.89.84.10 p-t-p 193.89.84.11
|
||||
---
|
||||
> > route add -net 194.192.159.0 metric 1 netmask 255.255.255.224 ippp0
|
||||
> > ipppd user XXX1 /dev/ippp0 193.89.84.10:193.89.84.11 file
|
||||
> > /etc/ppp/options.ippp0
|
||||
>
|
||||
> > isdnctrl addif ippp1
|
||||
> > isdnctrl pppbind ippp1
|
||||
> > ifconfig ippp0 193.89.84.10 p-t-p 193.89.84.13
|
||||
--- why do you repeat the ifconfig?
|
||||
probably it should be "ippp1" here?
|
||||
> > route add -net 192.168.1.0 metric 1 netmask 255.255.255.0 ippp1
|
||||
> > ipppd user XXX2 /dev/ippp1 193.89.84.10:193.89.84.11 file
|
||||
> > /etc/ppp/options.ippp1
|
||||
>
|
||||
> Compare the two ifconfig commands, they are for the same interface.
|
||||
> And AFAIK the two interfaces need different ip-adresses.
|
||||
|
||||
With this I do not agree. It is simply possible to give two interfaces the same local ip address. You may even establish two routes on them. But only the first one found in the routing table will be used by the kernel. So the other route won't have any effect.
|
||||
|
||||
Configuring two interfaces with the same local IP address does make sense if you want to use as less IP adresses as possible (very honorable as long as IPv6 is not common practice).
|
||||
An interface IP-Adress is used by the kernel to give outgoing packets (not the forwarded packets) a sender IP address within the IP header.
|
||||
|
||||
To make the IP address 193.89.84.10 (as used in the above example) pingable I would suggest the following (changes ar marked at the right margin):
|
||||
|
||||
| ifconfig dummy0 193.89.84.10 # module has to be loaded before | route add -host 193.89.84.10 # only to have 193.89.84.10 reachable
|
||||
# all the time
|
||||
|
||||
isdnctrl addif ippp0
|
||||
| ifconfig ippp0 down # to make it exclusively bindable
|
||||
isdnctrl pppbind ippp0
|
||||
| ifconfig ippp0 193.89.84.10 p-t-p 193.89.84.11 up | route add -host 193.89.84.11 metric 1 ippp0 | route add -net 194.192.159.0 metric 1 \ | netmask 255.255.255.224 gw 193.89.84.11
|
||||
ipppd user XXX1 /dev/ippp0 193.89.84.10:193.89.84.11 \
|
||||
file /etc/ppp/options.ippp0
|
||||
|
||||
isdnctrl addif ippp1
|
||||
| ifconfig ippp1 down # to make it exclusively bindable
|
||||
isdnctrl pppbind ippp1
|
||||
| ifconfig ippp1 193.89.84.10 p-t-p 193.89.84.13 up | route add -host 193.89.84.13 metric 1 ippp0 | route add -net 192.168.1.0 metric 1 \ | netmask 255.255.255.0 gw 193.89.84.13
|
||||
ipppd user XXX2 /dev/ippp1 193.89.84.10:193.89.84.11 \
|
||||
file /etc/ppp/options.ippp1
|
||||
|
||||
|
||||
You may even try the following to "emulate" cisco's dialer rotary group where you may put several BRIs (basic rate interfaces = ISDN S0 [gr.]) into one netmask. Therefore the example would look like (changes aren't marked any more; completely different):
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
# assuming, we are using a network of
|
||||
# 193.89.84.0/255.255.255.240
|
||||
# for a dial up server where
|
||||
# 193.89.84.1 is the IP for the server and
|
||||
# 193.89.84.2-14 are the addresses for remote interfaces.
|
||||
|
||||
ifconfig dummy0 193.89.84.1 # module has to be loaded before
|
||||
route add -host 193.89.84.1 # only to have 193.89.84.1 reachable
|
||||
# all the time
|
||||
|
||||
USER_ippp0="XXX1"
|
||||
RMTNET_ippp0=194.192.159.0
|
||||
RMTMSK_ippp0=255.255.255.224
|
||||
|
||||
USER_ippp1="XXX2"
|
||||
RMTNET_ippp1=192.168.1.0 # masquerading is great!
|
||||
RMTMSK_ippp1=255.255.255.0
|
||||
|
||||
USER_ippp2="XXX3"
|
||||
RMTNET_ippp2="" # you may leave 'em blank
|
||||
RMTNET_ippp2="" # if there is no remote net
|
||||
|
||||
[...] # fill out to your needs
|
||||
|
||||
for x in 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
do
|
||||
IFNAME="ippp$[$x-2]"
|
||||
isdnctrl addif $IFNAME
|
||||
ifconfig $IFNAME down # to make it exclusively bindable
|
||||
isdnctrl pppbind $IFNAME
|
||||
ifconfig $IFNAME 193.89.84.1 netmask 255.255.255.240 up
|
||||
route add -host 193.89.84.$x metric 1 $IFNAME
|
||||
eval NET="\${RMTNET_${IFNAME}}"
|
||||
eval MSK="\${RMTNET_${IFNAME}}"
|
||||
if [ -n "$NET" -a -n "$MSK" ]
|
||||
then
|
||||
route add -net $NET metric 1 netmask $MSK gw 193.89.84.$x
|
||||
fi
|
||||
eval USER="\${USER_${IFNAME}}"
|
||||
ipppd user "$USER" /dev/$IFNAME 193.89.84.1:193.89.84.$x \
|
||||
file /etc/ppp/options.$IFNAME
|
||||
done
|
||||
|
||||
|
||||
No warranty, it's untested.
|
||||
But please yell at me (politely) if I'm wrong.
|
||||
|
||||
|
||||
Regards,
|
||||
|
||||
Torsten
|
||||
|
||||
|
||||
--
|
||||
/\ Delta Internet GmbH / \ DI Delta Internet GmbH von-Siemens-Str. 12 /____\ Netzwerkdienst & Vertrieb 59757 Arnsberg
|
||||
ALLES NUR AUS LINUX Tel. +49 2932 916 132 Fax 191 --------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,71 +0,0 @@
|
|||
From: Torsten Hentschel <Torsten.Hentschel@DInet.de> Subject: Re: IPFWADM
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Thu, 7 Nov 1996 11:03:15 +0100 (MET) Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
Hallo!
|
||||
|
||||
Vielleicht kann ich helpfen ;-)
|
||||
Zuerstmal lass mich wiederholen, ob ich Deine Frage richtig verstanden habe. Mal angenommen Du hast auf den drei Netzwerk- Karten jeweils ein Class-C -Netz und hast die Dinger so etwa wie folgt konfiguriert:
|
||||
|
||||
ifconfig eth0 194.77.88.7 netmask 255.255.255.0 broadcast 194.77.88.255
|
||||
ifconfig eth1 194.77.89.4 netmask 255.255.255.0 broadcast 194.77.89.255
|
||||
ifconfig eth2 194.77.90.2 netmask 255.255.255.0 broadcast 194.77.90.255
|
||||
route add -net 194.77.88.0 eth0
|
||||
route add -net 194.77.89.0 eth1
|
||||
route add -net 194.77.90.0 eth2
|
||||
|
||||
In dieser Weise wuerde ja nun schlichtweg _alles_ von einem Interface zum anderen geroutet werden und Dein Rechner wie ein Gateway funktionieren.
|
||||
Du willst, so habe ich es verstanden, aber nur einen ganz bestimmten Rechner zwischen den Interfaces "durchlassen" waehrend Dein "Gateway" aber selber alle Rechner erreichen kann und alle Rechner Dein "Gateway" erreichen koennen.
|
||||
Nehmen wir mal an, der Rechner an eht0, der auf eth1 zugreifen koennen soll, habe die IP-Adresse 194.77.88.15.
|
||||
|
||||
Die professionelle Vorgehensweise ist dann:
|
||||
|
||||
- Ausschallten der FORWARDING-Funktion im Kernel
|
||||
durch Neukompilieren
|
||||
|
||||
- Aufsetzen der folgenden Befehle für die Firewall:
|
||||
|
||||
ipfwadm -F -p deny # Routing zwischen den Interfaces
|
||||
# erstmal generell verbieten
|
||||
|
||||
ipfwadm -I -p accept # Input auf allen Interfaces erlauben
|
||||
# betrifft Pakete, die Dein Rechner
|
||||
# auf seinen Interfaces empfaengt
|
||||
|
||||
ipfwadm -O -p accept # Output auf allen Interfaces erlauben
|
||||
# betrifft alle Pakete, die Dein Rechner
|
||||
# selber erzeugt hat und an jemanden
|
||||
# senden will
|
||||
|
||||
ipfwadm -F -a accept -S 194.77.88.15/32 -D 194.77.90.0/24
|
||||
# Zuletzt wird explizit das Forwarding
|
||||
# zwischen dem Rechner auf eth0 und
|
||||
# allen Rechnern auf eth2 erlaubt.
|
||||
|
||||
Wenn Du keinen neuen Kernel kompilieren willst, geht das auch mit eingeschaltetem Forwarding im Kernel. Das ist dann aber nicht so sicher, da man mit etwas Koepfchen die Firewall dann umgehen kann.
|
||||
|
||||
Keine Garantie. Das Zeugs habe ich nicht ausprobiert. Muesste aber so klappen. - Bitte korrigiert mich, wenn ich falsch liege.
|
||||
|
||||
Gruesse,
|
||||
|
||||
Torsten
|
||||
|
||||
> Ich habe ein rechner mit 3 netzkarten ( eth0..eth2 ). Jetzt will ich mit
|
||||
> ipfwadm einen specielen rechner vom eth0 nach eth1 routen ( wie ein gateway ).
|
||||
>
|
||||
> Kann jemand mich helpfen?
|
||||
>
|
||||
>
|
||||
> ---------------------------------------------------
|
||||
> To remove yourself from this mailing list send
|
||||
> email to majordomo@hub-wue.franken.de containing
|
||||
> "unsubscribe isdn4linux <your_email_address>" in
|
||||
> the message body [-vg]
|
||||
>
|
||||
|
||||
|
||||
--
|
||||
http://www.DInet.de/
|
||||
/\ von-Siemens-Str. 12
|
||||
/ \ Delta Internet GmbH 59757 Arnsberg
|
||||
/ \ Netzwerkdienst & Vertrieb Tel. +49 2932 91 61 32 /______\ Fax. +49 2932 91 61 91 --------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,130 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA657358; Sun, 19 Jan 1997 20:25:57 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id UAA12262; Sun, 19 Jan 1997 20:26:59 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vm0iB-000oMsa; Sun, 19 Jan 97 18:07 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vm01Q-001ITHa; Sun, 19 Jan 97 17:23 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vm01B-001ITFE; Sun, 19 Jan 97 17:22 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vlzy1-000BikC; Sun, 19 Jan 97 17:19 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vm00S-001ITFE; Sun, 19 Jan 97 17:22 MET
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:856
|
||||
From: Rainer Birkenmaier <rainer@kirk.mop.uni-ulm.de>
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: Re: MPPP
|
||||
Date: 17 Jan 1997 01:11:27 GMT
|
||||
Organization: Die Wischmop-WG
|
||||
Lines: 90
|
||||
Message-Id: <5bmjjv$nt@kirk.mop.uni-ulm.de>
|
||||
References: <199701120958.LAA03553@santra.hut.fi>
|
||||
Reply-To: rbirkenm@hydra.informatik.uni-ulm.de
|
||||
Nntp-Posting-Host: freewayport27.extern.uni-ulm.de
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=US-ASCII
|
||||
Content-Transfer-Encoding: 8bit
|
||||
X-Newsreader: TIN [UNIX 1.3 unoff BETA release 961115]
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Hi !
|
||||
|
||||
Also bei mir funktioniert das "isdnctrl addlink ippp0" mit
|
||||
folgendem Skript prima:
|
||||
|
||||
---------- schnipp ----------
|
||||
|
||||
#!/bin/sh
|
||||
#
|
||||
# don't forget to edit the files
|
||||
# /etc/ppp/pap-secrets or
|
||||
# /etc/ppp/chap-secrets
|
||||
#
|
||||
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
|
||||
|
||||
LOCAL_NUMBER="123345"
|
||||
REMOTE_NUMBER="9876543"
|
||||
LOCAL_IP="134.60.7.70"
|
||||
REMOTE_IP="134.60.7.102"
|
||||
DEVICE="ippp0"
|
||||
TELES_ID="line0"
|
||||
USER="userName"
|
||||
|
||||
# additional for channel bundling:
|
||||
DEVICE1="ippp128"
|
||||
|
||||
VERSION=`cat /proc/version | awk '{ print $3 }' `
|
||||
|
||||
# when setting the environment variable MODPATH you
|
||||
# can omit the full path.
|
||||
SYSPATH="/sbin/"
|
||||
|
||||
telesctrl $TELES_ID 1 4 # enable verbose '4' mode
|
||||
|
||||
isdnctrl addif $DEVICE # Create new interface 'DEVICE'
|
||||
isdnctrl addphone $DEVICE out $REMOTE_NUMBER # Set outgoung phone-number
|
||||
isdnctrl eaz $DEVICE $LOCAL_NUMBER # Set local EAZ ..
|
||||
isdnctrl l2_prot $DEVICE hdlc # for sync PPP: set Level 2 to HDLC
|
||||
isdnctrl l3_prot $DEVICE trans # not really necessary, 'trans' is default
|
||||
isdnctrl encap $DEVICE syncppp # encap the IP Pakets in PPP frames
|
||||
isdnctrl huptimeout $DEVICE 300 # Hangup-Timeout is 300 sec. -> 5 min
|
||||
isdnctrl chargehup $DEVICE off # Hangup before next Charge-Info
|
||||
isdnctrl secure $DEVICE on # Accept only configured phone-number
|
||||
|
||||
# additional for channel bundling:
|
||||
isdnctrl addslave $DEVICE $DEVICE1 # Create new slave interface 'DEVICE1'
|
||||
isdnctrl addphone $DEVICE1 out $REMOTE_NUMBER # Set outgoung phone-number
|
||||
isdnctrl eaz $DEVICE1 $LOCAL_NUMBER # Set local EAZ ..
|
||||
isdnctrl l2_prot $DEVICE1 hdlc # for sync PPP: set Level 2 to HDLC
|
||||
isdnctrl l3_prot $DEVICE1 trans # not really necessary, 'trans' is default
|
||||
isdnctrl encap $DEVICE1 syncppp # encap the IP Pakets in PPP frames
|
||||
isdnctrl huptimeout $DEVICE1 300 # Hangup-Timeout is 300 sec. -> 5 min
|
||||
isdnctrl chargehup $DEVICE1 off # Hangup before next Charge-Info
|
||||
isdnctrl secure $DEVICE1 on # Accept only configured phone-number
|
||||
|
||||
|
||||
|
||||
|
||||
ifconfig $DEVICE -arp $LOCAL_IP pointopoint $REMOTE_IP metric 1
|
||||
route add default $DEVICE
|
||||
route add default gw 134.60.7.98
|
||||
|
||||
ipppd user $USER \
|
||||
/dev/ippp0 /dev/ippp1 /dev/ippp2
|
||||
|
||||
---------- schnapp ----------
|
||||
|
||||
Ich hab dabei noch folgendes in /etc/ppp/options stehen:
|
||||
|
||||
---------- schnipp ----------
|
||||
debug
|
||||
+mp
|
||||
noipdefault
|
||||
remotename highway
|
||||
mru 1524
|
||||
ipcp-accept-local ipcp-accept-remote
|
||||
lock
|
||||
defaultroute
|
||||
-bsdcomp
|
||||
-pc
|
||||
-ac
|
||||
---------- schnapp ----------
|
||||
|
||||
Ich hoffe ich konnte helfen!
|
||||
Bye ... Rainer!
|
||||
PS: ich hab hier uebrigens 'ne Teles/S0 16.3
|
||||
--
|
||||
<< e-mail: rbirkenm@hydra.informatik.uni-ulm.de >>
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,156 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA76880; Sat, 30 Nov 1996 13:44:05 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id NAA01959; Sat, 30 Nov 1996 13:44:57 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vTliY-000oIPa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlho-000Boba; Sat, 30 Nov 96 10:27 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vTlil-001IYWa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vTlii-001IYVE; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from giovanni.rhein-neckar.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlge-000BobC; Sat, 30 Nov 96 10:26 MET
|
||||
Message-Id: <m0vTlgM-000rArC@giovanni.rhein-neckar.de>
|
||||
From: girardi@giovanni.rhein-neckar.de (Norbert J. Girardi)
|
||||
Subject: Re: routes?
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Sat, 30 Nov 1996 10:25:58 +0100 (MET)
|
||||
Cc: uwe.tetzlaff@t-online.de
|
||||
In-Reply-To: <m0vTby7-0000fJC@ermail02.btx.dtag.de> from "Uwe Tetzlaff" at Nov 29, 96 10:11:00 pm
|
||||
X-Mailer: ELM [version 2.4 PL24]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
>
|
||||
> Moins..
|
||||
>
|
||||
> Ich hab hier in der Firma 2 Rechner W95 192.168.254.2 Ne2000
|
||||
> LinuX 192.168.254.1 3Com 509
|
||||
|
||||
> Zu Hause habe ich einen Rechner LinuX 192.168.255.1 Teles S0-16.3
|
||||
>
|
||||
> Also zu meinem Problem : ich teste mit ping die Verbindung :
|
||||
>
|
||||
> von LinuX zu Hause <-> LinuX Firma via isdn0 = geht.
|
||||
> von W95 Firma <-> LinuX Firma via eth0 = geht.
|
||||
> von W95 Firma <-> LinuX zu Hause via eth0 -> isdn0 = geht nicht !
|
||||
> von LinuX zu Hause <-> W95 Firma via isdn0 -> eth0 = geht nicht !
|
||||
>
|
||||
>
|
||||
> Sicherlich voellig off topic denn ich tippe auf ein Problem bei meinen routes.
|
||||
>
|
||||
Es waere sicher hilfreich gewesen wenn Du die 'routes' mitgeschickt
|
||||
haettest ;-)
|
||||
|
||||
OK, versuchen wir's trotzdem mal.
|
||||
|
||||
Nennen wir Linux at home -> lihome = 192.168.255.1 ,
|
||||
Linux at work -> liwork = 192.168.254.1 ,
|
||||
W95 at work -> work95 = 192.168.254.2 .
|
||||
|
||||
Also, bei mir wuerde die '/etc/hosts' auf allen Rechnern _so_ aussehenen:
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
# hosts This file describes a number of hostname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
# On small systems, this file can be used instead of a
|
||||
# "named" name server. Just add the names, addresses
|
||||
# and any aliases to this file...
|
||||
#
|
||||
|
||||
# For loopbacking.
|
||||
127.0.0.1 localhost
|
||||
|
||||
192.168.255.1 lihome
|
||||
|
||||
192.168.254.1 liwork
|
||||
192.168.254.2 work95
|
||||
|
||||
# End of hosts.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Die '/etc/networks' auf allen Rechnern :
|
||||
========================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
#
|
||||
# networks This file describes a number of netname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
#
|
||||
|
||||
loopback 127.0.0.0
|
||||
homenet 192.168.255.0
|
||||
worknet 192.168.254.0
|
||||
|
||||
# End of networks.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Ich benutze fuer die statischen routes eine Datei in /etc/rc.d
|
||||
in die ich alle routes eintrage, und die aus /etc/rc.d/rc.inet1
|
||||
aufgerufen wird.
|
||||
|
||||
Die /etc/rc.d/rc.routes auf lihome:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig isdn0 lihome pointopoint liwork
|
||||
/sbin/route add liwork isdn0
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alles was raus soll geht per default ueber isdn0
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
Die /etc/rc.d/rc.routes auf liwork:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 liwork
|
||||
/sbin/route add -net worknet eth0
|
||||
# Alles was von worknet kommt und nach worknet soll
|
||||
# muss ueber eth0
|
||||
|
||||
/sbin/ifconfig isdn0 liwork pointopoint lihome
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alle anderen gehen per default ueber isdn0
|
||||
# !!!! Klappt nur wenn auch der Kernel mit
|
||||
# IP FORWARDING/GATEWAYING kompiliert wurde !!!!
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Fuer W95 tue ich mal so als sei es ein Linux, d.h.
|
||||
die Uebersetzung in W95 Syntax bleibt dem Leser ueberlassen :-)
|
||||
|
||||
Die /etc/rc.d/rc.routes auf work95:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 work95
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork eth0
|
||||
# alles geht per default ueber eth0 nach liwork
|
||||
# der sorgt dann fuer die Verteilung
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
|
||||
- Norbert
|
||||
|
||||
--
|
||||
Norbert J. Girardi < girardi@giovanni.rhein-neckar.de >
|
||||
Voice: +49 621 493417 (h) +49 621 381-3260 (w)
|
||||
Neckarstr. 17, D-68549 Ilvesheim, Germany
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,115 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA773032; Wed, 4 Dec 1996 19:25:55 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id TAA04351; Wed, 4 Dec 1996 19:27:00 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vVFcT-000oJ0a; Wed, 4 Dec 96 12:36 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vVFZi-000Boma; Wed, 4 Dec 96 12:33 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vVFbR-001IV5a; Wed, 4 Dec 96 12:35 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vVFbO-001IV3E; Wed, 4 Dec 96 12:34 MET
|
||||
Received: from dino.nus.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vVFYU-000BomC; Wed, 4 Dec 96 12:31 MET
|
||||
Received: from localhost (nils@localhost [127.0.0.1]) by dino.nus.de (8.7.6/8.7.3) with ESMTP id MAA09043 for <isdn4linux@hub-wue.franken.de>; Wed, 4 Dec 1996 12:35:02 +0100
|
||||
Date: Wed, 4 Dec 1996 12:35:02 +0100 (MET)
|
||||
From: Nils Rennebarth <nils@nus.de>
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: ISDN-Problem
|
||||
In-Reply-To: <199612031939.UAA07539@mail.germanlloyd.de>
|
||||
Message-Id: <Pine.LNX.3.95.961204114817.1062I-100000@dino.nus.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
On Tue, 3 Dec 1996, Martin Bauer wrote:
|
||||
|
||||
>Moin moin,
|
||||
>
|
||||
>ich habe da ein kleines Problem:
|
||||
>
|
||||
[Emma und Gegenstelle unterhalten sich prima, aber von keinem Rechner im
|
||||
Netz der Gegenstelle geht es zu Emma]
|
||||
Emma:
|
||||
eth0 inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
|
||||
isdn0 inet addr:192.168.11.1 P-t-P:192.168.11.3
|
||||
>
|
||||
>Kernel IP routing table
|
||||
>Destination Gateway Genmask Flags Metric Ref Use =
|
||||
Iface
|
||||
>172.20.1.4 0.0.0.0 255.255.255.255 UH 0 0 11 =
|
||||
isdn0
|
||||
>192.168.11.3 0.0.0.0 255.255.255.255 UH 0 0 3 =
|
||||
isdn0
|
||||
>192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 =
|
||||
eth0
|
||||
|
||||
>0.0.0.0 192.168.11.3 0.0.0.0 UG 0 0 2 =
|
||||
isdn0
|
||||
>
|
||||
>
|
||||
>
|
||||
>Die Gegenstelle:
|
||||
>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
|
||||
eth0 inet addr:172.20.1.4 Bcast:172.20.255.255 Mask:255.255.0.0
|
||||
isdn0 inet addr:192.168.11.3 P-t-P:192.168.11.1 Mask:255.255.255.0
|
||||
|
||||
>Kernel IP routing table
|
||||
>Destination Gateway Genmask Flags Metric Ref Use =
|
||||
Iface
|
||||
>192.168.11.1 0.0.0.0 255.255.255.255 UH 0 0 15 =
|
||||
isdn0
|
||||
>192.168.10.0 192.168.11.1 255.255.255.0 UG 0 0 3 =
|
||||
isdn0
|
||||
>172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 39 =
|
||||
eth0
|
||||
|
||||
>0.0.0.0 172.20.1.1 0.0.0.0 UG 0 0 3 =
|
||||
eth0
|
||||
Es ist kein ISDN Problem, es ist ein routing Problem.
|
||||
|
||||
"Gegenstelle" bekommt =FCber ISDN ein Paket mit 192.168.11.3 als Gateway,
|
||||
wei=DF aber routing-technisch nicht, das es das selber ist.
|
||||
!! Allein durch Einrichten eines Point-to-Point Interfaces
|
||||
!! wei=DF ein Rechner noch nicht, da=DF IP-Pakete an die auf seiner Seite
|
||||
!! konfigurierte Adresse auch an ihn sind.
|
||||
|
||||
Mit anderen Worten: es fehlt auf "Gegenstelle" der Befehl
|
||||
route add -host 192.168.11.3 dev isdn0
|
||||
|
||||
N.B.: Warum machst Du es nicht einfacher, wenn Du Point-to-Point routen
|
||||
verwendest:
|
||||
|
||||
auf Emma:
|
||||
ifconfig isdn0 192.168.10.1 pointopoint 172.20.1.4 -arp -broadcast
|
||||
route add -host 172.20.1.4
|
||||
route add default gw 172.20.1.4
|
||||
|
||||
auf Gegenstelle:
|
||||
ifconfig isdn0 172.20.1.4 pointopoint 192.168.10.1 -arp -broadcast
|
||||
route add -host 192.168.10.1
|
||||
route add -net 192.168.10.0 gw 192.168.10.1
|
||||
|
||||
Nils
|
||||
|
||||
--
|
||||
\ / | Nils Rennebarth
|
||||
--* WINDOWS 42 *-- | Schillerstr. 61=20
|
||||
/ \ | 37083 G=F6ttingen
|
||||
| ++49-551-71626
|
||||
Micro$oft's final answer | http://www.nus.de/~nils
|
||||
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,99 +0,0 @@
|
|||
Return-Path: owner-isdn4linux@hub-wue.franken.de
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA50180; Sat, 15 Mar 1997 01:13:08 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id BAA17710; Sat, 15 Mar 1997 01:14:40 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0w5dUP-000oRUa; Fri, 14 Mar 97 21:22 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0w5dSE-001Iada; Fri, 14 Mar 97 21:19 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0w5dSA-001IacE; Fri, 14 Mar 97 21:19 MET
|
||||
Received: from goofy.chess.langenfeld.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0w5dSd-000BltC; Fri, 14 Mar 97 21:20 MET
|
||||
Received: (from tom@localhost) by goofy.chess.langenfeld.de (8.7.5/8.7.3) id VAA00934 for isdn4linux@hub-wue.franken.de; Fri, 14 Mar 1997 21:19:37 +0100
|
||||
From: Thomas Heiling <tom@goofy>
|
||||
Message-Id: <199703142019.VAA00934@goofy.chess.langenfeld.de>
|
||||
Subject: MASQ: TCP/UDP checksum errors SOLVED!
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Fri, 14 Mar 1997 21:19:35 +0100 (MET)
|
||||
X-Mailer: ELM [version 2.4 PL25 PGP2]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=US-ASCII
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
|
||||
Hello!
|
||||
after some tweaking and testing I have solved the problem with
|
||||
the checksum errors. ( Apparently and hopefully, up to now no
|
||||
more error messages)
|
||||
Because of the slowness of my computer (thanks Fritz!) I have done
|
||||
two things:
|
||||
a) changed the IRQ from 15 to 5 for the Teles card -> the Teles is now
|
||||
on the Master controller
|
||||
b) got irqtune and changed the priority for the teles card to maximum
|
||||
in favour of disk. ( irqtune 5 )
|
||||
With this two changes I was able to cure my errors from HiSax:
|
||||
MASQ: failed TCP/UDP checksum from xx.xx.xx.xx!
|
||||
for the Teles-driver the following error messages:
|
||||
Teles: HSCX RDO mode=2
|
||||
HSCX B EXIR 40
|
||||
Possibly the first solution would be sufficient, but what the heck,
|
||||
don't touch a running system.
|
||||
|
||||
The original message is included below and yes I know my reply address
|
||||
is wrong and should be heiling@online-club.de. I will fix
|
||||
this really soon now, if my new Debian CD has arrived.
|
||||
Thanks
|
||||
Dr. Thomas Heiling
|
||||
>
|
||||
> Newsgroups: comp.os.linux.networking
|
||||
> Subject: MASQ:failed TCP/UDP checksum ?
|
||||
> Reply-To: heiling@mail.online-club.de
|
||||
> Followup-To:
|
||||
> Keywords:
|
||||
> Summary:
|
||||
>
|
||||
> Hello!
|
||||
> I am running Linux 2.0.29 with the isdnlinux-patches and
|
||||
> with the hisax driver. I have configured this system as a router,
|
||||
> that means with IP_FIREWALL and IP_MASQUERADING enabled.
|
||||
> The connectivity from the Linux computer is o.k. and the first time
|
||||
> the private net "behind " the firewall had access to the internet.
|
||||
> If I start the Windows Microsoft Explorer from another machine and
|
||||
> do some surfing everything went fine.
|
||||
> But after some time I get something like this:
|
||||
> Mar 8 20:42:24 goofy kernel: MASQ: failed TCP/UDP checksum from
|
||||
> 194.77.170.27!
|
||||
> and the Windows computer hungs up.
|
||||
> The first thought was, that the "Optimize as router not as host" config
|
||||
> is not 100% error proven, so I compiled a new kernel without this option
|
||||
> and tried again. But the same error message comes up again.
|
||||
> Thanks for any pointers and help
|
||||
>
|
||||
> My System:
|
||||
> 386/40 Mhz + CoPro, 20 MB RAM, 2 * 520 MB harddisk
|
||||
> Teles 16.3 Isdn card ( with HiSax 2.0 + Patch 1-3),
|
||||
> Adaptec 1542 + CD-Rom
|
||||
> The system was first a Debian 1.1 System, but now I had done some
|
||||
> tweaking and compiled/installed new versions.
|
||||
> The System is connected via ISDN/PPP and the Firewall is up.
|
||||
>
|
||||
>
|
||||
> Dr. Thomas Heiling
|
||||
> email: heiling@online-club.de
|
||||
>
|
||||
> ---------------------------------------------------
|
||||
> To remove yourself from this mailing list send
|
||||
> email to majordomo@hub-wue.franken.de containing
|
||||
> "unsubscribe isdn4linux <your_email_address>" in
|
||||
> the message body [-vg]
|
||||
>
|
||||
>
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,121 +0,0 @@
|
|||
Return-Path: owner-isdn4linux@hub-wue.franken.de
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA24066; Tue, 11 Mar 1997 18:40:54 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id SAA21704; Tue, 11 Mar 1997 18:42:29 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0w4PZW-000oJva; Tue, 11 Mar 97 12:18 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0w4PXH-001IS9a; Tue, 11 Mar 97 12:16 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0w4PXB-001IS8E; Tue, 11 Mar 97 12:15 MET
|
||||
Received: from kermit.mbo.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0w4PYD-000BmGC; Tue, 11 Mar 97 12:17 MET
|
||||
Received: (from lars@localhost) by kermit.mbo.de (8.7.5/8.6.12) id MAA28434 for isdn4linux@hub-wue.franken.de; Tue, 11 Mar 1997 12:18:02 +0100
|
||||
From: Lars Maier <lars@mbo.de>
|
||||
Message-Id: <199703111118.MAA28434@kermit.mbo.de>
|
||||
Subject: Nochmal Cisco 1003<->i4l
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Tue, 11 Mar 1997 12:18:02 +0100 (MET)
|
||||
X-Mailer: ELM [version 2.4 PL25]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=iso-8859-1
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
|
||||
Hallo,
|
||||
leider habe ich immernoch folgendes Problem:
|
||||
Eine Cisco 1003 soll sich auf einer Linux-Kiste ohne PPP einwaehlen.
|
||||
Die Cisco erkennt die Routen nicht nach dem booten, sondern erst
|
||||
nach
|
||||
clear interface bri0
|
||||
oder
|
||||
einem Anruf auf einer msm des NT's, an dem die Cisco haengt
|
||||
oder Zustecken eines 2. Geraetes auf den SO + damit telefonieren.
|
||||
Anschliessend tut die Cisco was sie soll.
|
||||
Ist bri0 mit encapsulation PPP Konfiguriert, erkennt die Cisco die
|
||||
Routen ohne Hilfe.
|
||||
Ios Version ist: 11.1(6)
|
||||
Hat jemand eine Idee, wie sich dieses Problem loesen laesst?
|
||||
|
||||
Gruss
|
||||
|
||||
Lars
|
||||
|
||||
---------
|
||||
Konfiguration, show ip route :
|
||||
---------
|
||||
|
||||
Using 912 out of 7506 bytes
|
||||
!
|
||||
version 11.1
|
||||
no service pad
|
||||
service udp-small-servers
|
||||
service tcp-small-servers
|
||||
!
|
||||
hostname kraemer-1
|
||||
!
|
||||
boot system flash
|
||||
boot system host 255.255.255.255
|
||||
enable secret 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
enable password XXXXXX
|
||||
!
|
||||
ip subnet-zero
|
||||
isdn switch-type basic-net3
|
||||
!
|
||||
interface Ethernet0
|
||||
ip address 194.221.188.225 255.255.255.240
|
||||
!
|
||||
interface BRI0
|
||||
ip address 194.221.188.17 255.255.255.252
|
||||
bandwidth 64
|
||||
no keepalive
|
||||
dialer idle-timeout 300
|
||||
dialer map ip 194.221.188.18 name 7531915XXX 07531915XXX
|
||||
dialer-group 1
|
||||
!
|
||||
ip domain-name wdkraemer.de
|
||||
ip name-server 194.221.188.5
|
||||
ip classless
|
||||
ip route 0.0.0.0 0.0.0.0 194.221.188.18
|
||||
ip route 10.0.0.0 255.0.0.0 Null0
|
||||
ip route 127.0.0.0 255.0.0.0 Null0
|
||||
ip route 172.16.0.0 255.240.0.0 Null0
|
||||
ip route 192.0.2.0 255.255.255.0 Null0
|
||||
ip route 192.168.0.0 255.255.0.0 Null0
|
||||
dialer-list 1 protocol ip permit
|
||||
!
|
||||
line con 0
|
||||
line vty 0 4
|
||||
password XXXXXX
|
||||
login
|
||||
!
|
||||
end
|
||||
|
||||
--------
|
||||
So sollte es nicht sein:
|
||||
S 10.0.0.0/8 is directly connected, Null0
|
||||
S 127.0.0.0/8 is directly connected, Null0
|
||||
194.221.188.0/24 is subnetted, 1 subnets
|
||||
C 194.221.188.224 is directly connected, Ethernet0
|
||||
S 192.0.2.0/24 is directly connected, Null0
|
||||
S 192.168.0.0/16 is directly connected, Null0
|
||||
S 172.16.0.0/12 is directly connected, Null0
|
||||
|
||||
So ist es mit Nachhilfe, oder bei PPP:
|
||||
S 10.0.0.0/8 is directly connected, Null0
|
||||
S 127.0.0.0/8 is directly connected, Null0
|
||||
194.221.188.0/24 is variably subnetted, 2 subnets, 2 masks
|
||||
C 194.221.188.224/28 is directly connected, Ethernet0
|
||||
C 194.221.188.16/30 is directly connected, BRI0
|
||||
S 192.0.2.0/24 is directly connected, Null0
|
||||
S* 0.0.0.0/0 [1/0] via 194.221.188.18
|
||||
S 192.168.0.0/16 is directly connected, Null0
|
||||
S 172.16.0.0/12 is directly connected, Null0
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,228 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
X-Envelope-From: <owner-isdn4linux@listserv.isdn4linux.de>
|
||||
X-Envelope-To: <subscribe@i4l.mhessler.de>
|
||||
X-Delivery-Time: 940694442
|
||||
Received: from abaco.to.com (abaco.to.com [194.221.235.40])
|
||||
by post.webmailer.de (8.9.3/8.8.7) with ESMTP id SAA10046
|
||||
for <subscribe@i4l.mhessler.de>; Sat, 23 Oct 1999 18:00:42 +0200 (MET DST)
|
||||
Received: by listserv.isdn4linux.de id <80305-340>; Sat, 23 Oct 1999 18:00:15 +0200
|
||||
Received: from news.wuecom.de (IDENT:news@news.wuecom.de [194.120.69.13])
|
||||
by abaco.to.com (8.9.1/8.9.1) with ESMTP id SAA22667
|
||||
for <isdn4linux@listserv.isdn4linux.de>; Sat, 23 Oct 1999 18:00:14 +0200
|
||||
From: kurt_erich_finger@my-deja.com
|
||||
Received: (from news@localhost)
|
||||
by news.wuecom.de (8.8.7/8.8.7) id SAA15677
|
||||
for isdn4linux@listserv.isdn4linux.de; Sat, 23 Oct 1999 18:00:13 +0200
|
||||
To: isdn4linux@listserv.isdn4linux.de
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: HOWTO Linux ISDN Internet
|
||||
Date: Sat, 23 Oct 1999 15:50:00 GMT
|
||||
Organization: Deja.com - Before you buy.
|
||||
Lines: 188
|
||||
Message-ID: <7uslf8$qff$1@nnrp1.deja.com>
|
||||
NNTP-Posting-Host: 212.144.81.33
|
||||
X-Article-Creation-Date: Sat Oct 23 15:50:00 1999 GMT
|
||||
X-Http-User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)
|
||||
X-Http-Proxy: 1.1 x30.deja.com:80 (Squid/1.1.22) for client 212.144.81.33
|
||||
X-MyDeja-Info: XMYDJUIDkurt_erich_finger
|
||||
Xref: news.wuecom.de!news.think.de!news.mayn.franken.de de.alt.comm.isdn4linux:42693
|
||||
X-Gateway: isdn4linux-newsgate
|
||||
X-Gateway-Admin: fritz@isdn4linux.de
|
||||
Sender: owner-isdn4linux@listserv.isdn4linux.de
|
||||
Precedence: bulk
|
||||
X-Loop: isdn4linux
|
||||
|
||||
Da es nicht ganz so einfach ist mit ISDN ins Internet zu kommen,
|
||||
hab ich mal einiges zusammengeschrieben.(in Englisch, damit auch
|
||||
andere etwas davon haben). Ich hab's auch nur mit Hilfe der
|
||||
newsgroup geschafft. Vielleicht sind folgende Zeilen fuer einige
|
||||
user ja ganz nuetzlich. Fuer Details ist dann das Linux (ISDN) Howto
|
||||
ganz nuetzlich.
|
||||
|
||||
Falls jemand der Meinung ist, dieses Posting war unnoetig,lasst es mich
|
||||
wissen
|
||||
|
||||
Kurt-Erich Finger
|
||||
|
||||
---beginners only----
|
||||
I tried get into the internet using LINUX and an ISDN-card.
|
||||
In the manual for the LINUX distribution (SuSE 6.1) almost everything
|
||||
was explained but some crucial information (for a newbee) is missing.
|
||||
With the help of this newsgroup I was able to overcome the problems.
|
||||
I thought it would be a good idea to write a tiny HOWTO for beginners.
|
||||
Since ISDN is not only used in Germany but also in other countries I
|
||||
decided to only write it in English.
|
||||
(If you think this should not appear here, please let me know.)
|
||||
I choose otelo to give a working example, if you prefer another provider
|
||||
you can change the details later. If you don't live in Germany modify
|
||||
the
|
||||
example as necessary.
|
||||
|
||||
My configuration:
|
||||
SuSE 6.1
|
||||
Kernel 2.2.5
|
||||
ISDN-utils 3.0
|
||||
Virgin PC with Win98 and LINUX (loadlin)
|
||||
Fritz!card PnP (no other cards)
|
||||
|
||||
1.Try to find out which IRQ and Port can be used. If you run the card
|
||||
already under Win you can find it under >Setting>System.
|
||||
(I use IRQ=3, address: 200, I know there could be conflicts with
|
||||
COM2!)
|
||||
|
||||
PnP cards:
|
||||
2. run/sbin/pnpdump -c > /etc/isapnp.conf
|
||||
Edit /etc/isapnp.conf
|
||||
|
||||
(READPORT 0x0203)
|
||||
(ISOLATE PRESERVE)
|
||||
(IDENTIFY *)
|
||||
(VERBOSITY 2)
|
||||
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
|
||||
|
||||
(CONFIGURE AVM0900/-1 (LD 0
|
||||
(IO 0 (SIZE 32) (BASE 0x0200)(CHECK) )
|
||||
(INT 0 (IRQ 3 (MODE +E)))
|
||||
(NAME "AVM0900/-1[0]{AVM ISDN-Controller FRITZ!Card}")
|
||||
(ACT Y)
|
||||
))
|
||||
(WAITFORKEY)
|
||||
|
||||
The lines (IO (SIZE 32) (BASE Ox0200)) and (INT 0 (IRQ 3 (MODE +E))
|
||||
should
|
||||
contain the values you want. If necessary remove the # signs at the
|
||||
beginning of all above lines.
|
||||
|
||||
Save the file and start
|
||||
isapnp /etc/isapnp.conf
|
||||
If you receive an -FATAL- error message, first delete :
|
||||
(CHECK) !!!!!
|
||||
in the configuration file and start isapnp again.
|
||||
If you still get resource conflicts try other IRQ's and addresses.
|
||||
Switch the auto configuration for ISA-pnp the BIOS off.
|
||||
If you get an ISOLATE PRESERVE error, reboot.
|
||||
|
||||
all cards:
|
||||
|
||||
3. Run Yast
|
||||
Strictly follow the SuSE manual.
|
||||
|
||||
A device named ippp0 must exist!!!!!!
|
||||
|
||||
I assume you want to connect to a provider who uses dynamic IP-
|
||||
addresses
|
||||
syncPPP and PAP or CHAP for authorising.
|
||||
I will describe how you can make a connection to otelo (Germany)
|
||||
since
|
||||
you can connect directly without an account (username:otelo,
|
||||
password: online)
|
||||
|
||||
Using Yast the IP-Address can be : 192.168.0.99
|
||||
Netmask : 255.255.255.255
|
||||
Default -gateway : -
|
||||
IP-Adress PtP : 192.168.0.1
|
||||
The last address could cause problems with t-online, use 192.168.1.1
|
||||
|
||||
Configure the Name-Server:
|
||||
List of IP Addresses : 195.50.149.33 195.50.149.6
|
||||
List of Domains : otelo-online.de
|
||||
Leave Yast
|
||||
|
||||
Make sure the file /etc/isdn/isdn.conf contains
|
||||
your COUNTRYCODE and AREACODE without the leading 0
|
||||
Boot or activate ISDN under Yast to start the network.
|
||||
|
||||
When you configure with Yast the PAP protocol is set.
|
||||
otelo and probably some other provider need CHAP!!!!
|
||||
|
||||
Let's see what happens if we try to connect:
|
||||
isdnctrl dial ippp0
|
||||
will try to connect to your provider.
|
||||
Check /var/log/messages!
|
||||
If you don't see local and remote IP addresses but
|
||||
ISDN error messages or a 'Modem Hangup' something went wrong.
|
||||
To find out you need more information in the messages file.
|
||||
Edit /etc/rc.config.d/I4L_sp_option.rc.config
|
||||
I4L_VERBOSE=yes
|
||||
and in /etc/ppp/ioptions
|
||||
uncomment debug.
|
||||
This should give enough information in the /var/log/message file.
|
||||
|
||||
If you try to connect to otelo you will find that your computer
|
||||
is sending a string containing <PAP> and otelo sends <CHAP> indicating
|
||||
that you have to change the protocol from PAP to CHAP.
|
||||
To change the protocol you have to add
|
||||
user otelo in /etc/ppp/options.ipp0
|
||||
add
|
||||
# client server secret IP addresses
|
||||
"otelo" * "online"
|
||||
to /etc/ppp/chap-secrets and delete the corresponding line in
|
||||
/etc/ppp/pap-secrets.
|
||||
|
||||
Start isdnctrl dail ippp0 and watch /var/log/messages. If you seen see
|
||||
IP addresses you made it.
|
||||
Otherwise read some of the links in the Weekly ISDN FAQ of E.Corry.
|
||||
|
||||
Now you have a connection to your provider and you may want to use the
|
||||
Netscape Navigator.
|
||||
First another problem needs to be solved:
|
||||
If no traffic is on the line it will be cut and the default route will
|
||||
be deleted.
|
||||
(You will find the time-out in /etc/rc.config.d/I4L_option.rc.config
|
||||
I4L_IDLETIME)
|
||||
|
||||
The file /etc/ppp/ip-up (ip-down is only a link to ip-up) has to be
|
||||
modified:
|
||||
BASENAME=`basename $0`
|
||||
INTERFACE=$1
|
||||
DEVICE=$2
|
||||
SPEED=$3
|
||||
LOCALIP=$4
|
||||
REMOTEIP=$5
|
||||
|
||||
case "$BASENAME" in
|
||||
ip-up)
|
||||
/sbin/route add default gw $REMOTEIP dev $INTERFACE
|
||||
#/sbin/init.d/route start $INTERFACE
|
||||
;;
|
||||
ip-down)
|
||||
/sbin/route add default gw $REMOTEIP dev $INTERFACE
|
||||
#/sbin/init.d/route start $INTERFACE
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
(from http://www.suse.de/sdb/de/html/isdn-defroute.html (dynamic IP-
|
||||
numbers))
|
||||
|
||||
Now you can start
|
||||
isdnctrl dial ippp0
|
||||
startx (kde)
|
||||
Netscape
|
||||
|
||||
I hope it works with you!
|
||||
|
||||
In case of problems check-out http://www.suse.de
|
||||
deutsch: http://www.franken/de/users/klaus/DE-ISDN-HOWTO
|
||||
English: http://www.wurtel.demon.nl
|
||||
French: http://www.perso.wanadoo.fr/philippe.latu
|
||||
|
||||
|
||||
Kurt-Erich Finger
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Sent via Deja.com http://www.deja.com/
|
||||
Before you buy.
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@listserv.isdn4linux.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body.
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
From: Philippe Le Foll <phillf@iu-vannes.fr> Subject: Re: Namesserver Config
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Wed, 30 Oct 1996 19:09:10 +0100 (MET) Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
I send to some people a small set of shell and example in order to set up a local name server on a Linux box.
|
||||
|
||||
I translate in aproximative english the README, which should in any case be easier to read that the french version.
|
||||
|
||||
Some people ask be for seting this in an ftp site unfortunately my university did not open yet an anonymous ftp.
|
||||
|
||||
phillf@iu-vannes.
|
||||
|
||||
|
||||
Author: Philippe Le Foll: 30-oct-96
|
||||
e-mail: phillf@iu-vannes.fr
|
||||
|
||||
All these shells are coming from Rennes Hight Brittany University they generate from /etc/hosts the DNS database, I modify them in order to run on my linux box.
|
||||
|
||||
(c) This is public program and you use them at your own risk
|
||||
they will probably not run without some adaptation to your site.
|
||||
|
||||
All this example refer to the following configuration ------------------------------------------------------------
|
||||
|
||||
---------------
|
||||
| to Internet |
|
||||
--------------
|
||||
|
|
||||
|
|
||||
dial-out/PPP
|
||||
(dynamic IP number)
|
||||
|
|
||||
|
|
||||
+------------------------+ +----------------------------+
|
||||
| | | |
|
||||
| DNS server | | DNS slave |
|
||||
| Linux 2.x | | Linux or NT |
|
||||
| name: bisig | | name fridu |
|
||||
| | | |
|
||||
| pppd [IP] | | |
|
||||
| leafnode [news] | | Netcape [html+news+mail] |
|
||||
| harvest [html cache]| | Eudora [mail] |
|
||||
| popd [mail] | | |
|
||||
| metahtml [local http]| | |
|
||||
+------------------------+ +----------------------------+
|
||||
200.200.200.1 200.200.200.1
|
||||
| | +----------------------------------------------|---------------------------+
|
||||
Unregistered 200.200.200" network, "domain sene.bzh"
|
||||
|
||||
Note:
|
||||
|
||||
1) This configuration give to all Slaves computer the impression
|
||||
to be officially onto Internet without really be registrated.
|
||||
|
||||
2) It allows to run a cache even when INTERNET dial-up connection
|
||||
is down.
|
||||
|
||||
3) It obviously read news during the night, but this is an other story.
|
||||
|
||||
|
||||
To Do in order to install DNS
|
||||
------------------------------
|
||||
|
||||
If you are running a DNS at home like me you probably have to choose for an unregistrated domain name as me.
|
||||
Running on an official Internet network does not change anything except that you don't have to worry about your name and your net number.
|
||||
|
||||
|
||||
- If you don't want to place your DNS data base in
|
||||
/var/etc/named/DNS you will have to hack the shell
|
||||
almost everything is hard coded
|
||||
|
||||
- create the destination directory /var/etc/named/DNS
|
||||
|
||||
- Copy all etc/*header* file in /var/etc/named/DNS then
|
||||
adapt them to your site [here: network is 200.200.200].
|
||||
|
||||
- Allow named to start at boot time, for this remove comment
|
||||
before named lines in /etc/rc.d/rc.inet2
|
||||
|
||||
- copy etc/named.boot file in /etc adapt it to your site
|
||||
primary & forwarders lines syntax is:
|
||||
|
||||
PRIMARY myDomainename [here sene.bzh] headerPathName [here:sene.bzh.header.db]
|
||||
FORWARDERS IP_NUMBER for your DNS parent [usually your provider].
|
||||
|
||||
example
|
||||
primary sene.bzh /var/etc/named/DNS/sene.bzh.header.db
|
||||
forwarders 194.51.217.1 194.51.3.49
|
||||
|
||||
- Normally /etc/resolv.conf is not mandatory, nevertheless
|
||||
I place my local domain name in with the following line.
|
||||
|
||||
domain sene.bzh
|
||||
|
||||
- .cache directive refer to a standard file that you should have no
|
||||
trouble with. Syntax is:
|
||||
|
||||
cache . /var/etc/named/DNS/named.root
|
||||
|
||||
NOTE: You can retrieve a more update named.root file true FTP
|
||||
FTP.RS.INTERNIC.NET. (But for this named should work !!!)
|
||||
|
||||
- Build/update your /etc/hosts file. WARNING: all your local hosts
|
||||
should have as main name host.YourDomainName INCLUDING localhost.YourDomainName
|
||||
[see example in etc/hosts]
|
||||
|
||||
- Generate your DNS data base, this is the only thing you should have to
|
||||
do at each /etc/hosts change. In fact this job is done automatically
|
||||
with the following shell, syntax
|
||||
|
||||
make_db YourDomainName [ex: make_db sene.bzh]
|
||||
make_in-addr.arpa Net_Value.._in-addr.arpa [ex: make_in-addr.arpa 200.200.200._in-addr.arpa]
|
||||
|
||||
nota: These two commands should generate you the two following files
|
||||
YourDomainName.db & Net_Value.in-addr.arpa.db
|
||||
in /var/etc/named/DNS. Both file are include from your
|
||||
header.db files.
|
||||
|
||||
- If you have secondary computers that use your local server,
|
||||
just write the two following line in there /etc/resolv.conf
|
||||
|
||||
domain sene.bzh [where sene.bzh is your domaineName]
|
||||
nameserver 200.200.200.1 [where 200.200.200.1 is your local DNS]
|
||||
|
||||
WARNING: NameServer should be an IP number and not a symbolic name
|
||||
and this even if it is declare in your /etc/hosts.
|
||||
|
||||
- It is now time to start your name server, by just typing in:
|
||||
|
||||
named
|
||||
|
||||
- Check your name server is effectively working
|
||||
|
||||
dnsquery -h your_host_name
|
||||
|
||||
WARNING: Even if your dialup line with INTERNET is broken your
|
||||
name server should answer you. The only time it should
|
||||
timeout is when you type in a wrong name, it with case it
|
||||
should try reaching a forwarder.
|
||||
|
||||
Good Luck
|
||||
|
||||
Kenavo
|
||||
|
||||
phillf@iu-vannes.fr
|
||||
|
||||
ps: Sorry for the English, if someone want to set it up in real english
|
||||
I will be please to replace my own README with a better one.
|
||||
|
||||
--------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,136 +0,0 @@
|
|||
Return-Path: owner-isdn4linux@hub-wue.franken.de
|
||||
Return-Path: <owner-isdn4linux@hub-wue.franken.de>
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id SAA05994; Thu, 15 May 1997 18:44:02 +0200
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0wS0qb-000oQya; Thu, 15 May 97 15:45 MET DST
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0wS0yX-001IV8a; Thu, 15 May 97 15:53 MET DST
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0wS0yR-001IV7E; Thu, 15 May 97 15:53 MET DST
|
||||
Received: from lion.euromedia.nl by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0wS0pO-000BnEC; Thu, 15 May 97 15:44 MET DST
|
||||
Received: from localhost (barry@localhost)
|
||||
by lion.euromedia.nl (8.8.5/8.8.5) with SMTP id OAA01009
|
||||
for <isdn4linux@hub-wue.franken.de>; Thu, 15 May 1997 14:44:01 +0100
|
||||
Date: Thu, 15 May 1997 15:44:01 +0200 (MET DST)
|
||||
From: Barry Lagerweij <barry@euromedia.nl>
|
||||
Reply-To: Barry Lagerweij <barry@euromedia.nl>
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Subject: static *AND* dynamic IP addresses
|
||||
Message-ID: <Pine.LNX.3.94.970515134954.48A-100000@lion.euromedia.nl>
|
||||
MIME-Version: 1.0
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
||||
Content-Length: 4060
|
||||
|
||||
Hi everyone,
|
||||
|
||||
I've been running ipppd with isdn4linux very succesful so far, using
|
||||
dynamic IP addresses. Just create ippp0 and ippp1 with isdnctrl, and bind
|
||||
each of them to a port, and use ifconfig to configure ippp0 and ippp1 to a
|
||||
certain IP-address.
|
||||
When a call comes in, ipppd will select either ippp0 or ippp1, and use
|
||||
that IP address. But now I want all my regular callers to get a dynamic IP
|
||||
address, but a few of the callers should be assigned a static IP address.
|
||||
|
||||
I've been trying everything, and finally I came up with the answer :
|
||||
|
||||
1) create the interfaces with isdnctrl:
|
||||
---cut-here---
|
||||
/sbin/ifconfig $DEVICE down
|
||||
$ISDNBIN delif $DEVICE # Create new interface 'DEVICE'
|
||||
$ISDNBIN addif $DEVICE # Create new interface 'DEVICE'
|
||||
$ISDNBIN addphone $DEVICE in \* # Set incoming phone-number
|
||||
$ISDNBIN eaz $DEVICE $LOCAL_NUMBER # Set local EAZ ..
|
||||
$ISDNBIN l2_prot $DEVICE hdlc # for sync PPP: set Level 2 to HDLC
|
||||
$ISDNBIN l3_prot $DEVICE trans # not really necessary, 'trans' is default
|
||||
$ISDNBIN encap $DEVICE syncppp # encap the IP Pakets in PPP frames
|
||||
$ISDNBIN huptimeout $DEVICE 600 # Hangup-Timeout is 600 sec.
|
||||
$ISDNBIN chargehup $DEVICE off # Hangup before next Charge-Info
|
||||
$ISDNBIN pppbind $DEVICE 0
|
||||
---cut-here---
|
||||
|
||||
2) Then I start the ipppd :
|
||||
---cut-here---
|
||||
/sbin/ipppd \
|
||||
-vjccomp -ac -pc \
|
||||
mru 1524 \
|
||||
-bsdcomp \
|
||||
-detach \
|
||||
debug \
|
||||
auth \
|
||||
+pap \
|
||||
useifip \
|
||||
proxyarp \
|
||||
login \
|
||||
ms-dns $LOCAL_IP \
|
||||
domain euromedia.nl \
|
||||
ipcp-accept-remote \
|
||||
$DEVICE $DEVICE2 &
|
||||
---cut-here---
|
||||
|
||||
Please note the 'useifip' and 'ipcp-accept-remote'. If the client offers a
|
||||
IP-address that is acceptable for ipppd, but ipppd does not
|
||||
'ipcp-accept-remote', that IP-address is NAK-ed by ipppd (I think this is
|
||||
a bug!!!), so I must add 'ipcp-accept-remote'.
|
||||
|
||||
The nifty stuff is done in 'auth-up' and 'ip-up' :
|
||||
auth-up:
|
||||
---cut-here---
|
||||
#!/bin/sh
|
||||
if [ $2 = staticuser ]; then
|
||||
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.227 metric 1
|
||||
else
|
||||
if [ $1 = ippp0 ]; then
|
||||
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.225 metric 1
|
||||
elif [$1 = ippp1 ]; then
|
||||
/sbin/ifconfig $1 194.183.96.3 pointopoint 194.183.96.226 metric 1
|
||||
fi
|
||||
fi
|
||||
if [ $2 = routeuser1 ]; then
|
||||
/sbin/route del 194.183.120.0
|
||||
/sbin/route add -net 194.183.120.0 netmask 255.255.255.252 $1
|
||||
elif [ $2 = routeuser2 ]; then
|
||||
/sbin/route del 194.183.120.8
|
||||
/sbin/route add -net 194.183.120.8 netmask 255.255.255.248 $1
|
||||
elif [ $2 = routeuser2 ]; then
|
||||
/sbin/route del 194.183.120.16
|
||||
/sbin/route add -net 194.183.120.16 netmask 255.255.255.252 $1
|
||||
fi
|
||||
---cut-here---
|
||||
|
||||
As you can see, I have one static-IP address user. All other callers are
|
||||
assigned a IP-address based on the isdn-device (ippp0 or ippp1).
|
||||
Furthermore, I have three callers that need to be assigned a pool of
|
||||
IP-addresses. (a subnet of 4 or 8 addresses). This is used for ISDN
|
||||
routers, like the Ascend or 3com. All of these routes are configured
|
||||
dynamically when that user logs-in, and deleted as soon as the user hangs
|
||||
up.
|
||||
Since ipppd is started with 'useifip', ipppd will use the IP-address that
|
||||
has just been assigned by ifconfig (in auth-up) !!!
|
||||
|
||||
Finally, the route to the interface itself is made, in ip-up :
|
||||
---cut-here---
|
||||
#!/bin/sh
|
||||
/sbin/route add -host $5 $1
|
||||
---cut-here---
|
||||
|
||||
In auth-down and ip-down the route is deleted. This allows me to have
|
||||
static and dynamic IP-addresses, based on the username, and to have extra
|
||||
routes added to the device, based on the username.
|
||||
|
||||
I don't know if this is the correct way to do it, but it works for me !
|
||||
|
||||
PS: only a few users are allowed ISDN access. So I've modified pathnames.h
|
||||
to point to '/etc/ippp' instead of '/etc/ppp'. This way I can have a
|
||||
different PPP setup for analog and ISDN callers.
|
||||
|
||||
Barry Lagerweij
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,157 +0,0 @@
|
|||
Replied: Sat, 04 Sep 1999 09:11:46 +0200
|
||||
Replied: "dev "
|
||||
Return-Path: POPmail
|
||||
X-Envelope-From: <Ola@Sigurdson.SE>
|
||||
X-Envelope-To: <hessler@wi-inf.mhessler.de>
|
||||
X-Delivery-Time: 936100367
|
||||
Received: from hsun6.wi-inf.uni-essen.de (hsun6.wi-inf.uni-essen.de [132.252.52.7])
|
||||
by post.webmailer.de (8.9.3/8.8.7) with ESMTP id NAA17635
|
||||
for <hessler@wi-inf.mhessler.de>; Tue, 31 Aug 1999 13:52:43 +0200 (MET DST)
|
||||
Received: from abaco.to.com (abaco.to.com [194.221.235.40])
|
||||
by hsun6.wi-inf.uni-essen.de (8.8.8/8.8.8) with ESMTP id NAA08801
|
||||
for <hessler@wi-inf.uni-essen.de>; Tue, 31 Aug 1999 13:53:23 +0200 (MET DST)
|
||||
Received: from Sigurdson.SE (t4o79p57.telia.com [62.20.201.177])
|
||||
by abaco.to.com (8.9.1/8.9.1) with ESMTP id NAA11117
|
||||
for <hessler@isdn4linux.de>; Tue, 31 Aug 1999 13:53:48 +0200
|
||||
Received: from Sigurdson.SE (IDENT:ola@ws001019.warholm.sigurdson.se [192.168.1.19])
|
||||
by Sigurdson.SE (8.9.3/8.9.3) with ESMTP id NAA03344
|
||||
for <hessler@isdn4linux.de>; Tue, 31 Aug 1999 13:52:39 +0200
|
||||
Sender: ola@Sigurdson.SE
|
||||
Message-ID: <37CBC1FF.B5B1535D@Sigurdson.SE>
|
||||
Date: Tue, 31 Aug 1999 13:52:31 +0200
|
||||
From: Ola Sigurdson <Ola@Sigurdson.SE>
|
||||
Organization: OS System
|
||||
X-Mailer: Mozilla 4.08 [en] (X11; I; Linux 2.2.12-i686-SMP i686)
|
||||
MIME-Version: 1.0
|
||||
To: Matthias Hessler <hessler@isdn4linux.de>
|
||||
Subject: GSM over V.110 to Linux (Re: V.110)
|
||||
References: <199908282216.AAA02037@mathes.mhessler.de>
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
Hello,
|
||||
|
||||
|
||||
Matthias Hessler wrote:
|
||||
> I have good news for you: I think the FAQ is lying, and actually,
|
||||
> V.110 is supported now. However, since I have not tried it, and it's
|
||||
> not widly used (and has been implemented not too long ago), I don't
|
||||
> know how to configure it, and how well it works. But have a look for
|
||||
> yourself - the code is in isdn_v110.c.
|
||||
|
||||
Ok, thanks (I should of course have checked the latest kernel first...
|
||||
I was running 2.2.9).
|
||||
|
||||
|
||||
> I'll correct the FAQ - thanks for the catch! And I'm happy on any
|
||||
> feedback how well it works for you...
|
||||
|
||||
Works! (See below)
|
||||
|
||||
Please find enclosed the pppd (async ppp, *not* sync) config file that
|
||||
works for us. Feel free to use it in the FAQ.
|
||||
If I get the time I'll revise it and submit it as a mini-HOWTO.
|
||||
|
||||
For now, it is at the current URL:
|
||||
http://www.oltom.com/Linux/Docs/GSM%20over%20V.110%20Mini-HOWTO.txt
|
||||
|
||||
/Ola Sigurdson
|
||||
|
||||
--
|
||||
Email: Ola@Sigurdson.SE Office tel: +46 46 37 01 24
|
||||
|
||||
-------------------------------------------------------------------
|
||||
http://www.oltom.com/Linux/Docs/GSM%20over%20V.110%20Mini-HOWTO.txt
|
||||
-------------------------------------------------------------------
|
||||
V.110 works very well for incoming GSM connections from a Palm Pilot!
|
||||
(After some detective work for V.110 and service parameters.)
|
||||
Observe that the GSM operator must have a V.110 enable net for this
|
||||
to work.
|
||||
|
||||
The main benefit compared to traditional GSM-data is that connection
|
||||
setup is
|
||||
much faster. Also transmission delay and error rate is slightly lower
|
||||
with
|
||||
V.110
|
||||
|
||||
In non-V.110 GSM the data call is routed through the operator's
|
||||
net to a modem-pool. From there the call goes out as an ordinary
|
||||
anlogue call over the PSTN to the dial-in server.
|
||||
|
||||
For V.110 GSM the data call goes to the operator's switch, is converted
|
||||
to
|
||||
V.110 and routed over ISDN to the dial-in ISDN-card.
|
||||
Call setup and data transfer is digital end-to-end.
|
||||
|
||||
|
||||
GSM over V.110 Micro-HOWTO:
|
||||
------------------------------------------------------------------------------
|
||||
Get a kernel with V.110 and ISDN-support. 2.2.12 works for us.
|
||||
Test your ISDN setup according to /usr/src/Documentation/isdn/*
|
||||
|
||||
Use the standard async PPP daemon on an /dev/ttyIx device.
|
||||
Example config files are provided below.
|
||||
|
||||
The main trick to get GSM and V.110 working is the S19=0 register
|
||||
setting.
|
||||
(The isdn4l code sets it to 197 by default. Is this correct?)
|
||||
|
||||
The config has been tested with the Swedish Comviq (Tele2) operator,
|
||||
Palm III,
|
||||
Option Snap-On adapter, Eicon Diva 2.01 PCI, Redhat 6.0, Kernel 2.2.12.
|
||||
Possibly other operators or hardware require different settings.
|
||||
|
||||
Note the "noccp" and "require-pap" option that disables compression and
|
||||
CHAP, which the Palm III cannot handle.
|
||||
If you use devices that can handle these protocols, remove the
|
||||
corresponding
|
||||
options.
|
||||
|
||||
Parameters to change according to local setup:
|
||||
----------------------------------------------
|
||||
/dev/ttyI0 Device you want to use for incoming GSM calls.
|
||||
If unsure, leave it.
|
||||
0123456789 Your MSN for incoming GSM calls.
|
||||
DialInIP:PalmIP IP address of ppp interface on dialin server,
|
||||
IP address that should be assigned to Palm device.
|
||||
(If you use symbolic instead of numeric names
|
||||
they must be defined in the DNS.)
|
||||
palm Name for finding secret for Palm device in /etc/ppp/pap-secrets
|
||||
dialin Name for finding secret for Palm device in
|
||||
/etc/ppp/pap-secrets
|
||||
PASSWORD Your PPP PAP password
|
||||
|
||||
---------- /etc/ppp/options.ttyI0 -------------
|
||||
/dev/ttyI0
|
||||
lock
|
||||
connect '/usr/sbin/chat -t 1 "" "AT&F" "OK"
|
||||
"AT&E0123456789&R9600S19=0S0=1" "OK"'
|
||||
idle 300
|
||||
persist
|
||||
passive
|
||||
crtscts
|
||||
modem
|
||||
|
||||
DialInIP:PalmIP
|
||||
nodefaultroute
|
||||
proxyarp
|
||||
ms-dns 192.168.0.1
|
||||
|
||||
noccp
|
||||
noipx
|
||||
|
||||
auth
|
||||
require-pap
|
||||
remotename palm
|
||||
name dialin
|
||||
|
||||
----- /etc/ppp/pap-secrets ---------------------
|
||||
palm dialin PASSWORD PalmIP
|
||||
|
||||
----- /etc/inittab -----------------------------
|
||||
I0:35:respawn:/usr/sbin/pppd /dev/ttyI0 nodetach
|
||||
# nodetach required for things started from init
|
||||
|
||||
|
||||
------ Modem init string for Palm -------------
|
||||
AT&FX4+CBST=71,0,1
|
|
@ -1,199 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA39566; Wed, 5 Feb 1997 23:59:59 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id AAA19017; Thu, 6 Feb 1997 00:01:02 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vsDB9-000oJwa; Wed, 5 Feb 97 20:38 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vsD9H-001IXPa; Wed, 5 Feb 97 20:36 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vsD99-001IXFE; Wed, 5 Feb 97 20:36 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vsDA1-000BikC; Wed, 5 Feb 97 20:37 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vsD93-001IXFE; Wed, 5 Feb 97 20:36 MET
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:1392
|
||||
From: Jens Brambring <jens.brambring@p-net.de>
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: Re: IPX/SPX ueber isdn4linux und WIN95
|
||||
Date: Wed, 05 Feb 1997 21:30:18 +0100
|
||||
Organization: Customer of EUnet Germany; Info: info@Germany.EU.net
|
||||
Lines: 159
|
||||
Distribution: world
|
||||
Message-Id: <32F8EDDA.32EE@p-net.de>
|
||||
References: <32F53265.5E65@p-net.de>
|
||||
Nntp-Posting-Host: peu-11.d.eunet.de
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Mailer: Mozilla 3.01Gold [de] (Macintosh; I; 68K)
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Hallo, es geht!!!!
|
||||
|
||||
Voraussetzungen unter Linux:
|
||||
isdn4linux
|
||||
mgetty oder aehnliches
|
||||
pppd mit ipx-Unterstuetzung
|
||||
dip/diplogin
|
||||
Kernel mit IPX-Protocol und Full ipx internal network auf yes gesetzt
|
||||
und PPP Unterstuetzung
|
||||
|
||||
Vorausetzungen unter WIN95:
|
||||
ISDN-Karte
|
||||
DFUE-Netzwerk
|
||||
Modememulator unter WIN95 der X75 oder HDLC verwenden kann
|
||||
(im Telspowerpack4 dabei, muesste aber auch mit CFOS oder
|
||||
aehnlichem gehen?!)
|
||||
|
||||
Beschreibung:
|
||||
Kernel erzeugen.
|
||||
Einen pppd compilieren und installieren,
|
||||
indem im Makefile die Zeile DEFINE IPX_CHANGE = 1 eingefuegt ist.
|
||||
|
||||
Von isdn4linux benoetigt man nur die ttyI ports also sollte die
|
||||
Einrichtung und das
|
||||
Starten unproblematisch sein!
|
||||
Danach muss man mgetty auf eines der ttyI-devices legen .
|
||||
Beispiel inittab-Eintragsergaenzung:
|
||||
I1:123:respawn:/usr/sbin/mgetty -x20 ttyI1
|
||||
|
||||
Dann muss die Konfiguration fuer das ttyI-device in mgetty.config
|
||||
ergaenzt
|
||||
werden:
|
||||
port ttyI1
|
||||
debug 3
|
||||
modem-type data
|
||||
speed 38400
|
||||
init-chat "" ATZ OK AT&EX OK ATS0=1 ATS14=0
|
||||
|
||||
Das X steht fuer die nummer, auf der der Anruf angenommen werden soll
|
||||
(bei euro die ganze Nummer ohne Vorwahl, bei 1tr6 die
|
||||
Endgeraetenummer)
|
||||
Die Null hinter ATS14= bedeutet, das wir die Emulation auf X75
|
||||
stellen
|
||||
|
||||
Dann richtet man eine Datei /etc/ppp/options und/oder
|
||||
/etc/ppp/options.ttyI1 ein
|
||||
Hier mein Beispiel:
|
||||
-detach
|
||||
192.9.215.80:192.9.215.70
|
||||
defaultroute
|
||||
mru 1524
|
||||
debug
|
||||
/dev/ttyI1
|
||||
ipx-routing 2
|
||||
ipxcp-max-failure 20
|
||||
ipx-node 4:5
|
||||
ipx-network 0x3000
|
||||
|
||||
Die Beschreibung der einzelnen Punkte findet sich in den man-pages
|
||||
zum pppd.
|
||||
ipx-network ist die Adresse des Netzwerkes in dem die jeweilige
|
||||
Netzwerkkarte
|
||||
zu finden ist und ipx-node gibt die Adressen der angeschlossenen
|
||||
Rechner in diesem
|
||||
Netzwerk an, diese Einstellungen scheinen Notwendig zu sein, die
|
||||
Werte sind sind
|
||||
ansich beliebig.
|
||||
|
||||
Danach richtet man sich einen Benutzer ein dessen startshell auf
|
||||
/usr/sbin/diplogin
|
||||
eingetragen ist (/etc/passwd).
|
||||
Jetzt muss noch die Datei /etc/diphosts editiert werden:
|
||||
|
||||
Benutzer::192.9.215.80:192.9.215.70:255.255.255.0::PPP,296
|
||||
|
||||
Der Benutzer ist der, den wir eben eingerichtet haben.
|
||||
|
||||
Der Linuxrechner sollte dann neu gestartet werden.
|
||||
|
||||
Danach richtet man auf dem Ethernetinterface das ipx-Protokoll ein:
|
||||
ipx_interface add -p eth0 802.2 33000
|
||||
Der letzte Wert stell wieder eine Netzwerknummer dar, die mit der
|
||||
auf dem Novell-Server
|
||||
uebereinstimmen muss, genauso wie das Protokoll (802.2).
|
||||
Diese Nummern kann man am Novell-Server feststellen wenn man sich
|
||||
die autoexec.ncf anschaut.
|
||||
Das Protokoll steht in der Zeile, wo der Netzwerkkartentreiber
|
||||
geladen wird und die
|
||||
Netzwerknummer steht an der Stelle, wo ipx an die Netzkarte gebunden
|
||||
wird.
|
||||
|
||||
Wenn man jetzt slist aufruft muesste ansich der Novell-Server
|
||||
angezeigt werden.
|
||||
|
||||
Danach wird ipxd (aus dem ipxripd) gestartet. das sollte es auf
|
||||
Linux-Seite gewesen sein.
|
||||
ipx_interface und ipxd sollten automatisch beim Starten des Rechners
|
||||
gestartet werden.
|
||||
|
||||
(Wenn der ipxd mit der option -d gestartet wird gibt er Meldungen
|
||||
auf dem Monitor aus,
|
||||
die man auswerten kann, ob alles laeuft)
|
||||
|
||||
WIN95:
|
||||
Ich gehe jetzt einfach davon aus, dass das DFUE-Netzwerk einsatzfaehig
|
||||
ist
|
||||
und ipx/spx an das DFUE-Netzwerk gebunden ist.
|
||||
|
||||
Man macht eine neue Verbindung, wobei das Modem der Modemimulation oder
|
||||
dem
|
||||
dem entsprechendne com-port fuer die Modemimulation zugewiesen wird.
|
||||
|
||||
Unter Eigenschaften waehlt man dann bei Typ des Servers PPP,Win95,NT
|
||||
internet
|
||||
(habe jetzt gerade nicht die genauen Beschreibung im Kopf, aber so
|
||||
aehnlich ist das,
|
||||
ist glaube ich auch die default Einstellung)
|
||||
Beim Protokoll waehlt man ipx/spx.
|
||||
Dann gibt es noch die Option Scripts:
|
||||
Hier gibt man den Namen des Scriptes ein, der die Verbindung aufbauen
|
||||
soll!
|
||||
Hier mein Beispiel-script:
|
||||
|
||||
proc main
|
||||
|
||||
; Set the port settings so we can wait for
|
||||
; non-gibberish text.
|
||||
|
||||
|
||||
waitfor "login:"
|
||||
transmit "Benutzer^M"
|
||||
|
||||
waitfor "Password:"
|
||||
transmit "Passwort"
|
||||
transmit "^M"
|
||||
|
||||
waitfor "PPP"
|
||||
|
||||
|
||||
|
||||
endproc
|
||||
|
||||
Benutzer ist wieder der Benutzer und Password das entsprechende
|
||||
Password.
|
||||
|
||||
Das sollte es gewesen sein?!
|
||||
|
||||
|
||||
Jetzt kann man eine Verbindung ueber das DFUE-Netzwerk herstellen, dann
|
||||
sollte man
|
||||
einen Moment warten (kann schon mal 10 Sekuden dauern), und der
|
||||
Novell-Server sollte in der Netzwerkumgebung erscheinen!
|
||||
|
||||
Auf Linux seite kann man noch mit cat /proc/net/ipx_interfaces
|
||||
feststellen ob ein ipx_interface aif ppp0 eingerichtet wurde (sollte
|
||||
automatisch passieren)
|
||||
Im Notfall das script auf WIN95 im Einzelschrittmodus ausfuehren lassen.
|
||||
|
||||
Ciao, Jens
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,71 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA57806; Sat, 8 Feb 1997 02:28:15 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id CAA05402; Sat, 8 Feb 1997 02:29:21 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vszst-000oHTa; Sat, 8 Feb 97 00:39 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vszrK-001IX0a; Sat, 8 Feb 97 00:37 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vszrD-001IWvE; Sat, 8 Feb 97 00:37 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vszrI-000BnoC; Sat, 8 Feb 97 00:37 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vszr5-001IWvE; Sat, 8 Feb 97 00:37 MET
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:1463
|
||||
From: Jens Brambring <jens.brambring@p-net.de>
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: Re: IPX/SPX ueber isdn4linux und WIN95
|
||||
Date: Sat, 08 Feb 1997 01:26:50 +0100
|
||||
Organization: Customer of EUnet Germany; Info: info@Germany.EU.net
|
||||
Lines: 31
|
||||
Distribution: world
|
||||
Message-Id: <32FBC837.340A@p-net.de>
|
||||
References: <32F53265.5E65@p-net.de>
|
||||
Nntp-Posting-Host: peu-18.d.eunet.de
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Mailer: Mozilla 3.01Gold [de] (Macintosh; I; 68K)
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Hallo,
|
||||
|
||||
zu Eurer Information, mit dem ipppd 2.2.7 geht es jetzt auch:-)
|
||||
Ich musste aber noch in der Datei ipxcp die Zeile 354 aendern!
|
||||
|
||||
alt: wo->neg_router=1
|
||||
neu: wo->neg_router=6
|
||||
|
||||
Danach kommt eine saubere Verbindung zwischen dem
|
||||
WIN95-Rechner und dem Linux-Rechner zustande :-))
|
||||
Es sind auch keine scripts mehr auf der Win95-Seite notwendig!
|
||||
Ihr muesst aber nach geschlossener verbindung das ipx_interface, dass
|
||||
vom ipppd eingerichtet wird wieder loeschen, am besten in der Datei
|
||||
ipx-down,
|
||||
sonst kriegt Ihr nur einmal eine Verbindung hergestellt!!
|
||||
|
||||
Hier meine Datei /etc/ppp/ioptions:
|
||||
|
||||
-detach
|
||||
192.9.215.80:192.9.215.70
|
||||
defaultroute
|
||||
mru 1524
|
||||
debug
|
||||
/dev/ippp1
|
||||
+ipx
|
||||
ipx-routing 2
|
||||
ipxcp-max-failure 20
|
||||
ipx-node 4:5
|
||||
ipx-network 0x3000
|
||||
|
||||
Ciao, Jens!
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,107 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA96884; Sun, 9 Feb 1997 15:55:20 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id PAA01990; Sun, 9 Feb 1997 15:56:26 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vtYgt-000oPHa; Sun, 9 Feb 97 13:49 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vtIhQ-001IXqa; Sat, 8 Feb 97 20:44 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vtIhK-001IXoE; Sat, 8 Feb 97 20:44 MET
|
||||
Received: from frog.informatik.uni-stuttgart.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vtIgU-000Bo1C; Sat, 8 Feb 97 20:43 MET
|
||||
Received: from localhost (hgfelger@localhost)
|
||||
by frog.informatik.uni-stuttgart.de (8.8.5/8.8.4) with SMTP
|
||||
id UAA00991 for <isdn4linux@hub-wue.franken.de>; Sat, 8 Feb 1997 20:42:39 +0100
|
||||
X-Authentication-Warning: frog.informatik.uni-stuttgart.de: hgfelger owned process doing -bs
|
||||
Date: Sat, 8 Feb 1997 20:42:39 +0100 (CET)
|
||||
From: Hartwig Felger <hgfelger@trick.informatik.uni-stuttgart.de>
|
||||
X-Sender: hgfelger@frog.informatik.uni-stuttgart.de
|
||||
To: isdn4linux-Mialinglist <isdn4linux@hub-wue.franken.de>
|
||||
Subject: ipppd with IPX... Geht <freu!!!!>
|
||||
Message-Id: <Pine.LNX.3.95.970208202145.771B-100000@frog.informatik.uni-stuttgart.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: QUOTED-PRINTABLE
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Salut,
|
||||
mit hilfe des Patch von Jens Brambring und, wenn man mehr als einmal
|
||||
einw=E4hlen m=F6chte, meines Workaround geht jetzt sowohl Dialin von Linux =
|
||||
als
|
||||
auch von Win95, jeweils mit Linux als Server.
|
||||
|
||||
Der Einzeilerpatch von Jens Brambring war:
|
||||
auf ipppd 2.2.7-debug anzuwenden!
|
||||
in ipxcp.c Ziele 354
|
||||
- wo->neg_router=3D1
|
||||
+ wo->neg_router=3D6
|
||||
Ohne diesen Patch passiert schlimmes mit eurem Logfile (ich sag nur
|
||||
Bl=E4hungen!)
|
||||
|
||||
Damit es =F6fer als einmal geht mu=DF im /etc/ppp/ipx_down eine Zeile
|
||||
eingef=FCgt werden (ich habe aber den Parameterkommentar noch dazu gelegt):
|
||||
# args are: interface-name tty-device speed network-number
|
||||
# local-IPX-node-address remote-IPX-node-address
|
||||
# local-IPX-routing-protocol remote-IPX-routing-pro=AD
|
||||
# tocol local-IPX-router-name remote-IPX-router-name
|
||||
# ipparam pppd-pid
|
||||
# example: ippp0 /dev/ippp0 38400 ...
|
||||
# interface=3D$1 line=3D$2 speed=3D$3 localaddr=3D$4 remoteaddr=3D$5
|
||||
logger -t ipx-down -p local2.info $*
|
||||
/usr/bin/ipx_interface del $1 EtherII
|
||||
|
||||
Wenn durch die letzte Zeile nicht das IPX-Interface gel=F6scht wird, steht
|
||||
es das n=E4chste mal im Weg!
|
||||
|
||||
Ich denke, da=DF das in den ipppd wandern mu=DF (Michael???). Nach einem Bl=
|
||||
ick
|
||||
in die message-Logs mu=DF ich sagen, da=DF der Jenssche-Patch zwar tut, abe=
|
||||
r
|
||||
wohl auch nur als Workaround anzusehen ist. Er f=FChr dazu, da=DF kein
|
||||
Routing-Protokoll vereinbart wird, was aber nicht st=F6rt. Ich konnte
|
||||
zumindest alles tun. Ob sich jetzt aber zwei LAN ohne Routing-Protokoll
|
||||
verbinden lassen wei=DF ich nicht (kann ich auch eben nicht pr=FCfen, da ic=
|
||||
h
|
||||
zu Hause kein LAN hab - das Finanzamt macht ja schon bei einem
|
||||
Rechner ...).
|
||||
|
||||
Damit Linux zu Linux tut, mu=DF ein zweites IPX-Interface aufgesetzt werden=
|
||||
=2E
|
||||
Notfalls das dummy0. Das meldet man dann als primary an (Option -p im
|
||||
ipx_interface-Befehl). Das sorgt eben f=FCr ein Prim=E4res und erm=F6glicht=
|
||||
,
|
||||
sobald die Leitung steht dem ipxd (aus ipxripd-0.7) zu starten (er braucht
|
||||
mindestens zwei IPX-Interfaces zum starten). Danach gehen slist und
|
||||
ncpmount!!!=20
|
||||
|
||||
Wenn die Leitung abgebaut und sp=E4ter wieder aufgebaut wird, mu=DF ipxd ni=
|
||||
cht
|
||||
neu gestartet werden. Nach ca 30 Sekunden hat der ipxd das neue
|
||||
IPX-Interface erkann.
|
||||
|
||||
Der ipxd startet nat=FCrlich nicht von selbst. Damit man das zweitemal nich=
|
||||
t
|
||||
so lange (30 Sec.) warten mu=DF kann man ein ipx-up schreiben, welches
|
||||
pr=FCft, ob ipxd l=E4uft und ihm ein HUP schicken, dann sieht er sofort das
|
||||
neue Interface, oder sonst startet.
|
||||
|
||||
Wenn die Leitung abgebaut und sp=E4ter wieder aufgebaut wird, mu=DF ipxd ni=
|
||||
cht
|
||||
neu gestartet werden. Nach ca 30 Sekunden hat der ipxd das neue
|
||||
IPX-Interface erkann.
|
||||
|
||||
Gru=DF Hartwig ;-)
|
||||
|
||||
768/CA2159D9 Hartwig Felger <hgfelger@trick.informatik.uni-stuttgart.de>
|
||||
Fingerprint: 18 49 5E 6E 4E 47 3D F5 28 3E 11 C9 05 26 F3 46
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,123 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA25458; Mon, 10 Feb 1997 02:33:01 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id CAA16866; Mon, 10 Feb 1997 02:34:07 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vtj9I-000oKia; Mon, 10 Feb 97 00:59 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vtj8I-001Ibia; Mon, 10 Feb 97 00:58 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vtj8D-001IbgE; Mon, 10 Feb 97 00:58 MET
|
||||
Received: from frog.informatik.uni-stuttgart.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vtj7p-000BikC; Mon, 10 Feb 97 00:57 MET
|
||||
Received: from localhost (hgfelger@localhost)
|
||||
by frog.informatik.uni-stuttgart.de (8.8.5/8.8.4) with SMTP
|
||||
id AAA00744 for <isdn4linux@hub-wue.franken.de>; Mon, 10 Feb 1997 00:57:17 +0100
|
||||
X-Authentication-Warning: frog.informatik.uni-stuttgart.de: hgfelger owned process doing -bs
|
||||
Date: Mon, 10 Feb 1997 00:57:16 +0100 (CET)
|
||||
From: Hartwig Felger <hgfelger@trick.informatik.uni-stuttgart.de>
|
||||
X-Sender: hgfelger@frog.informatik.uni-stuttgart.de
|
||||
Cc: isdn4linux-Mialinglist <isdn4linux@hub-wue.franken.de>
|
||||
Subject: Re: IPX / callback und anderes mit neuem ipppd
|
||||
In-Reply-To: <Pine.LNX.3.95.970208201737.771A-100000@frog.informatik.uni-stuttgart.de>
|
||||
Message-Id: <Pine.LNX.3.95.970210004715.538A-101000@frog.informatik.uni-stuttgart.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: MULTIPART/MIXED; BOUNDARY="8323584-669190516-855532636=:538"
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
This message is in MIME format. The first part should be readable text,
|
||||
while the remaining parts are likely unreadable without MIME-aware tools.
|
||||
Send mail to mime@docserver.cac.washington.edu for more info.
|
||||
|
||||
--8323584-669190516-855532636=:538
|
||||
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: QUOTED-PRINTABLE
|
||||
|
||||
Salut,
|
||||
On Sat, 8 Feb 1997, Hartwig Felger wrote:
|
||||
|
||||
> Sorry,
|
||||
> On Sat, 8 Feb 1997, Raphael Leiteritz wrote:
|
||||
>=20
|
||||
> > | Sorry beim Bauen ist mir eingefallen, da=DF f=FCr den USE_MS_DNS ein =
|
||||
kleiner
|
||||
> > | Patch n=F6tig ist:
|
||||
> > | -------------o<------------
|
||||
> > | pp4i4k-2.2.6g-alpha/ipppd.2.2.6g/ipcp.h
|
||||
> > | 58a59,60
|
||||
> > |> /*@@@ added by dy */
|
||||
> > |> u_int32_t winsaddr[2]; /* Primary and secondary MS WINS entrie=
|
||||
s */
|
||||
> > | -------------->o-----------
|
||||
> > Hattest Du denn ansonsten Erfolg? Bei mir hat es naemlich immer
|
||||
> > noch nicht geklappt (s. meine mail an die Liste).
|
||||
> das war wohl nur ein Patch um copilieren zu k=F6nnen. Irgendwo in meinem
|
||||
> Win95 mu=DF wohl noch ein Verweis auf den Firmen-DNS sein, denn ich kann =
|
||||
mit
|
||||
> Namen arbeiten. Wenn ich ins Log schaue, steht da aber =FCberall REJ. Ich
|
||||
> konnte aber weder in der Registry noch in irgendeiner .INI was finden. Di=
|
||||
e
|
||||
> Frage w=E4re nat=FCrlich, ob Win95 auch nicht einfach den Rechner nimmt, =
|
||||
wo
|
||||
> man sich gerade eingew=E4hlt hat. Da ist bei uns auch der DNS drauf. ????
|
||||
>=20
|
||||
> Gru=DF Hartwig :-(
|
||||
>=20
|
||||
> 768/CA2159D9 Hartwig Felger <hgfelger@trick.informatik.uni-stuttgart.de>
|
||||
> Fingerprint: 18 49 5E 6E 4E 47 3D F5 28 3E 11 C9 05 26 F3 46
|
||||
Ich habe heute 'mal die pppd-2.2.0f mit dem ipppd verglichen, bez=FCglich
|
||||
des MS-DNS und MS-WINS. Ich habe dann das ipppd angepa=DFt und siehe da die
|
||||
Logs sagen nicht mehr REJ. Ich mich dann per IPX eingew=E4hlt. Nachdem ich
|
||||
vorher alle =FCbrigen festen DNS-Eintragungen aus win95 entfernnt hatte,
|
||||
ging der Zugriff perfekt. Der restliche Patch ist angeh=E4ngt!
|
||||
|
||||
Achtung: damit IPX mit ipppd und win95 =FCberhaupt geht, m=FCssen die beide=
|
||||
n
|
||||
Workarounds eingebracht werden, die ich zusammen schon gemailt habe.
|
||||
|
||||
Viel Spa=DF ;-)
|
||||
|
||||
P.S.: Ich habe heute schon meine Killerapplikation per ipppd/IPX-Dialin
|
||||
laufen lassen: NWADMIN f=FCr einen NW4.10. Das Laden des Programms hat zwar
|
||||
fast 5 Minuten gedauert, aber dann kann man arbeiten. Ich werde mir das
|
||||
Programm eben lokal installieren.. Dieser Test impliziert, da=DF =FCber
|
||||
diese Verbindung auf NDS zugegriffen werden kann.
|
||||
|
||||
768/CA2159D9 Hartwig Felger <hgfelger@trick.informatik.uni-stuttgart.de>
|
||||
Fingerprint: 18 49 5E 6E 4E 47 3D F5 28 3E 11 C9 05 26 F3 46
|
||||
|
||||
|
||||
--8323584-669190516-855532636=:538
|
||||
Content-Type: APPLICATION/octet-stream; name="patch-ms-dns.gz"
|
||||
Content-Transfer-Encoding: BASE64
|
||||
Content-ID: <Pine.LNX.3.95.970210005716.538B@frog.informatik.uni-stuttgart.de>
|
||||
Content-Description: gziped patch f|r option.c
|
||||
|
||||
H4sICN1h/jIAA3BhdGNoLW1zLWRucwCdlG1r2zAQgD+3v+IIjNqu3cQJSZaG
|
||||
DMbGIFBKoIwNSgmurcQCxxKS0qyU/PedFPktTZu0+mL5dPfodG+e5wHjirJc
|
||||
XsVXTNDl2d06h1/kEWAE4fC627nuDiEcjYbnQRBUuvtqg+v+aKfmNZf+h25n
|
||||
5HfDr2AEmrMTjAD3wTmAVJGiMdBcgSSKch6JaAXz+cxxUObHaSTQ1nXHr3R5
|
||||
xGPxzFWpfEiJJhk5iZayLGGLxUm6SS6jJBEHdS/3dDf0HeUGWBATgH9cMMXe
|
||||
fdRaErqg/JjOggqpjqit3j/mm4wtGxqHctzrD/zeoF/luNcfomBY5Fivl5bN
|
||||
bcuH0K/leuufnbU9LQD0VcaCYkrNCVEEA9UuAUXCkdDx6xWACCTMvs/QTsoN
|
||||
E4kEkpsjktQJuhqq+/Fn60NjIcZUjKIrAhldUQWOJDHLE+nWQbZaSpb938cZ
|
||||
oH5ZUV2Ge5C4kgGWVQm0JVYDIunn7R1oKZESFkyASglwQsSFBEy3pl1WNF14
|
||||
Ja6owibvz/QosHAvZ1iZiNORbxRqQdTuURk9YvCms78/ZuBEeaK3jVcGlvJp
|
||||
TEmyPdDyO37VEc34IyuOsszkGg8d17xxOjNPlnW3qmapeFaASOToaBiBNl8I
|
||||
toJorVIUoZ8aKsiKKROwgzMw7PZx5vUGtSkYdocoGozqPYIL8w4T8Jz1HPut
|
||||
150r8NyUB9/SuXZ6bBW3VSToAhzKYz7Hl7KNHdL3RiIzph6ubCXddx5gMoGO
|
||||
Cy/VbScbar/GtroKu02Uq5PMrM9AMoziR28PP3f7vtkWv3YrML0iByc009oe
|
||||
tD196jUmdmBaV/eEFhWN4hDpGt32m7Nez0oonSoGfiSWT9ryxfpRpVjbFY5K
|
||||
JdaxHhhSEaR4KR9Xrhs/JngdUaYenB20sNW1sFOZQBC65U32yEk5Gi/1tJLq
|
||||
8TnHCWsBrra4/X1z07DRaxfiORGCCadF86coo0k5M6oxffFFXphOsJPHGrb8
|
||||
Jq6xms7bZbPTqYm31dYG4O3+eJXto/1RJK3eIM1SO8mykcQjRfq2YdkkH/Qg
|
||||
/KwHNcMi2OVoqTeKPfgPxzKysjUKAAA=
|
||||
--8323584-669190516-855532636=:538--
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,156 +0,0 @@
|
|||
From: Torsten Hentschel <Torsten.Hentschel@DInet.de> Subject: Re: ISDN - POOL
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Sun, 10 Nov 1996 14:15:22 +0100 (MET) Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
Hallo Georg!
|
||||
|
||||
> nachdem ich I4L nun seit 8 Monaten erfolgreich und voellig _ohne_ Probleme
|
||||
> betreibe (Hut ab vor den Entwicklern), ist noch eine einzige Geschichte,
|
||||
> die ich gerne geloest haette.
|
||||
|
||||
Jau, ueber die Arbeit der I4L-Entwickler auch meinen Dank. Das Zeug ist wunderbar.
|
||||
|
||||
> Ich betreibe I4L Router, die verschiedene Subnetze verbinden. Dies sind aber
|
||||
> alles feste routen, ich benutze _kein_ pppd oder ipppd. ISDN Device mit isdnctrl
|
||||
> definieren und mit ifconfig / route einrichten - fertig. Die Gegenstellen
|
||||
> waehlen sich auf eine feste Nummer rein, diese muss dann natuerlich frei sein.
|
||||
>
|
||||
> Dies laeuft alles ganz hervorragend, jetzt aber die Frage:
|
||||
>
|
||||
> Ich benutze einen "eigenen" NTBA nur fuer I4L, waere es moeglich, das dieser als
|
||||
> Pool fungiert ?
|
||||
> Ich meine, ich definiere 10 IP Verbindungen und gebe jeder (secure on) eine
|
||||
> Eingehende Nummer. Die Gegenstellen bekommen alle 3 Rufnummern und waehlen diese
|
||||
> der Reihe nach durch.
|
||||
|
||||
Genau sowas haben wir hier an zwei Standorten realisiert.
|
||||
Gerne beschreibe ich Dir Moeglichkeiten und Probleme.
|
||||
Auch wir haben das hier ohne ipppd gemacht, weil der leider noch so ein paar Tuecken hat.
|
||||
|
||||
Wenn ich recht verstehe hast Du momentan folgende Konstellation (habe neben S0 jeweils eine Beispiel-Telephonnummer geschrieben, drunter und drueber stehen beispielhafte Namen fuer die ISDN-Devices).
|
||||
|
||||
"draussen" "pool"
|
||||
|
||||
Router A 8989 S0 <------ISDN--\ raw0 \
|
||||
+---> SO 3434 |
|
||||
Router B 7676 S0 <------ISDN--/ raw1 | ein Master-Router
|
||||
|
|
||||
Router C 6565 S0 <------ISDN--\ raw2 | ein Master-Router
|
||||
+---> SO 6565 |
|
||||
Router D 2332 S0 <------ISDN--/ raw3 | ein Master-Router
|
||||
|
|
||||
Router E 6344 S0 <------ISDN--\ raw4 | ein Master-Router
|
||||
+---> SO 3454 |
|
||||
Router F 1023 SO <------ISDN--/ raw5 /
|
||||
|
||||
Die Router draussen waehlen sich also auf Deinem zentralen Router ein. Bisher hast Du dafuer die ISDN-Nummern bei den Routern draussen so verteilt, dass kein Konflikt durch "Besetzt" entstehen kann.
|
||||
|
||||
Bei den Beispiel-Routern sei vereinbart, dass sie alle Ihr ISDN-Device mit "raw0" benannt haben. Auch werde ich annehmen, dass alle in derselben Orstnetzkennzahl liegen.
|
||||
|
||||
Nun habe ich Dich so verstanden, dass Du auf Deinem Master-Router die Kosten fuer die einzelnen Basis-Anschluesse senken willst, indem Du auf jedem Basisanschluss mehr als zwei Rechner einwaehlen laesst.
|
||||
Am liebsten auf allen drei beispielhaften Anschluessen mit 6 Kanaelen gleich 10 externe Router auf einmal. Bei 10 Routern ist noch recht selten, dass alle 6 Kanaele des Master-Routers gleichzeitig besetzt sind, wenn man eine "gemaessigte" Benutzung voraussetzt.
|
||||
|
||||
> Am einfachsten waere dies zu realisieren, wenn die Slave Devices einen Anruf
|
||||
> annehmen, auch wenn der Master _NICHT_ aktiv ist. Die Master Rufnummer waere in
|
||||
> diesem Fall durch einen Anruf auf eben dieser Nummer von einer anderen
|
||||
> Gegenstelle blockiert.
|
||||
|
||||
Nee, mit slave-Devices solltes Du das nicht probieren. Dafuer sind die nicht gedacht.
|
||||
|
||||
> Oder ich kann einem Device mehrere MSN zuweisen, oder ich kann es so aufsetzen,
|
||||
> das es _immer_ rangeht, bzw wenn secure = true ist.
|
||||
|
||||
Ja, genau das ist mein Vorschlag.
|
||||
|
||||
Konkret haette ich dafuer den folgenden Vorschlag:
|
||||
|
||||
a) Bei allen externen Routern muessen alle Nummern der
|
||||
SO-Anschluesse des Master-Routers eingetragen werden.
|
||||
Jedesmal, wenn Du zentral einen S0-Anschluss aufnimmst,
|
||||
bedeutet das auf den externen Routern ein wenig arbeit.
|
||||
Also bei jedem Router draussen:
|
||||
vorwahl="2932" # ohne Null!
|
||||
for number in 3434 6565 3454
|
||||
do
|
||||
isdnctrl addphone raw0 in ${vorwahl}${number}
|
||||
isdnctrl addphone raw0 out ${number}
|
||||
done
|
||||
|
||||
b) Bei den ISDN-Netzinterfacen raw0 bis raw5 kannst Du nur eine
|
||||
MSN angeben. Auf jedem Euro-ISDN-Basisanschluss liegen
|
||||
aber mehrere MSNs und die sind auch noch alle verschieden.
|
||||
Bei 1TR6 war das anders und deshalb funktionierte das damals
|
||||
mit der Realisierung einer Einwaehlreihenfolge ganz problemlos.
|
||||
Die EAZs von 1TR6-Anschluessen waren naemlich alle einziffrig
|
||||
und wenn alle externen Router dieselben Durchwahlnummern verwendet
|
||||
haben (mit derselben angehaengten EAZ), dann hat automatisch
|
||||
jedes Netzinterface auf allen SO-Anschluessen reagiert.
|
||||
|
||||
Aus diesem Grunde scheint eine sehr nette und durchdachte
|
||||
Sache von Fritz Elfert in das ISDN-Basissystem von Linux
|
||||
eingefuegt worden zu sein: Das EAZ-MSN-Mapping.
|
||||
|
||||
Fuer die Treiber der einzelnen S0-Anschluesse auf dem
|
||||
zentralen Router hast Du ja mit dem insmod Namen vergeben.
|
||||
Ich nehme mal an, die Namen sind wie folgt vergeben:
|
||||
|
||||
MSN Treibername
|
||||
3434 bri0
|
||||
6565 bri1
|
||||
3454 bri2
|
||||
|
||||
BRI kommt von basic rate interface und ist die englische
|
||||
Bezeichnung fuer den Steckanschluss eines ISDN-Graetes.
|
||||
Für die Treiber setzt Du nun die folgenden Befehle ab:
|
||||
|
||||
isdnctrl mapping bri0 "-,3434,3435,3436"
|
||||
isdnctrl mapping bri1 "-,6565,6566,6567"
|
||||
isdnctrl mapping bri2 "-,3454,3455,3456"
|
||||
|
||||
Das bedeutet nun, dass ein auf der Nummer 3434 ankommender
|
||||
Ruf nun bei den Netzinterfaces und den ttyI-Interfaces
|
||||
die MSN 1 liefert und nicht mehr die MSN 3434. Ebenso
|
||||
klingelt ein Ruf auf 6565 nicht mehr auf MSN 656, sondern
|
||||
auf MSN 1 und der Ruf auf 3454 auch.
|
||||
|
||||
Nun stell auf allen Netzinterfaces Deines zentralen Routers
|
||||
diese "virtuelle" MSN ein:
|
||||
|
||||
isdnctrl eaz raw0 1
|
||||
isdnctrl eaz raw1 1
|
||||
isdnctrl eaz raw2 1
|
||||
isdnctrl eaz raw3 1
|
||||
isdnctrl eaz raw4 1
|
||||
isdnctrl eaz raw5 1
|
||||
|
||||
Bei dem "isdnctrl mapping" entscheidet die Position der "echten"
|
||||
MSN ueber die EAZ die sie liefert. Die Position "0" ist durch
|
||||
ein Minuszeichen unbelegt gelassen, da dies der "global call" ist.
|
||||
Bitte benutz den global call vorerst nicht, solange Du ihn nicht
|
||||
genauer kennst (alle nicht identifizierten Rufe auf unbekannter
|
||||
EAZ landen auf dem "global call" mit der Nummer "0"; der klingelte
|
||||
bei 1TR6 dann bei allen am selben Bus angeschlossenen Geraeten).
|
||||
|
||||
Nun siehst Du auch, dass ich beim Mapping noch mehr Nummern mit
|
||||
angegeben habe. Hier in Deutschland werden EURO-ISDN-Anschluesse
|
||||
meist mit 3 MSNs ausgeliefert. Diese drei MSNs kannst Du natuerlich
|
||||
auf verschiedene EAZs mappen. Dadurch ergibt sich folgender Spiel-
|
||||
raum: Draussen kannst Du router stehen haben, die verschiedene
|
||||
Protokolle haben und diese anhand der angerufenen Nummer unterscheiden
|
||||
(z.B. konfigurierst Du alle Netzinterfaces fuer rawip auf EAZ=1,
|
||||
alle fuer syncppp auf EAZ=2 und alle fuer X.75 auf EAZ=3).
|
||||
|
||||
Hoffentlich ist es das, was Du gesucht hast.
|
||||
Jedenfalls war ich von diesen Moeglichkeiten von I4L wahnsinnig begeistert. Cisco kann sowas (Multi-Protkoll auf einem dialer rotary group) nicht ansatzweise. ;-)
|
||||
|
||||
|
||||
Gruesse,
|
||||
|
||||
Torsten
|
||||
|
||||
|
||||
--
|
||||
http://www.DInet.de/
|
||||
/\ von-Siemens-Str. 12
|
||||
/ \ Delta Internet GmbH 59757 Arnsberg
|
||||
/ \ Netzwerkdienst & Vertrieb Tel. +49 2932 91 61 32 /______\ Fax. +49 2932 91 61 91 --------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,156 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA76880; Sat, 30 Nov 1996 13:44:05 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id NAA01959; Sat, 30 Nov 1996 13:44:57 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vTliY-000oIPa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlho-000Boba; Sat, 30 Nov 96 10:27 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vTlil-001IYWa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vTlii-001IYVE; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from giovanni.rhein-neckar.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlge-000BobC; Sat, 30 Nov 96 10:26 MET
|
||||
Message-Id: <m0vTlgM-000rArC@giovanni.rhein-neckar.de>
|
||||
From: girardi@giovanni.rhein-neckar.de (Norbert J. Girardi)
|
||||
Subject: Re: routes?
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Sat, 30 Nov 1996 10:25:58 +0100 (MET)
|
||||
Cc: uwe.tetzlaff@t-online.de
|
||||
In-Reply-To: <m0vTby7-0000fJC@ermail02.btx.dtag.de> from "Uwe Tetzlaff" at Nov 29, 96 10:11:00 pm
|
||||
X-Mailer: ELM [version 2.4 PL24]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
>
|
||||
> Moins..
|
||||
>
|
||||
> Ich hab hier in der Firma 2 Rechner W95 192.168.254.2 Ne2000
|
||||
> LinuX 192.168.254.1 3Com 509
|
||||
|
||||
> Zu Hause habe ich einen Rechner LinuX 192.168.255.1 Teles S0-16.3
|
||||
>
|
||||
> Also zu meinem Problem : ich teste mit ping die Verbindung :
|
||||
>
|
||||
> von LinuX zu Hause <-> LinuX Firma via isdn0 = geht.
|
||||
> von W95 Firma <-> LinuX Firma via eth0 = geht.
|
||||
> von W95 Firma <-> LinuX zu Hause via eth0 -> isdn0 = geht nicht !
|
||||
> von LinuX zu Hause <-> W95 Firma via isdn0 -> eth0 = geht nicht !
|
||||
>
|
||||
>
|
||||
> Sicherlich voellig off topic denn ich tippe auf ein Problem bei meinen routes.
|
||||
>
|
||||
Es waere sicher hilfreich gewesen wenn Du die 'routes' mitgeschickt
|
||||
haettest ;-)
|
||||
|
||||
OK, versuchen wir's trotzdem mal.
|
||||
|
||||
Nennen wir Linux at home -> lihome = 192.168.255.1 ,
|
||||
Linux at work -> liwork = 192.168.254.1 ,
|
||||
W95 at work -> work95 = 192.168.254.2 .
|
||||
|
||||
Also, bei mir wuerde die '/etc/hosts' auf allen Rechnern _so_ aussehenen:
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
# hosts This file describes a number of hostname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
# On small systems, this file can be used instead of a
|
||||
# "named" name server. Just add the names, addresses
|
||||
# and any aliases to this file...
|
||||
#
|
||||
|
||||
# For loopbacking.
|
||||
127.0.0.1 localhost
|
||||
|
||||
192.168.255.1 lihome
|
||||
|
||||
192.168.254.1 liwork
|
||||
192.168.254.2 work95
|
||||
|
||||
# End of hosts.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Die '/etc/networks' auf allen Rechnern :
|
||||
========================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
#
|
||||
# networks This file describes a number of netname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
#
|
||||
|
||||
loopback 127.0.0.0
|
||||
homenet 192.168.255.0
|
||||
worknet 192.168.254.0
|
||||
|
||||
# End of networks.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Ich benutze fuer die statischen routes eine Datei in /etc/rc.d
|
||||
in die ich alle routes eintrage, und die aus /etc/rc.d/rc.inet1
|
||||
aufgerufen wird.
|
||||
|
||||
Die /etc/rc.d/rc.routes auf lihome:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig isdn0 lihome pointopoint liwork
|
||||
/sbin/route add liwork isdn0
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alles was raus soll geht per default ueber isdn0
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
Die /etc/rc.d/rc.routes auf liwork:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 liwork
|
||||
/sbin/route add -net worknet eth0
|
||||
# Alles was von worknet kommt und nach worknet soll
|
||||
# muss ueber eth0
|
||||
|
||||
/sbin/ifconfig isdn0 liwork pointopoint lihome
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alle anderen gehen per default ueber isdn0
|
||||
# !!!! Klappt nur wenn auch der Kernel mit
|
||||
# IP FORWARDING/GATEWAYING kompiliert wurde !!!!
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Fuer W95 tue ich mal so als sei es ein Linux, d.h.
|
||||
die Uebersetzung in W95 Syntax bleibt dem Leser ueberlassen :-)
|
||||
|
||||
Die /etc/rc.d/rc.routes auf work95:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 work95
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork eth0
|
||||
# alles geht per default ueber eth0 nach liwork
|
||||
# der sorgt dann fuer die Verteilung
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
|
||||
- Norbert
|
||||
|
||||
--
|
||||
Norbert J. Girardi < girardi@giovanni.rhein-neckar.de >
|
||||
Voice: +49 621 493417 (h) +49 621 381-3260 (w)
|
||||
Neckarstr. 17, D-68549 Ilvesheim, Germany
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
Binary file not shown.
|
@ -1,120 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA62050; Tue, 28 Jan 1997 01:28:05 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id BAA13753; Tue, 28 Jan 1997 01:29:02 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0voydq-000oJ3a; Mon, 27 Jan 97 22:31 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0voyhI-001Idqa; Mon, 27 Jan 97 22:34 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0voyhD-001IdoE; Mon, 27 Jan 97 22:34 MET
|
||||
Received: from mail.space.net by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0voyad-000BlxC; Mon, 27 Jan 97 22:27 MET
|
||||
Received: from euler.space.net ([194.59.182.7]) by mail.space.net with SMTP id <30273-3309>; Mon, 27 Jan 1997 22:28:57 +0100
|
||||
Received: by euler.space.net (Smail3.1.29.1 #4)
|
||||
id m0voyZy-000ZzNC; Mon, 27 Jan 97 22:27 MET
|
||||
Received: from lx01.temic (isdn4@lx01.temic [192.9.216.171]) by temic-ech.spacenet.de (8.6.12/1.02KKe) with ESMTP id WAA14625; Mon, 27 Jan 1997 22:22:33 +0100
|
||||
Received: (from isdn4@localhost) by lx01.temic (8.6.12/1.02KKe) id WAA24950; Mon, 27 Jan 1997 22:20:41 +0100
|
||||
Message-Id: <Mutt.19970127222041.isdn4@lx01.temic>
|
||||
Date: Mon, 27 Jan 1997 22:20:41 +0100
|
||||
From: isdn4@temic-ech.spacenet.de (Karsten Keil)
|
||||
To: chrk@netfire.aball.de (Christian Kleinfeld)
|
||||
Cc: isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: Standleitung mit I4L ?
|
||||
References: <32ECE75C.7C9CE872@netfire.aball.de>
|
||||
X-Mailer: Mutt 0.58.1
|
||||
Mime-Version: 1.0
|
||||
In-Reply-To: <32ECE75C.7C9CE872@netfire.aball.de>; from Christian Kleinfeld on Jan 27, 1997 18:35:24 +0100
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Christian Kleinfeld writes:
|
||||
> bestimmt steht das die Antwort in einer Doku oder FAQ, leider habe ich
|
||||
> in den Dokumenten keine richtigen Hinweise gefunden deshalb poste ich
|
||||
> einfach mal hier.
|
||||
Du hast recht es steht nicht drin, weil es das noch nicht offiziell gibt.
|
||||
|
||||
> Ich moechte mit meiner TelesS0 16.0 (LinuX 2.0.25, i4l mit oder ohne
|
||||
> HiSax ist egal da als Modul eingebunden <grin>) auf ueber D64S
|
||||
Egal nicht geht nur mit HiSax2.0.
|
||||
> Standleitung zum Provider gehen, naja Standleitung ist auch schon bis
|
||||
> ins Haus gelegt und kostet Geld ;(. Meine eigentlich Frage kommt jetzt.
|
||||
> Gibt es irgendwelche besonderheiten bei der Konfiguration auf eine
|
||||
> Standleitung wenn ja welche ?
|
||||
Also seit ca. 1 Woche laeuft HiSax mit Standleitung, unten kommt die
|
||||
Anleitung.
|
||||
>
|
||||
> Hat schon jemand erfahrung damit gehabt ?
|
||||
Es laeuft bei jemanden, der sich bestimmt auch noch bei Dir meldet mit
|
||||
einer Cisco als Gegenstelle. Wichtig KeepAlive bei Cisco ausschalten !!!
|
||||
Falls Du Prbleme hast, Mail an meine Adresse keil@temic-ech.spacenet.de,
|
||||
dann gibt es Telefonsupport.
|
||||
|
||||
Fuer den leased Mode ist eine vorab version aus dem CVS Entwickler tree
|
||||
notwendig, Anleitung war im November vom Fritz auf der Liste, Du bekommst
|
||||
eine Kopie per extra Mail.
|
||||
|
||||
Anleitung zur Installation des isdn trees.
|
||||
|
||||
1. Einen 2.0.X kernel mit HiSax 1.X (wichtig mit HiSAX !)
|
||||
|
||||
2. ins CVS isdn wechseln und
|
||||
./std2kern -d
|
||||
aufrufen
|
||||
4. Im kernel make (menu)config;make dep; make clean; make modules
|
||||
|
||||
Hier ein Beispielscript zum leased mod, module werden direkt aus dem
|
||||
kernel geladen (kein make module_install notwendig)
|
||||
Alle Telefonnummern sind erlaubt, sie spielen keine Rolle.
|
||||
|
||||
#!/bin/sh
|
||||
cd /usr/src/linux/modules
|
||||
/sbin/insmod -m isdn.o > /tmp/isdn/isdn.map
|
||||
/sbin/insmod -m hisax.o type=3 io=0x180 protocol=1 irq=10 id=HiSax \
|
||||
> /tmp/isdn/hisax.map
|
||||
/bin/cat /System.map /tmp/isdn/isdn.map /tmp/isdn/hisax.map | \
|
||||
sort > /tmp/isdn/System.map
|
||||
# Full debug nur fuer tests , muss wenns geht runtergesetzt werden
|
||||
/sbin/telesctrl HiSax 1 0xffff
|
||||
/sbin/telesctrl HiSax 11 0xff
|
||||
# normal debug
|
||||
#/sbin/telesctrl HiSax 1 0x31
|
||||
#/sbin/telesctrl HiSax 11 0x01
|
||||
|
||||
# Setzen in leased Mode
|
||||
/sbin/telesctrl HiSax 5 0
|
||||
# interface
|
||||
/sbin/isdnctrl addif isdn0
|
||||
# wichtig
|
||||
/sbin/isdnctrl huptimeout isdn0 0
|
||||
# binde Interface an 1. BChannel (,1 fuer 2.)
|
||||
/sbin/isdnctrl bind HiSax,0
|
||||
# dummy
|
||||
/sbin/isdnctrl eaz isdn0 1
|
||||
/sbin/isdnctrl l2_prot isdn0 hdlc
|
||||
# dummy
|
||||
/sbin/isdnctrl addphone isdn0 out 2
|
||||
/sbin/isdnctrl addphone isdn0 in 3
|
||||
/sbin/isdnctrl l3_prot isdn0 trans
|
||||
# nur bei cisco
|
||||
#/sbin/isdnctrl encap isdn0 cisco-h
|
||||
|
||||
# interface starten
|
||||
/sbin/ifconfig isdn0 192.1.1.1 up
|
||||
# route zur Gegenstelle
|
||||
/sbin/route add 192.1.1.2 isdn0
|
||||
mv /tmp/isdnctrl.log /tmp/isdnctrl.log.o
|
||||
cat /dev/isdnctrl >/tmp/isdnctrl.log &
|
||||
|
||||
--
|
||||
Dipl.Ing. Karsten Keil Microcontroller Developement
|
||||
email: keil@temic-ech.spacenet.de Temic Semiconducters GmbH
|
||||
Any opinions in this posting are my own and not those of my present
|
||||
or previous employers.
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,98 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA92926; Wed, 12 Feb 1997 18:49:14 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id SAA23322; Wed, 12 Feb 1997 18:50:16 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vudjc-000oIya; Wed, 12 Feb 97 13:24 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vudg4-001ITGa; Wed, 12 Feb 97 13:20 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vudfw-001ITEE; Wed, 12 Feb 97 13:20 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vudfL-000BlxC; Wed, 12 Feb 97 13:19 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vudft-001ITEE; Wed, 12 Feb 97 13:20 MET
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:1555
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
From: keil@temic-ech.spacenet.de (Karsten Keil)
|
||||
Subject: Re: Isdn4Linux an Standleitung?
|
||||
X-Newsreader: TIN [version 1.2 PL2]
|
||||
Organization: temic
|
||||
Message-Id: <E5HLEu.Kn@temic-ech.spacenet.de>
|
||||
References: <5ds4i9$9ut$1@News.CoLi.Uni-SB.DE>
|
||||
Date: Wed, 12 Feb 1997 11:04:06 GMT
|
||||
Lines: 63
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Joerg Dorchain (dorchain@mpi-sb.mpg.de) wrote:
|
||||
: Ist es möglich mit, mit einer Teles- (oder auch sonstigen Karte),
|
||||
: Isdn4Linux an einer Standleitung zu betreiben? Genauer gesagt an einer
|
||||
: SoFMV-Verbindungen (Die Variante mit 1 B-Kanal).
|
||||
: Falls ja, kann mir jemand eine Kurzanleitung schicken?
|
||||
Ist mit dem HiSax aus dem CVS Tree moeglich.
|
||||
Wie Du an den CVS tree kommst ging ein paar mal ueber die Liste.
|
||||
(Das letzte Mal mit Subject: Re: Absturz des ISDN
|
||||
am 5 Feb 1997.)
|
||||
|
||||
Anleitung zur Installation des isdntrees.
|
||||
1. Einen 2.0.X kernel mit HiSax 1.X (wichtig mit HiSAX)
|
||||
|
||||
2. ins CVS isdn wechseln und
|
||||
./std2kern -d
|
||||
aufrufen
|
||||
4. Im kernel make (menu)config;make dep; make clean; make modules
|
||||
|
||||
Hier ein Beispielscript zum leased mod, module werden direkt aus dem
|
||||
kernel geladen (kein make module_install notwendig)
|
||||
Alle Telefonnummern sind erlaubt, sie spielen keine Rolle.
|
||||
|
||||
#!/bin/sh
|
||||
cd /usr/src/linux/modules
|
||||
/sbin/insmod -m isdn.o > /tmp/isdn/isdn.map
|
||||
/sbin/insmod -m hisax.o type=3 io=0x180 protocol=1 irq=10 id=HiSax \
|
||||
> /tmp/isdn/hisax.map
|
||||
/bin/cat /System.map /tmp/isdn/isdn.map /tmp/isdn/hisax.map | \
|
||||
sort > /tmp/isdn/System.map
|
||||
# Full debug nur fuer tests , muss wenns geht runtergesetzt werden
|
||||
/sbin/telesctrl HiSax 1 0xffff
|
||||
/sbin/telesctrl HiSax 11 0xff
|
||||
# normal debug
|
||||
#/sbin/telesctrl HiSax 1 0x31
|
||||
#/sbin/telesctrl HiSax 11 0x01
|
||||
|
||||
# Setzen in leased Mode
|
||||
/sbin/telesctrl HiSax 5 0
|
||||
# interface
|
||||
/sbin/isdnctrl addif isdn0
|
||||
# wichtig
|
||||
/sbin/isdnctrl huptimeout isdn0 0
|
||||
# binde Interface an 1. BChannel (,1 fuer 2.)
|
||||
/sbin/isdnctrl bind HiSax,0
|
||||
# dummy
|
||||
/sbin/isdnctrl eaz isdn0 1
|
||||
/sbin/isdnctrl l2_prot isdn0 hdlc
|
||||
# dummy
|
||||
/sbin/isdnctrl addphone isdn0 out 2
|
||||
/sbin/isdnctrl addphone isdn0 in 3
|
||||
# interface starten
|
||||
/sbin/ifconfig isdn0 192.1.1.1 up
|
||||
# route zur Gegenstelle
|
||||
/sbin/route add 192.1.1.2 isdn0
|
||||
mv /tmp/isdnctrl.log /tmp/isdnctrl.log.o
|
||||
cat /dev/isdnctrl >/tmp/isdnctrl.log &
|
||||
|
||||
|
||||
--
|
||||
Dipl.Ing. Karsten Keil Microcontroller Developement
|
||||
email: keil@temic-ech.spacenet.de Temic Semiconducters GmbH
|
||||
Any opinions in this posting are my own and not those of my present
|
||||
or previous employers.
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,87 +0,0 @@
|
|||
Return-Path: a0037@stud.uni-bayreuth.de
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: Re: LZS: Max will es nicht annehmen
|
||||
Reply-To: Juergen Leising <a0037@stud.uni-bayreuth.de>
|
||||
|
||||
On Sat, Mar 06, 1999 at 04:52:45PM +0100, Karsten Gessner wrote:
|
||||
> kann mal jemand die Schritte in Kurzform posten,
|
||||
> die zu einer lauffähigen Version der lzscomp führen "müssten" !
|
||||
|
||||
Hi -
|
||||
|
||||
- das Ganze geht nur fuer kernel 2.1.x / 2.2.x
|
||||
- Neue Dateien von http://www.ibh-dd.de/~beck/stuff/lzs4i4l/ holen
|
||||
- ccp.c in das ipppd-Unterverzeichnis der isdn4k-utils kopieren
|
||||
- isdn_lzscomp.c nach /usr/src/linux-2.2.1/drivers/isdn kopieren (oder welcher
|
||||
kernel eben verwendet wird)
|
||||
- /usr/src/linux-2.2.1/drivers/isdn/Makefile editieren: Wenn das ISDN-Subsystem
|
||||
modular gebaut ist, sieht das Makefile dann so aus:
|
||||
|
||||
ifeq ($(CONFIG_ISDN),m)
|
||||
M_OBJS += isdn.o
|
||||
O_TARGET += isdn.o
|
||||
O_OBJS += isdn_net.o isdn_tty.o isdn_v110.o
|
||||
OX_OBJS += isdn_common.o
|
||||
ifdef CONFIG_ISDN_PPP
|
||||
O_OBJS += isdn_ppp.o
|
||||
M_OBJS += isdn_bsdcomp.o
|
||||
M_OBJS += isdn_lzscomp.o
|
||||
endif
|
||||
|
||||
- kernel neu kompilieren
|
||||
- isdn-utilities neu kompilieren
|
||||
- zusaetzlich beim ISDN-Module laden muessen die Kompressions-Module auch noch
|
||||
geladen werden, z. B.
|
||||
|
||||
/sbin/insmod isdn_bsdcomp
|
||||
/sbin/insmod isdn_lzscomp comp=8 debug=3
|
||||
|
||||
comp und debug je nach Bedarf aendern; hierzu das README des obigen URLS lesen
|
||||
|
||||
- /etc/ppp/ioptions.ipppx (je nach dem, welcher ipppd einen kompressionsfaehigen peer
|
||||
ansprechen soll)
|
||||
z. B.
|
||||
|
||||
bsdcomp 15,15
|
||||
lzs 1:4
|
||||
|
||||
1 ist die Zahl der histories (so 'was wie frames), 4 der checkmode (Fehlerkorrektur)
|
||||
|
||||
aber diese Werte haengen ganz vom peer ab; welche Werte sind richtig?
|
||||
- Hierzu wieder das README lesen
|
||||
- Debugging hoch genug einstellen, um die Kommunikation zwischen peer und eigenem
|
||||
Rechner verfolgen zu koennen; demgemaess die Werte fuer die Module aendern/einstellen.
|
||||
|
||||
|
||||
|
||||
- kann der peer kein ccp: Pech gehabt
|
||||
- ist der peer eine pre-RFC-Ascend: Pech gehabt.
|
||||
|
||||
Wer fuer diese beiden Faelle eine Loesung hat - mail an mich, bitte.
|
||||
|
||||
|
||||
Tschuess, Juergen.
|
||||
|
||||
|
||||
--
|
||||
*****************************************************************
|
||||
* Juergen Leising, E-Mail: juergen.leising@stud.uni-bayreuth.de *
|
||||
* http://www.stud.uni-bayreuth.de/~a0037/ *
|
||||
*****************************************************************
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
||||
|
||||
|
||||
--
|
||||
I have seen her. That is enough, perhaps.
|
||||
Pug smiled. "You are a rare man."
|
||||
Raymond E Feist - The King's Buccaneer
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@listserv.isdn4linux.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body.
|
||||
|
|
@ -1,292 +0,0 @@
|
|||
Date: Tue, 29 Oct 1996 03:57:50 +0000 (GMT) From: Rainer May <r_may@khavi.desaster.heide.de> X-Sender: r_may@kahvi.desaster.heide.de To: isdn4linux@hub-wue.franken.de
|
||||
Subject: i4l und Masquerading
|
||||
X-Flags: MN
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
Nachdem ich leichtsinnig genug irgendwo mal verkuendet hatte, dass ich hier ein LAN hinter einem Linux-Server mit i4l bei meinem Provider einspeise, platzte mein Postfach aus den Naehten. Bevor ich alles immer wieder aufs Neue abtippe, hab' ich das Procedere in einer Art FAQ aufgeschrieben.
|
||||
|
||||
Vielleicht interessiert sich ja wer dafuer. Wer den Text in irgendwelche Webpages aufnehmen, ausdrucken und aufs Klo haengen oder sonstwas damit machen will, meinen Segen hat er.
|
||||
|
||||
Rainer
|
||||
###########################
|
||||
|
||||
isdn4linux und IP-Masquerading im LAN
|
||||
-------------------------------------
|
||||
|
||||
Problem: "Ich habe ein lokales Netzwerk (LAN), in dem Rechner
|
||||
der verschiedensten Plattformen - Win95, Win311, NT,
|
||||
Amiga (AmiTCP) und MacIntosh (MacTCP) - ueber einen
|
||||
Linux-Router mit der Aussenwelt verbunden werden
|
||||
sollen. In der Linux-Maschine steckt eine ISDN-
|
||||
Karte. Von meinem Provider bekomme ich dynamisch
|
||||
eine IP-Adresse zugewiesen, wenn die Verbindung auf-
|
||||
gebaut wird. Nun moechte ich aber nicht nur vom
|
||||
Linux-Router direkt, sondern von jedem Rechner im
|
||||
LAN ins Internet kommen. Wie?"
|
||||
|
||||
Loesung: "Die meiste Arbeit ist auf Linux-Seite zu erledigen.
|
||||
Zunaechst einmal braucht man einen Kernel mit ein-
|
||||
gebautem IP-Forwarding und Masquerading. D.h., bei
|
||||
"make config" muessen folgende Fragen mit "Y" be-
|
||||
antwortet werden:
|
||||
|
||||
Prompt for development and/or incomplete code/drivers Y
|
||||
Enable loadable module support Y
|
||||
Networking support Y
|
||||
Network firewalls Y
|
||||
TCP/IP networking Y
|
||||
IP: forwarding/gatewaying Y
|
||||
IP: firewalling Y
|
||||
IP: masquerading Y
|
||||
PPP (point-to-point) support (wenn PPP zum Provider) Y
|
||||
SLIP (serial line) support Y
|
||||
Ethernet (10 or 100Mbit) (oder Arcnet oder ...) Y
|
||||
ISDN support [1] M
|
||||
Support synchronous PPP (wenn ipppd benutzt wird) Y
|
||||
HiSax SiemensChipSet driver support M
|
||||
(dann den HiSax fuer die ISDN Karte waehlen)
|
||||
|
||||
Anschliessend den Kernel wie ueblich mit "make dep",
|
||||
"make clean", "make zImage", "make modules" und
|
||||
"make modules_install" bauen.
|
||||
|
||||
Auf das Installieren von PPP und der ISDN-Treiber
|
||||
wird an anderer Stelle ausfuehrlich eingegangen.
|
||||
Hier geht es weiter, wenn folgende Voraussetzungen
|
||||
erfuellt sind:
|
||||
|
||||
* Das ISDN-Subsystem laeuft, d.h., von Linux aus
|
||||
kann eine Verbindung zum Provider hergestellt
|
||||
werden.
|
||||
* Das lokale Netzwerk (Ethernet usw.) laeuft auch,
|
||||
vorzugsweise unter Verwendung "freier" IP-
|
||||
Adressen (z.B. 192.168.xx.xx), und der Linux-Host
|
||||
kann von allen anderen Rechnern im LAN erreicht
|
||||
werden (z.B. per ping).
|
||||
|
||||
Nun gilt es, zweierlei zu erreichen:
|
||||
|
||||
* Zugriffe von einem beliebigen Rechner im LAN
|
||||
auf eine nicht-lokale IP-Adresse sollen den
|
||||
Linux-Router veranlassen, eine Verbindung zum
|
||||
Provider aufzubauen; und
|
||||
* Der Linux-Router soll zwar die Rechner im LAN
|
||||
mit dem Provider verbinden, diesem gegenueber
|
||||
aber verheimlichen, dass nicht der Router
|
||||
selbst Empfaenger/Absender der entsprechenden
|
||||
IP-Pakete ist.
|
||||
|
||||
Beginnen wir mit dem zweiten Punkt. Dieses "Ver-
|
||||
heimlichen" hat nichts damit zu tun, dass man
|
||||
seinen Provider hintergehen will (obwohl man auf
|
||||
diese Weise auch selbst Provider spielen und
|
||||
seine Kunden klammheimlich ueber _einen_ billigen
|
||||
"Privat-Zugang" ins Internet bringen kann), son-
|
||||
dern mit technischen Notwendigkeiten. Denn nur
|
||||
das Interface des Linux-Rechners, das die Verbin-
|
||||
dung zum Provider herstellt, bekommt von diesem
|
||||
eine IP-Adresse verpasst, die der Provider auch
|
||||
kennt. Traegt z.B. der Router im LAN die lokale
|
||||
IP-Adresse 192.168.1.1, und ein anderer Rechner
|
||||
die 192.168.1.2, dann kennt der Provider diese
|
||||
Adressen ja nicht. Er weist z.B. dem PPP-Inter-
|
||||
face des Routers die Adresse 123.234.345.99 zu -
|
||||
und nur bei Paketen aus dem Internet, die an
|
||||
diese Nummer adressiert sind, weiss er auch, an
|
||||
wen er die Pakete schicken soll. Daher muss der
|
||||
Router Pakete von anderen Rechnern im LAN "mas-
|
||||
kieren" - mit seiner eigenen, dynamisch zugewie-
|
||||
senen Adresse (und dabei natuerlich Buch darueber
|
||||
fuehren, was an wen von wem kam, um die Antwort-
|
||||
Pakete richtig zuzustellen).
|
||||
|
||||
Zum Glueck ist diese Funktion in den Linux-Kernel
|
||||
=>2.0.0 schon eingebaut (s.o.) - sie nennt sich
|
||||
"IP-Masquerading". Vereinfacht ausgedrueckt geht
|
||||
das so:
|
||||
Ein LAN-Rechner schickt ein Paket ab, das neben
|
||||
IP-Nummer und Ziel-Port des Empfaengers auch die
|
||||
"Absender-Adresse" in Form einer IP-Nummer und
|
||||
eines Antwort-Ports traegt. Der maskierende
|
||||
Router nun ersetzt die Absender-IP durch seine
|
||||
eigene und den Ruecksende-Port durch einen freien
|
||||
aus seinem Fundus. Unter dieser "freien" Port-
|
||||
nummer werden die originalen Absender-Daten ge-
|
||||
speichert. Kommt nun ein Antwort-Paket aus dem
|
||||
Internet an diesen Port, werden dessen Empfaenger-
|
||||
Adresse und -Port mit der gespeicherten Ruecksende-
|
||||
Adresse ueberschrieben und an den LAN-Rechner wei-
|
||||
tergeleitet. Paket fuer Paket.
|
||||
Leicht einsehbar ist uebrigens, dass dieses Verfahren
|
||||
nur mit Diensten funktioniert, bei denen auch eine
|
||||
Ruecksende-Adresse angegeben wird. Dazu gehoeren
|
||||
u.a. telnet, http, ftp, irc (eingeschraenkt), nicht
|
||||
aber Echo (ping).
|
||||
|
||||
Zurueck zur Praxis. Damit das Masquerading auch
|
||||
bei FTP und IRC funktioniert, werden zunaechst
|
||||
zwei Module geladen:
|
||||
|
||||
/sbin/modprobe ip_masq_ftp
|
||||
/sbin/modprobe ip_masq_irc
|
||||
|
||||
Dann werden die Forward-Rules des Kernel zum
|
||||
Masquerading gezwungen:
|
||||
|
||||
/sbin/ipfwadm -F -a m -P all -S 192.168.123.0/24 -D 0.0.0.0/0 -b [2]
|
||||
|
||||
In diesem Beispiel werden im LAN die IP-Adressen
|
||||
192.168.123.1 bis 192.168.123.254 benutzt. Legen
|
||||
wir zur Vereinfachung fest, der Linux-Router habe
|
||||
dabei die Adresse 192.168.123.1
|
||||
|
||||
Obige Zeile bewirkt, dass IP-Pakete, die von
|
||||
192.168.123.x ausgehen und an wenauchimmer gerichtet
|
||||
sind, maskiert werden. Das hat den Nachteil, dass
|
||||
auch innerhalb des LAN fleissig drauflosmaskiert
|
||||
wird, was man aber durch Einfuegen weiterer Rules
|
||||
vermeiden kann. "man ipfwadm" sei hier zur Lektuere
|
||||
empfohlen.
|
||||
|
||||
Das "Verstecken" des LAN vor dem Provider haben wir
|
||||
nun erreicht. Jetzt gilt es, bei Bedarf einen auto-
|
||||
matischen Verbindungsaufbau zu erzwingen.
|
||||
|
||||
Dafuer ist es zunaechst noetig, die anderen Rechner
|
||||
im LAN dazu zu bringen, alle fuer "Ausserhalb" be-
|
||||
stimmten IP-Pakete an den Linux-Router zu uebergeben
|
||||
und diesem die Weiterleitung zu ueberlassen.
|
||||
|
||||
Nichts leichter als das: Sowohl bei den verschiedenen
|
||||
Windows-Versionen, als auch beim AmiTCP und beim
|
||||
MacTCP gibt es in der Konfiguration den Stichwort
|
||||
"Default-Gateway" oder nur "Gateway". Hier ist die
|
||||
_lokale_ IP-Adresse des Routers einzutragen (denn
|
||||
die spaetere Adresse, die vom Provider kommt, ist
|
||||
ja erstens noch nicht bekannt und aendert sich zwei-
|
||||
tens bei jedem Anruf).
|
||||
|
||||
Letzter Schritt ist dann, das "dial-on-demand" ein-
|
||||
zurichten. In Verbindung mit isdn4linux gibt es dafuer
|
||||
zwei Moeglichkeiten:
|
||||
|
||||
* Man verwendet synchrones PPP fuer die Verbindung
|
||||
zum Provider, also den "ipppd". Dann ist nichts
|
||||
weiter zu tun als dafuer zu sorgen, dass immer
|
||||
die Default-Route des Routers auf das entsprechende
|
||||
ipppx-Interface weist. Vorsicht: Beim Verbindungs-
|
||||
abbau loescht der Kernel diese Route! Sie muss
|
||||
also z.B. in der Datei /etc/ppp/ip-down neu gesetzt
|
||||
werden.
|
||||
Das Risiko bei diesem Verfahren sind Programme auf
|
||||
den LAN-Rechnern, die mehr oder weniger regelmaessig
|
||||
Nameserver-Requests, Keepalive-Pakete oder ARP-
|
||||
Broadcastings erzeugen - dann stellt naemlich der
|
||||
Router jedesmal eine Verbindung zum Provider her.
|
||||
Die Telekom wird's danken.
|
||||
|
||||
Uebrigens kann es passieren, dass manche aus dem
|
||||
LAN initiierte Verbindungen recht lange auf Antwort
|
||||
warten. Ich weiss nicht, ob Kernel oder ipppd das
|
||||
"ausloesende" Paket verschlucken, oder die Antwort
|
||||
darauf unterschlagen; ich weiss aber, dass es
|
||||
hilft, z.B. bei Netscape wenige Sekunden nach
|
||||
Anforderung der ersten Seite auf den "roten Knopf"
|
||||
zu druecken und die Seite nochmals anzufordern.
|
||||
|
||||
Wie bereits erwaehnt: Die Konfiguration des ipppd
|
||||
wird an anderer Stelle ausfuehrlicher und kompeten-
|
||||
ter erklaert, als ich es koennte [3]
|
||||
|
||||
* Benutzt man asynchrones ppp oder gar SLIP/CSLIP
|
||||
fuer die Verbindung zum Provider, kann man das
|
||||
Programm "diald" [4] verwenden. Es bietet zudem
|
||||
den Vorteil, extrem stark konfigurierbar zu sein;
|
||||
so kann man z.B. festlegen, dass zwischen 0900
|
||||
und 1200 grundsaetzlich keine Verbindung aufgebaut
|
||||
wird, dass Nameserver-Anfragen eine Verbindung zwar
|
||||
nicht aufbauen, aber offenhalten koennen u.v.m.
|
||||
Wer sich mit diesen Konfigurationsmoeglichkeiten
|
||||
nicht herumschlagen mag, braucht das indes auch
|
||||
nicht - die Default-Konfiguration kann man ohne
|
||||
Gefahr fuer Leib und Geldboerse uebernehmen :-)
|
||||
|
||||
|
||||
So. Wenn jetzt das Masquerading eingerichtet wurde.
|
||||
Wenn der Linux-Router auf allen LAN-Rechnern als
|
||||
Gateway eingetragen wurde. Wenn ein "ping abc.edu",
|
||||
eingetippt auf der Console des Routers, eine Verbin-
|
||||
dung zum Provider aufbaut. _Dann_ sollte damit auch
|
||||
fuer alle Rechner im LAN der Weg ins Internet frei sein.
|
||||
|
||||
Troubleshooting:
|
||||
|
||||
Problem: "Alles schoen und gut. Aber wenn ich z.B. von der
|
||||
W95-Kiste aus mit Netscape eine Seite aufrufe,
|
||||
bekomme ich als Antwort nur "unknown host" Loesung: "Was ist denn auf der "Win95-Kiste" als Nameserver
|
||||
eingetragen? Sofern auf dem Router kein eigener
|
||||
NS laeuft, muss natuerlich auf allen LAN-Rechnern
|
||||
der NS des Providers eingetragen sein."
|
||||
|
||||
Problem: "Die Adressen werden jetzt aufgeloest, aber statt
|
||||
der gewuenschten Seite bekomme ich die Meldung
|
||||
"no route to host"!"
|
||||
Loesung: "Bitte pruefen:
|
||||
* Ist auf dem LAN-Rechner der Linux-Router als
|
||||
Gateway eingetragen (manche "Betriebssysteme"
|
||||
muss man komplett resetten, bevor Sie da eine
|
||||
Aenderung mitbekommen)?
|
||||
* Liegt auf dem Router die Default-Route auf dem
|
||||
"Bereitschafts-Interface" zum Provider (z.B.
|
||||
auf ippp0 bei synch. PPP, oder auf sl0 bei
|
||||
diald (auch wenn die "echte" Verbindung nachher
|
||||
per ppp0 geht - diald benutzt ein SLIP-Interface
|
||||
als "Tuerklingel") ?
|
||||
* Erzwingt der Provider die Verwendung von Proxies?
|
||||
Dann muessen die IP-Adressen der Provider-Proxies
|
||||
auch in den entsprechenden Programmen der LAN-
|
||||
Rechner eingetragen sein!
|
||||
|
||||
Problem: "Warum sind bei diesem FAQ keine ausfuehrlichen
|
||||
Beispielscripte fuer ipppd, diald usw.?" Loesung: "Weil dies eine FAQ ist und keine eierlegende
|
||||
Wollmilchsau. Ein Beispiel fuer diald haengt
|
||||
trotzdem hinten dran."
|
||||
|
||||
Problem: "Was muss ich fuer diese supertolle FAQ bezahlen?" Loesung: "Wenn es nach meiner Frau ginge, mindestens 250
|
||||
Mark - so hoch veranschlagt sie den Abend, den ich
|
||||
mit Schreiben verbrachte und der ihr daher entging.
|
||||
Da es aber nicht nach meiner Frau geht, sondern nach
|
||||
mir ;-), steht die FAQ unter GPL. Kost' also nix."
|
||||
|
||||
################################################################
|
||||
|
||||
|
||||
[1] Wer mag, kann die ISDN-Treiber natuerlich auch direkt in den
|
||||
Kernel einbauen, anstatt sie als Module zu verwenden.
|
||||
|
||||
[2] Das Programm ipfwadm gibt es per Anon-FTP als
|
||||
ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2.3.0.tar.gz
|
||||
|
||||
[3] Bernhard Hailer hat das Ganze auf seinen www-Seiten sehr
|
||||
ausfuehrlich und verstaendlich beschrieben. Die URL ist
|
||||
http://www.chemie.uni-muenchen.de/ac/boehm/beh.html
|
||||
|
||||
################################################################
|
||||
|
||||
Beispielscripte fuer die Verwendung von isdn4linux mit diald. Die verbindung zum provider wird per X75 aufgebaut, das Protokoll ist dann PPP, ohne PAPpy/CHAPpy usw. Ein einfacher Login. Und Telefonnummer, Name sowie Passwort sind natuerlich gefaelscht :-)
|
||||
|
||||
-------------------
|
||||
# zuerst wird - gleich beim Booten - diald "scharf gemacht" #
|
||||
# /etc/rc.d/rc.diald
|
||||
/usr/sbin/diald /dev/ttyI4 -m ppp local 192.168.90.9 remote 192.168.90.1 \
|
||||
defaultroute dynamic modem crtscts lock connect "chat -v -f \
|
||||
/etc/ppp/chat.provider"
|
||||
#
|
||||
-------------------
|
||||
#
|
||||
# /etc/ppp/chat.provider
|
||||
#
|
||||
TIMEOUT 240 "" AT&E1234 OK ATD047110815 ogin: Puser sword: topsecret #
|
||||
-------------------
|
||||
|
||||
--------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,122 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA15640; Sun, 5 Jan 1997 18:04:15 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id SAA22736; Sun, 5 Jan 1997 18:05:24 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vgt53-000oLra; Sun, 5 Jan 97 14:57 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vgt3F-001IV9a; Sun, 5 Jan 97 14:55 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vgt3C-001IV8E; Sun, 5 Jan 97 14:55 MET
|
||||
Received: from wildsau.idv.uni-linz.ac.at by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vgt3I-000BmIC; Sun, 5 Jan 97 14:55 MET
|
||||
Received: (from herp@localhost) by wildsau.idv.uni-linz.ac.at (8.6.12/8.6.9) id OAA19933 for isdn4linux@hub-wue.franken.de; Sun, 5 Jan 1997 14:52:07 +0100
|
||||
From: Herbert Rosmanith <herp@wildsau.idv.uni-linz.ac.at>
|
||||
Message-Id: <199701051352.OAA19933@wildsau.idv.uni-linz.ac.at>
|
||||
Subject: ip-masq, sample setup
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Sun, 5 Jan 1997 14:52:07 +0100 (MET)
|
||||
X-Mailer: ELM [version 2.4 PL25]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=US-ASCII
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
|
||||
since there have been question about ip-masquerading recently, here
|
||||
is a sample setup. note: this is no isdn-setup anymore (it was before),
|
||||
but the machine now has two ethernet cards (the customer bought a leased
|
||||
line). note also that there is a particular network which stupidly has
|
||||
been setup as internal network allthough the numbers have already been
|
||||
officially assigned elsewhere. thanks to "daten technik" for this
|
||||
very clever network design ... :-(
|
||||
|
||||
some words to the configuration: the maschine has two network cards,
|
||||
one for the internal network, one with a real IP address.
|
||||
|
||||
eth0: 10.0.0.0 internal
|
||||
eth0:1 192.34.0.0 "internal"
|
||||
eth1: x.x.x.x external, real address
|
||||
|
||||
you may find the setup for the masquerading part a bit strange.
|
||||
however, I chosed to configure that based on network cards, not on
|
||||
ip-numbers. this can be done using the "-W" option from ipfwadm.
|
||||
so, the last lines below read "accept all traffic from card
|
||||
1 unchanged, but masquerade it on card 2". this makes sense, since card 2
|
||||
is the only one with a real ip-addess.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
#!/bin/sh
|
||||
iw=/sbin/ipfwadm
|
||||
h=linux.xxxxxxx.co.at
|
||||
#
|
||||
# start with a clean configuration...
|
||||
#
|
||||
$iw -If
|
||||
#
|
||||
# default policy: paranoid...
|
||||
#
|
||||
$iw -Ip deny
|
||||
#
|
||||
# allow only ICMP ECHO REPLY from outside.
|
||||
# this allows us to ping other hosts, but disables
|
||||
# others to ping ourselves.
|
||||
#
|
||||
$iw -Ia accept -S 0/0 0 -D $h -P icmp -W eth1
|
||||
$iw -Ia deny -S 0/0 -D $h -P icmp -W eth1
|
||||
#
|
||||
# allow incoming smtp connections from outside (internet)
|
||||
# force local users to use mail-relay
|
||||
#
|
||||
$iw -Ia accept -S 0/0 -D xxx.xxx.xxx.xx smtp -P tcp -W eth1
|
||||
$iw -Ia accept -S 0/0 -D 192.34.70.254 smtp -P tcp -W eth0
|
||||
$iw -Ia accept -S 0/0 -D 10.0.0.1 smtp -P tcp -W eth0:1
|
||||
$iw -Ia accept -S 0/0 -D 127.0.0.1 smtp -P tcp -W lo
|
||||
$iw -Ia deny -S 0/0 -D 0/0 smtp -P tcp
|
||||
#
|
||||
# loopback, eth0 and eth0:1 is allowed to do (nearly) everything, of course ...
|
||||
#
|
||||
$iw -Ia accept -S 0/0 -D 0/0 -W lo
|
||||
$iw -Ia accept -S 0/0 -D 0/0 -W eth0
|
||||
$iw -Ia accept -S 0/0 -D 0/0 -W eth0:1
|
||||
#
|
||||
# domain may only speak with domain
|
||||
#
|
||||
$iw -Ia accept -S 0/0 domain -D $h domain -P tcp -W eth1
|
||||
$iw -Ia accept -S 0/0 domain -D $h domain -P udp -W eth1
|
||||
#
|
||||
# allow incoming traffic once the connection has been built.
|
||||
# - note: this is the same as the cisco-keyword "established"
|
||||
#
|
||||
# nota bene: since we already accept everything from lo, eth0 and eth0:1,
|
||||
# it is not (seems not to be) neccessary to check the SYN flag, too.
|
||||
#
|
||||
$iw -Ia accept -S 0/0 -D $h -k -W eth1
|
||||
#
|
||||
# allow yyyyyy to do some service
|
||||
#
|
||||
$iw -Ia accept -S yyyyyyy.yyyyyy.co.at -D $h -W eth1
|
||||
#
|
||||
# allow yyyyyy ftp
|
||||
#
|
||||
$iw -Ia accept -S ftp.yyyyyy.co.at -D $h -W eth1
|
||||
$iw -Ia accept -S ftp.yyyyyy.co.at -D $h -W eth1
|
||||
#
|
||||
$iw -Ia accept -S $h -D 0/0 -W eth1
|
||||
#
|
||||
# now for the masquerading part
|
||||
#
|
||||
$iw -Ff
|
||||
$iw -Fp deny
|
||||
$iw -Fa accept -S 0/0 -D 0/0 -W eth0
|
||||
$iw -Fa accept -S 0/0 -D 0/0 -W eth0:1
|
||||
$iw -Fa masquerade -S 0/0 -D 0/0 -W eth1
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,142 +0,0 @@
|
|||
Sender: Okane@em.uni-frankfurt.de
|
||||
Date: Fri, 08 Nov 1996 20:31:01 +0100
|
||||
From: "Robert O'Kane" <okane@em.uni-frankfurt.de> Organization: OTHERSPACE
|
||||
To: Matthias Hessler <hessler@wi-inf.uni-essen.de> Subject: Re: Though put over multiple ISDN channels
|
||||
|
||||
Matthias Hessler wrote:
|
||||
>
|
||||
> Hi Robert,
|
||||
>
|
||||
> ich kann Dir bei den Durchsatzproblemen nicht helfen, allerdings wuerden wir
|
||||
> uns gerne freuen, wenn wir die FAQ um ein paar Hinweise zum Channel-Bundling
|
||||
> erweitern koennten (es kommt immer wieder zu Fragen in dieser Richtung).
|
||||
>
|
||||
> Koenntest Du uns Deine Konfigurationsskripte zukommen lassen? Oder gar
|
||||
> einige Frage/Anwort-Paare - um anderen beim Ueberwinden der schwierigsten
|
||||
> Huerden zu helfen?
|
||||
>
|
||||
> Vielen Dank.
|
||||
>
|
||||
> Matthias
|
||||
|
||||
Hello,
|
||||
|
||||
Attached is the script I use to setup multiple channels to be used as 1 network device. Mind you the throughput isn't really great. So it might not be worth the effort until we can get the network device to feed more data to the ISDN device.
|
||||
|
||||
Please feel free to add this to the FAQ if you like.
|
||||
|
||||
Bob.
|
||||
|
||||
--
|
||||
---------------------------------------------- Unfortunatly, I find language (like politics) necessary for humans.
|
||||
Leider finde Ich Sprache (wie Politik) fuer die Menschen notwendig.
|
||||
---------------------------------------------- Robert O'Kane
|
||||
OTHERSPACE
|
||||
Founding Member and Linker
|
||||
|
||||
URL : http://www.rz.uni-frankfurt.de/~okane email: okane@em.uni-frankfurt.de
|
||||
---------------------------------------------- Ok, here is a script used to set up multiple isdn "devices" to be used as one for a network.
|
||||
LOTS here were picked up from the Isdn$Linux Mail list ;-}
|
||||
|
||||
Maybe someone else can use things in here.
|
||||
Included:
|
||||
startisdn <- script to setup the ISDN and network devices
|
||||
|
||||
|
||||
NOTE: 1: Depending on your setup (modules, card_id's, etc..) you
|
||||
: may want to bind the devices to certain cards/channels
|
||||
: so things work the way you want.
|
||||
|
||||
2: I couldn't get any 'real' speed up. The maximum throughput
|
||||
: I got was arround 10K - 12K. YMMV (You mileage may vary)
|
||||
|
||||
##################################################################### #####################################################################
|
||||
|
||||
: /usr/local/isdn/startisdn
|
||||
|
||||
#! /bin/sh
|
||||
|
||||
#####################################
|
||||
## Startup script for ISDN network.
|
||||
##
|
||||
## On "other" machine, reverse REMOTE and LOCAL ##
|
||||
|
||||
REMOTE_IP="machine2"
|
||||
REMOTE_NUMBER0="xxxxxx35"
|
||||
REMOTE_NUMBER1="xxxxxx36"
|
||||
REMOTE_NUMBER2="xxxxxx38"
|
||||
REMOTE_NUMBER3="xxxxxx39"
|
||||
|
||||
LOCAL_IP="machine1"
|
||||
LOCAL_NUMBER0="xxxxxx46"
|
||||
LOCAL_NUMBER1="xxxxxx47"
|
||||
LOCAL_NUMBER2="xxxxxx49"
|
||||
LOCAL_NUMBER3="xxxxxx50"
|
||||
|
||||
CHANNELS="1 2 3"
|
||||
|
||||
SYSPATH="/sbin"
|
||||
ISDNCTRL="/sbin/isdnctrl"
|
||||
ENCAP="rawip"
|
||||
DEVICE="isdn0"
|
||||
SLAVE="isdnsl"
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
### install modules if not there, ASSUME teles irq bug
|
||||
### found in the original teles driver.
|
||||
if [ ! "`lsmod | grep teles`" ]; then
|
||||
echo "teles module NOT found: INSTALLING"
|
||||
modprobe telesall
|
||||
sleep 1
|
||||
rmmod telesall
|
||||
sleep 1
|
||||
modprobe telesall
|
||||
fi
|
||||
|
||||
$ISDNCTRL addif $DEVICE
|
||||
$ISDNCTRL eaz $DEVICE $LOCAL_NUMBER0
|
||||
$ISDNCTRL addphone $DEVICE in "*$REMOTE_NUMBER0"
|
||||
$ISDNCTRL addphone $DEVICE out $REMOTE_NUMBER0
|
||||
$ISDNCTRL l2_prot $DEVICE x75i
|
||||
$ISDNCTRL l3_prot $DEVICE trans
|
||||
$ISDNCTRL encap $DEVICE $ENCAP
|
||||
$ISDNCTRL huptimeout $DEVICE 60
|
||||
$ISDNCTRL chargehup $DEVICE off
|
||||
$ISDNCTRL ihup $DEVICE off
|
||||
$ISDNCTRL secure $DEVICE on
|
||||
$ISDNCTRL sdelay $DEVICE 15
|
||||
|
||||
for i in $CHANNELS ; do
|
||||
$ISDNCTRL addslave $DEVICE $SLAVE$i
|
||||
$ISDNCTRL eaz $SLAVE$i $[LOCAL_NUMBER$i]
|
||||
$ISDNCTRL addphone $SLAVE$i in "*$[REMOTE_NUMBER$i]"
|
||||
$ISDNCTRL addphone $SLAVE$i out $[REMOTE_NUMBER$i]
|
||||
$ISDNCTRL l2_prot $SLAVE$i x75i
|
||||
$ISDNCTRL l3_prot $SLAVE$i trans
|
||||
$ISDNCTRL encap $SLAVE$i $ENCAP
|
||||
$ISDNCTRL huptimeout $SLAVE$i 30
|
||||
$ISDNCTRL chargehup $SLAVE$i off
|
||||
$ISDNCTRL ihup $SLAVE$i off
|
||||
$ISDNCTRL secure $SLAVE$i on
|
||||
$ISDNCTRL sdelay $SLAVE$i 15
|
||||
done
|
||||
|
||||
$SYSPATH/ifconfig $DEVICE inet $LOCAL_IP \
|
||||
pointopoint $REMOTE_IP metric 1
|
||||
$SYSPATH/route add -host $REMOTE_IP $DEVICE
|
||||
;;
|
||||
stop)
|
||||
$SYSPATH/ifconfig $DEVICE down
|
||||
$ISDNCTRL delif $DEVICE
|
||||
;;
|
||||
hangup)
|
||||
$ISDNCTRL hangup $DEVICE
|
||||
;;
|
||||
*)
|
||||
echo "$0 : <start|stop|hangup>"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
#####################################################################
|
|
@ -1,133 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA65252; Wed, 12 Feb 1997 08:00:58 +0100
|
||||
Received: from anna-atm.rz.uni-frankfurt.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id IAA07066; Wed, 12 Feb 1997 08:02:04 +0100
|
||||
Received: from bob.renderserve.de (actually dialin055.rz.uni-frankfurt.de)
|
||||
by amalia-atm.rz.uni-frankfurt.de with Local SMTP (PP);
|
||||
Wed, 12 Feb 1997 05:02:14 +0000
|
||||
Sender: Okane@em.uni-frankfurt.de
|
||||
Message-Id: <330125B3.5921AC58@em.uni-frankfurt.de>
|
||||
Date: Wed, 12 Feb 1997 03:06:43 +0100
|
||||
From: "Robert O'Kane" <okane@em.uni-frankfurt.de>
|
||||
Organization: OTHERSPACE
|
||||
X-Mailer: Mozilla 3.01Gold (X11; I; Linux 2.0.29 i586)
|
||||
Mime-Version: 1.0
|
||||
To: Matthias Hessler <hessler@wi-inf.uni-essen.de>
|
||||
Cc: joe@odel.on.ca, isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: MP
|
||||
References: <199702111612.RAA03177@james.mathes.uni-essen.de>
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Status:
|
||||
|
||||
Matthias Hessler wrote:
|
||||
>
|
||||
> Hi Joe,
|
||||
>
|
||||
> On Mon, 10 Feb 1997 17:48:23 -0500 (EST), joe@odel.on.ca wrote:
|
||||
> > Hi ISDN4Linux'ers. I have a two Spellcaster BRI cards and two
|
||||
> > linux boxes. One box is at my ISP's side and the other is in my office.
|
||||
> > I have obtained and compiled ISDN4LINUX, spellcasters I4L driver without
|
||||
> > many problems. I have ISDN support compiled into the kernel as well as
|
||||
> > SyncPPP support and load the driver (sc.o) with modprobe with no problems.
|
||||
> > I have a couple of questions I hope aren't too stupid. I have a feeling
|
||||
> > they have been answered in German, but unfortunately I don't (yet) speak
|
||||
> > or read German very well so please excuse my ignorance.
|
||||
>
|
||||
> No worries - you are very welcome to write in English.
|
||||
>
|
||||
> I'm not using the MP stuff, but I got the script from Robert O'Kane
|
||||
> that he uses. It is appended at the end. From the first look it
|
||||
> doesn't look too much different - but maybe you find something.
|
||||
>
|
||||
> As far as I understand the ipppd can dial out on demand (if the route
|
||||
> exists and ip packages are coming). Or you can trigger the dialing
|
||||
> with "isdnctrl dial". Very strange that you have to do latter at
|
||||
> _both_ stations. That sounds very wrong.
|
||||
>
|
||||
|
||||
Hello, (Robert here :-0 )
|
||||
|
||||
The scripts I sent in are for the "built-in" function of ISDN4Linux
|
||||
when
|
||||
using the rawip/ethernet/... encapsulation. PPP (SyncPPP) encapsulation
|
||||
doesnt
|
||||
seem to be supported for the "automatic" functions of I4L!
|
||||
|
||||
MIXING THE SLAVE (autodial/autohangup) functions with SyncPPP doesn't
|
||||
work:
|
||||
1: reliably- relying on the auto hangup appears to work until the 2nd
|
||||
-> 5th
|
||||
time. Then the kernel gets "a bit" disturbed.
|
||||
|
||||
2: Not at all- auto dial never works with syncPPP. As far as I know
|
||||
(and can
|
||||
see), the only way to add channels to SyncPPP is to
|
||||
MANUALLY
|
||||
"addlink" and "removelink" the devices. Of course you
|
||||
need to
|
||||
have the devices pre-defined for the I4L system and for
|
||||
the PPP
|
||||
program.
|
||||
|
||||
I am still looking over (and into) these issues and hope to have more
|
||||
later.
|
||||
But for now I must say that the scripts I sent to the FAQ (and the
|
||||
list?) are
|
||||
for the rawip/ethernet encapsulations. SyncPPP is another animal (user
|
||||
space)
|
||||
and will require other links between the system (kernel) and the ppp
|
||||
program
|
||||
(user space).
|
||||
|
||||
I am also still (ja ja...) porting the ITK Columbus Card driver from
|
||||
Frank Mohr
|
||||
to the HiSax device driver system. (Thanks Karsten!!)
|
||||
|
||||
> > I have read the faq but I don't seem to be able to make it work.
|
||||
>
|
||||
> Did you get the right FAQ? There is an english version available on:
|
||||
> ftp://ftp.franken.de/pub/isdn4linux/FAQ
|
||||
> and:
|
||||
> http://www.lrz-muenchen.de/~ui161ab/www/isdn/
|
||||
> which also contains some bug fixes for the MPPP stuff. Also there are
|
||||
> two ways of using multiple links with isdn4linux. One is with ipppd,
|
||||
> the other is with rawip.
|
||||
>
|
||||
> More we can't say without more logging. If you can't locate your
|
||||
> problem just log the handshaking of the ipppd (see FAQ how to do
|
||||
> that). Then we can say more.
|
||||
>
|
||||
>
|
||||
> Other than that I'm VERY interested in hearing about this spellcaster
|
||||
> BRI card - and the driver you were talking about. Can you please
|
||||
> send me more info on that so that we can incorporate it into the
|
||||
> FAQ? There are often questions about isdn4linux in America and so
|
||||
> far we don't have any information about what works and what works
|
||||
> not... :-(
|
||||
> Please, already a www link would help very much... Are there more
|
||||
> cards available but the spellcaster? How expensive is it and are you
|
||||
> using the EURO-ISDN standard?
|
||||
>
|
||||
> Bye,
|
||||
> Matthias
|
||||
>
|
||||
|
||||
<patch stuff deleted as it doesn't help here: See appropriate FAQ >
|
||||
|
||||
-Happy ISDN'ing
|
||||
|
||||
-Robert O'Kane
|
||||
|
||||
--
|
||||
----------------------------------------------
|
||||
Robert O'Kane
|
||||
OTHERSPACE
|
||||
Founding Member and Linker
|
||||
|
||||
URL : http://www.rz.uni-frankfurt.de/~okane
|
||||
email: okane@em.uni-frankfurt.de
|
||||
----------------------------------------------
|
||||
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
From owner-isdn4linux@listserv.isdn4linux.de Sun Oct 29 22:16:25 2000
|
||||
Return-Path: <owner-isdn4linux@listserv.isdn4linux.de>
|
||||
Received: from localhost (mathes@localhost [127.0.0.1])
|
||||
by athlet.mhessler.de (8.8.8/8.8.8) with ESMTP id WAA02008
|
||||
for <mathes@localhost>; Sun, 29 Oct 2000 22:16:25 +0100
|
||||
X-Envelope-From: <owner-isdn4linux-outgoing@server-007.to.com>
|
||||
X-Envelope-To: <subscribe@i4l.mhessler.de>
|
||||
X-Delivery-Time: 971869541
|
||||
Received: from post.strato.de
|
||||
by fetchmail-4.6.0 POP3
|
||||
for <mathes/localhost> (single-drop); Sun, 29 Oct 2000 22:16:25 MET
|
||||
Received: from server-007.to.com (server-007.to.com [194.221.235.10])
|
||||
by post.webmailer.de (8.9.3/8.8.7) with ESMTP id NAA01812
|
||||
for <subscribe@i4l.mhessler.de>; Wed, 18 Oct 2000 13:44:42 +0200 (MET DST)
|
||||
Received: by server-007.to.com (Postfix)
|
||||
id B5E8F13CE0; Wed, 18 Oct 2000 13:43:26 +0200 (CEST)
|
||||
Delivered-To: isdn4linux-outgoing@server-007.to.com
|
||||
Received: by server-007.to.com (Postfix, from userid 88)
|
||||
id AA80813CE4; Wed, 18 Oct 2000 13:43:26 +0200 (CEST)
|
||||
Delivered-To: isdn4linux@listserv.isdn4linux.de
|
||||
Received: from inonet.com (unknown [212.117.66.174])
|
||||
by server-007.to.com (Postfix) with ESMTP id 3DA2513CE0
|
||||
for <isdn4linux@listserv.isdn4linux.de>; Wed, 18 Oct 2000 13:43:26 +0200 (CEST)
|
||||
Received: from 12er.inonet.com [62.158.199.41] by inonet.com with ESMTP
|
||||
(SMTPD32-5.01) id AEBD4CE00AA; Wed, 18 Oct 2000 13:51:25 +03d0
|
||||
Received: from inonet.com (laser.inonet.com [192.168.0.11])
|
||||
by 12er.inonet.com (8.8.8/8.8.8) with ESMTP id NAA00393;
|
||||
Wed, 18 Oct 2000 13:07:39 +0200
|
||||
Message-ID: <39ED8AFA.35AB9D5E@inonet.com>
|
||||
Date: Wed, 18 Oct 2000 13:35:22 +0200
|
||||
From: Matthias Lenhardt <mlenhardt@inonet.com>
|
||||
Organization: InoNet Computer GmbH
|
||||
X-Mailer: Mozilla 4.61 [en] (X11; I; Linux 2.2.10 i686)
|
||||
X-Accept-Language: de-DE, en
|
||||
MIME-Version: 1.0
|
||||
To: Tom Sedge <tom@cognality.com>, isdn4linux@listserv.isdn4linux.de
|
||||
Subject: Re: Nokia 7110 -> ISDN questions
|
||||
References: <Pine.LNX.4.21.0010181225000.31029-100000@behemoth.cognality.com>
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Sender: owner-isdn4linux@listserv.isdn4linux.de
|
||||
Precedence: bulk
|
||||
X-Loop: isdn4linux
|
||||
|
||||
Tom Sedge wrote:
|
||||
>
|
||||
> Hi,
|
||||
>
|
||||
> I'm trying to get a Nokia 7110 calling in to a Linux ISDN box, but am a
|
||||
> little confused (even after reading the V.110 Mini-FAQ).
|
||||
>
|
||||
> I want to WAP browse directly from the phone, there is no PDA connected to
|
||||
> it.
|
||||
|
||||
Hi Tom,
|
||||
unfortunately, I can't tell you why your configuration doesn't work, but
|
||||
I
|
||||
can show you mine. It allows me to dail into a Linux box with the Nokia
|
||||
7110 mobile and access local WAP contents:
|
||||
|
||||
/etc/inittab:
|
||||
# ISDN Dialin for WAP
|
||||
# Settings for Nokia 7110
|
||||
i0:23:respawn:/usr/sbin/mgetty -m '""
|
||||
AT&B512&E<YourMSN>&X0S14=4S19=197&R9600 OK' -s 38400 /dev/ttyI0
|
||||
|
||||
/etc/mgetty+sendfax/login.config:
|
||||
/AutoPPP/ - root /usr/sbin/pppd file /etc/ppp/wap.conf
|
||||
|
||||
/etc/ppp/wap.conf:
|
||||
-vjccomp -ac -pc -vj
|
||||
name <Hostname>
|
||||
192.168.1.200:192.168.1.201
|
||||
netmask 255.255.255.0
|
||||
ipcp-accept-local
|
||||
ipcp-accept-remote
|
||||
noauth
|
||||
nodetach
|
||||
noipx
|
||||
mru 296
|
||||
proxyarp
|
||||
lock
|
||||
asyncmap 0
|
||||
idle
|
||||
60
|
||||
|
||||
Hope that helps,
|
||||
Matthias
|
||||
--
|
||||
<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
Matthias Lenhardt - Software Ingenieur
|
||||
mail:mlenhardt@inonet.com
|
||||
InoNet Computer GmbH
|
||||
http://www.inonet.com/
|
||||
Computers are like air conditioners:
|
||||
They stop working properly if you open windows.
|
||||
<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@listserv.isdn4linux.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body.
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
Date: Sat, 19 Oct 1996 02:21:45 +0200
|
||||
X-Sender: sw0001@aixrs1.hrz.uni-essen.de To: isdn4linux@hub-wue.franken.de
|
||||
From: Matthias Hessler <hessler@wi-inf.uni-essen.de> Subject: RE: options files
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
At 17:57 18.10.1996 +0200, you wrote:
|
||||
>Matthias Hessler <hessler@wi-inf.uni-essen.de> ha escrito a
|
||||
>isdn4linux@hub-wue.franken.de:
|
||||
>
|
||||
>> well, isdnctrl does not quite assign interface ipppx to /dev/ipppx by
|
||||
>> default (e.g. interface ippp3 to /dev/ippp3). I'm not entirely sure how
|
||||
>it
|
||||
>> does its assignements, but I think it takes interface ipppx and binds it
|
||||
>to
|
||||
>> the first available /dev/ipppx, starting x with 0 and counting up (e.g.
|
||||
>your
|
||||
>> interface ippp3 gets bound to /dev/ippp0 because there is an ipppd
|
||||
>already
|
||||
>> waiting there)
|
||||
>> Which leads to your problem: you want interface ippp3 _exclusively_ bound
|
||||
>to
|
||||
>> /dev/ippp3 because you want only your ipppd configured for /dev/ippp3
|
||||
>> answering all the traffic from your interface ippp3.
|
||||
>
|
||||
>Hi Matthias
|
||||
>
|
||||
>Ok; for clarifying scripts (and my concepts :) I name net interfaces
|
||||
>isdn0..isdn3, but when I try to launch ipppd, it tells me there must be at
|
||||
>least ippp0 configured (???) Does it means i have to configure interfaces
|
||||
>twice (one time for ipppX and other for isdnX)?
|
||||
|
||||
No.
|
||||
|
||||
Here is what happened: You named your net interfaces isdn0..isdn3 and did not use the pppbind option. Now isdnctrl has no clue that it should connect those interfaces to any /dev/ippp* .
|
||||
|
||||
If you name your net interfaces ippp0..ippp3, then isdnctrl _automatically_ recognizes (by the name of those interfaces) that those should be connected to the /dev/ippp* . It does it (if I'm not wrong about that default behavior) when data arrives by connecting a net interface to the first available /dev/ippp* .
|
||||
Let's say if data arrives on net interface ippp3, it tries to connect it to /dev/ippp0, if that is available. If not (already another connection going on?), it tries /dev/ippp1, and so on.
|
||||
As you have two ipppd's with different options running that is not what you want, because you can never tell in advance which data will be answered by which ipppd.
|
||||
|
||||
No matter how the name of your net interfaces is, if you use the "isdnctrl pppbind" option, you can tell isdnctrl to _always_ connect some netinterface with some /dev/ippp* . E.g.:
|
||||
isdnctrl pppbind isdn3 2
|
||||
tells isdnctrl to always put data from net interface isdn3 to /dev/ippp2.
|
||||
That is very handy, if you want to have a special ipppd lurking on /dev/ippp2 that should get all that traffic from isdn3.
|
||||
|
||||
Isdnctrl acts like a switch board.
|
||||
|
||||
Default behaviour (using net interfaces ippp0 and ippp1): =========================================================
|
||||
|
||||
Kernel---------+
|
||||
| |
|
||||
Net interface ippp0 ippp1 (isdnctrl addif ippp*)
|
||||
| |
|
||||
| |
|
||||
Isdnctrl (by default, to next available device
|
||||
=> no isdnctrl pppbind necessary)
|
||||
| |
|
||||
| |
|
||||
Device /dev/ippp0 /dev/ippp1 /dev/ippp2 /dev/ippp3
|
||||
| | | |
|
||||
ipppd ipppd ipppd ipppd
|
||||
|
||||
|
||||
Default behaviour (using net interfaces isdn0, isdn1, isdn2, isdn3): ====================================================================
|
||||
|
||||
Kernel------+----------+----------+
|
||||
| | | | Net interface isdn0 isdn1 isdn2 isdn3 (isdnctrl addif ippp*)
|
||||
|
||||
isdnctrl (no connection from isdn* to any /dev/ippp*,
|
||||
because: name of net interface is not "ippp*")
|
||||
|
||||
Device /dev/ippp0 /dev/ippp1 /dev/ippp2 /dev/ippp3
|
||||
| | | |
|
||||
ipppd ipppd ipppd ipppd
|
||||
|
||||
|
||||
|
||||
Behavior using "isdnctrl pppbind" (A):
|
||||
======================================
|
||||
|
||||
Kernel------+----------+----------+
|
||||
| | | | Net interface isdn0 isdn1 isdn2 isdn3 (isdnctrl addif isdn*)
|
||||
|
|
||||
| Isdnctrl +-------+ (isdnctrl pppbind isdn3 2)
|
||||
|
|
||||
| Device /dev/ippp0 /dev/ippp1 /dev/ippp2 /dev/ippp3
|
||||
| | | |
|
||||
ipppd ipppd ipppd ipppd
|
||||
|
||||
|
||||
Behavior using "isdnctrl pppbind" (A):
|
||||
======================================
|
||||
|
||||
Kernel------+----------+----------+
|
||||
| | | | Net interface isdn0 isdn1 isdn2 isdn3 (isdnctrl addif isdn*)
|
||||
|
|
||||
| Isdnctrl +-------+ (isdnctrl pppbind isdn2 1)
|
||||
|
|
||||
|
|
||||
Device /dev/ippp0 /dev/ippp1 /dev/ippp2 /dev/ippp3
|
||||
| | | |
|
||||
ipppd ipppd ipppd ipppd
|
||||
|
||||
|
||||
I hope that's correct. Please correct me if I'm wrong...
|
||||
|
||||
Bye,
|
||||
Matthias
|
||||
|
||||
**************************************************************** Matthias Heßler Email: hessler@wi-inf.uni-essen.de Gelsenkirchener Str. 67 Tel. : 0201-8915964 45141 Essen Fax. : 0201-8915965 ****************************************************************
|
||||
|
||||
--------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,64 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Return-Path: <owner-isdn4linux@hub-wue.franken.de>
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id BAA15222; Wed, 2 Apr 1997 01:42:14 +0200
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0wC9b7-000oMha; Tue, 1 Apr 97 21:52 MET DST
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0wC9Zz-001Ib6a; Tue, 1 Apr 97 21:50 MET DST
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0wC9Zv-001Ib5E; Tue, 1 Apr 97 21:50 MET DST
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0wC9a3-000Bm6C; Tue, 1 Apr 97 21:50 MET DST
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0wC9Zr-001Ib5E; Tue, 1 Apr 97 21:50 MET DST
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:2619
|
||||
From: Tillmann Steinbrecher <tst@darmstadt.netsurf.de>
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: pppcosts 0.04 (Telefonkostenanzeige für PPP) jetzt auch für ISDN!
|
||||
Date: Tue, 01 Apr 1997 18:09:58 +0200
|
||||
Organization: http://people.frankfurt.netsurf.de/tst/
|
||||
Lines: 25
|
||||
Message-ID: <33413356.E22991E@darmstadt.netsurf.de>
|
||||
Reply-To: tst@darmstadt.netsurf.de,0050763@telmi.de
|
||||
NNTP-Posting-Host: board-49.darmstadt.netsurf.de
|
||||
Mime-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Mailer: Mozilla 4.0b2 (X11; I; Linux 2.0.28 i586)
|
||||
X-Priority: 3 (Normal)
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
|
||||
Hi,
|
||||
|
||||
die neue Version von pppcosts (Programm zur Kostenberechnung
|
||||
für PPP-Verbindungen, zeigt Online-Zeit und Telefonkosten
|
||||
z.B. in einem kleinen Fenster an) ist jetzt verfügbar.
|
||||
Sie funktioniert jetzt auch mit ISDN, deshalb das Announcement
|
||||
hier.
|
||||
|
||||
Wer Interesse hat:
|
||||
|
||||
http://people.darmstadt.netsurf.de/tst/pppcosts.htm
|
||||
|
||||
Ist demnächst auch auf SunSite; zur Zeit noch im
|
||||
Incoming-Verzeichnis, später dann auch in
|
||||
sunsite.unc.edu /pub/Linux/system/network/serial/
|
||||
pppcosts-0.04.tgz (20K).
|
||||
|
||||
ciao - Till
|
||||
--
|
||||
_____ ___ _____
|
||||
|_ _| / __|_ _| Tillmann Steinbrecher - tst@darmstadt.netsurf.de
|
||||
| | _ \__ \ | | _ Pager 0050763@telmi.de http://till.home.ml.org
|
||||
|_|(_)|___/ |_|(_) "Black holes are where God divided by zero."
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA57240; Mon, 3 Feb 1997 02:10:16 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id CAA02823; Mon, 3 Feb 1997 02:11:22 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vrBVK-000oIZa; Mon, 3 Feb 97 00:39 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vrBSm-001IbJa; Mon, 3 Feb 97 00:36 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vrBSf-001IbGE; Mon, 3 Feb 97 00:36 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vrBTn-000Bm0C; Mon, 3 Feb 97 00:37 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vrBSa-001IbGE; Mon, 3 Feb 97 00:36 MET
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Xref: oops de.alt.comm.isdn4linux:1297
|
||||
From: Jens Brambring <jens.brambring@p-net.de>
|
||||
Newsgroups: de.alt.comm.isdn4linux
|
||||
Subject: IPX/SPX ueber isdn4linux und WIN95
|
||||
Date: Mon, 03 Feb 1997 01:33:41 +0100
|
||||
Organization: Customer of EUnet Germany; Info: info@Germany.EU.net
|
||||
Lines: 41
|
||||
Distribution: world
|
||||
Message-Id: <32F53265.5E65@p-net.de>
|
||||
Nntp-Posting-Host: peu-62.d.eunet.de
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Mailer: Mozilla 3.01Gold [de] (Macintosh; I; 68K)
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Status:
|
||||
|
||||
Hallo, es geht!!!!
|
||||
|
||||
Man muss nur den normalen pppd auf einem isd4linux ttyIx verwenden!
|
||||
(Setzt natuerlich einen mgetty oder aehnliches auf dem device voraus)
|
||||
|
||||
Zunaechst habe ich mir einen User ppptest eingerichtet dessen
|
||||
startshell auf /usr/sbin/diplogin eingetragen ist (/etc/passwd),
|
||||
|
||||
Inhalt der Datei diphosts in /etc:
|
||||
ppptest::192.9.215.80:192.9.215.70:255.255.255.0::PPP,296
|
||||
|
||||
Inhalt der Datei /etc/ppp/options:
|
||||
-detach
|
||||
192.9.215.80:192.9.215.70
|
||||
defaultroute
|
||||
mru 1524
|
||||
debug
|
||||
/dev/ttyI1
|
||||
ipx-routing 2
|
||||
ipxcp-max-failure 20
|
||||
ipx-node 4:5
|
||||
ipx-network 0x3000
|
||||
|
||||
|
||||
Hierbei scheint die Angabe von ipx-network sehr wichtig zu sein!!!!!
|
||||
Die ip-Adressen koennen vermutlich entfallen!
|
||||
|
||||
Dann legt man auf den ethernetstrang ein normales ipxinterface an
|
||||
und startet ipxd (aus dem ipxripd).
|
||||
|
||||
Unter Windows muss dann beim DFUE-Netzwerk noch ein entsprechendes
|
||||
script eingerichtet
|
||||
werden und dann sollte es eigentlich funken.
|
||||
|
||||
Bin leider schon etwas Muede vom ganzen Probieren, werde eventuell noch
|
||||
mal eine
|
||||
Ausfuehrliche Beschreibung senden.
|
||||
|
||||
Bin aber fuer alle Fragen offen!
|
||||
|
||||
Ciao, Jens
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,156 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA76880; Sat, 30 Nov 1996 13:44:05 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id NAA01959; Sat, 30 Nov 1996 13:44:57 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vTliY-000oIPa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlho-000Boba; Sat, 30 Nov 96 10:27 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vTlil-001IYWa; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vTlii-001IYVE; Sat, 30 Nov 96 10:28 MET
|
||||
Received: from giovanni.rhein-neckar.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vTlge-000BobC; Sat, 30 Nov 96 10:26 MET
|
||||
Message-Id: <m0vTlgM-000rArC@giovanni.rhein-neckar.de>
|
||||
From: girardi@giovanni.rhein-neckar.de (Norbert J. Girardi)
|
||||
Subject: Re: routes?
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Date: Sat, 30 Nov 1996 10:25:58 +0100 (MET)
|
||||
Cc: uwe.tetzlaff@t-online.de
|
||||
In-Reply-To: <m0vTby7-0000fJC@ermail02.btx.dtag.de> from "Uwe Tetzlaff" at Nov 29, 96 10:11:00 pm
|
||||
X-Mailer: ELM [version 2.4 PL24]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
>
|
||||
> Moins..
|
||||
>
|
||||
> Ich hab hier in der Firma 2 Rechner W95 192.168.254.2 Ne2000
|
||||
> LinuX 192.168.254.1 3Com 509
|
||||
|
||||
> Zu Hause habe ich einen Rechner LinuX 192.168.255.1 Teles S0-16.3
|
||||
>
|
||||
> Also zu meinem Problem : ich teste mit ping die Verbindung :
|
||||
>
|
||||
> von LinuX zu Hause <-> LinuX Firma via isdn0 = geht.
|
||||
> von W95 Firma <-> LinuX Firma via eth0 = geht.
|
||||
> von W95 Firma <-> LinuX zu Hause via eth0 -> isdn0 = geht nicht !
|
||||
> von LinuX zu Hause <-> W95 Firma via isdn0 -> eth0 = geht nicht !
|
||||
>
|
||||
>
|
||||
> Sicherlich voellig off topic denn ich tippe auf ein Problem bei meinen routes.
|
||||
>
|
||||
Es waere sicher hilfreich gewesen wenn Du die 'routes' mitgeschickt
|
||||
haettest ;-)
|
||||
|
||||
OK, versuchen wir's trotzdem mal.
|
||||
|
||||
Nennen wir Linux at home -> lihome = 192.168.255.1 ,
|
||||
Linux at work -> liwork = 192.168.254.1 ,
|
||||
W95 at work -> work95 = 192.168.254.2 .
|
||||
|
||||
Also, bei mir wuerde die '/etc/hosts' auf allen Rechnern _so_ aussehenen:
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
# hosts This file describes a number of hostname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
# On small systems, this file can be used instead of a
|
||||
# "named" name server. Just add the names, addresses
|
||||
# and any aliases to this file...
|
||||
#
|
||||
|
||||
# For loopbacking.
|
||||
127.0.0.1 localhost
|
||||
|
||||
192.168.255.1 lihome
|
||||
|
||||
192.168.254.1 liwork
|
||||
192.168.254.2 work95
|
||||
|
||||
# End of hosts.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Die '/etc/networks' auf allen Rechnern :
|
||||
========================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
#
|
||||
# networks This file describes a number of netname-to-address
|
||||
# mappings for the TCP/IP subsystem. It is mostly
|
||||
# used at boot time, when no name servers are running.
|
||||
#
|
||||
|
||||
loopback 127.0.0.0
|
||||
homenet 192.168.255.0
|
||||
worknet 192.168.254.0
|
||||
|
||||
# End of networks.
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Ich benutze fuer die statischen routes eine Datei in /etc/rc.d
|
||||
in die ich alle routes eintrage, und die aus /etc/rc.d/rc.inet1
|
||||
aufgerufen wird.
|
||||
|
||||
Die /etc/rc.d/rc.routes auf lihome:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig isdn0 lihome pointopoint liwork
|
||||
/sbin/route add liwork isdn0
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alles was raus soll geht per default ueber isdn0
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
Die /etc/rc.d/rc.routes auf liwork:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 liwork
|
||||
/sbin/route add -net worknet eth0
|
||||
# Alles was von worknet kommt und nach worknet soll
|
||||
# muss ueber eth0
|
||||
|
||||
/sbin/ifconfig isdn0 liwork pointopoint lihome
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork isdn0
|
||||
# Alle anderen gehen per default ueber isdn0
|
||||
# !!!! Klappt nur wenn auch der Kernel mit
|
||||
# IP FORWARDING/GATEWAYING kompiliert wurde !!!!
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
Fuer W95 tue ich mal so als sei es ein Linux, d.h.
|
||||
die Uebersetzung in W95 Syntax bleibt dem Leser ueberlassen :-)
|
||||
|
||||
Die /etc/rc.d/rc.routes auf work95:
|
||||
===================================
|
||||
|
||||
# ----------------- [schnippel] --------------------------
|
||||
/sbin/ifconfig eth0 work95
|
||||
/sbin/route add liwork
|
||||
/sbin/route add default gw liwork eth0
|
||||
# alles geht per default ueber eth0 nach liwork
|
||||
# der sorgt dann fuer die Verteilung
|
||||
# ----------------- [schnippel] --------------------------
|
||||
|
||||
|
||||
|
||||
- Norbert
|
||||
|
||||
--
|
||||
Norbert J. Girardi < girardi@giovanni.rhein-neckar.de >
|
||||
Voice: +49 621 493417 (h) +49 621 381-3260 (w)
|
||||
Neckarstr. 17, D-68549 Ilvesheim, Germany
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,115 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA773032; Wed, 4 Dec 1996 19:25:55 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id TAA04351; Wed, 4 Dec 1996 19:27:00 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vVFcT-000oJ0a; Wed, 4 Dec 96 12:36 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vVFZi-000Boma; Wed, 4 Dec 96 12:33 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vVFbR-001IV5a; Wed, 4 Dec 96 12:35 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vVFbO-001IV3E; Wed, 4 Dec 96 12:34 MET
|
||||
Received: from dino.nus.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vVFYU-000BomC; Wed, 4 Dec 96 12:31 MET
|
||||
Received: from localhost (nils@localhost [127.0.0.1]) by dino.nus.de (8.7.6/8.7.3) with ESMTP id MAA09043 for <isdn4linux@hub-wue.franken.de>; Wed, 4 Dec 1996 12:35:02 +0100
|
||||
Date: Wed, 4 Dec 1996 12:35:02 +0100 (MET)
|
||||
From: Nils Rennebarth <nils@nus.de>
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: ISDN-Problem
|
||||
In-Reply-To: <199612031939.UAA07539@mail.germanlloyd.de>
|
||||
Message-Id: <Pine.LNX.3.95.961204114817.1062I-100000@dino.nus.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
On Tue, 3 Dec 1996, Martin Bauer wrote:
|
||||
|
||||
>Moin moin,
|
||||
>
|
||||
>ich habe da ein kleines Problem:
|
||||
>
|
||||
[Emma und Gegenstelle unterhalten sich prima, aber von keinem Rechner im
|
||||
Netz der Gegenstelle geht es zu Emma]
|
||||
Emma:
|
||||
eth0 inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
|
||||
isdn0 inet addr:192.168.11.1 P-t-P:192.168.11.3
|
||||
>
|
||||
>Kernel IP routing table
|
||||
>Destination Gateway Genmask Flags Metric Ref Use =
|
||||
Iface
|
||||
>172.20.1.4 0.0.0.0 255.255.255.255 UH 0 0 11 =
|
||||
isdn0
|
||||
>192.168.11.3 0.0.0.0 255.255.255.255 UH 0 0 3 =
|
||||
isdn0
|
||||
>192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 =
|
||||
eth0
|
||||
|
||||
>0.0.0.0 192.168.11.3 0.0.0.0 UG 0 0 2 =
|
||||
isdn0
|
||||
>
|
||||
>
|
||||
>
|
||||
>Die Gegenstelle:
|
||||
>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
|
||||
eth0 inet addr:172.20.1.4 Bcast:172.20.255.255 Mask:255.255.0.0
|
||||
isdn0 inet addr:192.168.11.3 P-t-P:192.168.11.1 Mask:255.255.255.0
|
||||
|
||||
>Kernel IP routing table
|
||||
>Destination Gateway Genmask Flags Metric Ref Use =
|
||||
Iface
|
||||
>192.168.11.1 0.0.0.0 255.255.255.255 UH 0 0 15 =
|
||||
isdn0
|
||||
>192.168.10.0 192.168.11.1 255.255.255.0 UG 0 0 3 =
|
||||
isdn0
|
||||
>172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 39 =
|
||||
eth0
|
||||
|
||||
>0.0.0.0 172.20.1.1 0.0.0.0 UG 0 0 3 =
|
||||
eth0
|
||||
Es ist kein ISDN Problem, es ist ein routing Problem.
|
||||
|
||||
"Gegenstelle" bekommt =FCber ISDN ein Paket mit 192.168.11.3 als Gateway,
|
||||
wei=DF aber routing-technisch nicht, das es das selber ist.
|
||||
!! Allein durch Einrichten eines Point-to-Point Interfaces
|
||||
!! wei=DF ein Rechner noch nicht, da=DF IP-Pakete an die auf seiner Seite
|
||||
!! konfigurierte Adresse auch an ihn sind.
|
||||
|
||||
Mit anderen Worten: es fehlt auf "Gegenstelle" der Befehl
|
||||
route add -host 192.168.11.3 dev isdn0
|
||||
|
||||
N.B.: Warum machst Du es nicht einfacher, wenn Du Point-to-Point routen
|
||||
verwendest:
|
||||
|
||||
auf Emma:
|
||||
ifconfig isdn0 192.168.10.1 pointopoint 172.20.1.4 -arp -broadcast
|
||||
route add -host 172.20.1.4
|
||||
route add default gw 172.20.1.4
|
||||
|
||||
auf Gegenstelle:
|
||||
ifconfig isdn0 172.20.1.4 pointopoint 192.168.10.1 -arp -broadcast
|
||||
route add -host 192.168.10.1
|
||||
route add -net 192.168.10.0 gw 192.168.10.1
|
||||
|
||||
Nils
|
||||
|
||||
--
|
||||
\ / | Nils Rennebarth
|
||||
--* WINDOWS 42 *-- | Schillerstr. 61=20
|
||||
/ \ | 37083 G=F6ttingen
|
||||
| ++49-551-71626
|
||||
Micro$oft's final answer | http://www.nus.de/~nils
|
||||
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,82 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Return-Path: <owner-isdn4linux@hub-wue.franken.de>
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id WAA09672; Sat, 5 Apr 1997 22:37:34 +0200
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0wDaF3-000oMna; Sat, 5 Apr 97 20:31 MET DST
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0wDaEr-001IWda; Sat, 5 Apr 97 20:30 MET DST
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0wDaEo-001IUzE; Sat, 5 Apr 97 20:30 MET DST
|
||||
Received: from dinet.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0wDaE6-000BmHC; Sat, 5 Apr 97 20:30 MET DST
|
||||
Received: (from todd@localhost) by dinet.de (8.8.5/8.8.5/DInet-DIS-1) id UAA22630; Sat, 5 Apr 1997 20:29:40 +0200
|
||||
From: Torsten Hentschel <Torsten.Hentschel@DInet.de>
|
||||
Message-Id: <199704051829.UAA22630@dinet.de>
|
||||
Subject: Re: Windows => Linux => ISDN => WWW Wo gibt es eine Anleitung ?
|
||||
To: C.Reiser@t-online.de
|
||||
Date: Sat, 5 Apr 1997 20:29:40 +0200 (MET DST)
|
||||
Cc: isdn4linux@hub-wue.franken.de
|
||||
In-Reply-To: <E85snA.3It@temic-ech.spacenet.de> from "Karsten Keil" at Apr 5, 97 09:49:58 am
|
||||
X-NCC-RegID: de.delta
|
||||
X-Organization: DI Delta Internet GmbH
|
||||
X-Phone: +49 2932 916 132
|
||||
X-Fax: +49 2932 916 232
|
||||
X-Mailer: ELM [version 2.4 PL24]
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
X-MIME-Autoconverted: from 8bit to quoted-printable by dinet.de id UAA22630
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Content-Type: text/plain; charset=US-ASCII
|
||||
|
||||
> Christian Reiser (C.Reiser@t-online.de) wrote:
|
||||
> : Wo gibt es Informationen wie man ein Windows 3.11 (Ethernet-)Netzwerk=
|
||||
=20
|
||||
> : (mit Novell-Server) mit Netscape =FCber einen Linux-Server mit ISDN
|
||||
> : ans WWW anbinden kann. Bevorzugt w=E4re eine Linux-Proxy L=F6sung.
|
||||
>=20
|
||||
> : Hardware-Eckdaten:
|
||||
> : Netzwerkkarten: 3Com507
|
||||
> : 14 Clients: 16 Mb; dx2/50 Dos 6.22; Windows wird aus dem Server
|
||||
> : gestartet
|
||||
> : 1 Novell-Server: Novell 3.11
|
||||
> : 1 Linux-Server : 16 MB; dx2/50; SUSE 4.4; Kernel 2.0.25; Hisax 1.2;=20
|
||||
> : Fritz-Card
|
||||
> Du brauchst auf den Novell Clients einen TCP/IP Protocol Stack z.B. Nov=
|
||||
ell
|
||||
> LAN Workplace, oder einen anderen, der auf die ODI Treiber aufsetzt.
|
||||
> Ohne den geht garnichts.
|
||||
> Wenn das laeuft, sollte es genuegend Anleitungen geben, entweder ueber =
|
||||
Proxy
|
||||
> oder ueber Masquerading ueber die Linuxbox ins Internet zu kommen.
|
||||
|
||||
Man braucht gar nicht Novell etwas Geld in den Rachen werfen.
|
||||
Den TCP/IP-Stack kann man von Microsoft fuer Windows 3.11 auch
|
||||
kostenlos bekommen (und Windows95 hat ihn eingebaut):
|
||||
|
||||
http://www.microsoft.com/kb/softlib/mslfiles/TCP32B.EXE
|
||||
|
||||
Nur eines gibt es zu beachten: Ausser TCP/IP darf kein weiteres
|
||||
Protokoll durch das Microsoft Netzwerk eingebunden werden.
|
||||
Denn IPX wuerde sofort mit den Treibern von Novell hapern.
|
||||
|
||||
Ansonsten laeuft das hier bei einem unserer Kunden wunderbar,
|
||||
in einer sehr aehnlichen Konfiguration.
|
||||
|
||||
Gruesse,
|
||||
|
||||
Torsten Hentschel
|
||||
|
||||
--=20
|
||||
http://www.DInet.de/
|
||||
/\ von-Siemens-Str. 12=20
|
||||
/ \ Delta Internet GmbH 59757 Arnsberg
|
||||
/ \ Netzwerkdienst & Vertrieb Tel. +49 2932 91 61 32=20
|
||||
/______\ Fax. +49 2932 91 61 91
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
X-Sender: dekay@xplor.ipf.de
|
||||
References: <m0vIIrY-000LHmC@scorpio.in-berlin.de> from "Gernot Zander" at Oct 29, 96 07:26:08 pm
|
||||
Date: Wed, 30 Oct 1996 19:05:55 +0200
|
||||
To: isdn4linux@hub-wue.franken.de, michael@abadonna.franken.de From: Darko Krizic <dekay@ipf.de>
|
||||
Subject: Sounds erzeugen für vgetty/vboxgetty Cc: maze@frankfurt.netsurf.de
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de Reply-To: isdn4linux@hub-wue.franken.de
|
||||
|
||||
Ich möchte hier ein paar Erfahrungen mit vboxgetty zusammenzählen, insbesondere im Zusammenhang mit dem Erzeugen von Messages (Sounds)
|
||||
|
||||
Sound-Format
|
||||
------------
|
||||
Das Format ADPCM-4 generiert beim Aufzeichnen wesentlich kleinere Dateien als die Formate uLaw oder aLaw, deswegen ist dieses Format vorzuziehen.
|
||||
Vorteil von uLaw ist allerdings, daß es dem au-Format entspricht und so direkt mit cat sound.au >/dev/audio angehört werden kann, allerdings gibt es zwei Probleme:
|
||||
|
||||
- Das ist nur interessant für Leute, die auch am Linux-Rechner sitzen und dieser eine Soundkarte besitzt. Viele Leute verwenden den Linux-Rechner als "echten" Server, der weder Monitor noch Soundkarte hat.
|
||||
|
||||
- Die aufgezeichneten Samples haben einen sehr schwachen Pegel, den man theoretisch mit
|
||||
|
||||
autopvf <x.msg | pvfamp 5 | pvftoau >x_laut.msg
|
||||
|
||||
verstärken könnte, allerdings muß man sich dann sowieso mit den pvf-Tools befassen und kann dann auch gleich auf ADPCM-4 umsteigen.
|
||||
|
||||
Aufzeichen über Telefon
|
||||
-----------------------
|
||||
Wie in der i4l-FAQ beschrieben ist es ohne Probleme möglich sich selbst auf den Anrufbeantworter zu sprechen und die entsprechende Datei in das Verzeichnis /var/spool/vobx/<user>/incoming/standard.msg zu kopieren.
|
||||
Allerdings ist die Qualität bei weitem nicht ausreichend, unter anderem, weil sich am Anfang und Ende Geräusche oder Pausen befinden.
|
||||
|
||||
Selbst Dateien generieren
|
||||
-------------------------
|
||||
Ich habe einen Macintosh, der unter anderem die Möglichkeit bietet, Sound von Audio-CDs ohne Verluste per SCSI auf die Festplatte zu kopieren und nachträglich auf andere Samplegeschwindigkeit und Bitbreite zu konvertieren, z.B. "16bit, 44kHz -> 8bit, 22kHz". Desweiteren kann ich mit dem Mikrofon Sounds und am Ende alle Sounds manipulieren und mixen. Die beste Voraussetzungen für verrückte Ansagen.
|
||||
|
||||
Das Format, das der Macintosh verarbeitet ist AIFF. Dieser Standard wird auch von SGI und anderen namhaften Herstellern verwendet, allerdings konnte ich unter Linux kein Programm finden, das dieses Format versteht. Auf dem Macintosh gibt es allerdings das Programm "SoundApp", welches nach und von Suns .au konvertieren und ADPCM wenigstens abspielen kann. Anmerkung: Dummerweise nennt SoundApp das au-Format "NeXT", weil dieses Format dort verwendet wird, allerdings habe ich lange gebraucht, um herauszufinden, daß es dasselbe wie au ist.
|
||||
|
||||
Ich nehme mal an, daß unsere Windows-Freunde ähnliche Fähigkeiten haben.
|
||||
Das Windows-Hausformat nennt sich WAV. Auch dieses Format kennen die PVF-Tools nicht, aber ich denke mal, daß es unter Windows ähnliche Werkezeuge gibt, die sogar ADPCM-4 generieren können.
|
||||
|
||||
Ich weiß nicht, wie man unter Linux Sounds aufzeichnen kann und welches Format diese haben, allerdings wird es wohl Sun-AU-Format haben, so daß der weitere Text auf für Linux-Benutzer interessant ist.
|
||||
|
||||
Sounds für vboxgetty konvertieren
|
||||
---------------------------------
|
||||
Wie bereits oben beschrieben, empfehle ich den Betrieb mit ADPCM-4. Bei mgetty befindet sich die pvf-Toolsammlung, welche Soundformate konvertieren und manipulieren kann, allerdings gab es Probleme mit den Formaten, die vboxgetty generiert hatte (ADPCM-4). Gegen dieses Problem gibt es Patches, allerdings enthält die neuste Version von mgetty (0.99 Okt02 und wahrscheinlich auch ein paar ältere) bereits die Programme "zyxeltopvf" und "pvftozyxel[234]", mit welchen genau diese Formate konvertiert werden können.
|
||||
|
||||
Mein Macintosh liefert die Sounds 22254Hz. Um daraus einen entsprechenden Sound in ADPCM-4 zu generieren verwende ich folgende Kommendozeile:
|
||||
|
||||
autopvf <standard.au \
|
||||
| pvfspeed 2.73 \
|
||||
| pvfamp 0.2 \
|
||||
| pvftozyxel4 >standard.msg
|
||||
|
||||
autopvf konvertiert dan au-Sound nach pvf. pvfspeed ändert die Samplingrate auf 8000 (22554 / 8000 = 2.73), damit die Geschwindigkeit wieder stimmt.
|
||||
pvfamp 0.2 senkt den Pegel auf 20%, weil der Sound sonst total verzerrt klingt, schließlich kennt das Telefon nur Frequenzen zwischen 300 und 3000Hz. Zuletzt legt pvftozyxel4 den Sound im richtigen Format ab.
|
||||
|
||||
Dadurch, daß weder Rauschen noch Klacken zu hören sind, klingen so generierte Ansagen einfach klasse. Wer etwas mit Sound-Manipulationsprogrammen spielen kann, der kann tolle Effekte generieren, allerdings sollte man damit wegen des beschränten Frequenzbandes echt sparsam umgehen, sonst versteht der Anrufende nichts.
|
||||
|
||||
Nachbarbeiteitung von aufgezeichneten Nachrichten ------------------------------------------------- Ich möchte, daß meine Nachrichten in ein auf dem Macintosh abspielbaren Format konvertiert werden und an eine e-mail an mich attached werden sollen. Ich konvertiere den Sound nach au mit folgenden Befehlen:
|
||||
|
||||
zyxeltopvf <sound.pvf \
|
||||
| pvfamp 5
|
||||
| pvfcut 0.2 0.2 \
|
||||
| pvftoau 8000 >sound.au
|
||||
|
||||
zyxeltopvf konvertiert den aufgezeichneten Sound nach pvf und pvfamp verstärkt diesen auf das fünffache, weil der Pegel (s.ganz.o) sehr schwach ist. pvfcut schneidet 0.2 Sekunden vorne und hinten ab, weil man hinten z.B. das Auflegen des Telefons hört. Scheinbar zeichnet vboxgetty schon auf, während der Beep-Ton abgespielt wird, weil dieser ganz am Anfang zu hören ist. Die 8000 nach dem pvtoau ist sehr wichtig, weil diese sorgt, daß die Frequenz in den au-Header geschrieben wird, damit das abspielende Programm auch die richtige Rate spielt!
|
||||
|
||||
Namen des Anrufenden in der Mail
|
||||
--------------------------------
|
||||
vboxgetty kennt den Namen des Anrufenden, während es die Nachricht aufzeichnet, dummerweise wird dieser Name nicht an das Programm "-p /usr/local/vbox/new_voice" mit übergeben. Ich habe deswegen einen (very dirty) hack von vboxgetty erzeugt, welches als 4ten Parameter den Namen an new_voice übergibt, damit ist es möglich, daß das Subject der generierten Mail aussieht wie "Voice from Darko Krizic" oder zumindest "Voice from Unknown". Da bei internationalen Calls zumindest die Landeskennung übergeben wird, kann eine Nachricht aus USA ein Subject wie "Voice from USA" haben.
|
||||
|
||||
Ich bitte hiermit den Autor von vbox selbst die Änderungen zu machen.
|
||||
|
||||
Beispiel für ein new_voice-Script
|
||||
---------------------------------
|
||||
Das Nachfolgende Shellscript hat bei mir den Namen /usr/local/vbox/new_voice und in der Inittab hängt noch "-p /usr/local/vbox/new_voice" als Parameter, damit dieses Programm nach dem Aufzeichnen einer Nachricht aufgerufen wird.
|
||||
|
||||
Die Datei wird nach .au konvertiert und als MIME-encoded Message an den Benutzer für den die Nachricht aufgezeichnet wurde, geschickt. Ich verwende übrigens mimeencode nicht. Wenn diese Mail von Eudora auf dem Macintosh empfangen wird, wird der Sound als Icon angezeigt. Ein Doppelklick reicht aus, um den Sound abzuspielen.
|
||||
|
||||
#! /bin/sh
|
||||
#
|
||||
# Creates a new MIME-encoded mail to the user with an attached .au file # Written 1996 by Darko Krizic
|
||||
|
||||
PATH="${PATH}:/usr/local/vbox"
|
||||
TMP="/tmp/vboxmime.$$"
|
||||
ME="`basename $0`"
|
||||
|
||||
mailer="/usr/sbin/sendmail -t"
|
||||
bound="NewVoice_-${$}${$}"
|
||||
type="audio/ulaw"
|
||||
|
||||
file="${1}"
|
||||
id="${2}"
|
||||
user="${3}"
|
||||
name="${4}"
|
||||
date="`date +%y%m%d%H%M`"
|
||||
newname=${date}-${id}.au
|
||||
if [ -z "$name" ]
|
||||
then
|
||||
name=$id
|
||||
fi
|
||||
|
||||
echo "\
|
||||
Subject: Voice from $name
|
||||
From: root@xplor.ipf.de (Voice Subsystem) To: $user
|
||||
Content-type: multipart/mixed; boundary=\"$bound\"
|
||||
|
||||
--$bound
|
||||
Content-Type: text/pain
|
||||
|
||||
A new voice has arrived
|
||||
|
||||
Sender ID: $id
|
||||
Name: $name
|
||||
File: $file
|
||||
|
||||
--$bound
|
||||
Content-Type: application/octet-stream; name=\"$newname\" Content-transfer-encoding: x-uuencode
|
||||
" >$TMP
|
||||
|
||||
/usr/local/bin/zyxeltopvf <$file \
|
||||
| /usr/local/bin/pvfamp 5 \
|
||||
| /usr/local/bin/pvfcut 0.2 0.2 \
|
||||
| /usr/local/bin/pvftoau 8000 \
|
||||
| /usr/bin/uuencode $newname >>$TMP
|
||||
#rmdcutheader <$file | uuencode $newname >>$TMP echo "--$bound--" >>$TMP
|
||||
|
||||
|
||||
$mailer -t <$TMP
|
||||
|
||||
#cat $TMP
|
||||
rm $TMP
|
||||
|
||||
Anmerkungen: Es handelt sich dabei nur um ein Beispiel, welches ich schnell für mich zusammengehackt habe. Wenn jemand Anmerkugen und Ideen hat, soll ich bei mir melden. Ich erwähne nochmal: Das Script funktioniert zwar auch so, allerdings macht es erst richtig sinn, wenn vboxgetty als 4ten Parameter den Namen des Anrufenden übertragt, sonst ist das Subject immer "Voice from Unkown".
|
||||
|
||||
Darko Krizic
|
||||
|
||||
----------------------------------------------------------------------- Darko Krizic Phrankphurt Germany mailto:dekay@xplor.ipf.de
|
||||
|
||||
|
||||
--------------------------------------------------- To remove yourself from this mailing list send email to majordomo@hub-wue.franken.de containing "unsubscribe isdn4linux <your_email_address>" in the message body [-vg]
|
|
@ -1,51 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Return-Path: <owner-isdn4linux@hub-wue.franken.de>
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id WAA09582; Tue, 15 Apr 1997 22:57:36 +0200
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0wHCfe-000oPka; Tue, 15 Apr 97 20:09 MET DST
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0wHChM-001IXYa; Tue, 15 Apr 97 20:11 MET DST
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0wHChI-001IXUE; Tue, 15 Apr 97 20:11 MET DST
|
||||
Received: from hertz.ikp.physik.th-darmstadt.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0wHCem-000BmHC; Tue, 15 Apr 97 20:08 MET DST
|
||||
Received: (from bon@localhost) by hertz.ikp.physik.th-darmstadt.de (8.8.3/8.8.3) id UAA00262; Tue, 15 Apr 1997 20:07:43 +0200
|
||||
Date: Tue, 15 Apr 1997 20:07:43 +0200
|
||||
Message-Id: <199704151807.UAA00262@hertz.ikp.physik.th-darmstadt.de>
|
||||
From: Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
To: Thomas Haas <haas@studi.unizh.ch>
|
||||
Cc: isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: modem.inf fuer i4l
|
||||
In-Reply-To: <Pine.LNX.3.95.970415171412.805A-100000@peecee.haaseng.ch>
|
||||
References: <Pine.LNX.3.95.970415171412.805A-100000@peecee.haaseng.ch>
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
|
||||
>>>>> "Thomas" == Thomas Haas <thaas@haaseng.ch> writes:
|
||||
|
||||
Thomas> Hallo Mit NetModem/IP von http://www.tactical-sw.com/ kann ich
|
||||
Thomas> nun endlich die ttyIxx von Win95 aus uebers Netz nutzen. Cool.
|
||||
|
||||
Thomas> Weiss jemand, wie eine win95-inf-Datei fuer Modems aussehen
|
||||
Thomas> muss? Ich moechte gerne so eine inf-Datei fuer den
|
||||
Thomas> i4l-Modem-Emulator (ttyIxx) basteln, oder hat das schon jemand
|
||||
Thomas> gemacht?
|
||||
|
||||
Vielleicht hilft Dir weiter wie Kevin Wells ein Inf-File fuer ein
|
||||
Nullmodemadapter geschrieben hat:
|
||||
http://www.vt.edu:10021/K/kewells/net/
|
||||
|
||||
Uwe Bonnes bon@elektron.ikp.physik.th-darmstadt.de
|
||||
|
||||
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
|
||||
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
||||
|
|
@ -1,143 +0,0 @@
|
|||
Return-Path: POPmail
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA86280; Sun, 22 Dec 1996 17:10:31 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id RAA20385; Sun, 22 Dec 1996 17:11:29 +0100
|
||||
Received: from hub-wue.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0vbmno-000oJba; Sun, 22 Dec 96 13:14 MET
|
||||
Received: from oops.franken.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vbmKK-000Bp3a; Sun, 22 Dec 96 12:44 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0vbmGb-001ISMa; Sun, 22 Dec 96 12:40 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0vbmGX-001ISKE; Sun, 22 Dec 96 12:40 MET
|
||||
Received: from outmail.zdv.uni-tuebingen.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0vblye-000Bp3C; Sun, 22 Dec 96 12:21 MET
|
||||
Received: from mailserv.uni-tuebingen.de by outmail.zdv.uni-tuebingen.de (4.1/ZDV-Uni-Tuebingen-1.0)
|
||||
id AA05580; Sun, 22 Dec 96 12:21:42 +0100
|
||||
Received: from commlink.zdv.uni-tuebingen.de by mailserv.uni-tuebingen.de
|
||||
with SMTP (PP); Sun, 22 Dec 1996 12:21:34 +0100
|
||||
Received: (from pecrm01@localhost)
|
||||
by commlink.zdv.uni-tuebingen.de (8.6.12/8.6.12) id MAA11944;
|
||||
Sun, 22 Dec 1996 12:21:31 +0100
|
||||
Date: Sun, 22 Dec 1996 12:21:29 +0100 (MEZ)
|
||||
From: Michael Ruder <michael.ruder@uni-tuebingen.de>
|
||||
To: isdn4linux@hub-wue.franken.de
|
||||
Subject: ISDNLOG und SAMBA: Versand von WinPopup-Meldungen
|
||||
Message-Id: <Pine.HPP.3.91.961222122056.11937A-100000@commlink.zdv.uni-tuebingen.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
Reply-To: isdn4linux@hub-wue.franken.de
|
||||
Status:
|
||||
|
||||
Hallo!
|
||||
|
||||
Da sind sie endlich, die Skripte fuer den Versand von WinPopUp-Meldungen.
|
||||
|
||||
In die isdnlog.conf wird als allgemeines Event das START_Ring-Skript
|
||||
eingetragen, dass bei eingehenden Anrufen einmal aufgerufen wird und mit
|
||||
Send_WinPopup eine Meldung verschickt.
|
||||
|
||||
Ausserdem habe ich sowohl bei Connect als auch bei Hangup bei meinem
|
||||
Provider ein Skripte eingetragen: ZDV_Connect und ZDV_Hangup. Diese
|
||||
beiden senden ebenfalls mit Send_WinPopup einen Hinweis, dass die
|
||||
ISDN-Leitung gerade auf- bzw. abgebaut wird. (Allerdings nur, wenn eine
|
||||
Datei /etc/isdnlog/isdn.debug existiert, so kann man dies relativ leicht
|
||||
an und abschalten.)
|
||||
|
||||
Das Hauptskript Send_WinPopup versendet mit smbclient die eigentlichen
|
||||
Messages, in diesem Fall an die Rechner "mizar" und "alcor" (Das sollte
|
||||
der TCP/IP-Name (aus dem Nameserver) der jeweiligen Rechner sein, oder
|
||||
falls mit WINS gearbeitet wird, kann es auch der im Windows-Netzwerk
|
||||
eingetragene Name sein, am Besten nimmt man an beiden Stellen den
|
||||
gleichen Namen.)
|
||||
|
||||
Die Meldung im ersten Parameter wird an das Programm gepiped, da
|
||||
smbclient sie normalerweise von der Tastatur einlesen wuerde. Ausserdem
|
||||
kann man mit -U noch einen Absender angeben, den WinPopup anzeigt.
|
||||
|
||||
Auf den jeweiligen Rechnern muss WinPopup (3.11/95) oder der
|
||||
Nachrichtendienst (NT) gestartet sein.
|
||||
|
||||
Als kleine Ergaenzung: Auch auf Linux-Rechnern kann man die WinPopups
|
||||
empfangen, dann muss man allerdings im smb.conf die entsprechende Zeile
|
||||
eintragen und ein Skript anlegen, was die Meldung irgendwie anzeigt oder
|
||||
loggt.
|
||||
|
||||
Falls noch weiteres Interesse an der Konfiguration von Samba besteht,
|
||||
kann ich auch gerne mal meine Konfig-Dateien posten.
|
||||
|
||||
Ich hoffe Ihr koennt was damit anfangen, die Skripte sind nicht gerade
|
||||
elegant, aber ich hab sowas noch nicht oft gemacht.
|
||||
|
||||
Viel Spass,
|
||||
|
||||
-Michael
|
||||
|
||||
---- isdnlog.conf ----
|
||||
MYMSNS=4
|
||||
MYPREFIX=07472
|
||||
START=IR=/etc/isdnlog/START_Ring $1 $2 $3;
|
||||
MSN1 Telefon 1 -
|
||||
MSN2 Telefax 1 -
|
||||
MSN3,1 Michael 1 -
|
||||
MSN4,7 Teles 1 -
|
||||
PROVIDER ZDV_Internet 1 ippp0 OC=/etc/isdnlog/ZDV_Connect; OH=/etc/isdnlog/ZDV_Hangup;
|
||||
|
||||
---- START_Ring ---
|
||||
#!/bin/sh
|
||||
# Michael Ruder
|
||||
#
|
||||
# Version: 08.10.96
|
||||
#
|
||||
# /etc/isdnlog/START_Ring
|
||||
#
|
||||
|
||||
/etc/isdnlog/Send_WinPopup 'Eingehender Anruf von '$2' auf '$3'.' &
|
||||
|
||||
# if test $3="IRGENDEINE_NUMMER"; then
|
||||
# isdnctrl dial ippp0
|
||||
# fi
|
||||
|
||||
---- Send_WinPopup ----
|
||||
#!/bin/sh
|
||||
# Michael Ruder
|
||||
#
|
||||
# Version: 08.10.96
|
||||
#
|
||||
# /etc/isdnlog/Send_WinPopup
|
||||
#
|
||||
|
||||
echo $1 | smbclient -M mizar -U ISDN-Administrator >/dev/null
|
||||
echo $1 | smbclient -M alcor -U ISDN-Administrator >/dev/null
|
||||
|
||||
---- ZDV_Connect ----
|
||||
#!/bin/sh
|
||||
# Michael Ruder
|
||||
#
|
||||
# Version: 08.10.96
|
||||
#
|
||||
# /etc/isdnlog/ZDV_Connect
|
||||
#
|
||||
|
||||
if test -e "/etc/isdnlog/isdn.debug"; then
|
||||
/etc/isdnlog/Send_WinPopup 'Die ISDN-Leitung wird aufgebaut.' &
|
||||
fi
|
||||
|
||||
---- Auschnitt aus smb.conf ----
|
||||
[global]
|
||||
message command = mv %s %s.working; echo WinPopup-Message from %f@%m for %t: > %s; cat %s.working >> %s; wall %s; rm %s %s.working &
|
||||
|
||||
-Michael
|
||||
|
||||
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
|
||||
< Michael Ruder, Fax +49-7472-91382, email: Michael.Ruder@Uni-Tuebingen.DE >
|
||||
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
|
||||
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
Binary file not shown.
|
@ -1,18 +0,0 @@
|
|||
Da auf meinen Arbeitsplatzrechner i.d.R. kein LinuX laeuft, habe ich zwei
|
||||
CGI-Skripte (Perl) (+2 weitere Shellscripte) gebastelt, die einem den
|
||||
Zugriff auf seine eigenen Anrufe per WWW-Browser ermoeglichen. Die Perlscripte gehoeren ins CGI-Verzeichnis
|
||||
(des Users), die anderen beiden koennen irgendwo liegen. Die Scripte greifen
|
||||
auf die Umgebungsvariable $REMOTE_USER des http-Servers zu. Es ist also
|
||||
notwendig, dass sich der User gegenueber dem Server authentifiziert !
|
||||
Weiterhin muessen die Scripte mit User-Rechten laufen. Der aktuelle
|
||||
Apache 1.2b4 sollte das zwar koennen. Da das ihm beiliegende "suexec" jedoch
|
||||
bei mir nicht richtig lief, habe ich es etwas geaendert (habe ich auch
|
||||
beigelegt).
|
||||
|
||||
Gruss
|
||||
Marc
|
||||
____________________________________________________________________
|
||||
Marc Neitzner | marc@zeus.han.de | Tel.: 0511-2714507
|
||||
Alte Ziegelei 7 | neitzner@rvs.uni-hannover.de | Fax : 0511-2714537
|
||||
30419 Hannover | |
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
Return-Path: owner-isdn4linux@hub-wue.franken.de
|
||||
Received: from hsun6.wi-inf.uni-essen.de by aixrs1.hrz.uni-essen.de (AIX 4.1/UCB 5.64/4.03)
|
||||
id AA44892; Mon, 10 Mar 1997 19:02:05 +0100
|
||||
Received: from rachael.franken.de by hsun6.wi-inf.uni-essen.de (SMI-8.6/SMI-SVR4)
|
||||
id TAA14192; Mon, 10 Mar 1997 19:03:40 +0100
|
||||
Received: from oops.franken.de by rachael.franken.de with smtp
|
||||
(Smail3.1.29.1 #8) id m0w43xj-000oHda; Mon, 10 Mar 97 13:13 MET
|
||||
Received: by oops.franken.de (Linux Smail3.1.29.1 #1)
|
||||
id m0w43vH-001ITva; Mon, 10 Mar 97 13:11 MET
|
||||
Received: from hub-wue.franken.de by oops.franken.de with smtp
|
||||
(Linux Smail3.1.29.1 #1) id m0w43vB-001ITuE; Mon, 10 Mar 97 13:11 MET
|
||||
Received: from ki.comcity.de by hub-wue.franken.de with smtp
|
||||
(Smail3.1.29.1 #1) id m0w43wO-000BoNC; Mon, 10 Mar 97 13:12 MET
|
||||
Received: from commgate.local.comcity.de by ki.comcity.de (SMI-8.6/SMI-SVR4)
|
||||
id OAA13546; Mon, 10 Mar 1997 14:08:01 -0100
|
||||
Received: from [194.25.34.206] by commgate.local.comcity.de with ESMTP id S.000357002404 for <dimi@wiesbaden.netsurf.de>,...; Mon, 10 Mar 1997 13:12:39 +0100
|
||||
Received: from widor2.comcity.de (vwidor@widor2.comcity.de [192.168.1.2]) by widor1.comcity.de (8.7.5/8.7.3) with SMTP id MAA00192; Mon, 10 Mar 1997 12:52:10 +0100
|
||||
Message-Id: <3323F56B.4FEA8D7@rd.comcity.de>
|
||||
Date: Mon, 10 Mar 1997 12:50:03 +0100
|
||||
From: Volker Widor <vwidor@ki.comcity.de>
|
||||
Organization: -
|
||||
X-Mailer: Mozilla 3.01Gold (X11; I; Linux 2.0.29 i586)
|
||||
To: Dimitrios Dimitrakos <dimi@wiesbaden.netsurf.de>
|
||||
Cc: isdn4linux@hub-wue.franken.de
|
||||
Subject: Re: T-Online BTX
|
||||
References: <331A14C0.5AFA30E1@wiesbaden.netsurf.de>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Sender: owner-isdn4linux@hub-wue.franken.de
|
||||
Precedence: bulk
|
||||
|
||||
bei mir leuft XCept-1.1.2.
|
||||
(allerdings komischerweise nur in SW)
|
||||
ich habe aber ISDN beim kompilieren von XCept ausgeschaltet.
|
||||
dann noch in init.cept folgendes:
|
||||
|
||||
---------------------------------------------------------
|
||||
hangupstring "~+++~ATH0^M"
|
||||
connectstring "64000/X.75"
|
||||
nodialtonestring "NO DIALTONE^M"
|
||||
nocarrierstring "NO CARRIER^M"
|
||||
busystring "BUSY^M"
|
||||
opendevice 9600 "/dev/ttyI2"
|
||||
|
||||
send "AT&F^M"
|
||||
sleep 1
|
||||
send "AT&D2^M"
|
||||
send "ATQ0^M"
|
||||
send "ATV1^M"
|
||||
send "ATS2=255^M"
|
||||
send "AT&X1^M"
|
||||
send "AT&E000000^M" #<-- eaz eintragen!
|
||||
send "ATD01910^M"
|
||||
wait 10
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
und schon lueppt das!
|
||||
|
||||
nur eine frage, wo wir gerade dabei sind:
|
||||
wenn ich den ceptd von einem anderen rechner aus nutzen will, und den
|
||||
benutzer in users.cept
|
||||
freigegeben habe, scheitert ceptd mit der fehlermeldung (ueber syslog):
|
||||
|
||||
serverhost ceptd[160]: warning: can't verify hostname:
|
||||
gethostbyname(clientname) failed
|
||||
serverhost ceptd[160]: refused connect from name@clienthost
|
||||
|
||||
falls da jemand sagen kann, was man da machen kann, waere ich sehr
|
||||
dankbar.
|
||||
(das muss wohl irgendwo im socket.c in ceptd liegen)
|
||||
|
||||
--
|
||||
/ Volker Widor - Kiewittsholm 6a - D-24107 Ottendorf /
|
||||
/ Tel.: +49 431 583572 Fax: +49 431 583502 /
|
||||
/ E-Mail: vwidor@rd.comcity.de /
|
||||
---------------------------------------------------
|
||||
To remove yourself from this mailing list send
|
||||
email to majordomo@hub-wue.franken.de containing
|
||||
"unsubscribe isdn4linux <your_email_address>" in
|
||||
the message body [-vg]
|
|
@ -1,276 +0,0 @@
|
|||
========
|
||||
Newsgroups: uninews.comp
|
||||
Subject: Mit Crosspoint an der Uni pollen.
|
||||
From: mklose@UNI-DUISBURG.DE (Michael Klose)
|
||||
Date: 28 Jul 1996 23:26:00 +0200
|
||||
|
||||
Hallo!
|
||||
|
||||
Ich wollte was erklären (siehe Betreff):
|
||||
|
||||
Für die Leute, die nicht wissen, was Crosspoint (ab hier mit XP abgekürzt)
|
||||
ist, hier ein kleiner Ausschnitt aus der Dok:
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
CrossPoint ist eine Multinetz-Pointsoftware. Oder ausführlicher:
|
||||
CrossPoint ist ein Programm, mit dem Sie auf sehr bequeme Weise
|
||||
Daten mit Mailboxen austauschen und insbesondere elektronische Post
|
||||
(E-Mail) versenden, empfangen und verwalten können. Wichtig ist
|
||||
dabei, daß CrossPoint verschiedene, technische Mailbox-(Netz)-
|
||||
Standards unterstützt. Dadurch benötigen Sie für verschiedene Netze
|
||||
nur EIN Programm mit einer einheitlichen Benutzeroberfläche. Wichtig
|
||||
ist auch, daß CrossPoint nicht nur den kleinsten gemeinsamen Nenner
|
||||
der verschiedenen Netze bildet, sondern Ihnen zusätzlich ermöglicht,
|
||||
die Features einzelner Netze voll auszunutzen. Dazu zählen z.B. das
|
||||
Bestellen von Dateien im FidoNet, Löschnachrichten im Usenet und das
|
||||
Nachrichtenstatus-System im MausNet.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Crosspoint bietet aber leider nur für Usenet eine Möglichkeit per UUCP zu
|
||||
pollen, nicht mit einer PPP oder SLIP Verbindung.
|
||||
|
||||
Es geht aber trotzdem, und zwar mit einem Zusatztool (UKA_PPP), welches
|
||||
sogar Freeware ist.
|
||||
|
||||
Leider funktioniert UKA_PPP nicht richtig unter NT :-(( Windows 95 weiß
|
||||
ich nicht, ich kann nur sagen, daß es unter DOS und Win 3.11 läuft.
|
||||
|
||||
Warum also Crosspoint benutzen?
|
||||
|
||||
Crosspoint ist IMHO der beste Maileditor, den es gibt, er ist nicht nr für
|
||||
e-Mail, sondern auch ein Newsreader. Ich habe bisher noch kein einziges
|
||||
Programm gesehen, welches solch einen Funktionsumfang hat. Sogar PGP
|
||||
Unterstützung ist eingebaut, MIME sowieso (obwohl hier eines der wenigen
|
||||
Schwachstellen in XP liegt, er beherrscht keine Multipart MIME Mails).
|
||||
|
||||
Vor allem kann man es für fast alle Netze einsetzten: ich verwende es für
|
||||
meine beiden Fido Adressen, für meine Internetaccounts und für den T-
|
||||
Online Zugang meines Vaters.
|
||||
|
||||
Wer XP noch nicht hat, kann es sich z.B. bei mvmpc9.ciw.uni-karlsruhe.de
|
||||
holen zusammen mit UKA_PPP. (Egal ob mit FTP oder WWW).
|
||||
|
||||
Benötigt werden folgende Pakete:
|
||||
|
||||
XP311-1.EXE
|
||||
XP311-2.EXE
|
||||
XP311-U.EXE (so heißt das DIng glaube ich - auf jednen Fall der UUCP Teil)
|
||||
|
||||
Wer es noch für FIDO nutzen möchte auch noch:
|
||||
|
||||
XP311-F.EXE
|
||||
|
||||
Fangen wir an:
|
||||
|
||||
Wer XP schon installiert hat für Fido, der braucht nur die UUZ.EXE aus dem
|
||||
UUCP Paket - eine erneute Registrierung (falls nur für Fido regristriert)
|
||||
ist nicht erforderlich, so steht es jedenfalls in der DOK von UKA_PPP.
|
||||
|
||||
Was ist UKA_PPP?
|
||||
|
||||
UKA_PPP ist ein Paket, welches es ermöglicht unter DOS eine PPP/SLIP/CSLIP
|
||||
Verbindung aufzubauen, und womit man den POP, SMPT und NEWS Server
|
||||
ansprechen kann. Zusätzlich beigefügt ist ein Telnet und Ftp Client.
|
||||
|
||||
BTW: UKA_PPP bekommt man am besten direkt beim Autor: Wieder:
|
||||
mvmpc9.ciw.uni-karlsruhe.de
|
||||
|
||||
Aktuell ist die Version 1.51.
|
||||
|
||||
Möchte man, daß sich UKA_PPP ins Verzeichnis \DFUe installiert (Umlaute im
|
||||
Verzeichnisnamen stören UKA_PPP zwar nicht, aber falls man später PGP
|
||||
installieren möchte, dann ist es empfehlenswert gleich ein Verzeichnis
|
||||
ohne Umlaute zu wählen, da PGP diese nicht mag).
|
||||
|
||||
Wo waren wir? Verzeichnic anlegen:
|
||||
|
||||
md \DFUe
|
||||
cd \DFUe
|
||||
[Verzeichnis, wo die UKA_PPP.EXE steht]\UKA_PPP
|
||||
|
||||
Jetzt entpackt UKA_PPP alle seine Installationsdateien.
|
||||
Jetzt die SETUP.BAT laufen lassen.
|
||||
Es richtet automatisch ein Unterverzeichnis für UKA_PPP ein.
|
||||
|
||||
Es erscheint jetzt ein Setup Bildschirm:
|
||||
|
||||
Jetzt 'Default' angeben.
|
||||
|
||||
Jetzt werden zuerst nach den Schnittstellenparameter gefragt:
|
||||
|
||||
Falls das Modem an COM2 hängt, 2F8 angeben, falls an COM1 3F8.
|
||||
Wenn COM2, dann IRQ3 sonst IRQ4.
|
||||
|
||||
Bei der Baudrate 57600 angeben.
|
||||
|
||||
Bei der Initstring verwendet man am besten ATZ (ENTER)
|
||||
Dann verwendet das Modem die gespeicherten Einstellungen.
|
||||
|
||||
Jetzt muß man die Anwahlstring des Internetproviders angeben.
|
||||
|
||||
Falls Pulswahl ATDP02033789353 btw. Tonwahl: ATDT02033789353
|
||||
|
||||
Dann fragt er uns nach dem Protokoll. PPP wählen.
|
||||
|
||||
Beim Packettreiberinterrupt, einfach ENTER drücken um die
|
||||
Defaulteinstellung von 61h zu nehmen.
|
||||
|
||||
Jetzt bekommen wir einen neuen Bildschirm. Es steht zwar geschrieben, daß
|
||||
wir die Infos erst später eingeben müssen, aber wir geben sie jetzt
|
||||
trotzdem ein.
|
||||
|
||||
Dommain Suffix ist bei uns: uni-duisburg.de
|
||||
IP OF Nameserver ist bei uns: 134.91.3.16
|
||||
Unser IP ist egal, weil die wegen der PPP Verbindung dynamisch zugewiesen
|
||||
wird, hier einfach ENTER drücken.
|
||||
|
||||
Unsere Gateway ist 134.91.4.1, da wir uns über die 0203/3789353 eingewählt
|
||||
haben. Irgendwie bekomme ich bei der 0203/378950 keine PPP Verbindung zu
|
||||
Stande mit UKA_PPP, unter Windows habe ich auch nur diese Nummer
|
||||
konfiguriert, die andere habe ich noch gar nicht versucht.
|
||||
|
||||
Und er soll natürlich den internen Packet Treiber verwenden. :-))
|
||||
|
||||
Als nächstes werden die Server für die E-Mail konfiguriert:
|
||||
|
||||
POP Srever ist der Rechner, auf dem das Home Verzeichnis liegt, bei mir
|
||||
e45-hrze.uni-duisburg.de
|
||||
|
||||
POP USER ID ist der Loginusername, bei mir sl652kl
|
||||
|
||||
POP PASSWORD ist das Passwort, was es bei mir ist, sage ich nicht! :-)
|
||||
|
||||
Jetzt fragt er nach dem SMPT Server. Das ist bei uns die unidui.uni-
|
||||
duisburg.de
|
||||
|
||||
Timeserver haben wir nicht, also 0 eingeben. Den Vorgeschlagenen Server
|
||||
der Uni Karlsruhe können wir nicht benutzen, da wir mit unserer PPP
|
||||
Verbindung keine Rechner außerhalb der Uni ohne Proxies ansprechen können
|
||||
:-(((
|
||||
|
||||
Time Offset ist -1.
|
||||
|
||||
Jetzt wieder Default eingeben (also 3).
|
||||
|
||||
News ist als Newsserver OK, also ENTER eingeben.
|
||||
|
||||
Nein, jetzt keine Newsgroup abbonnieren.
|
||||
|
||||
YARN brauchen wir nicht zu installieren, also n.
|
||||
|
||||
Jetzt möchte er eine Probeverbindung aufbauen, um das Login zu 'lernen'. y
|
||||
für Ja eingeben.
|
||||
|
||||
Jetzt baut er eine Verbindung auf. Bei der Frage Host: einfach PPP und
|
||||
Enter eingeben, eine Sekunde warten, bis komische Zeichen erscheinen
|
||||
(dürfte dann fat sofort passieren), dann ALT-X drücken.
|
||||
|
||||
UKA_PPP meldet sich jetzt akustisch, daß er es geschafft hat eine PPP
|
||||
Verbindung aufzubauen.
|
||||
|
||||
Jetzt solange ENTER drücken, bis wir am Bildschirm sind, wo er wieder
|
||||
fragt Compuserve, Default oder T-Online steht. Hier natürlich wieder
|
||||
Default wählen.
|
||||
|
||||
Jetzt kommt eine Fehlermeldung, naja, eigentlich nur eine Warnung, daß wir
|
||||
Online sind, einfach mit ENTER weiter.
|
||||
|
||||
Jetzt landen wir im Hauptmenü von UKA_PPP. UKA_PPP ist jetzt fertig
|
||||
installiert.
|
||||
|
||||
Testweise kann man sich eine Telnetverbindung aufbauen zu seinem
|
||||
Homeverzeichnis.
|
||||
|
||||
Auf jeden Fall sollte man nicht vergessen aufzulegen! :-)
|
||||
|
||||
|
||||
Den größten Schritt haben wir jetzt hinter uns. Jetzt muß UKA_PPP nur noch
|
||||
in Crosspoint eingebunden werden.
|
||||
|
||||
Das ist aber gar nicht so schwer.
|
||||
|
||||
Unter EDIT/BOXEN eine neue ZCONNECT Box anlegen.
|
||||
|
||||
|
||||
Boxname: UNI-DUISBURG (eigentlich egal)
|
||||
Username: Der alias oder falls nicht vorhanden, die Benutzerkennung.
|
||||
(bei mir: mklose)
|
||||
|
||||
|
||||
Kommentar: (beliebig), bei mir Uni-Duisburg Account
|
||||
|
||||
MAPS-NAME: Spielt keine Rolle, egal was hier steht.
|
||||
|
||||
Realname: Dein ECHTER Name mit Vor und Nachname. Bei mir Michael Klose
|
||||
|
||||
Domain: .DE
|
||||
|
||||
Jetzt auf den neuen EIntrag gehen, und (E)DIT/(P)oint.
|
||||
|
||||
Unter Pointname hier die Benutzerkennung eingeben (bei mir sl652kl). Der
|
||||
Rest ist egal (einfach so lassen)
|
||||
|
||||
Unter (E)dit/(D)iverses unter Eingangsfilter (da steht als Überschrift
|
||||
Filter dann da drunter Eingang und Ausgang, der Eingangsfilter ist
|
||||
wichtig) folgendes eintragen:
|
||||
|
||||
[UKA_PPP VERZEICHNIS]\x_script.exe xpnews
|
||||
|
||||
Das ist bei diesem Bildschirm alles, was eingestellt werden muß.
|
||||
|
||||
Jetzt unter /(E)dit/(S)ysopmode folgendes eintragen:
|
||||
|
||||
Eingangspuffer: [UKA_PPP Verzeichnis]\INFILE.Z
|
||||
|
||||
Ausgangspuffer: [UKA_PPP Verzeichnis]\OUTFILE.Z
|
||||
|
||||
Herzlichen Glückwunsch! Crosspoint ist jetzt für den Uni Zugang
|
||||
eingerichtet! Jetzt kann man ganz normal unter /Netcall/Einzeln pollen!
|
||||
|
||||
Newsgroups kann man aber nicht an/abbestellen in Crosspoint. Das An/
|
||||
Absbestellen von Newsgroups geht über die UKA_PPP Programme SUBSCRIBE und
|
||||
UNSUBSCRIBE oder so ähnlich. Einfacher ist es ins UKA_PPP Verzeichnis zu
|
||||
gehen, und die Batchdatei GO aufzurufen:
|
||||
|
||||
Jetzt unter:
|
||||
|
||||
Setup/Server kann man Unsubscribe oder Subsrcribe wählen.
|
||||
|
||||
Dieses macht vor dem ersten poll wenig Sinn, da UKA_PPP sich noch keine
|
||||
Newsgroupliste geholt hat.
|
||||
|
||||
|
||||
------------- Kleine Anmerkung(en) --------------------------------------
|
||||
|
||||
|
||||
Wundert EUch nicht darüber, daß zuerst die ganzen Newsgroup Messages in
|
||||
/Junk wandern. Dieses liegt am folgendem:
|
||||
|
||||
Wenn eine Mail in *einem* Brett kommt, und dieses Brett noch nicht
|
||||
existiert, so legt XP das neue Brett an.
|
||||
|
||||
Kommen aber nur tausend Crosspostings, weiß XP nicht in welcher Gruppe er
|
||||
es hinlegen soll, da er keine Lust hat tausend Bretter anzulegen.
|
||||
|
||||
Meistens gibt es aber doch ein paar Mails, die nur zu der bestellten
|
||||
Newsgroup gehören, und dann auch ein Brett angelegt wird.
|
||||
|
||||
Falls mehrere der Bretter, wo die Mail cross gepostet ist, in XP angelegt
|
||||
sind, so ist der Artikel in jeder von diesen zu sehen.
|
||||
|
||||
Das nur so als kleien Anmerkung. ich habe auch zuerst gedacht, daß UKA_PPP
|
||||
Scheiße baut, ist aber nicht so.
|
||||
|
||||
BTW: Für XP kann ich noch dringend den Filter Crosssecretary empfehlen.
|
||||
|
||||
|
||||
Ciao!
|
||||
|
||||
Michael
|
||||
|
||||
Fido: 2:2446/301.7 [PGP KEY per EB]
|
||||
Internet: mklose@uni-duisburg.de ET 2. Semester
|
||||
|
||||
...Diese Zeile ist Werbefrei und Unzensiert!
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(i4lfaq.sgml)
|
||||
|
||||
dnl Set default installation directory
|
||||
if test -r ../.config ; then
|
||||
source ../.config
|
||||
TARGET_DIR=$CONFIG_FAQDIR
|
||||
else
|
||||
TARGET_DIR=./out
|
||||
fi
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_INSTALL
|
||||
AC_PATH_PROG(C_TAR, tar,,$PATH:/usr/sbin:/sbin:/usr/local/bin)
|
||||
AC_PATH_PROG(C_ZIP, zip,,$PATH:/usr/sbin:/sbin:/usr/local/bin)
|
||||
AC_PATH_PROG(C_GZIP, gzip,,$PATH:/usr/sbin:/sbin:/usr/local/bin)
|
||||
AC_PATH_PROG(C_SGML2HTML, sgml2html,sgml2html-not-found-or-installed,$PATH:/usr/sbin:/sbin:/usr/local/bin)
|
||||
AC_PATH_PROG(C_SGML2TXT, sgml2txt,sgml2txt-not-found-or-installed,$PATH:/usr/sbin:/sbin:/usr/local/bin)
|
||||
if test "$C_SGML2HTML" = "sgml2html-not-found-or-installed" ; then
|
||||
AC_MSG_ERROR(sgml2html not found please install it.)
|
||||
fi
|
||||
|
||||
dnl Check where to install.
|
||||
AC_ARG_WITH(dest,[ --with-dest=DIR set installation directory], \
|
||||
TARGET_DIR="$withval",)
|
||||
|
||||
AC_SUBST(TARGET_DIR)
|
||||
AC_OUTPUT(Makefile)
|
5931
FAQ/i4lfaq-de.sgml
5931
FAQ/i4lfaq-de.sgml
File diff suppressed because it is too large
Load Diff
6005
FAQ/i4lfaq.sgml
6005
FAQ/i4lfaq.sgml
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +0,0 @@
|
|||
#!/bin/sh
|
||||
exit 0
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +0,0 @@
|
|||
$Id: LEGAL.ipppcomp,v 1.1 1999/11/04 23:12:31 he Exp $
|
||||
|
||||
In certain countries, distributing or using the software contained
|
||||
in the 'ipppcomp' directory might conflict with patent law or the
|
||||
GNU General Public License, Version 2 (GPL). If this applies,
|
||||
you might need to modify this software package or take other actions
|
||||
prior to re-distributing this package. If in doubt, ask for legal
|
||||
advice.
|
||||
|
||||
Please read the section 'PATENT ISSUES' of ipppcomp/README.LZS
|
||||
and the GPL (as present in the file COPYING) for details.
|
||||
|
261
Makefile
261
Makefile
|
@ -1,261 +0,0 @@
|
|||
# $Id: Makefile,v 1.65 2008/08/31 11:38:16 keil Exp $
|
||||
#
|
||||
# Toplevel Makefile for isdn4k-utils
|
||||
#
|
||||
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
|
||||
export I4LVERSION = 3.22
|
||||
|
||||
all: do-it-all
|
||||
|
||||
LIBDIR:=/usr/lib
|
||||
|
||||
#
|
||||
# Make "config" the default target if there is no configuration file.
|
||||
#
|
||||
|
||||
# Following line is important for lib and isdnlog (sl).
|
||||
export ROOTDIR=$(shell pwd)
|
||||
|
||||
ifeq (scripts/autoconf.mk,$(wildcard scripts/autoconf.mk))
|
||||
include scripts/autoconf.mk
|
||||
do-it-all: subtargets
|
||||
else
|
||||
CONFIGURATION = config
|
||||
do-it-all: config
|
||||
endif
|
||||
|
||||
EXTRADIRS = isdnlog/tools/zone isdnlog/tools/dest
|
||||
|
||||
BUILD_ONLY :=
|
||||
SUBDIRS :=
|
||||
ifeq ($(CONFIG_ISDNLOG),y)
|
||||
SUBDIRS := $(SUBDIRS) lib $(EXTRADIRS) isdnlog
|
||||
BUILD_ONLY := isdnlog/tools/cdb
|
||||
else
|
||||
ifeq ($(CONFIG_CTRL_CONF),y)
|
||||
SUBDIRS := $(SUBDIRS) lib
|
||||
endif
|
||||
endif
|
||||
ifeq ($(CONFIG_ISDNCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) isdnctrl
|
||||
endif
|
||||
ifeq ($(CONFIG_DIVERTCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) divertctrl
|
||||
endif
|
||||
ifeq ($(CONFIG_IPROFD),y)
|
||||
SUBDIRS := $(SUBDIRS) iprofd
|
||||
endif
|
||||
ifeq ($(CONFIG_ICNCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) icn
|
||||
endif
|
||||
ifeq ($(CONFIG_HISAXCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) hisax
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_RCAPID),y)
|
||||
SUBDIRS := $(SUBDIRS) capi20 capiinfo
|
||||
else
|
||||
ifeq ($(CONFIG_AVMCAPICTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) capi20 capiinfo
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_AVMCAPICTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) avmb1 capiinit
|
||||
endif
|
||||
ifeq ($(CONFIG_ACTCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) act2000
|
||||
endif
|
||||
ifeq ($(CONFIG_LOOPCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) loop
|
||||
endif
|
||||
ifeq ($(CONFIG_EICONCTRL),y)
|
||||
SUBDIRS := $(SUBDIRS) eicon
|
||||
endif
|
||||
ifeq ($(CONFIG_IMON),y)
|
||||
SUBDIRS := $(SUBDIRS) imon
|
||||
endif
|
||||
ifeq ($(CONFIG_IMONTTY),y)
|
||||
SUBDIRS := $(SUBDIRS) imontty
|
||||
endif
|
||||
ifeq ($(CONFIG_IPPPSTATS),y)
|
||||
SUBDIRS := $(SUBDIRS) ipppstats
|
||||
endif
|
||||
ifeq ($(CONFIG_XMONISDN),y)
|
||||
SUBDIRS := $(SUBDIRS) xmonisdn
|
||||
endif
|
||||
ifeq ($(CONFIG_XISDNLOAD),y)
|
||||
SUBDIRS := $(SUBDIRS) xisdnload
|
||||
endif
|
||||
ifeq ($(CONFIG_IPPPD),y)
|
||||
SUBDIRS := $(SUBDIRS) ipppd
|
||||
endif
|
||||
ifeq ($(CONFIG_VBOX),y)
|
||||
SUBDIRS := $(SUBDIRS) vbox
|
||||
endif
|
||||
ifeq ($(CONFIG_RCAPID),y)
|
||||
SUBDIRS := $(SUBDIRS) rcapid
|
||||
endif
|
||||
ifeq ($(CONFIG_CAPIFAX),y)
|
||||
SUBDIRS := $(SUBDIRS) capifax
|
||||
endif
|
||||
ifeq ($(CONFIG_PPPDCAPIPLUGIN),y)
|
||||
SUBDIRS := $(SUBDIRS) pppdcapiplugin
|
||||
endif
|
||||
ifeq ($(CONFIG_GENMAN),y)
|
||||
SUBDIRS := $(SUBDIRS) doc
|
||||
endif
|
||||
ifeq ($(CONFIG_FAQ),y)
|
||||
SUBDIRS := $(SUBDIRS) FAQ
|
||||
endif
|
||||
ifeq ($(CONFIG_EUROFILE),y)
|
||||
SUBDIRS := $(SUBDIRS) eurofile
|
||||
endif
|
||||
ifneq ($(SUBDIRS),)
|
||||
ifeq ($(filter lib,$(SUBDIRS)),)
|
||||
SUBDIRS := lib $(SUBDIRS)
|
||||
endif
|
||||
endif
|
||||
|
||||
subtargets: $(CONFIGURATION)
|
||||
set -e; for i in `echo $(BUILD_ONLY) $(SUBDIRS)`; do $(MAKE) -C $$i all; done
|
||||
|
||||
rootperm:
|
||||
@echo 'main(int argc,char**argv){unlink(argv[0]);return(getuid()==0);}'>g
|
||||
@if gcc -x c -o G g && rm -f g && ./G ; then \
|
||||
/bin/echo -e "\n\n Need root permission for (de)installation!\n\n"; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
install:
|
||||
set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i install; done
|
||||
@: || if [ -c $(DESTDIR)/dev/isdnctrl0 ] && ls -l $(DESTDIR)/dev/isdnctrl0 | egrep "[[:space:]]45,[[:space:]]+64[[:space:]]" > /dev/null; \
|
||||
then \
|
||||
/bin/echo -e '(some) ISDN devices already exist, not creating them.\nUse scripts/makedev.sh manually if necessary.'; \
|
||||
else \
|
||||
sh scripts/makedev.sh $(DESTDIR) ; \
|
||||
fi
|
||||
|
||||
uninstall: rootperm
|
||||
set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i uninstall; done
|
||||
|
||||
#
|
||||
# targets clean and distclean go through ALL directories
|
||||
# regardless of configured options.
|
||||
#
|
||||
clean:
|
||||
-set -e; \
|
||||
for i in `echo ${wildcard */GNUmakefile}`; do \
|
||||
$(MAKE) -i -C `dirname $$i` clean; \
|
||||
done;
|
||||
-set -e; \
|
||||
for i in `echo ${wildcard */Makefile}`; do \
|
||||
$(MAKE) -i -C `dirname $$i` clean; \
|
||||
done;
|
||||
for i in `echo $(BUILD_ONLY) $(EXTRADIRS)`; do \
|
||||
if [ -f $$i/Makefile ]; then $(MAKE) -i -C $$i clean; fi; \
|
||||
done;
|
||||
-rm -f *~ *.o
|
||||
|
||||
distclean: clean
|
||||
-$(MAKE) -C scripts/lxdialog clean
|
||||
-set -e; \
|
||||
for i in `echo ${wildcard */GNUmakefile}`; do \
|
||||
$(MAKE) -i -C `dirname $$i` distclean; \
|
||||
done;
|
||||
-set -e; \
|
||||
for i in `echo ${wildcard */Makefile}`; do \
|
||||
if [ -f $$i ] ; then \
|
||||
$(MAKE) -i -C `dirname $$i` distclean; \
|
||||
fi ; \
|
||||
done;
|
||||
for i in `echo $(BUILD_ONLY) $(EXTRADIRS)`; do \
|
||||
if [ -f $$i/Makefile ]; then $(MAKE) -i -C $$i distclean; fi; \
|
||||
done;
|
||||
-rm -f *~ .config .config.old scripts/autoconf.h .menuconfig \
|
||||
Makefile.tmp .menuconfig.log scripts/defconfig.old \
|
||||
scripts/autoconf.mk \
|
||||
find . -name '.#*' -exec rm -f {} \;
|
||||
|
||||
scripts/lxdialog/lxdialog:
|
||||
@$(MAKE) -C scripts/lxdialog all
|
||||
|
||||
scripts/autoconf.h: .config
|
||||
perl scripts/mk_autoconf.pl
|
||||
|
||||
scripts/autoconf.mk: .config
|
||||
perl scripts/mk_autoconf.pl
|
||||
|
||||
cfgerror:
|
||||
@echo ""
|
||||
@echo "WARNING! Configure in $(ERRDIR) failed, disabling package"
|
||||
@echo ""
|
||||
@sleep 1
|
||||
@cp etc/Makefile.disabled $(ERRDIR)/Makefile
|
||||
|
||||
# Next target makes three attempts to configure:
|
||||
# - if a configure script exists, execute it
|
||||
# - if a Makefile.in exists, make -f Makefile.in config
|
||||
# - if a Makefile already exists, make config
|
||||
#
|
||||
subconfig: scripts/autoconf.h scripts/autoconf.mk
|
||||
@echo Selected subdirs: $(BUILD_ONLY) $(SUBDIRS)
|
||||
@set -e; \
|
||||
for i in `echo $(BUILD_ONLY) $(SUBDIRS)`; do \
|
||||
if [ -x $$i/configure ] ; then \
|
||||
/bin/echo -e "\nRunning configure in $$i ...\n"; sleep 1; \
|
||||
(cd $$i; \
|
||||
test "$$i" = "eicon" && FIRMWAREDIR_OPT="--with-firmware=$(CONFIG_DATADIR)"; \
|
||||
./configure $(FIRMWAREDIR_OPT) \
|
||||
--sbindir=$(CONFIG_SBINDIR) \
|
||||
--bindir=$(CONFIG_BINDIR) \
|
||||
--mandir=$(CONFIG_MANDIR) \
|
||||
--datadir=$(CONFIG_DATADIR) \
|
||||
--libdir=$(LIBDIR) \
|
||||
--sysconfdir=$(CONFIG_I4LCONFDIR) \
|
||||
|| $(MAKE) -C ../ ERRDIR=$$i cfgerror); \
|
||||
elif [ -f $$i/Makefile.in ] ; then \
|
||||
/bin/echo -e "\nRunning make -f Makefile.in config in $$i ...\n"; sleep 1; \
|
||||
$(MAKE) -C $$i -f Makefile.in config; \
|
||||
elif [ -f $$i/Makefile ] ; then \
|
||||
/bin/echo -e "\nRunning make config in $$i ...\n"; sleep 1; \
|
||||
$(MAKE) -C $$i config; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
#
|
||||
# Next target uses a second tempory Makefile
|
||||
# because new .config has to be re-included.
|
||||
#
|
||||
menuconfig: scripts/lxdialog/lxdialog
|
||||
@scripts/Menuconfig scripts/config.in
|
||||
@cp Makefile Makefile.tmp
|
||||
$(MAKE) -f Makefile.tmp subconfig
|
||||
@rm -f Makefile.tmp
|
||||
|
||||
#
|
||||
# For testing: runs Menuconfig only
|
||||
#
|
||||
testconfig: scripts/lxdialog/lxdialog
|
||||
@scripts/Menuconfig scripts/config.in
|
||||
|
||||
config: menuconfig
|
||||
|
||||
mrproper: distclean
|
||||
|
||||
archive: distclean
|
||||
@(ln -nvfs $(ROOTDIR) ../isdn4k-utils-$(I4LVERSION) ;\
|
||||
mkdir -p ../distisdn ;\
|
||||
tar cvhzf ../distisdn/isdn4k-utils-$(I4LVERSION).tar.gz --exclude-vcs ../isdn4k-utils-$(I4LVERSION) ;\
|
||||
rm ../isdn4k-utils-$(I4LVERSION) )
|
||||
|
||||
distarch: distclean
|
||||
(ln -nvfs $(ROOTDIR) ../isdn4k-utils-$(I4LVERSION) ;\
|
||||
mkdir -p ../distisdn ;\
|
||||
tar -cvhz -X distexclude -f ../distisdn/isdn4k-utils-$(I4LVERSION).tar.gz \
|
||||
--exclude-vcs ../isdn4k-utils-$(I4LVERSION) ;\
|
||||
rm ../isdn4k-utils-$(I4LVERSION) )
|
||||
|
||||
dist: distarch
|
|
@ -1,9 +0,0 @@
|
|||
all: isdn-faq.html
|
||||
|
||||
isdn-faq.html: isdn-faq.txt htmlify.pl Makefile
|
||||
./htmlify.pl isdn-faq.txt > isdn-faq.html
|
||||
|
||||
clean:
|
||||
rm -f isdn-faq.html
|
||||
|
||||
distclean: clean
|
|
@ -1,132 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
&doit("all");
|
||||
exit(0);
|
||||
|
||||
sub doit
|
||||
{
|
||||
local($part) = @_;
|
||||
local($lang) = "german";
|
||||
|
||||
if($part eq "all")
|
||||
{
|
||||
print'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">' . "\n";
|
||||
print'<html><head><title>English-German mini-FAQ for ISDN4Linux</title></head>';
|
||||
print'<body text="#000000" link="#0000ff" vlink="#000080" bgcolor="#ffffff">';
|
||||
print"<pre>\n";
|
||||
}
|
||||
|
||||
open(INFILE, $ARGV[0]) || die("Couldn't open $ARGV[0]") if($part eq "all");
|
||||
open(INFILE2, $ARGV[0]) || die("Couldn't open $ARGV[0]") if($part ne "all");
|
||||
|
||||
while($line= (($part eq "all") ? <INFILE> : <INFILE2>))
|
||||
{
|
||||
$line =~ s/&/&/g;
|
||||
$line =~ s/</</g;
|
||||
$line =~ s/>/>/g;
|
||||
if($line =~ /http:/)
|
||||
{
|
||||
$line =~ s/(http:[^ \n]+)/<a href="\1">\1<\/a>/g;
|
||||
}
|
||||
elsif($line =~ /ftp:/)
|
||||
{
|
||||
$line =~ s/(ftp:[^ \n]+)/<a href="\1">\1<\/a>/g;
|
||||
}
|
||||
elsif($line =~ /www./)
|
||||
{
|
||||
$line =~ s/(www.[^ \n]+)/<a href="http:\/\/\1">\1<\/a>/;
|
||||
}
|
||||
$line =~ s/\<([A-Za-z0-9_.-]+\@[a-zA-Z0-9.-]+)\>/<a href="mailto:\1"><\1><\/a>/g;
|
||||
if($line =~ /mini-faq f/i)
|
||||
{
|
||||
$line =~ s/^/<\/pre><h1>/;
|
||||
$line =~ s/\n/<\/h1><pre>/;
|
||||
}
|
||||
if($line =~ /see below/i)
|
||||
{
|
||||
$line =~ s/^/<\/pre><h1><a href="#toc0">/;
|
||||
$line =~ s/\n/<\/a><\/h1><pre>/;
|
||||
}
|
||||
if($line =~ /^0/) {$lang = "english"};
|
||||
if($lang eq "german")
|
||||
{
|
||||
if($line =~ /^[0-9]+\./)
|
||||
{
|
||||
if($part eq "all")
|
||||
{
|
||||
$line =~ s/^([0-9]+)\./<br><a name="frage\1">\1.<\/a><b>/;
|
||||
}
|
||||
else
|
||||
{
|
||||
$line =~ s/^([0-9]+)\./<br><a href="#frage\1">\1.<\/a><b>/;
|
||||
}
|
||||
$header = "yes";
|
||||
}
|
||||
$line =~ s/(Frage ([0-9]+))/<a href="#frage\2">\1<\/a>/g;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($line =~ /^[0-9]+\./)
|
||||
{
|
||||
if($part eq "all")
|
||||
{
|
||||
$line =~ s/^([0-9]+)\./<br><a name="question\1">\1.<\/a><b>/;
|
||||
}
|
||||
else
|
||||
{
|
||||
$line =~ s/^([0-9]+)\./<br><a name="toc\1" href="#question\1">\1.<\/a><b>/;
|
||||
}
|
||||
$header = "yes";
|
||||
}
|
||||
$line =~ s/(question ([0-9]+))/<a href="#question\2">\1<\/a>/g;
|
||||
}
|
||||
$line =~ s/^ /<br> /;
|
||||
if($line =~ /^$/)
|
||||
{
|
||||
if($header eq "yes")
|
||||
{
|
||||
$line =~ s/^$/<\/b>/;
|
||||
$header = "no";
|
||||
}
|
||||
else
|
||||
{
|
||||
$line =~ s/^$//;
|
||||
}
|
||||
}
|
||||
if($line =~ /germantoc/ && $part eq "all")
|
||||
{
|
||||
&doit("germantoc");
|
||||
}
|
||||
elsif($line =~ /englishtoc/ && $part eq "all")
|
||||
{
|
||||
&doit("englishtoc");
|
||||
}
|
||||
elsif($part eq "all")
|
||||
{
|
||||
print $line;
|
||||
}
|
||||
elsif($part eq "germantoc" && $lang eq "german" &&
|
||||
($header eq "yes" || $line =~ /<\/b>/))
|
||||
{
|
||||
print $line;
|
||||
}
|
||||
elsif($part eq "englishtoc" && $lang eq "english" &&
|
||||
($header eq "yes" || $line =~ /<\/b>/))
|
||||
{
|
||||
print $line;
|
||||
}
|
||||
}
|
||||
|
||||
close(INFILE2);
|
||||
|
||||
if($part eq "all")
|
||||
{
|
||||
print"</pre>";
|
||||
print '<p> <a href="http://validator.w3.org/check/referer"><img border=0
|
||||
src="http://validator.w3.org/images/vh32"
|
||||
alt="Valid HTML 3.2!" height=31 width=88></a>
|
||||
</p>';
|
||||
print"</body></html>\n";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,388 +0,0 @@
|
|||
English-German mini-FAQ for ISDN4Linux
|
||||
Englisch-Deutsche mini-FAQ für ISDN4Linux
|
||||
|
||||
Mini-FAQ online: http://home.worldonline.dk/~ehcorry/linux/isdn-faq.html
|
||||
|
||||
See below for English!
|
||||
|
||||
germantoc
|
||||
|
||||
1. Wo gibt es die FAQ?
|
||||
|
||||
http://www.mhessler.de/i4lfaq.html (View + Download)
|
||||
Die FAQ wird in Englisch gewartet, eine Deutsche Übersetzung findet sich
|
||||
unter http://www.wolf-b.de/i4l/i4lfaq-de.html
|
||||
|
||||
2. Wo gibt es eine einfache Anleitung für ISDN4Linux?
|
||||
|
||||
http://www.franken.de/users/klaus/ Wenn du lieber Niederländisch oder
|
||||
Englisch liest, kann http://www.wurtel.demon.nl/ nützlich sein. Es gibt
|
||||
auch eine französische Mini-HOWTO unter
|
||||
http://www.linux-france.org/article/connex/ISDN
|
||||
|
||||
3. Wo gibt es die SuSE Support-Datenbank, wo viele Fragen zu ISDN4Linux
|
||||
beantwortet werden?
|
||||
|
||||
http://sdb.suse.de/sdb/de/html/katlist.ISDN.html
|
||||
|
||||
4. Was gibt es sonst für Dokumentationen?
|
||||
|
||||
'man isdnctrl', schau auch unter "SEE ALSO". Auch 'man ipppd'. Und die
|
||||
README-Dateien in /usr/src/linux/Documentation/isdn Viele von den HOWTOs
|
||||
haben generell mit Netzwerk zu tun, und sind auch für ISDN4Linux
|
||||
relevant. Siehe deinen Lieblingsmirror vom LDP, z.B.
|
||||
http://SunSITE.auc.dk/ldp/HOWTO/HOWTO-INDEX-3.html
|
||||
|
||||
5. Wo gibt es die "geheime FAQ"?
|
||||
|
||||
http://www.deja.com/=dnc/ bzw. http://www.deja.com/=dnc/home_ps.shtml
|
||||
Suche mit Stichwort isdn4linux (wer hätt's gedacht). Nicht vergessen,
|
||||
auch in der Datenbank mit den alten Artikeln zu suchen, wenn du erstmal
|
||||
nichts findest.
|
||||
|
||||
6. Die erste (Netscape-)Verbindung geht immer kaputt wegen dynamischen
|
||||
IP-Adressen.
|
||||
|
||||
Hast du SuSE 5.2, 3. Auflage oder neuer schreibst du in /etc/rc.config
|
||||
IP_DYNIP="yes"
|
||||
Sonst (oder wenn du nicht neu booten willst) machst du
|
||||
echo 5 > /proc/sys/net/ipv4/ip_dynaddr
|
||||
Das kannst du z.B. auch in /etc/rc.d/rc.local schreiben.
|
||||
Die Nummer 5 ist immer unproblematisch, aber die genauen Nummern, die
|
||||
verstanden werden, sind von Kernel zu Kernel unterschiedlich. Siehe
|
||||
/usr/doc/kernel-doc-deineversion/networking/ip_dynaddr.txt oder
|
||||
/usr/src/linux/Documentation/networking/ip_dynaddr.txt und
|
||||
http://sdb.suse.de/sdb/de/html/dynippatch.html
|
||||
|
||||
Wenn die Verbindung von einer Windows-Maschine stammt (und die
|
||||
ISDN4Linux-Maschine Masquerading/NAT macht), kann es sein, daß
|
||||
die Windows-Maschine einfach zu schnell aufgibt. Die Default-Wert von
|
||||
Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP\MaxConnectRetries
|
||||
ist 3 (6 Sekunden), sollte aber mindestens 5 (24 Sekunden) sein.
|
||||
Das kann man mit dem Registry Editor ändern.
|
||||
|
||||
7. Es wird immer wieder gewählt, besonders wenn ich hart auflege (ohne auf
|
||||
Timeout zu warten).
|
||||
|
||||
Starte den RST-Provoking-Mode. Zum Aktivieren siehe Frage 6 und siehe
|
||||
auch http://sdb.suse.de/sdb/de/html/katlist.ISDN.html Wenn du Kernel
|
||||
2.2 verwendest, siehe auch
|
||||
http://www-users.rwth-aachen.de/Michael.Mueller4/dynip.html Mit neueren
|
||||
Kernels (2.2.14) musst du stattdessen diese Version nehmen:
|
||||
http://www.grueneberg.de/linux/linux-2.2.14-rst.patch Für die 2.3er
|
||||
Kernels ist der Patch noch nicht verfügbar.
|
||||
|
||||
8. Nur die erste ISDN-Verbindung funktioniert, wegen Routing-Problemen.
|
||||
oder
|
||||
Die Verbindung scheint zu klappen, aber keine Daten werden übertragen,
|
||||
und ISDN4Linux legt nach kurzer Zeit wieder auf.
|
||||
|
||||
Du hast wahrscheinlich keine Default-Route. Siehe das Output von 'route
|
||||
-n'. Du brauchst die Zeile:
|
||||
/sbin/route add default $1
|
||||
in deiner /etc/ppp/ip-up-Datei (für Red Hat etc/ppp/ip-up.local) und
|
||||
deiner /etc/ppp/ip-down-Datei (für Red Hat etc/ppp/ip-down.local). Diese
|
||||
Dateien müssen genau mit:
|
||||
#!/bin/sh
|
||||
am Anfang der ersten Zeile anfangen, und müssen ausführbar sein (siehe
|
||||
'man chmod'). Befehle müssen mit vollem Pfad angegeben werden, z.B.
|
||||
'/sbin/route ...', nicht einfach 'route ...'.
|
||||
|
||||
9. Wird meine Karte unterstützt? Welchen Optionen brauche ich, wenn ich die
|
||||
Modulen lade?
|
||||
|
||||
Schau in den README-Dateien in /usr/src/linux/Documentation/isdn und frag
|
||||
Deja News mit den Stichwörtern "isdn4linux" und "wiedeinekartegenauheisst".
|
||||
|
||||
10. Wo gibt es die neusten ISDN4Linux Software?
|
||||
|
||||
Die Utils von ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/testing
|
||||
Den Kernel-Treiber aus dem neusten offiziellen Kernel von www.kernel.org
|
||||
oder ein Mirror, z.B. ftp://ftp.de.kernel.org/pub/linux/kernel
|
||||
Wenn der Kernel sehr neu sein muß (aus der -ac Serie) schaue unter z.B.
|
||||
ftp://ftp.de.kernel.org/pub/linux/kernel/people/alan/
|
||||
|
||||
Siehe auch den Web-Server deines Distributions, und deine lokale
|
||||
RPM-Repository, z.B. http://SunSITE.auc.dk/linux/RPM/
|
||||
|
||||
11. Es wird gewählt, aber die Verbindung klappt nicht.
|
||||
|
||||
Du musst in ipppd debug einschalten, und dann in /var/log/messages
|
||||
nachschauen (siehe auch Frage 14). Dabei heisst:
|
||||
|
||||
sent ConfReq ... Dein Rechner wollte etwas
|
||||
sent ConfRej ... Dein Recher weigerte sich etwas zu tun
|
||||
sent ConfNak ... Dein Rechner wollte was anderes stattdessen machen
|
||||
sent ConfAck ... Dein Rechner stimmte etwas zu
|
||||
rcvd ... Was die Gegenseite dazu gesagt hat
|
||||
|
||||
12. Was bedeuten diese komischen 'Cause'-Nummern?
|
||||
|
||||
Siehe 'man isdn_cause'
|
||||
|
||||
13. Kann ich meinen externen Terminal-Adapter mit ISDN4Linux verwenden?
|
||||
|
||||
Nein, nicht mit ISDN4Linux aber schon mit Linux, Sie werden wie Modems
|
||||
behandelt. Du brauchst also pppd und vielleicht diald. Fragen 6, 7, 8
|
||||
und 11 sind auch für dich relevant. Bedingung: AT-Befehlssatz zur
|
||||
Steuerung: Fritz!X-PC und Eumex 404 werden nicht unterstützt.
|
||||
|
||||
14. Ich habe diverse Debug-Options in ipppd und isdnctrl eingeschaltet, aber
|
||||
es erscheint nichts in der Datei /var/log/messages.
|
||||
|
||||
Es kann sein, daß du dein Syslog anders konfigurieren musst. Siehe z.B.
|
||||
'man syslogd' und 'man syslog.conf' und die Datei /etc/syslog.conf.
|
||||
Falls deine Distribution kein GUI-Tool zum Administrieren vom Syslog
|
||||
bietet kannst du auch als Schnelllösung:
|
||||
echo '*.* -/var/log/isdnfix' >> /etc/syslog.conf
|
||||
killall -HUP syslogd
|
||||
tippen. Dann wird alles Relevante und Irrelevante in /var/log/isdnfix
|
||||
geschrieben. Um das hinterher zu entfernen (empfehlenswert da die Datei
|
||||
schnell sehr groß wird) schreibst du:
|
||||
grep -v isdnfix /etc/syslog.conf > /etc/syslog.conf.new
|
||||
mv -f /etc/syslog.conf.new /etc/syslog.conf
|
||||
killall -HUP syslogd
|
||||
|
||||
15. Welche Pakete installiere ich, oder Man-Seiten lese ich, oder
|
||||
Such-Stichwörter in Deja News verwende ich für:
|
||||
|
||||
Alles: ISDN4Linux Kernel-Modul und isdn4kutils
|
||||
Ein Telefonbeantworter: vbox oder vgetty
|
||||
Eine Fax-Maschine: Siehe FAQ (Frage 1)
|
||||
Sync-PPP (Internet): isdnctrl und ipppd
|
||||
Async-PPP oder externer ISDN: pppd und diald
|
||||
ISDN Terminal-Programm: minicom und /dev/ttyI0 (man ttyI)
|
||||
Euro-File Transfer: Noch nicht (EFTP4Linux)
|
||||
ISDN-Anrufe mitprotokollieren: isdnlog in dual mode
|
||||
ISDN-Anrufe belauschen: geht nicht mit ISDN4Linux
|
||||
Lokalnetz ans Internet: Masquerading/ipfwadm. Alternativ mit
|
||||
squid/sendmail. Siehe auch Frage 2.
|
||||
Plug-n-Play ISA-Karten: isapnptools.
|
||||
|
||||
16. Die ISDN-Verbindung läuft, und ich kann numerischen Adressen pingen, z.B.
|
||||
mit 'ping -c 20 198.41.0.4' aber Netscape etc. funktioniert nicht.
|
||||
|
||||
Du hast Probleme mit Nameserver-Einstellungen. Siehe Frage 2.
|
||||
|
||||
17. Die ISDN-Verbindung läuft, aber ich kann nicht mal numerischen Adressen
|
||||
pingen, z.B. mit 'ping -c 20 198.41.0.4' und Netscape etc. funktioniert
|
||||
nicht.
|
||||
|
||||
Du hast Probleme mit Routing. Siehe Fragen 8 und 2.
|
||||
|
||||
18. Ich verstehe die verschiedenen Formen von Rufnummerübermittlung (CLIP -
|
||||
CLIR - COLP - COLR) nicht.
|
||||
|
||||
Siehe CLIP-CLIR-COLP-COLR-Mini-FAQ unter
|
||||
http://home.t-online.de/home/rbschmitt/cccc.htm
|
||||
|
||||
19. Es will einfach nicht klappen!
|
||||
|
||||
Frag mal hier in der Newsgruppe/Mailingliste. Wir versuchen hilfreich zu
|
||||
sein, aber es geht leichter, wenn wir ein Paar Infos haben:
|
||||
|
||||
Versionsnummern vom Kernel, ISDN Treiber Version (wenn der ISDN Treiber
|
||||
nicht aus dem Kernel stammt), Distribution (z.B. Red Hat 7.6), isdn4kutils.
|
||||
Kurze Auszüge aus /var/log/messages wenn da was steht. Das Output von
|
||||
'route -n', 'ifconfig', 'lsmod' und 'isdnctrl list ippp0'
|
||||
|
||||
Kommentare wilkommen, bitte direkt an mich, Erik Corry <erik@arbat.com>.
|
||||
|
||||
|
||||
English mini-FAQ for ISDN4Linux
|
||||
|
||||
englishtoc
|
||||
|
||||
0. Why is everyone speaking German here?
|
||||
|
||||
That's because they are mostly German. If you start an English thread it
|
||||
will be continued in English. If you have trouble getting this group
|
||||
(de.alt.comm.isdn4linux) it is also available as a mailing list. See the
|
||||
FAQ. Since most Germans would be more likely to take part in an English
|
||||
thread here than in a new English-only mailing list, there seems little
|
||||
point in a split.
|
||||
|
||||
1. Where's the FAQ?
|
||||
|
||||
http://www.mhessler.de/i4lfaq.html (View + Download)
|
||||
|
||||
2. Where can I find a simple guide to using ISDN4Linux?
|
||||
|
||||
See http://www.wurtel.demon.nl/ (also available in Dutch). There is
|
||||
a different HOWTO in German on http://www.franken.de/users/klaus/
|
||||
You will also find a French Mini-HOWTO under
|
||||
http://www.linux-france.org/article/connex/ISDN
|
||||
|
||||
3. Where is the SuSE Support Database, where many of my questions are
|
||||
answered?
|
||||
|
||||
http://sdb.suse.de/sdb/en/html/katlist.ISDN.html
|
||||
|
||||
4. What other documentation is available?
|
||||
|
||||
'man isdnctrl', see also under "SEE ALSO". Also 'man ipppd'. And the
|
||||
README files in /usr/src/linux/Documentation/isdn Many of the HOWTOS
|
||||
deal with general networking questions and are relevant to ISDN4Linux,
|
||||
too. See your favourite LDP mirror, eg.
|
||||
http://SunSITE.auc.dk/ldp/HOWTO/HOWTO-INDEX-3.html
|
||||
|
||||
5. Where is the "secret FAQ"?
|
||||
|
||||
http://www.deja.com/=dnc/ or http://www.deja.com/=dnc/home_ps.shtml
|
||||
Search with the keyword isdn4linux (surprise, surprise).
|
||||
Many articles, but not all, are in German. Don't forget to look in the
|
||||
'past' article database if you don't find anything in the 'current' one.
|
||||
|
||||
6. The first (Netscape-)connection never works because of dynamic IP addresses.
|
||||
|
||||
If you have SuSE 5.2, 3rd edition or newer you can put
|
||||
IP_DYNIP="yes"
|
||||
in /etc/rc.config. Otherwise (or if you don't want to reboot) you do an:
|
||||
echo 5 > /proc/sys/net/ipv4/ip_dynaddr
|
||||
You can put that in /etc/rc.d/rc.local The value 5 is always safe but
|
||||
the exact numbers understood vary from kernel to kernel. The
|
||||
documentation for your kernel can be found in
|
||||
/usr/doc/kernel-doc-yourversion/networking/ip_dynaddr.txt or
|
||||
/usr/src/linux/Documentation/networking/ip_dynaddr.txt and
|
||||
http://sdb.suse.de/sdb/en/html/dynippatch.html
|
||||
|
||||
If the problematic connection comes from a Windows machine (and goes through
|
||||
the ISDN4Linux machine because of masquerading/NAT) it could be that the
|
||||
Windows machine is simply giving up too quickly. The default value of
|
||||
Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP\MaxConnectRetries
|
||||
is 3 (6 seconds). It should be at least 5 (24 seconds). You can change it
|
||||
with the registry editor.
|
||||
|
||||
7. ISDN4Linux keeps redialling, especially if I do a hard hangup (without
|
||||
waiting for timeout).
|
||||
|
||||
This can be alleviated with RST-provoking. Activate this as in question
|
||||
6 and see also http://sdb.suse.de/sdb/en/html/katlist.ISDN.html If you
|
||||
use kernel 2.2 see also
|
||||
http://www-users.rwth-aachen.de/Michael.Mueller4/dynip.html For newer
|
||||
2.2 kernels (2.2.14) that patch will not go in cleanly, use this instead:
|
||||
http://www.grueneberg.de/linux/linux-2.2.14-rst.patch The patch has not
|
||||
yet been ported to the 2.3 kernels.
|
||||
|
||||
8. Only the first ISDN connection works because of routing problems.
|
||||
or
|
||||
The connection appears to work, but no data is sent over the link. After
|
||||
a short interval, ISDN4Linux cuts the connection again.
|
||||
|
||||
You probably don't have a default route. See the output of 'route -n'.
|
||||
You need the line
|
||||
/sbin/route add default $1
|
||||
in your /etc/ppp/ip-up file (for Red Hat etc/ppp/ip-up.local)
|
||||
and your /etc/ppp/ip-down file (for Red Hat etc/ppp/ip-down.local).
|
||||
These files should have the exact text:
|
||||
#!/bin/sh
|
||||
at the start of the first line, and be executable (see 'man chmod').
|
||||
Commands should be written with full paths, eg '/sbin/route ...', not
|
||||
just 'route ...'.
|
||||
|
||||
9. Is my card supported? What options should I give when loading modules?
|
||||
|
||||
See the README-files in /usr/src/linux/Documentation/isdn and ask Deja
|
||||
News with the search word "isdn4linux" and "yourcardsprecisename".
|
||||
|
||||
10. Where can I get the newest ISDN4Linux software?
|
||||
|
||||
Get the utils from ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/testing
|
||||
Get the kernel driver from the newest official kernel from www.kernel.org
|
||||
or a mirror, eg. ftp://ftp.us.kernel.org/pub/linux/kernel
|
||||
If you need a very new kernel (in the -ac series) check eg.
|
||||
ftp://ftp.us.kernel.org/pub/linux/kernel/people/alan/
|
||||
|
||||
See also the web/ftp server of your distribution and your local RPM
|
||||
repository, eg. http://SunSITE.auc.dk/linux/RPM/
|
||||
|
||||
11. ISDN4Linux dials, but the connection isn't set up.
|
||||
|
||||
You have to switch on debug in ipppd, and then take a look at
|
||||
/var/log/messages (see also question 14). Here are some explantions
|
||||
to help you see what is going on:
|
||||
|
||||
sent ConfReq ... What your machine wanted
|
||||
sent ConfRej ... Your machine rejected a configuration/password option
|
||||
sent ConfNak ... Your machine suggested something else instead
|
||||
sent ConfAck ... Your machine agreed to something
|
||||
rcvd ... What the remote server said
|
||||
|
||||
12. What do these funny 'cause' codes mean?
|
||||
|
||||
See 'man isdn_cause'
|
||||
|
||||
13. Can I use ISDN4Linux with my external ISDN Terminal Adapter?
|
||||
|
||||
No, they don't work with ISDN4Linux, but they do work with Linux. You
|
||||
treat these like a modem, so you need pppd and perhaps diald. Questions
|
||||
6, 7, 8 and 11 still apply, using pppd instead of ipppd. Note: AT-
|
||||
commands must be understood by the device. External 'winmodems' like
|
||||
Fritz!X-PC and Eumex 404 are not supported.
|
||||
|
||||
14. I activated various debug options in ipppd and isdnctrl, but I don't see
|
||||
anything in /var/log/messages.
|
||||
|
||||
You may need to reconfigure syslog. See eg. 'man syslogd' and 'man
|
||||
syslog.conf' and the file /etc/syslog.conf. If you distribution doesn't
|
||||
have a GUI-tool for configuring syslog you could use the quick commands:
|
||||
echo '*.* -/var/log/isdnfix' >> /etc/syslog.conf
|
||||
killall -HUP syslogd
|
||||
at the command prompt. This will cause all relevant and irrelevant data
|
||||
to be logged to /var/log/isdn. Don't leave this logging around as the
|
||||
log file will quickly become very big. You can remove it again with:
|
||||
grep -v isdnfix /etc/syslog.conf > /etc/syslog.conf.new
|
||||
mv -f /etc/syslog.conf.new /etc/syslog.conf
|
||||
killall -HUP syslogd
|
||||
|
||||
15. Which packages should I install, or man pages/HOWTOs should I read, or
|
||||
keywords should I use in Deja News for:
|
||||
|
||||
Everything: ISDN4Linux kernel module and isdn4kutils
|
||||
A telephone answering machine vbox or vgetty
|
||||
A fax machine: See FAQ (question 1).
|
||||
Sync-PPP (Internet): isdnctrl and ipppd
|
||||
Async-PPP or external ISDN: pppd and diald
|
||||
ISDN terminal programm: minicom and /dev/ttyI0 (man ttyI)
|
||||
Euro-File Transfer: Not yet (EFTP4Linux)
|
||||
Logging of ISDN calls: isdnlog in dual mode
|
||||
Bugging of ISDN calls: not possible with ISDN4Linux
|
||||
Local area network to the Internet: Masquerading/ipfwadm. Alternatively
|
||||
with squid/sendmail. See also question 2
|
||||
Plug-n-Play ISA cards: isapnptools.
|
||||
|
||||
16. The ISDN connection is working, and I can ping numeric addresses eg with
|
||||
'ping -c 20 198.41.0.4' but Netscape etc. don't work.
|
||||
|
||||
You have a problem with your nameserver. See question 2.
|
||||
|
||||
17. The ISDN connection is working, but I can't even ping numeric addresses
|
||||
eg. with 'ping -c 20 198.41.0.4' and Netscape etc. don't work.
|
||||
|
||||
You have a problem with your routing. See questions 8 and 2.
|
||||
|
||||
18. I don't understand the various forms of calling line identification
|
||||
(CLIP - CLIR - COLP - COLR).
|
||||
|
||||
There's a Mini-FAQ about this on http://home.t-online.de/home/rbschmitt/cccc.htm
|
||||
Unfortunately it's not available in English.
|
||||
|
||||
19. It just doesn't work!
|
||||
|
||||
Ask us in the news group/mailing list. We try to be helpful, but it is
|
||||
simpler if we have a few facts:
|
||||
|
||||
Version numbers for the kernel, the ISDN driver version number (if it didn't
|
||||
come with the kernel), distribution name (eg. Red Hat 7.6) and isdn4kutils.
|
||||
Short extracts from /var/log/messages if it contains anything interesting. The
|
||||
output from 'route -n', 'ifconfig', 'lsmod' and 'isdnctrl list ippp0'
|
||||
|
||||
Corrections and suggestions welcome, please send them directly to me,
|
||||
Erik Corry, <erik@arbat.com>.
|
||||
|
||||
Thanks to Andreas Barth, Wolfgang Bornath, Frank Derichsweiler, Klaus Franken,
|
||||
Florian Groß, Andre Grueneberg, Jürgen Lennefer, Eyal Lotem, Christian
|
||||
Otto-Lange, Wolfgang Schetter and Gerhard Sittig.
|
||||
|
||||
--
|
||||
Erik Corry
|
39
NEWS
39
NEWS
|
@ -1,39 +0,0 @@
|
|||
Recent changes made to the isdn4k-utils archive are listed here,
|
||||
most recent on top.
|
||||
------------------
|
||||
|
||||
2000/01/26 armin (Armin Schindler <mac@melware.de>)
|
||||
eiconctrl - updates for isdnlog and V1.1 package.
|
||||
|
||||
1999/10/12 lt (Leopold Toetch <lt@toetsch.at>)
|
||||
Destination database replaces country stuff and getAreacode
|
||||
|
||||
1999/10/08 he (Henner Eisen <eis@baty.hanse.de)
|
||||
eurofile - further integration in isdn4k-utils config/built,
|
||||
removed entry from distexclude file.
|
||||
|
||||
1999/09/06 hessler (Matthias Hessler <hessler@isdn4linux.de>
|
||||
New FAQ is now moved from FAQ2 to FAQ.
|
||||
|
||||
1999/08/18 armin (Armin Schindler <mac@melware.de>)
|
||||
eiconctrl - XLOG retrieve function for all supported active cards added.
|
||||
|
||||
1999/08/03 paul (Paul Slootman <paul@isdn4linux.de>)
|
||||
ipppd - It's not fatal if a route exists when adding it.
|
||||
xmonisdn - possible security problems
|
||||
See manpage 'SECURITY ISSUES' section for details. In short,
|
||||
xmonisdn now refuses to run setuid root to prevent shell
|
||||
scripts being run with root permissions.
|
||||
|
||||
1999/06/23 paul (Paul Slootman <paul@isdn4linux.de>)
|
||||
xisdnload - fixed problem when more than one channel is in use.
|
||||
|
||||
1999-06-29 he (Henner Eisen <eis@baty.hanse.de)
|
||||
eurofile - eftp4linux EUROFILE implementation initially checked in
|
||||
|
||||
1999/06/07 paul (Paul Slootman <paul@isdn4linux.de>)
|
||||
This file started!
|
||||
isdnctrl - added `status' command, which shows the connection status of
|
||||
interfaces (connected yes/no, to what number).
|
||||
ipppd - now should work on kernel 2.3.x (allocation failed in
|
||||
SIOCGIFCONF ioctl)
|
152
README
152
README
|
@ -1,152 +0,0 @@
|
|||
|
||||
This is the README file for the "isdn4k-utils" package from "The i4l-crew".
|
||||
|
||||
This package contains the following stuff:
|
||||
|
||||
1. Runtime configuration tools:
|
||||
isdnctrl, general link-level setup utility.
|
||||
iprofd, daemon for realizing AT&W0 on ttyI's.
|
||||
icnctrl, setup utility for the icn driver.
|
||||
hisaxctrl, setup utility for the HiSax driver.
|
||||
avmcapictrl setup utility for the avmb1 driver.
|
||||
actctrl setup utility for the act2000 driver.
|
||||
eiconctrl setup utility for the eicon driver.
|
||||
divertctrl setup utility for dss1 diversion services
|
||||
|
||||
2. Libraries for applications
|
||||
|
||||
libcapi20 a modular CAPI20 library which supports modules for different
|
||||
Controller types such as native CAPI20 kernel drivers and
|
||||
different remote CAPI versions. A CAPI library module for
|
||||
mISDNv2 is available in the mISDNuser project.
|
||||
|
||||
3. Tools for monitoring activity:
|
||||
|
||||
imon, a ncurses based utility for monitoring ISDN-activities.
|
||||
imontty, a tty based utility for monitoring ISDN-activities.
|
||||
isdnlog, a set of utilities for connection logging.
|
||||
ipppstats a utility for showing syncPPP statistics.
|
||||
xisdnload, an xload-like meter.
|
||||
xmonisdn, a utility for monitoring and controlling ISDN-activity.
|
||||
isdnmon, a Tcl/Tk based utility for monitoring ISDN-activities.
|
||||
|
||||
4. Applications:
|
||||
|
||||
vbox, an answering machine/voice mailbox.
|
||||
ipppd, daemon need for syncPPP and MPP.
|
||||
|
||||
5. Miscellaneous:
|
||||
|
||||
scripts/makedev.sh for creating the ISDN device files under /dev .
|
||||
|
||||
6. Documentation:
|
||||
|
||||
A very detailed FAQ and the generic manpages ttyI.4, isdninfo.4,
|
||||
isdn_audio.4 and isdn_cause.7.
|
||||
Manpages for the above utilities:
|
||||
actctrl.8 avmcapictrl.8, hisaxctrl.8 icnctrl.8, eiconctrl.8, imon.8, ipppd.8,
|
||||
ipppstats.8, iprofd.8, isdnctrl.8, isdnlog.8, isdnrep.1,
|
||||
isdnrate.1, rate-files.5, xisdnload.1x and xmonisdn.1x
|
||||
|
||||
IMPORTANT:
|
||||
|
||||
This will be the last release of isdn4k-utils as is. From now
|
||||
(February 2000) on, the package will be splitted into the
|
||||
following packages:
|
||||
|
||||
base: common configuration tools and Documentation
|
||||
isdnlog: D-Channel logging, charge calculation etc.
|
||||
audio: the answering machine vbox
|
||||
additional: ipppcomp ipppstats iprofd xisdnload xmonisdn
|
||||
|
||||
hardware-dependent packages:
|
||||
hisax: tools for passive isdn cards
|
||||
avmb1: tools for the AVM B1/T1/M1/M2 *active* cards
|
||||
(not for Fritz!classic, Fritz!pnp, Fritz!PCI, these are in hisax)
|
||||
act2000: tools for IBM Active 2000
|
||||
eicon: tools for Eicon.Diehl *active* cards
|
||||
icn: tools for ICN 2B and 4B
|
||||
loop: tools for the loopback isdn device
|
||||
|
||||
These packages will appear on ftp.isdn4linux.de when they are ready.
|
||||
|
||||
COPYRIGHT/COPYING:
|
||||
|
||||
Unless explicitly stated, all programs in this package can be freely
|
||||
redistributed and/or modified under the terms of the GNU General
|
||||
Public License as published by the Free Software Foundation; either
|
||||
version 2, or (at your option) any later version.
|
||||
(see gpl-2.0.txt)
|
||||
|
||||
Some parts (e.g libraries) are covered by the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
(see lgpl-2.1.txt)
|
||||
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You will find detatils about which license apply in the README files
|
||||
of the subdirectories.
|
||||
|
||||
System prerequisites:
|
||||
|
||||
To use this package, you need a kernel with an ISDN-subsystem configured.
|
||||
To get a such a kernel, take a clean standard-kernel (Version > 2.0.37 or
|
||||
> 2.2.14 resp.) enable the isdn-related features you want and build the
|
||||
kernel as usual. Older kernels may work as well, but bugs have been found
|
||||
and fixed, so better use the recommended versions (or above)
|
||||
|
||||
3. Configuration, Compilation.
|
||||
|
||||
Run "make config"
|
||||
|
||||
This will run an interactive configuration tool and the various
|
||||
configuration-scripts for each sub-package. (You may know that
|
||||
tool from kernel menuconfig.)
|
||||
There is a global configuration directory, where most programs
|
||||
expect their configuration files. The default is /etc/isdn.
|
||||
|
||||
- Alternatively you can edit the .config file by hand (once that
|
||||
has been created once with "make config"), and run "make subconfig"
|
||||
instead. This might be useful if you want to automate the building
|
||||
of the package, e.g. for a Red Hat rpm or a Debian deb.
|
||||
|
||||
Run "make"
|
||||
|
||||
This builds all previously selected utilities.
|
||||
|
||||
4. Installation
|
||||
|
||||
For the following steps, root permissions are necessary
|
||||
|
||||
Install the utilities, the man pages and config-files:
|
||||
|
||||
make install
|
||||
|
||||
The config files usually are installed in /etc/isdn if not
|
||||
specified otherwise during configuration.
|
||||
|
||||
If no existing ISDN devices in /dev are detected (via an admittedly
|
||||
simple test), script/makedev.sh is run during "make install". Check
|
||||
that the permissions / groups are suitable for your needs.
|
||||
You can run the makedev.sh script again if necessary.
|
||||
|
||||
5. Application
|
||||
|
||||
The directory ./etc contains an example startup-script which gets
|
||||
not installed automatically, because it MUST BE CONFIGURED IN ANY
|
||||
CASE! Please don't try to connect to the Internet without setting
|
||||
your own IP-addresses. This script is intended to be used with
|
||||
the modularised version of the ISDN-subsystem. Refer to the
|
||||
Documentation/isdn subdirectory of your kernel-source-tree for
|
||||
more information on configuring Lowlevel drivers.
|
||||
|
||||
For the utilities refer to the man pages or look into their
|
||||
subdirectories for Documentation.
|
||||
|
||||
For tips, troubleshooting etc. look into the FAQ subdirectory.
|
||||
|
||||
-Fritz
|
|
@ -1,71 +0,0 @@
|
|||
# $Id: Makefile.in,v 1.5 2002/07/19 19:03:49 keil Exp $
|
||||
#
|
||||
# Makefile for actctrl
|
||||
# (C) 1997 Fritz Elfert
|
||||
#
|
||||
#
|
||||
SHELL = /bin/sh
|
||||
CFLAGS = -Wall -O2
|
||||
INCLUDES = -I.
|
||||
DEFS =
|
||||
LDFLAGS = -L../lib @LIBS@
|
||||
PROGRAM = actctrl
|
||||
MODULES = actctrl.o
|
||||
MANPAGE = actctrl.8
|
||||
FIRMWARE = bip1120.btl
|
||||
DATADIR = @CONFIG_DATADIR@
|
||||
SBINDIR = @CONFIG_SBINDIR@
|
||||
MANDIR = @CONFIG_MANDIR@
|
||||
MAN8DIR = $(MANDIR)/man8
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = $(INSTALL) -o 0 -g 0 -m 0750
|
||||
INSTALL_DATA = $(INSTALL) -o 0 -g 0 -m 0644
|
||||
INSTALL_MAN = $(INSTALL) -o 0 -g 0 -m 0644
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
datarootdir = @datarootdir@
|
||||
datadir = @datadir@
|
||||
CC = @CC@
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o
|
||||
|
||||
%.o: %.c Makefile
|
||||
$(CC) $(CFLAGS) $(INCLUDES) $(DEFS) -c -o $@ $<
|
||||
|
||||
all: $(PROGRAM)
|
||||
|
||||
config:
|
||||
@./configure
|
||||
|
||||
Makefile: Makefile.in config.status
|
||||
./config.status
|
||||
|
||||
config.status: configure
|
||||
./config.status --recheck
|
||||
|
||||
$(PROGRAM): $(MODULES)
|
||||
$(CC) $(CFLAGS) $(INCLUDES) $(DEFS) $? $(LDFLAGS) -o $@
|
||||
|
||||
install-man: $(PROGRAM).man
|
||||
mkdir -p $(DESTDIR)$(MAN8DIR)
|
||||
$(INSTALL_MAN) $< $(DESTDIR)$(MAN8DIR)/$(MANPAGE)
|
||||
|
||||
install-data: firmware/$(FIRMWARE)
|
||||
mkdir -p $(DESTDIR)$(DATADIR)
|
||||
$(INSTALL_DATA) $< $(DESTDIR)$(DATADIR)/$(FIRMWARE)
|
||||
|
||||
install: $(PROGRAM) install-man install-data
|
||||
$(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(SBINDIR)/$(PROGRAM)
|
||||
|
||||
install-strip: $(PROGRAM)
|
||||
$(INSTALL_PROGRAM) -s $(PROGRAM) $(DESTDIR)$(SBINDIR)/$(PROGRAM)
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(SBINDIR)/$(PROGRAM) $(DESTDIR)$(MAN8DIR)/$(MANPAGE) $(DESTDIR)$(DATADIR)/$(FIRMWARE)
|
||||
|
||||
clean:
|
||||
rm -f *.o *~ $(PROGRAM)
|
||||
|
||||
distclean: clean
|
||||
rm -f config.status config.cache config.log Makefile actctrl.man
|
|
@ -1,60 +0,0 @@
|
|||
/* API only version generated from kernel drivers/isdn/act2000/act2000.h */
|
||||
|
||||
/* $Id: act2000.h,v 1.1 2002/07/19 19:03:49 keil Exp $
|
||||
*
|
||||
* ISDN lowlevel-module for the IBM ISDN-S0 Active 2000.
|
||||
*
|
||||
* Author Fritz Elfert
|
||||
* Copyright by Fritz Elfert <fritz@isdn4linux.de>
|
||||
*
|
||||
* This software may be used and distributed according to the terms
|
||||
* of the GNU General Public License, incorporated herein by reference.
|
||||
*
|
||||
* Thanks to Friedemann Baitinger and IBM Germany
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef act2000_h
|
||||
#define act2000_h
|
||||
|
||||
#define ACT2000_IOCTL_SETPORT 1
|
||||
#define ACT2000_IOCTL_GETPORT 2
|
||||
#define ACT2000_IOCTL_SETIRQ 3
|
||||
#define ACT2000_IOCTL_GETIRQ 4
|
||||
#define ACT2000_IOCTL_SETBUS 5
|
||||
#define ACT2000_IOCTL_GETBUS 6
|
||||
#define ACT2000_IOCTL_SETPROTO 7
|
||||
#define ACT2000_IOCTL_GETPROTO 8
|
||||
#define ACT2000_IOCTL_SETMSN 9
|
||||
#define ACT2000_IOCTL_GETMSN 10
|
||||
#define ACT2000_IOCTL_LOADBOOT 11
|
||||
#define ACT2000_IOCTL_ADDCARD 12
|
||||
|
||||
#define ACT2000_IOCTL_TEST 98
|
||||
#define ACT2000_IOCTL_DEBUGVAR 99
|
||||
|
||||
#define ACT2000_BUS_ISA 1
|
||||
#define ACT2000_BUS_MCA 2
|
||||
#define ACT2000_BUS_PCMCIA 3
|
||||
|
||||
/* Struct for adding new cards */
|
||||
typedef struct act2000_cdef {
|
||||
int bus;
|
||||
int port;
|
||||
int irq;
|
||||
char id[10];
|
||||
} act2000_cdef;
|
||||
|
||||
/* Struct for downloading firmware */
|
||||
typedef struct act2000_ddef {
|
||||
int length; /* Length of code */
|
||||
char *buffer; /* Ptr. to code */
|
||||
} act2000_ddef;
|
||||
|
||||
typedef struct act2000_fwid {
|
||||
char isdn[4];
|
||||
char revlen[2];
|
||||
char revision[504];
|
||||
} act2000_fwid;
|
||||
|
||||
#endif /* act2000_h */
|
|
@ -1,293 +0,0 @@
|
|||
/* $Id: actctrl.c,v 1.4 2007/03/05 18:04:34 keil Exp $
|
||||
|
||||
* IBM Active 2000 ISDN driver for Linux. (Control-Utility)
|
||||
*
|
||||
* Copyright 1994,95 by Fritz Elfert (fritz@isdn4linux.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log: actctrl.c,v $
|
||||
* Revision 1.4 2007/03/05 18:04:34 keil
|
||||
* Small fixes to avoid warnings with newer gcc
|
||||
*
|
||||
* Revision 1.3 2002/01/31 18:50:51 paul
|
||||
* #include <stdlib.h> for prototypes against warnings.
|
||||
*
|
||||
* Revision 1.2 1999/09/06 08:03:23 fritz
|
||||
* Changed my mail-address.
|
||||
*
|
||||
* Revision 1.1 1997/09/25 21:41:37 fritz
|
||||
* Added actctrl.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/isdn.h>
|
||||
#include "act2000.h"
|
||||
|
||||
char *cmd;
|
||||
char *ctrldev;
|
||||
int arg_ofs;
|
||||
|
||||
void
|
||||
usage()
|
||||
{
|
||||
#if 0
|
||||
fprintf(stderr, "usage: %s [-d driverId] io [port] [irq] (get/set hw-io)\n", cmd);
|
||||
#endif
|
||||
fprintf(stderr, " or: %s [-d driverId] add [bus [port [irq [id]]]] (Add a new card\n", cmd);
|
||||
fprintf(stderr, " or: %s [-d driverId] load <bootcode> (load firmware)\n", cmd);
|
||||
fprintf(stderr, " or: %s [-d driverId] dproto <1tr6|euro> [msn's] (set D-channel protocol)\n", cmd);
|
||||
#if 0
|
||||
fprintf(stderr, " or: %s [-d driverId] dbg <num> (devel Func)\n", cmd);
|
||||
#endif
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int fd;
|
||||
FILE *code;
|
||||
int ac;
|
||||
int a;
|
||||
u_char buf[500000];
|
||||
isdn_ioctl_struct ioctl_s;
|
||||
act2000_ddef dload;
|
||||
act2000_cdef newcard;
|
||||
|
||||
cmd = strrchr(argv[0], '/');
|
||||
cmd = (cmd == NULL) ? argv[0] : cmd + 1;
|
||||
if (argc > 1) {
|
||||
if (!strcmp(argv[1], "-d")) {
|
||||
strcpy(ioctl_s.drvid, argv[2]);
|
||||
arg_ofs = 3;
|
||||
} else {
|
||||
ioctl_s.drvid[0] = '\0';
|
||||
arg_ofs = 1;
|
||||
}
|
||||
} else
|
||||
usage();
|
||||
ac = argc - (arg_ofs - 1);
|
||||
fd = open("/dev/isdnctrl", O_RDWR);
|
||||
if (fd < 0) {
|
||||
perror("/dev/isdnctrl");
|
||||
exit(-1);
|
||||
}
|
||||
if (!strcmp(argv[arg_ofs], "add")) {
|
||||
if (ac < 3)
|
||||
usage();
|
||||
if (ac >= 3) {
|
||||
a = -1;
|
||||
if (!strcmp(argv[arg_ofs + 1], "isa"))
|
||||
a = ACT2000_BUS_ISA;
|
||||
if (!strcmp(argv[arg_ofs + 1], "mca"))
|
||||
a = ACT2000_BUS_MCA;
|
||||
if (!strcmp(argv[arg_ofs + 1], "pcmcia"))
|
||||
a = ACT2000_BUS_PCMCIA;
|
||||
if (a == -1) {
|
||||
fprintf(stderr, "Bus must be \"isa\", \"mca\" or \"pcmcia\"\n");
|
||||
exit(-1);
|
||||
}
|
||||
if (a != ACT2000_BUS_ISA) {
|
||||
fprintf(stderr, "Currently only isa Bus is supported\n");
|
||||
exit(-1);
|
||||
}
|
||||
newcard.bus = a;
|
||||
}
|
||||
a = -2;
|
||||
if (ac >= 4) {
|
||||
if (!strcmp(argv[arg_ofs + 2], "auto"))
|
||||
a = -1;
|
||||
else
|
||||
sscanf(argv[arg_ofs + 2], "%i", &a);
|
||||
if (a == 0x200 || a == 0x240 || a == 0x280 || a == 0x2c0
|
||||
|| a == 0x300 || a == 0x340 || a == 0x380 ||
|
||||
a == 0xcfe0 || a == 0xcfa0 || a == 0xcf60 || a == 0xcf20
|
||||
|| a == 0xcee0 || a == 0xcea0 || a == 0xce60 || a == -1)
|
||||
newcard.port = a;
|
||||
else {
|
||||
fprintf(stderr, "Invalid port. Possible values are:\n");
|
||||
fprintf(stderr, " 0x200, 0x240, 0x280, 0x2c0, 0x300, 0x340\n");
|
||||
fprintf(stderr, " 0x380, 0xcfe0, 0xcfa0, 0xcf60, 0xcf20\n");
|
||||
fprintf(stderr, " 0xcee0, 0xcea0, 0xce60 or \"auto\"\n");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
newcard.irq = -1;
|
||||
if (ac >= 5) {
|
||||
a = -2;
|
||||
if (!strcmp(argv[arg_ofs + 3], "auto"))
|
||||
a = -1;
|
||||
if (!strcmp(argv[arg_ofs + 3], "none"))
|
||||
a = 0;
|
||||
if (a == -2)
|
||||
sscanf(argv[arg_ofs + 2], "%i", &a);
|
||||
if (a == 3 || a == 5 || a == 7 || a == 10 || a == 11 || a == 12
|
||||
|| a == 15 || a == -1 || a == 0)
|
||||
newcard.irq = a;
|
||||
else {
|
||||
fprintf(stderr, "Invalid IRQ. Possible values are:\n");
|
||||
fprintf(stderr, " 3, 5, 7, 10, 11, 12, 15, \"auto\" or \"none\"\n");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
ioctl_s.arg = (unsigned long) &newcard;
|
||||
newcard.id[0] = 0;
|
||||
if (ac >= 6)
|
||||
strncpy(newcard.id, argv[arg_ofs + 4], sizeof(newcard.id) - 1);
|
||||
if ((ioctl(fd, ACT2000_IOCTL_ADDCARD + IIOCDRVCTL, &ioctl_s)) < 0) {
|
||||
perror("ioctl ADDCARD");
|
||||
exit(-1);
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
#if 0
|
||||
if (!strcmp(argv[arg_ofs], "io")) {
|
||||
if (ac == 4) {
|
||||
if (sscanf(argv[arg_ofs + 1], "%i", &mmio) != 1)
|
||||
usage();
|
||||
if (sscanf(argv[arg_ofs + 2], "%i", &port) != 1)
|
||||
usage();
|
||||
ioctl_s.arg = mmio;
|
||||
if ((mmio = ioctl(fd, ICN_IOCTL_SETMMIO + IIOCDRVCTL, &ioctl_s)) < 0) {
|
||||
perror("ioctl SETMMIO");
|
||||
exit(-1);
|
||||
}
|
||||
ioctl_s.arg = port;
|
||||
if ((port = ioctl(fd, ICN_IOCTL_SETPORT + IIOCDRVCTL, &ioctl_s)) < 0) {
|
||||
perror("ioctl SETPORT");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
if ((mmio = ioctl(fd, ICN_IOCTL_GETMMIO + IIOCDRVCTL, &ioctl_s)) < 0) {
|
||||
perror("ioctl GETMMIO");
|
||||
exit(-1);
|
||||
}
|
||||
if ((port = ioctl(fd, ICN_IOCTL_GETPORT + IIOCDRVCTL, &ioctl_s)) < 0) {
|
||||
perror("ioctl GETPORT");
|
||||
exit(-1);
|
||||
}
|
||||
printf("Memory-mapped io at 0x%08lx, port 0x%03x\n",
|
||||
(unsigned long) mmio, (unsigned short) port);
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if (!strcmp(argv[arg_ofs], "load")) {
|
||||
if (ac == 3) {
|
||||
if (!(code = fopen(argv[arg_ofs + 1], "r"))) {
|
||||
perror(argv[arg_ofs + 1]);
|
||||
exit(-1);
|
||||
}
|
||||
dload.buffer = buf;
|
||||
if ((dload.length = fread(buf, 1, sizeof(buf), code)) < 1) {
|
||||
fprintf(stderr, "Read error on %s\n", argv[arg_ofs + 1]);
|
||||
exit(-1);
|
||||
}
|
||||
dload.length -= 32;
|
||||
dload.buffer += 32;
|
||||
printf("Loading Firmware %s ... ", argv[arg_ofs + 1]);
|
||||
fflush(stdout);
|
||||
ioctl_s.arg = (ulong) & dload;
|
||||
if (ioctl(fd, ACT2000_IOCTL_LOADBOOT + IIOCDRVCTL, &ioctl_s) < 0) {
|
||||
perror("\nioctl LOADBOOT");
|
||||
exit(-1);
|
||||
}
|
||||
fclose(code);
|
||||
printf("done\n");
|
||||
return 0;
|
||||
}
|
||||
usage();
|
||||
}
|
||||
if (!strcmp(argv[arg_ofs], "dproto")) {
|
||||
if (ac >= 3) {
|
||||
char msnlist[1024];
|
||||
|
||||
int proto = -1;
|
||||
if (strcmp(argv[arg_ofs + 1], "1tr6") == 0)
|
||||
proto = 0;
|
||||
if (strcmp(argv[arg_ofs + 1], "euro") == 0)
|
||||
proto = 1;
|
||||
if (proto == -1)
|
||||
usage();
|
||||
msnlist[0] = '\0';
|
||||
if (ac > 3) {
|
||||
if (proto == 0)
|
||||
usage();
|
||||
strcpy(msnlist, argv[arg_ofs + 2]);
|
||||
}
|
||||
ioctl_s.arg = (ulong)proto;
|
||||
if (ioctl(fd, ACT2000_IOCTL_SETPROTO + IIOCDRVCTL, &ioctl_s) < 0) {
|
||||
perror("ioctl SETPROTO");
|
||||
exit(-1);
|
||||
}
|
||||
if (strlen(msnlist)) {
|
||||
char *p = msnlist;
|
||||
char m[17];
|
||||
int i = 0;
|
||||
char *q;
|
||||
|
||||
while ((q = strtok(p, ",")) && (i<10)) {
|
||||
p = NULL;
|
||||
if (strlen(q) > 15) {
|
||||
fprintf(stderr, "MSN may not exceed 15 digits\n");
|
||||
exit(-1);
|
||||
}
|
||||
if (q[0] == '-')
|
||||
sprintf(m, "%d", i);
|
||||
else
|
||||
sprintf(m, "%d%s", i, q);
|
||||
ioctl_s.arg = (ulong)&m;
|
||||
if (ioctl(fd, ACT2000_IOCTL_SETMSN + IIOCDRVCTL, &ioctl_s) < 0) {
|
||||
perror("ioctl SETMSN");
|
||||
exit(-1);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
usage();
|
||||
}
|
||||
if (!strcmp(argv[arg_ofs], "dbg")) {
|
||||
if (ac == 3) {
|
||||
int res;
|
||||
unsigned long parm;
|
||||
res = sscanf(argv[arg_ofs + 1], "%li", &parm);
|
||||
if (res != 1) {
|
||||
fprintf(stderr, "Couldn't read parameter\n");
|
||||
exit(-1);
|
||||
}
|
||||
ioctl_s.arg = parm;
|
||||
if (ioctl(fd, ACT2000_IOCTL_TEST + IIOCDRVCTL, &ioctl_s) < 0) {
|
||||
perror("ioctl TEST");
|
||||
exit(-1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
usage();
|
||||
}
|
||||
usage();
|
||||
return 0;
|
||||
}
|
|
@ -1,117 +0,0 @@
|
|||
.\" Process this file with
|
||||
.\" groff -man -Tascii actctrl.1 for ASCII output, or
|
||||
.\" groff -man -Tps actctrl.1 for PostScript output
|
||||
.\"
|
||||
.TH ACTCTRL 8 "September 1999" isdn4k-utils-@I4LVERSION@ "Linux System Administration"
|
||||
.SH NAME
|
||||
actctrl \- configure IBM Active 2000 ISDN adaptor
|
||||
.SH SYNOPSIS
|
||||
.B actctrl [-d
|
||||
.IB Driver-Id ]
|
||||
.I action options
|
||||
.B ...
|
||||
.SH DESCRIPTION
|
||||
.B actctrl
|
||||
is used to setup the IBM Active 2000
|
||||
.SM ISDN
|
||||
device driver and for downloading the firmware into the
|
||||
.SM ISDN
|
||||
card.
|
||||
.LP
|
||||
The use of
|
||||
.I actctrl
|
||||
makes sense, if you are using an IBM Active 2000 card only.
|
||||
.LP
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI "-d " Driver-Id
|
||||
selects the S0 interface named by
|
||||
.IR Driver-Id .
|
||||
Driver-Ids are defined during driver initialisation. See
|
||||
.BR act2000 (4)
|
||||
for a description of the syntax to be used for modularized and
|
||||
monolithic driver versions.
|
||||
This option
|
||||
.B must
|
||||
be used to identify the S0 interface if more than one S0 interface is
|
||||
existent. If a single IBM Active 2000 is used, it may be omitted.
|
||||
If using more than one card, support for the other cards is enabled
|
||||
with the
|
||||
.B add
|
||||
action of actctrl. Ids may
|
||||
.B not
|
||||
start with
|
||||
.B digits
|
||||
or small
|
||||
.BR x ,
|
||||
because these values are misinterpreted
|
||||
as numeric parameters by
|
||||
.BR insmod .
|
||||
For loading the module, always the
|
||||
newest
|
||||
.B modutils
|
||||
package should be used to avoid problems during load.
|
||||
.LP
|
||||
The following
|
||||
.I actions
|
||||
may be given to
|
||||
.BR actctrl .
|
||||
.TP
|
||||
.BI "add [" bus "[ " port "[ " irq "[ " id ]]]]
|
||||
enables support for an additional card in the driver.
|
||||
.I bus
|
||||
is is an integer describing the bus-type of the card. Currently,
|
||||
the only value which is allowed here is
|
||||
.B 1
|
||||
meaning ISA-bus. In the future, the values
|
||||
.B 2
|
||||
(for MCA) and
|
||||
.B 3
|
||||
(for PCMCIA) will be available.
|
||||
.I port
|
||||
is either an integer describing the base port, or the string
|
||||
.B auto
|
||||
which enables autoprobing.
|
||||
.I irq
|
||||
is either an integer describing the IRQ to use, the string
|
||||
.BR auto ,
|
||||
which enables grabbing of the next free IRQ or the string
|
||||
.B none
|
||||
which enables polled mode for this card.
|
||||
.I id
|
||||
is an arbitrary string for referencing the card at a later time.
|
||||
.TP
|
||||
.BI "dproto " protocol " [" msn0 , msn1 ", ... " msn9 ]
|
||||
selects the D-channel protocol and defines MSN's if using Euro protocol.
|
||||
.I protocol
|
||||
may be either the string
|
||||
.B 1tr6
|
||||
or the string
|
||||
.BR euro .
|
||||
If selecting Euro protocol, a comma-separated list of up to 10 MSN's
|
||||
may be appended. For defining an empty entry in this list, use a dash.
|
||||
.TP
|
||||
.BI "load " firmware
|
||||
downloads the firmware into the card and starts operation.
|
||||
Usually the images are located in
|
||||
.IR @CONFIG_DATADIR@ .
|
||||
The firmware is named
|
||||
.IR bip1120.bpl .
|
||||
.TP
|
||||
.B dump
|
||||
is available if the program is configured using the
|
||||
.B --enable-dump
|
||||
option only. The contents of internal driver variables is dumped on stdout.
|
||||
.SH FILES
|
||||
.TP
|
||||
.I @CONFIG_DATADIR@/bip1120.bpl
|
||||
This is the image of the firmware designed for both the German 1TR6 protocol
|
||||
and Euro ISDN.
|
||||
.LP
|
||||
.SH BUGS
|
||||
No bugs so far.
|
||||
.SH AUTHOR
|
||||
\(co 1997 by Fritz Elfert <fritz@isdn4linux.de>
|
||||
.LP
|
||||
.SH SEE ALSO
|
||||
.BR isdnctrl "(8), " act2000 "(4), " isdnctrl "(4), " ttyI (4).
|
File diff suppressed because it is too large
Load Diff
|
@ -1,38 +0,0 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.68])
|
||||
|
||||
AC_INIT(actctrl.c)
|
||||
AC_PREFIX_DEFAULT(/usr)
|
||||
|
||||
I4LVERSION=${I4LVERSION:-"?.?"}
|
||||
CONFIG_DATADIR=${CONFIG_FIRMWAREDIR:-"/usr/lib/isdn"}
|
||||
CONFIG_MANDIR=${mandir:-"/usr/man"}
|
||||
CONFIG_SBINDIR=${CONFIG_CARD_SBINDIR:-"/sbin"}
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_CC
|
||||
|
||||
dnl Checks for libraries.
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h sys/ioctl.h unistd.h)
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_FUNC_MMAP
|
||||
|
||||
dnl Optional firmware directory
|
||||
AC_ARG_WITH(firmware,
|
||||
[ --with-firmware=DIR Set dir where firmware installed. [/usr/lib/isdn]],
|
||||
AC_DEFINE(CONFIG_DATADIR, "${withval}", [directory where firmware installed]),
|
||||
)
|
||||
|
||||
dnl Define which variables to substitute & which files to generate
|
||||
AC_SUBST(CONFIG_DATADIR)
|
||||
AC_SUBST(CONFIG_SBINDIR)
|
||||
AC_SUBST(CONFIG_MANDIR)
|
||||
AC_SUBST(I4LVERSION)
|
||||
|
||||
AC_OUTPUT(Makefile actctrl.man)
|
Binary file not shown.
|
@ -1,2 +0,0 @@
|
|||
#!/bin/sh
|
||||
exit 0
|
|
@ -1 +0,0 @@
|
|||
../gpl-2.0.txt
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
|
@ -106,6 +106,9 @@
|
|||
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
||||
#undef HAVE_LC_MESSAGES
|
||||
|
||||
/* Define to 1 if you have the `capi20' library (-lcapi20). */
|
||||
#undef HAVE_LIBCAPI20
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#undef HAVE_LIBM
|
||||
|
||||
|
|
|
@ -720,13 +720,13 @@ echo X"$0" |
|
|||
/^X\(\/\).*/{ s//\1/; q; }
|
||||
s/.*/./; q'`
|
||||
srcdir=$ac_confdir
|
||||
if test ! -r $srcdir/$ac_unique_file; then
|
||||
if test ! -r "$srcdir/$ac_unique_file"; then
|
||||
srcdir=..
|
||||
fi
|
||||
else
|
||||
ac_srcdir_defaulted=no
|
||||
fi
|
||||
if test ! -r $srcdir/$ac_unique_file; then
|
||||
if test ! -r "$srcdir/$ac_unique_file"; then
|
||||
if test "$ac_srcdir_defaulted" = yes; then
|
||||
{ echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
|
||||
{ (exit 1); exit 1; }; }
|
||||
|
@ -735,7 +735,7 @@ if test ! -r $srcdir/$ac_unique_file; then
|
|||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
fi
|
||||
(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
|
||||
(cd $srcdir && test -r "./$ac_unique_file") 2>/dev/null ||
|
||||
{ echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
|
||||
{ (exit 1); exit 1; }; }
|
||||
srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
|
||||
|
@ -980,7 +980,7 @@ esac
|
|||
else
|
||||
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
|
||||
fi
|
||||
cd "$ac_popdir"
|
||||
cd $ac_popdir
|
||||
done
|
||||
fi
|
||||
|
||||
|
@ -1634,7 +1634,7 @@ fi
|
|||
|
||||
# Define the identity of the package.
|
||||
PACKAGE=ant-phone
|
||||
VERSION="0.1.12"
|
||||
VERSION="0.1.12-capiconn"
|
||||
|
||||
|
||||
# Some tools Automake needs.
|
||||
|
@ -2329,7 +2329,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -2387,7 +2388,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -2503,7 +2505,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -2557,7 +2560,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -2602,7 +2606,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -2646,7 +2651,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3021,7 +3027,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3087,7 +3094,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3176,7 +3184,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3303,7 +3312,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3376,7 +3386,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3415,6 +3426,80 @@ echo "$as_me: error: You need the libsndfile headers to build this package" >&2;
|
|||
fi
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: checking for capi20_register in -lcapi20" >&5
|
||||
echo $ECHO_N "checking for capi20_register in -lcapi20... $ECHO_C" >&6
|
||||
if test "${ac_cv_lib_capi20_capi20_register+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lcapi20 $LIBS"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
builtin and then its argument prototype would still apply. */
|
||||
char capi20_register ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
capi20_register ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_lib_capi20_capi20_register=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_cv_lib_capi20_capi20_register=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_lib_capi20_capi20_register" >&5
|
||||
echo "${ECHO_T}$ac_cv_lib_capi20_capi20_register" >&6
|
||||
if test $ac_cv_lib_capi20_capi20_register = yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBCAPI20 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lcapi20 $LIBS"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# Checks for header files.
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
|
@ -3699,7 +3784,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3869,7 +3955,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -3949,7 +4036,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4141,7 +4229,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4204,7 +4293,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4269,7 +4359,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4335,7 +4426,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4452,7 +4544,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4687,7 +4780,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4785,7 +4879,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4854,7 +4949,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -4965,7 +5061,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -5760,7 +5857,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -5814,7 +5912,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -5876,7 +5975,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -5936,7 +6036,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6009,7 +6110,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6073,7 +6175,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6143,7 +6246,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6206,7 +6310,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6268,7 +6373,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6330,7 +6436,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6392,7 +6499,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6464,7 +6572,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6613,7 +6722,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6694,7 +6804,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6835,7 +6946,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -6973,7 +7085,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7157,7 +7270,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7532,7 +7646,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7617,7 +7732,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7686,7 +7802,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7754,7 +7871,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7923,7 +8041,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -7963,7 +8082,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8019,7 +8139,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8059,7 +8180,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8123,7 +8245,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8150,8 +8273,10 @@ case $ac_lo in
|
|||
esac
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
|
||||
echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
|
||||
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
@ -8244,7 +8369,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8284,7 +8410,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8340,7 +8467,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8380,7 +8508,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8444,7 +8573,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8471,8 +8601,10 @@ case $ac_lo in
|
|||
esac
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
|
||||
echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
|
||||
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
@ -8565,7 +8697,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8605,7 +8738,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8661,7 +8795,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8701,7 +8836,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8765,7 +8901,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8792,8 +8929,10 @@ case $ac_lo in
|
|||
esac
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5
|
||||
echo "$as_me: error: internal error: not reached in cross-compile" >&2;}
|
||||
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
@ -8886,7 +9025,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -8963,7 +9103,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -9113,7 +9254,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -9179,7 +9321,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -9802,7 +9945,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -9880,7 +10024,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10089,7 +10234,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10156,7 +10302,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10224,7 +10371,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10293,7 +10441,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10361,7 +10510,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10429,7 +10579,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10553,7 +10704,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10603,7 +10755,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10693,7 +10846,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10758,7 +10912,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10822,7 +10977,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -10967,7 +11123,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -11033,7 +11190,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -11152,7 +11310,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -11597,7 +11756,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -11651,7 +11811,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
|
@ -12752,6 +12913,11 @@ esac
|
|||
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
|
||||
esac
|
||||
|
||||
if test x"$ac_file" != x-; then
|
||||
{ echo "$as_me:$LINENO: creating $ac_file" >&5
|
||||
echo "$as_me: creating $ac_file" >&6;}
|
||||
rm -f "$ac_file"
|
||||
fi
|
||||
# Let's still pretend it is `configure' which instantiates (i.e., don't
|
||||
# use $as_me), people would be surprised to read:
|
||||
# /* config.h. Generated by config.status. */
|
||||
|
@ -12790,12 +12956,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
|
|||
fi;;
|
||||
esac
|
||||
done` || { (exit 1); exit 1; }
|
||||
|
||||
if test x"$ac_file" != x-; then
|
||||
{ echo "$as_me:$LINENO: creating $ac_file" >&5
|
||||
echo "$as_me: creating $ac_file" >&6;}
|
||||
rm -f "$ac_file"
|
||||
fi
|
||||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF
|
||||
sed "$ac_vpsub
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(ant-phone)
|
||||
AM_INIT_AUTOMAKE(ant-phone, "0.1.12", ant-phone-devel@nongnu.org)
|
||||
AM_INIT_AUTOMAKE(ant-phone, "0.1.12-capiconn", ant-phone-devel@nongnu.org)
|
||||
AC_PREREQ(2.53)
|
||||
AC_CONFIG_SRCDIR([config.h.in])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
|
@ -20,6 +20,7 @@ AC_PROG_YACC
|
|||
# Checks for libraries.
|
||||
AC_CHECK_LIB([m], [floor])
|
||||
AC_CHECK_LIB([sndfile], [sf_open],, AC_MSG_ERROR(You need the libsndfile headers to build this package))
|
||||
AC_CHECK_LIB([capi20], [capi20_register])
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
|
|
|
@ -29,6 +29,8 @@ ant_phone_SOURCES = \
|
|||
recording.c \
|
||||
isdntree.c
|
||||
|
||||
ant_phone_SOURCES += isdn_capi.c capiconn.c
|
||||
|
||||
noinst_HEADERS = \
|
||||
callerid.h \
|
||||
g711.h \
|
||||
|
@ -51,6 +53,8 @@ noinst_HEADERS = \
|
|||
isdnlexer.h \
|
||||
isdntree.h
|
||||
|
||||
noinst_HEADERS += isdn_capi.h capiconn.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
pickup.xpm \
|
||||
hangup.xpm \
|
||||
|
|
|
@ -57,7 +57,8 @@ am_ant_phone_OBJECTS = ant-phone.$(OBJEXT) callerid.$(OBJEXT) \
|
|||
calleridparser.$(OBJEXT) isdnlexer.$(OBJEXT) \
|
||||
isdnparser.$(OBJEXT) gtksettings.$(OBJEXT) \
|
||||
controlpad.$(OBJEXT) fxgenerator.$(OBJEXT) server.$(OBJEXT) \
|
||||
client.$(OBJEXT) recording.$(OBJEXT) isdntree.$(OBJEXT)
|
||||
client.$(OBJEXT) recording.$(OBJEXT) isdntree.$(OBJEXT) \
|
||||
isdn_capi.$(OBJEXT) capiconn.$(OBJEXT)
|
||||
ant_phone_OBJECTS = $(am_ant_phone_OBJECTS)
|
||||
ant_phone_LDADD = $(LDADD)
|
||||
ant_phone_DEPENDENCIES =
|
||||
|
@ -196,52 +197,15 @@ sbindir = @sbindir@
|
|||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
ant_phone_SOURCES = \
|
||||
ant-phone.c \
|
||||
callerid.c \
|
||||
g711.c \
|
||||
gtk.c \
|
||||
isdn.c \
|
||||
llcheck.c \
|
||||
mediation.c \
|
||||
session.c \
|
||||
sound.c \
|
||||
util.c \
|
||||
settings.c \
|
||||
calleridlexer.l \
|
||||
calleridparser.y \
|
||||
isdnlexer.l \
|
||||
isdnparser.y \
|
||||
gtksettings.c \
|
||||
controlpad.c \
|
||||
fxgenerator.c \
|
||||
server.c \
|
||||
client.c \
|
||||
recording.c \
|
||||
isdntree.c
|
||||
|
||||
noinst_HEADERS = \
|
||||
callerid.h \
|
||||
g711.h \
|
||||
gtk.h \
|
||||
isdn.h \
|
||||
llcheck.h \
|
||||
mediation.h \
|
||||
session.h \
|
||||
sound.h \
|
||||
util.h \
|
||||
settings.h \
|
||||
gtksettings.h \
|
||||
controlpad.h \
|
||||
fxgenerator.h \
|
||||
server.h \
|
||||
client.h \
|
||||
recording.h \
|
||||
globals.h \
|
||||
gettext.h \
|
||||
isdnlexer.h \
|
||||
isdntree.h
|
||||
|
||||
ant_phone_SOURCES = ant-phone.c callerid.c g711.c gtk.c isdn.c \
|
||||
llcheck.c mediation.c session.c sound.c util.c settings.c \
|
||||
calleridlexer.l calleridparser.y isdnlexer.l isdnparser.y \
|
||||
gtksettings.c controlpad.c fxgenerator.c server.c client.c \
|
||||
recording.c isdntree.c isdn_capi.c capiconn.c
|
||||
noinst_HEADERS = callerid.h g711.h gtk.h isdn.h llcheck.h mediation.h \
|
||||
session.h sound.h util.h settings.h gtksettings.h controlpad.h \
|
||||
fxgenerator.h server.h client.h recording.h globals.h \
|
||||
gettext.h isdnlexer.h isdntree.h isdn_capi.h capiconn.h
|
||||
EXTRA_DIST = \
|
||||
pickup.xpm \
|
||||
hangup.xpm \
|
||||
|
@ -347,6 +311,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callerid.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calleridlexer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calleridparser.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/capiconn.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/controlpad.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxgenerator.Po@am__quote@
|
||||
|
@ -354,6 +319,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtk.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtksettings.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdn.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdn_capi.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdnlexer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdnparser.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isdntree.Po@am__quote@
|
||||
|
|
|
@ -92,16 +92,17 @@
|
|||
|
||||
int main(int argc, char *argv[]) {
|
||||
struct option long_options[] = {
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"usage", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'v'},
|
||||
{"cleanup", no_argument, 0, 'r'},
|
||||
{"debug", optional_argument, 0, 'd'},
|
||||
{"soundin", required_argument, 0, 'i'},
|
||||
{"soundout", required_argument, 0, 'o'},
|
||||
{"msn", required_argument, 0, 'm'},
|
||||
{"msns", required_argument, 0, 'l'},
|
||||
{"call", required_argument, 0, 'c'},
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"usage", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'v'},
|
||||
{"cleanup", no_argument, 0, 'r'},
|
||||
{"debug", optional_argument, 0, 'd'},
|
||||
{"soundin", required_argument, 0, 'i'},
|
||||
{"soundout", required_argument, 0, 'o'},
|
||||
{"msn", required_argument, 0, 'm'},
|
||||
{"msns", required_argument, 0, 'l'},
|
||||
{"call", required_argument, 0, 'c'},
|
||||
{"interface", required_argument, 0, 'f'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
char *short_options = "hvrd::i:o:m:l:c:";
|
||||
|
@ -114,6 +115,9 @@ int main(int argc, char *argv[]) {
|
|||
char *audio_device_name_out = "";
|
||||
char *msn = "";
|
||||
char *msns = "";
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
unsigned int interface=0; // 0=HiSax (ttyIx), 1..2 = capi20 controller num
|
||||
#endif
|
||||
|
||||
int gtk_result;
|
||||
|
||||
|
@ -185,10 +189,16 @@ Options:\n\
|
|||
default: 0\n\
|
||||
-l, --msns=MSNS MSNs to listen on, semicolon-separated list or '*'\n\
|
||||
default: *\n\
|
||||
-c, --call=NUMBER Call specified number\n\
|
||||
\n\
|
||||
-c, --call=NUMBER Call specified number\n"), argv[0]);
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
printf ("\n\
|
||||
-f, --interface=X 0=HiSax, [1..9]=capi20 controller num\n\
|
||||
default: 0\n");
|
||||
#endif
|
||||
printf ("\n\
|
||||
Note: If arguments of --soundin and --soundout are equal, a full duplex\n\
|
||||
sound device is needed.\n"), argv[0]);
|
||||
sound device is needed.\n");
|
||||
exit(0);
|
||||
case 'v': /* version */
|
||||
printf("ANT " VERSION "\n");
|
||||
|
@ -226,6 +236,15 @@ Note: If arguments of --soundin and --soundout are equal, a full duplex\n\
|
|||
}
|
||||
exit(0);
|
||||
break;
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
case 'f':
|
||||
if (optarg) {
|
||||
interface = strtol(optarg, NULL, 0);
|
||||
} else {
|
||||
interface = 0;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case '?':
|
||||
exit(1);
|
||||
}
|
||||
|
@ -235,7 +254,12 @@ Note: If arguments of --soundin and --soundout are equal, a full duplex\n\
|
|||
output_codeset_set("UTF-8"); /* GTK needs UTF-8 strings */
|
||||
|
||||
if (session_init(&session, audio_device_name_in, audio_device_name_out,
|
||||
msn, msns))
|
||||
msn, msns
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
, interface))
|
||||
#else
|
||||
))
|
||||
#endif
|
||||
{
|
||||
fprintf(stderr, "Error at session init.\n");
|
||||
exit(1);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* $Id: capiconn.c,v 1.13 2005/03/08 07:26:49 keil Exp $
|
||||
* Id: capiconn.c,v 1.13 2005/03/08 07:26:49 keil Exp
|
||||
*
|
||||
* taken from isdn4k-utils/pppdcapiplugin/
|
||||
*
|
||||
* Copyright 2000 Carsten Paeth (calle@calle.in-berlin.de)
|
||||
* Copyright 2000 AVM GmbH Berlin (info@avm.de)
|
||||
|
@ -9,7 +11,7 @@
|
|||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* $Log: capiconn.c,v $
|
||||
* Log: capiconn.c,v
|
||||
* Revision 1.13 2005/03/08 07:26:49 keil
|
||||
* - add SENDING_COMPLETE to INFO_REQ CONNECT_REQ and CONNECT_IND
|
||||
* - remove SENDING_COMPLETE parameter (always NULL) from capi_fill_DISCONNECT_REQ
|
||||
|
@ -57,10 +59,17 @@
|
|||
* Plugin for pppd to support PPP over CAPI2.0.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
|
||||
#include <string.h>
|
||||
#include "capiconn.h"
|
||||
|
||||
static char *revision = "$Revision: 1.13 $";
|
||||
static char *revision = "Revision: 1.13";
|
||||
|
||||
static _cmsg cmdcmsg;
|
||||
static _cmsg cmsg;
|
||||
|
@ -983,7 +992,7 @@ static void handle_controller(capiconn_context *ctx, _cmsg * cmsg)
|
|||
case 0: break;
|
||||
case 1: s = "unknown class"; break;
|
||||
case 2: s = "unknown function"; break;
|
||||
default: s = "unknown error"; break;
|
||||
default: s = "unkown error"; break;
|
||||
}
|
||||
if (s)
|
||||
(*cb->infomsg)("%s from controller 0x%x function %d: %s",
|
||||
|
@ -2100,3 +2109,5 @@ capiconn_listenstate(capiconn_context *ctx, unsigned contr)
|
|||
return CAPICONN_WRONG_STATE;
|
||||
return CAPICONN_OK;
|
||||
}
|
||||
|
||||
#endif HAVE_LIBCAPI20
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* $Id: capiconn.h,v 1.4 2004/06/14 11:33:07 calle Exp $
|
||||
* Id: capiconn.h,v 1.4 2004/06/14 11:33:07 calle Exp
|
||||
*
|
||||
* taken from isdn4k-utils/pppdcapiplugin/
|
||||
*
|
||||
* Copyright 2000 Carsten Paeth (calle@calle.in-berlin.de)
|
||||
* Copyright 2000 AVM GmbH Berlin (info@avm.de)
|
||||
|
@ -9,7 +11,7 @@
|
|||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* $Log: capiconn.h,v $
|
||||
* Log: capiconn.h,v
|
||||
* Revision 1.4 2004/06/14 11:33:07 calle
|
||||
* New version of capiconn.
|
||||
*
|
||||
|
@ -25,6 +27,7 @@
|
|||
* Plugin for pppd to support PPP over CAPI2.0.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __CAPICONN_H__
|
||||
#define __CAPICONN_H__
|
||||
|
|
@ -36,6 +36,11 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
/* capi support */
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
#include "isdn_capi.h"
|
||||
#endif
|
||||
|
||||
/* own header files */
|
||||
#include "globals.h"
|
||||
#include "gtk.h"
|
||||
|
@ -165,6 +170,14 @@ gint timeout_callback(gpointer data) {
|
|||
free(timediff);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
/* use periodic timer to handle CAPI messages */
|
||||
if (session->capi_contr) {
|
||||
printf ("capi messages\n");
|
||||
ant_capi_messages(session);
|
||||
}
|
||||
#endif
|
||||
|
||||
return TRUE; /* call it again */
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,464 @@
|
|||
/* $Id$
|
||||
*
|
||||
* This file is part of ANT (Ant is Not a Telephone)
|
||||
*
|
||||
* Authors:
|
||||
* - Martin Bachem, m.bachem@gmx.de
|
||||
*
|
||||
* heavy capitalized on:
|
||||
* + isdn4k-utils/[pppdcapiplugin,capiiinfo]
|
||||
* + capiconn samples capiintest/capiouttest
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <malloc.h>
|
||||
#include <capi20.h>
|
||||
|
||||
#include <linux/capi.h>
|
||||
#include <unistd.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "globals.h"
|
||||
#include "callerid.h"
|
||||
#include "session.h"
|
||||
#include "isdn_capi.h"
|
||||
#include "capiconn.h"
|
||||
static char msgbuf[4096];
|
||||
|
||||
/* callback for capiconn, TODO: don't use global session */
|
||||
static void
|
||||
ant_capi_incoming(capi_connection * cp, unsigned contr,
|
||||
unsigned cipvalue, char *callednumber,
|
||||
char *callingnumber)
|
||||
{
|
||||
switch (session.state) {
|
||||
case STATE_READY:
|
||||
/* caller id update */
|
||||
session.ring_time = time(NULL);
|
||||
|
||||
/* save callee's number */
|
||||
free(session.to);
|
||||
session.to = strdup(callednumber);
|
||||
cid_add_line(&session, CALL_IN, NULL, session.to);
|
||||
|
||||
/* save caller's number */
|
||||
free(session.from);
|
||||
session.from = strdup(callingnumber);
|
||||
cid_set_from(&session, session.from);
|
||||
if (session_set_state(&session, STATE_RINGING))
|
||||
session_set_state(&session,
|
||||
STATE_RINGING_QUIET);
|
||||
session.cipvalue = cipvalue;
|
||||
session.cp = cp;
|
||||
break;
|
||||
default:
|
||||
if (debug)
|
||||
printf
|
||||
("ERROR: incoming call at state %i\n",
|
||||
session.state);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static char *
|
||||
ant_capi_conninfo(capi_connection * p)
|
||||
{
|
||||
static char buf[1024];
|
||||
capi_conninfo *cp = capiconn_getinfo(p);
|
||||
char *callingnumber = "";
|
||||
char *callednumber = "";
|
||||
|
||||
if (cp->callingnumber && cp->callingnumber[0] > 2)
|
||||
callingnumber = cp->callingnumber + 3;
|
||||
if (cp->callednumber && cp->callednumber[0] > 1)
|
||||
callednumber = cp->callednumber + 2;
|
||||
|
||||
if (debug) {
|
||||
snprintf(buf, sizeof(buf),
|
||||
"\"%s\" -> \"%s\" %s (pcli=0x%x/ncci=0x%x)",
|
||||
callingnumber, callednumber,
|
||||
cp->isincoming ? "incoming" : "outgoing",
|
||||
cp->plci, cp->ncci);
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf),
|
||||
"\"%s\" -> \"%s\" %s",
|
||||
callingnumber, callednumber,
|
||||
cp->isincoming ? "incoming" : "outgoing");
|
||||
}
|
||||
buf[sizeof(buf) - 1] = 0;
|
||||
return buf;
|
||||
}
|
||||
|
||||
#define OUTSIZE 128
|
||||
|
||||
static int senddata(capi_connection *cp)
|
||||
{
|
||||
char *data;
|
||||
|
||||
data = (char *)malloc(OUTSIZE);
|
||||
if (!data) {
|
||||
printf ("ERROR: malloc failed\n");
|
||||
return -1;
|
||||
}
|
||||
if (capiconn_send(cp, data, OUTSIZE) == CAPICONN_OK) {
|
||||
return 0;
|
||||
}
|
||||
free(data);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* callback for capiconn, TODO: don't use global session */
|
||||
static void
|
||||
ant_capi_connected(capi_connection * cp, _cstruct NCPI)
|
||||
{
|
||||
capi_conninfo *p = capiconn_getinfo(cp);
|
||||
|
||||
printf ("connected(%s) NCPIlen=%d\n", ant_capi_conninfo(cp), NCPI[0]);
|
||||
|
||||
session.vcon_time = time(NULL); /* for caller id monitor */
|
||||
cid_set_date(&session, session.vcon_time);
|
||||
session_set_state(&session, STATE_CONVERSATION);
|
||||
|
||||
if (p->b1proto == 1 && p->b2proto == 1 && p->b3proto == 0) {
|
||||
printf ("enabling DTMF\n");
|
||||
(void)capiconn_dtmf_setstate(cp, 1);
|
||||
}
|
||||
// senddata(cp);
|
||||
}
|
||||
|
||||
/* callback for capiconn, TODO: don't use global session */
|
||||
static void
|
||||
ant_capi_disconnected(capi_connection * cp, int localdisconnect,
|
||||
unsigned reason, unsigned reason_b3)
|
||||
{
|
||||
switch (session.state) {
|
||||
case STATE_RINGING:
|
||||
case STATE_RINGING_QUIET:
|
||||
/* caller giving up */
|
||||
session_set_state(&session, STATE_READY);
|
||||
cid_set_duration(&session, _("(RUNG)"));
|
||||
cid_mark_row(&session, session.cid_num - 1, TRUE);
|
||||
break;
|
||||
default:
|
||||
if (debug)
|
||||
printf
|
||||
("ERROR: got disconnect at state %i\n",
|
||||
session.state);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* callback for GTK widget */
|
||||
int
|
||||
ant_capi_pickup(session_t * session)
|
||||
{
|
||||
switch (session->state) {
|
||||
case STATE_RINGING:
|
||||
case STATE_RINGING_QUIET:
|
||||
switch (session->cipvalue) {
|
||||
case 1: /* Speech */
|
||||
case 4: /* 3.1 KHz audio */
|
||||
case 5: /* 7 KHz audio */
|
||||
case 16: /* Telephony */
|
||||
case 26: /* 7kHz telephony */
|
||||
(void)capiconn_accept(session->cp, 1, 1, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 2: /* unrestricted digital information */
|
||||
case 3: /* restricted digital infomation */
|
||||
/* HDLC: 0,1,0 X75: 0,0,0 X75+V42Bis: 0,8,0 */
|
||||
/* x25overx75: 0,0,2 */
|
||||
(void)capiconn_accept(session->cp, 0, 1, 0, 0, 0, 0, 0);
|
||||
/*(void)capiconn_accept(cp, 0, 0, 2, 0, 0, 0, 0);*/
|
||||
break;
|
||||
case 17: /* Group 2/3 facsimile */
|
||||
(void)capiconn_accept(session->cp, 4, 4, 4, 0, 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
(void)capiconn_ignore(session->cp);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (debug)
|
||||
printf
|
||||
("ERROR: got disconnect at state %i\n",
|
||||
session->state);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* callback for GTK widget */
|
||||
int
|
||||
ant_capi_hangup(session_t * session)
|
||||
{
|
||||
switch (session->state) {
|
||||
|
||||
/* abort dialing */
|
||||
case STATE_DIALING:
|
||||
break;
|
||||
|
||||
/* reject call */
|
||||
case STATE_RINGING:
|
||||
case STATE_RINGING_QUIET:
|
||||
session_set_state(session, STATE_READY);
|
||||
cid_set_duration(session, _("(REJECTED)"));
|
||||
(void) capiconn_reject(session->cp);
|
||||
break;
|
||||
|
||||
/* hang up (while b-channel is open) */
|
||||
case STATE_CONVERSATION:
|
||||
(void)capiconn_disconnect(session->cp, 0);
|
||||
session_deinit_conversation(session, 1); /* 1 == we hang up ourselves ;) */
|
||||
session_set_state(session, STATE_READY);
|
||||
cid_set_duration(session, NULL);
|
||||
break;
|
||||
default:
|
||||
if (debug)
|
||||
printf
|
||||
("ERROR: got disconnect at state %i\n",
|
||||
session->state);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_chargeinfo(capi_connection * cp, unsigned long charge,
|
||||
int inunits)
|
||||
{
|
||||
if (debug) {
|
||||
if (inunits) {
|
||||
printf("%s: charge in units: %ul",
|
||||
ant_capi_conninfo(cp), charge);
|
||||
} else {
|
||||
printf("%s: charge in currency: %ul",
|
||||
ant_capi_conninfo(cp), charge);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
ant_capi_put_message(unsigned appid, unsigned char *msg)
|
||||
{
|
||||
unsigned err;
|
||||
err = capi20_put_message(appid, msg);
|
||||
if (err && debug) {
|
||||
fprintf(stderr, "putmessage(appid=%d) - %s 0x%x", appid,
|
||||
capi_info2str(err), err);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_msg(const char *prefix, const char *format, va_list args)
|
||||
{
|
||||
char *s = msgbuf;
|
||||
char *e = msgbuf + sizeof(msgbuf);
|
||||
(void) snprintf(s, e - s, "%s", prefix);
|
||||
s += strlen(s);
|
||||
(void) vsnprintf(s, e - s, format, args);
|
||||
s += strlen(s);
|
||||
|
||||
printf("%s\n", msgbuf);
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_err(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
if (debug) {
|
||||
va_start(args, format);
|
||||
ant_capi_msg("CAPI Error: ", format, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_dbg(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
if (debug > 1) {
|
||||
va_start(args, format);
|
||||
ant_capi_msg("CAPI Debug: ", format, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_info(const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
if (debug > 2) {
|
||||
va_start(args, format);
|
||||
ant_capi_msg("CAPI Info: ", format, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
static char *conninfo(capi_connection *p)
|
||||
{
|
||||
static char buf[1024];
|
||||
capi_conninfo *cp = capiconn_getinfo(p);
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"appl=%d plci=0x%x ncci=0x%x %s",
|
||||
cp->appid,
|
||||
cp->plci,
|
||||
cp->ncci,
|
||||
cp->isincoming ? "incoming" : "outgoing"
|
||||
);
|
||||
return buf;
|
||||
}
|
||||
|
||||
static void
|
||||
ant_capi_rx(capi_connection * cp, unsigned char *data, unsigned datalen)
|
||||
{
|
||||
printf ("received(%s): len=%u\n", conninfo(cp), datalen);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ant_capi_tx(capi_connection * cp, unsigned char *buf)
|
||||
{
|
||||
printf ("sent(%s): %p\n", conninfo(cp), buf);
|
||||
free(buf);
|
||||
senddata(cp);
|
||||
|
||||
// printf ("sent(%s)\n", conninfo(cp));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ant_capi_dtmf_rx(capi_connection * cp,
|
||||
unsigned char *data, unsigned datalen)
|
||||
{
|
||||
ant_capi_info("dtmf_reveived(%s): %ld \"%-*.*s\"",
|
||||
conninfo(cp), datalen, (int) datalen, (int) datalen, data);
|
||||
}
|
||||
|
||||
capiconn_callbacks ant_capi_callbacks = {
|
||||
malloc: malloc,
|
||||
free: free,
|
||||
|
||||
disconnected: ant_capi_disconnected,
|
||||
incoming: ant_capi_incoming,
|
||||
connected: ant_capi_connected,
|
||||
chargeinfo: ant_capi_chargeinfo,
|
||||
/*
|
||||
received: ant_capi_rx,
|
||||
datasent: ant_capi_tx,
|
||||
dtmf_received: ant_capi_dtmf_rx,
|
||||
*/
|
||||
received: 0,
|
||||
datasent: 0,
|
||||
dtmf_received: 0,
|
||||
|
||||
capi_put_message: ant_capi_put_message,
|
||||
|
||||
debugmsg: (void (*)(const char *,...)) ant_capi_dbg,
|
||||
infomsg: (void (*)(const char *,...)) ant_capi_info,
|
||||
errmsg: (void (*)(const char *,...)) ant_capi_err
|
||||
};
|
||||
|
||||
int
|
||||
ant_capi_init(session_t * session)
|
||||
{
|
||||
int serrno, err;
|
||||
if (CAPI20_ISINSTALLED() != CapiNoError) {
|
||||
fprintf(stderr, "CAPI not installed - %s (%d)\n",
|
||||
strerror(errno), errno);
|
||||
return -2;
|
||||
}
|
||||
if ((err = capi20_register(2, 8, 2048, &session->applid)) != 0) {
|
||||
serrno = errno;
|
||||
fprintf(stderr,
|
||||
"CAPI_REGISTER failed - %s (0x%04x) [%s (%d)]\n",
|
||||
capi_info2str(err), err, strerror(serrno), errno);
|
||||
return (-3);
|
||||
}
|
||||
if (capi20ext_set_flags(session->applid, 1) < 0) {
|
||||
serrno = errno;
|
||||
(void) capi20_release(session->applid);
|
||||
fprintf(stderr,
|
||||
"CAPI: failed to set highjacking mode - %s (%d)\n",
|
||||
strerror(serrno), serrno);
|
||||
return (-4);
|
||||
}
|
||||
if ((session->ctx =
|
||||
capiconn_getcontext(session->applid,
|
||||
&ant_capi_callbacks)) == 0) {
|
||||
(void) capi20_release(session->applid);
|
||||
fprintf(stderr, "CAPI: get_context failed\n");
|
||||
return (-5);
|
||||
}
|
||||
|
||||
session->cinfo.ddi = 0;
|
||||
session->cinfo.ndigits = 0;
|
||||
|
||||
if (capiconn_addcontr
|
||||
(session->ctx, session->capi_contr,
|
||||
&session->cinfo) != CAPICONN_OK) {
|
||||
(void) capiconn_freecontext(session->ctx);
|
||||
(void) capi20_release(session->applid);
|
||||
fprintf(stderr, "CAPI: add controller %d failed",
|
||||
session->capi_contr);
|
||||
return (-1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
ant_capi_listen(session_t * session)
|
||||
{
|
||||
|
||||
/*
|
||||
call
|
||||
conn = capiconn_connect(ctx,
|
||||
session->opt_contr, // contr
|
||||
1, // cipvalue
|
||||
number_to_call,
|
||||
session->msn,
|
||||
1, 1, 0,
|
||||
0, 0, 0, 0, 0);
|
||||
*/
|
||||
(void) capiconn_listen(session->ctx, session->capi_contr,
|
||||
0x1FFF03FF, 0);
|
||||
} void
|
||||
|
||||
ant_capi_free(session_t * session)
|
||||
{
|
||||
(void) capiconn_freecontext(session->ctx);
|
||||
(void) capi20_release(session->applid);
|
||||
}
|
||||
|
||||
/* attention: get called periodically by timer defined TIMER_DELAY in gtk.c,
|
||||
* so be quick ;)
|
||||
*/
|
||||
void
|
||||
ant_capi_messages(session_t * session)
|
||||
{
|
||||
unsigned char *msg = 0;
|
||||
struct timeval tv;
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 100;
|
||||
if (capi20_waitformessage(session->applid, &tv) == 0) {
|
||||
if (capi20_get_message(session->applid, &msg) == 0)
|
||||
capiconn_inject(session->applid, msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif /* HAVE_LIBCAPI20 */
|
|
@ -0,0 +1,23 @@
|
|||
/* $Id$
|
||||
*
|
||||
* This file is part of ANT (Ant is Not a Telephone)
|
||||
*
|
||||
* Authors:
|
||||
* - Martin Bachem, m.bachem@gmx.de
|
||||
* - heavy capitalized on: isdn4k-utils/[pppdcapiplugin,capiiinfo]
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "session.h"
|
||||
|
||||
int ant_capi_init(session_t *session);
|
||||
void ant_capi_listen(session_t *session);
|
||||
void ant_capi_free(session_t *session);
|
||||
void ant_capi_messages(session_t *session);
|
||||
int ant_capi_pickup(session_t *session);
|
||||
int ant_capi_hangup(session_t *session);
|
|
@ -55,6 +55,9 @@
|
|||
#include "settings.h"
|
||||
#include "fxgenerator.h"
|
||||
#include "server.h"
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
#include "isdn_capi.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is our session. Currently just one globally.
|
||||
|
@ -190,15 +193,26 @@ int session_isdn_init(session_t *session) {
|
|||
/* open and init isdn device */
|
||||
if (debug)
|
||||
fprintf(stderr, "Initializing ISDN device...\n");
|
||||
if ((session->isdn_fd =
|
||||
open_isdn_device(&session->isdn_device_name,
|
||||
&session->isdn_lockfile_name)) < 0) {
|
||||
fprintf(stderr, "Error opening isdn device.\n");
|
||||
return -1;
|
||||
}
|
||||
if (init_isdn_device(session->isdn_fd, &session->isdn_backup)) {
|
||||
fprintf(stderr, "Error initializing isdn device.\n");
|
||||
return -1;
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (session->capi_contr) {
|
||||
if (ant_capi_init(session)) {
|
||||
printf ("CAPI 2.0 initialization failed!\n");
|
||||
return -1;
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
if ((session->isdn_fd =
|
||||
open_isdn_device(&session->isdn_device_name,
|
||||
&session->isdn_lockfile_name)) < 0) {
|
||||
fprintf(stderr, "Error opening isdn device.\n");
|
||||
return -1;
|
||||
}
|
||||
if (init_isdn_device(session->isdn_fd, &session->isdn_backup)) {
|
||||
fprintf(stderr, "Error initializing isdn device.\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
session->isdn_inbuf_size = session->isdn_outbuf_size = DEFAULT_ISDNBUF_SIZE;
|
||||
|
@ -213,10 +227,17 @@ int session_isdn_init(session_t *session) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (isdn_setMSN(session->isdn_fd, session->msn) ||
|
||||
isdn_setMSNs(session->isdn_fd, session->msns)) {
|
||||
fprintf(stderr, "Error setting MSN properties.\n");
|
||||
return -1;
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (session->capi_contr) {
|
||||
ant_capi_listen(session);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
if (isdn_setMSN(session->isdn_fd, session->msn) ||
|
||||
isdn_setMSNs(session->isdn_fd, session->msns)) {
|
||||
fprintf(stderr, "Error setting MSN properties.\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
session->isdn_inbuf_len = 0;
|
||||
|
@ -310,14 +331,23 @@ int session_isdn_deinit(session_t *session) {
|
|||
if (debug)
|
||||
fprintf(stderr, "Closing ISDN device...\n");
|
||||
/* de-init / restore isdn device */
|
||||
if (deinit_isdn_device(session->isdn_fd, &session->isdn_backup)) {
|
||||
fprintf(stderr, "Error restoring ttyI state.\n");
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (session->capi_contr) {
|
||||
ant_capi_free(session);
|
||||
}
|
||||
/* close isdn device */
|
||||
if (close_isdn_device(session->isdn_fd,
|
||||
session->isdn_device_name,
|
||||
session->isdn_lockfile_name)) {
|
||||
fprintf(stderr, "Error closing isdn device.\n");
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (deinit_isdn_device(session->isdn_fd, &session->isdn_backup)) {
|
||||
fprintf(stderr, "Error restoring ttyI state.\n");
|
||||
}
|
||||
/* close isdn device */
|
||||
if (close_isdn_device(session->isdn_fd,
|
||||
session->isdn_device_name,
|
||||
session->isdn_lockfile_name)) {
|
||||
fprintf(stderr, "Error closing isdn device.\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -341,7 +371,14 @@ int session_isdn_deinit(session_t *session) {
|
|||
int session_init(session_t *session,
|
||||
char *audio_device_name_in,
|
||||
char *audio_device_name_out,
|
||||
char *msn, char *msns) {
|
||||
char *msn, char *msns
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
, unsigned int interface)
|
||||
#else
|
||||
)
|
||||
#endif
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
/*
|
||||
|
@ -416,6 +453,10 @@ int session_init(session_t *session,
|
|||
session->ring_time = 0;
|
||||
session->unanswered = 0;
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
session->capi_contr = interface;
|
||||
#endif
|
||||
|
||||
/* setup audio and isdn */
|
||||
if (!session->option_release_devices)
|
||||
if (session_audio_init(session) < 0) return -1;
|
||||
|
@ -499,12 +540,16 @@ void session_io_handlers_start(session_t *session) {
|
|||
(gpointer) session,
|
||||
NULL);
|
||||
}
|
||||
session->gtk_isdn_input_tag = gtk_input_add_full(session->isdn_fd,
|
||||
GDK_INPUT_READ,
|
||||
gtk_handle_isdn_input,
|
||||
NULL,
|
||||
(gpointer) session,
|
||||
NULL);
|
||||
|
||||
if (!session->capi_contr) {
|
||||
session->gtk_isdn_input_tag = gtk_input_add_full(session->isdn_fd,
|
||||
GDK_INPUT_READ,
|
||||
gtk_handle_isdn_input,
|
||||
NULL,
|
||||
(gpointer) session,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
/* server functionality */
|
||||
session->gtk_local_input_tag = gtk_input_add_full(session->local_sock,
|
||||
|
@ -665,19 +710,24 @@ void session_deinit_conversation(session_t *session, int self_hangup) {
|
|||
session_io_handlers_stop(session);
|
||||
session_reset_audio(session);
|
||||
session_io_handlers_start(session);
|
||||
|
||||
if (isdn_blockmode(session->isdn_fd, 0))
|
||||
fprintf(stderr, "Warning: "
|
||||
"Switching back to normal isdn tty mode not successful.\n");
|
||||
|
||||
/* go back to command mode */
|
||||
if (isdn_stop_audio(session->isdn_fd, self_hangup)) {
|
||||
fprintf(stderr, "Error switching back to command mode.\n");
|
||||
}
|
||||
|
||||
/* isdn hangup */
|
||||
if (isdn_hangup(session->isdn_fd)) {
|
||||
fprintf(stderr, "Error hanging up.\n");
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (!(session->capi_contr))
|
||||
#endif
|
||||
{
|
||||
if (isdn_blockmode(session->isdn_fd, 0))
|
||||
fprintf(stderr, "Warning: "
|
||||
"Switching back to normal isdn tty mode not successful.\n");
|
||||
|
||||
/* go back to command mode */
|
||||
if (isdn_stop_audio(session->isdn_fd, self_hangup)) {
|
||||
fprintf(stderr, "Error switching back to command mode.\n");
|
||||
}
|
||||
|
||||
/* isdn hangup */
|
||||
if (isdn_hangup(session->isdn_fd)) {
|
||||
fprintf(stderr, "Error hanging up.\n");
|
||||
}
|
||||
}
|
||||
|
||||
session->isdn_inbuf_len = 0;
|
||||
|
@ -1287,6 +1337,13 @@ void gtk_handle_pick_up_button(GtkWidget *widget _U_, gpointer data) {
|
|||
char *clear_number; /* number after un_vanity() */
|
||||
int result;
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (session->capi_contr) {
|
||||
ant_capi_pickup(session);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (session->state) {
|
||||
case STATE_READY: /* we are in command mode and want to dial */
|
||||
number = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(session->dial_number_box)
|
||||
|
@ -1370,6 +1427,13 @@ void gtk_handle_pick_up_button(GtkWidget *widget _U_, gpointer data) {
|
|||
void gtk_handle_hang_up_button(GtkWidget *widget _U_, gpointer data) {
|
||||
session_t *session = (session_t *) data;
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
if (session->capi_contr) {
|
||||
ant_capi_hangup(session);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (session->state) {
|
||||
case STATE_READY: /* we are already in command mode */
|
||||
break;
|
||||
|
|
|
@ -35,6 +35,13 @@
|
|||
/* GTK */
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* Capi 2.0 */
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
#include <linux/capi.h>
|
||||
#include <capi20.h>
|
||||
#include "capiconn.h"
|
||||
#endif
|
||||
|
||||
/* own header files */
|
||||
#include "recording.h"
|
||||
|
||||
|
@ -211,6 +218,16 @@ typedef struct {
|
|||
char* msn; /* originating msn, allocated memory! */
|
||||
char* msns; /* comma-separated list of msns to listen on, allocated memory!*/
|
||||
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
/* capi 2.0 control variables */
|
||||
unsigned char capi_contr; /* 0=HiSax /dev/ttyIx, [1..?]=capi20 controller num */
|
||||
capiconn_context *ctx;
|
||||
capi_contrinfo cinfo;
|
||||
capi_connection *cp;
|
||||
unsigned cipvalue;
|
||||
unsigned applid;
|
||||
#endif
|
||||
|
||||
int unanswered; /* unanswered calls for this session */
|
||||
|
||||
/* some options (useful for options file handling) */
|
||||
|
@ -252,7 +269,12 @@ int session_audio_deinit(session_t *session);
|
|||
int session_init(session_t *session,
|
||||
char *audio_device_name_in,
|
||||
char *audio_device_name_out,
|
||||
char *msn, char *msns);
|
||||
char *msn, char *msns
|
||||
#ifdef HAVE_LIBCAPI20
|
||||
, unsigned int interface);
|
||||
#else
|
||||
);
|
||||
#endif
|
||||
void session_audio_free(session_t *session);
|
||||
int session_deinit(session_t *session);
|
||||
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
#
|
||||
# This Makefile is used for compatibility to the
|
||||
# isdn4k-utils package. In order to superseede
|
||||
# the original Makefile, it is called GNUmakefile.
|
||||
#
|
||||
|
||||
ifeq (../scripts/autoconf.mk,$(wildcard ../scripts/autoconf.mk))
|
||||
include ../scripts/autoconf.mk
|
||||
DATAOPTS := DATATARGET=$(DESTDIR)$(CONFIG_DATADIR)/areacodes
|
||||
#
|
||||
# Install as root with numeric Id's, since these are the
|
||||
# only ones that _really_ exist on _every_ system.
|
||||
#
|
||||
BUILDOPTS := $(DATAOPTS)
|
||||
INSTALLOPTS := $(DATAOPTS) INSTALL="install -o 0 -g 0 -m 644"
|
||||
endif
|
||||
|
||||
all: .depend
|
||||
$(MAKE) -f make/linux.mak $(BUILDOPTS) all
|
||||
|
||||
depend dep: .depend
|
||||
|
||||
.depend:
|
||||
$(MAKE) -f make/linux.mak $(BUILDOPTS) depend
|
||||
|
||||
config:
|
||||
@cp Makefile.in GNUmakefile
|
||||
|
||||
clean:
|
||||
$(MAKE) -f make/linux.mak clean
|
||||
|
||||
distclean:
|
||||
$(MAKE) -f make/linux.mak distclean
|
||||
rm -f GNUmakefile
|
||||
|
||||
install-man:
|
||||
|
||||
install: all
|
||||
ifeq ($(CONFIG_LIB_AREACODE),y)
|
||||
mkdir -p $(DESTDIR)$(CONFIG_DATADIR)
|
||||
$(MAKE) -f make/linux.mak $(INSTALLOPTS) install
|
||||
endif
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(CONFIG_DATADIR)/areacodes
|
|
@ -1,123 +0,0 @@
|
|||
/*****************************************************************************/
|
||||
/* */
|
||||
/* ACTEST.C */
|
||||
/* */
|
||||
/* Test an areacode data file */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1996,97 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@musoftware.com */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any express or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "areacode.h"
|
||||
|
||||
|
||||
|
||||
int main (int argc, char* argv [])
|
||||
{
|
||||
acInfo AC;
|
||||
char Buf [256];
|
||||
int Len;
|
||||
unsigned RC;
|
||||
acMaxMem = 0;
|
||||
|
||||
/* See if there is an argument given. If so, use it as name and path of
|
||||
* the database.
|
||||
*/
|
||||
if (argc >= 2) {
|
||||
acFileName = argv [1];
|
||||
}
|
||||
|
||||
/* If we have an additional argument, use it as the phone number to look
|
||||
* up.
|
||||
*/
|
||||
if (argc >= 3) {
|
||||
RC = GetAreaCodeInfo (&AC, argv [2]);
|
||||
if (RC == acOk) {
|
||||
printf ("%u %s\n", AC.AreaCodeLen, AC.Info);
|
||||
}
|
||||
return RC;
|
||||
}
|
||||
|
||||
/* Test loop */
|
||||
while (1) {
|
||||
|
||||
printf ("Enter phone number: ");
|
||||
fflush (stdout);
|
||||
if (fgets (Buf, sizeof (Buf), stdin) == 0) {
|
||||
/* EOF on stdin */
|
||||
break;
|
||||
}
|
||||
Len = strlen (Buf);
|
||||
while (Len > 0 && Buf [Len-1] == '\n') {
|
||||
Buf [--Len] = '\0';
|
||||
}
|
||||
if (Len == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
switch ((RC = GetAreaCodeInfo (&AC, Buf))) {
|
||||
|
||||
case acOk:
|
||||
printf ("acOK:\n"
|
||||
" Length = %d\n"
|
||||
" Info = %s\n",
|
||||
AC.AreaCodeLen, AC.Info);
|
||||
break;
|
||||
|
||||
case acFileError:
|
||||
printf ("acFileError\n");
|
||||
break;
|
||||
|
||||
case acInvalidFile:
|
||||
printf ("acInvalidFile\n");
|
||||
break;
|
||||
|
||||
case acWrongVersion:
|
||||
printf ("acWrongVersion\n");
|
||||
break;
|
||||
|
||||
case acInvalidInput:
|
||||
printf ("acInvalidInput\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown return: %u\n", RC);
|
||||
break;
|
||||
|
||||
}
|
||||
printf ("\n");
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
/*****************************************************************************/
|
||||
/* */
|
||||
/* ACVERS.C */
|
||||
/* */
|
||||
/* Get the version and build of an areacode data file */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1996,97 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@musoftware.com */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any express or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/* This code assumes 8 bit bytes */
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Data */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
#define MAGIC0 0x68
|
||||
#define MAGIC1 0x57
|
||||
#define MAGIC2 0x46
|
||||
#define MAGIC3 0x35
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Code */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
static void Usage (const char* ProgName)
|
||||
/* Print usage information and exit */
|
||||
{
|
||||
printf ("%s: Print the version of an areacode database\n\n"
|
||||
"Usage: \t%s file ...\n",
|
||||
ProgName, ProgName);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main (int argc, char* argv [])
|
||||
{
|
||||
int I;
|
||||
|
||||
if (argc < 2) {
|
||||
Usage (argv [0]);
|
||||
}
|
||||
|
||||
for (I = 1; I < argc; I++) {
|
||||
|
||||
FILE* F;
|
||||
const char* Filename = argv [I];
|
||||
unsigned char MagicBuf [4];
|
||||
unsigned char BuildBuf [2];
|
||||
unsigned char VersionBuf [2];
|
||||
unsigned Build;
|
||||
|
||||
if ((F = fopen (Filename, "rb")) == 0) {
|
||||
perror ("Cannot open input file");
|
||||
exit (2);
|
||||
}
|
||||
|
||||
fread (MagicBuf, sizeof (MagicBuf), 1, F);
|
||||
if (MagicBuf [0] != MAGIC0 || MagicBuf [1] != MAGIC1 ||
|
||||
MagicBuf [2] != MAGIC2 || MagicBuf [3] != MAGIC3) {
|
||||
fprintf (stderr, "No dial prefix database\n");
|
||||
exit (3);
|
||||
}
|
||||
|
||||
fread (BuildBuf, sizeof (BuildBuf), 1, F);
|
||||
fread (VersionBuf, sizeof (VersionBuf), 1, F);
|
||||
fclose (F);
|
||||
|
||||
Build = ((unsigned) BuildBuf [1]) * 256 + ((unsigned) BuildBuf [0]);
|
||||
printf ("%d %d %u\n", VersionBuf [1], VersionBuf [0], Build);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,759 +0,0 @@
|
|||
/*****************************************************************************/
|
||||
/* */
|
||||
/* AREACODE.C */
|
||||
/* */
|
||||
/* Portable library module to search for an area code in a database. */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1996-98 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@musoftware.de */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The code assumes
|
||||
* - 8 bit bytes
|
||||
* - unsigned long is 32 bit. This may be changed by #defining u32 to
|
||||
* a data type that is an 32 bit unsigned when compiling this module.
|
||||
* - ascii character set
|
||||
*
|
||||
* The code does *not* assume
|
||||
* - a specific byte order. Currently the code autoadjusts to big or
|
||||
* little endian data. If you have something more weird than that,
|
||||
* you have to add conversion code.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "areacode.h"
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Externally visible data */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/* The name of the areacode data file. The default is what is #defined as
|
||||
* DATA_FILENAME. If this is not #defined, the default is "areacode.dat",
|
||||
* which is probably not what you want. In the latter case set this to
|
||||
* the correct filename *before* your first call to GetAreaCodeInfo.
|
||||
*/
|
||||
#ifdef DATA_FILENAME
|
||||
char* acFileName = DATA_FILENAME;
|
||||
#else
|
||||
char* acFileName = "areacode.dat";
|
||||
#endif
|
||||
|
||||
/* How much dynamic memory is GetAreaCodeInfo allowed to consume? Having less
|
||||
* memory means more disk access and vice versa. The function does even work
|
||||
* if you set this value to zero. For maximum performance, the function needs
|
||||
* 4 byte per area code stored in the data file. The default is 32KB.
|
||||
*/
|
||||
unsigned long acMaxMem = 0x8000UL;
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Data and structures */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/* Define an unsigned quantity with 32 bits. Try to make some clever
|
||||
* assumptions using the data from limits.h. This may break some older
|
||||
* (non ISO compliant) compilers, but I can't help...
|
||||
*/
|
||||
#if !defined(u32) && defined(ULONG_MAX)
|
||||
# if ULONG_MAX == 4294967295UL
|
||||
# define u32 unsigned long
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(u32) && defined(UINT_MAX)
|
||||
# if UINT_MAX == 4294967295UL
|
||||
# define u32 unsigned
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(u32) && defined(USHRT_MAX)
|
||||
# if USHRT_MAX == 4294967295UL
|
||||
# define u32 unsigned short
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(u32)
|
||||
# define u32 unsigned long
|
||||
#endif
|
||||
|
||||
/* The version of the data file we support (major only, minor is ignored) */
|
||||
#define acVersion 0x200
|
||||
|
||||
/* The magic words in little and big endian format */
|
||||
#define LittleMagic 0x35465768L
|
||||
#define BigMagic 0x68574635L
|
||||
|
||||
/* Defining the byte ordering */
|
||||
#define boLittleEndian 0
|
||||
#define boBigEndian 1
|
||||
|
||||
/* The byte order used in the file is little endian (intel) format */
|
||||
#define FileByteOrder boLittleEndian
|
||||
|
||||
/* Shortcuts */
|
||||
#define scCount 30
|
||||
|
||||
/* This is the header data of the data file. It is not used anywhere in
|
||||
* the code, just have a look at it since it describes the layout in the
|
||||
* file.
|
||||
*/
|
||||
typedef struct {
|
||||
u32 Magic;
|
||||
u32 Version; /* Version in hi word, build in lo word */
|
||||
u32 Count;
|
||||
u32 AreaCodeStart;
|
||||
u32 InfoIndexStart;
|
||||
u32 InfoStart;
|
||||
u32 MinLength;
|
||||
u32 CodeDataSize;
|
||||
u32 Shortcut [scCount]; /* Shortcuts for compression */
|
||||
} PrefixHeader;
|
||||
|
||||
/* This is what's really used: */
|
||||
typedef struct {
|
||||
|
||||
/* The file we read from */
|
||||
FILE* F;
|
||||
|
||||
/* Machine byte order */
|
||||
unsigned ByteOrder;
|
||||
|
||||
/* Stuff from the file header */
|
||||
unsigned Version;
|
||||
unsigned Build;
|
||||
u32 Count;
|
||||
u32 AreaCodeStart;
|
||||
u32 InfoIndexStart;
|
||||
u32 InfoStart;
|
||||
u32 AreaCodeLenStart;
|
||||
u32 MinLength; /* Minimum phone number length in data file */
|
||||
u32 CodeDataSize;
|
||||
u32 Shortcut [scCount]; /* Compression shortcuts */
|
||||
|
||||
/* Control data */
|
||||
long First;
|
||||
long Last;
|
||||
u32* Table;
|
||||
|
||||
} AreaCodeDesc;
|
||||
|
||||
/* Translation table for translation ISO-8859-1 --> CP850. To save some space,
|
||||
* the table covers only values > 127
|
||||
*/
|
||||
#ifdef CHARSET_CP850
|
||||
static char CP850Map [128] = {
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0xAD, 0x9B, 0x9C, 0x20, 0x9D, 0x20, 0x20,
|
||||
0x20, 0x20, 0xA6, 0xAE, 0xAA, 0x20, 0x20, 0x20,
|
||||
0xF8, 0xF1, 0xFD, 0x20, 0x20, 0xE6, 0x20, 0xF9,
|
||||
0x20, 0x20, 0xA7, 0xAF, 0xAC, 0x20, 0x20, 0xA8,
|
||||
0x20, 0x20, 0x20, 0x20, 0x8E, 0x8F, 0x92, 0x80,
|
||||
0x20, 0x90, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0xA5, 0x20, 0x20, 0x20, 0x20, 0x99, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x9A, 0x20, 0x20, 0xE1,
|
||||
0x85, 0xA0, 0x83, 0x20, 0x84, 0x86, 0x91, 0x87,
|
||||
0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B,
|
||||
0x20, 0xA4, 0x95, 0xA2, 0x93, 0x20, 0x94, 0xF6,
|
||||
0x20, 0x97, 0xA3, 0x20, 0x81, 0x20, 0xB0, 0x98
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Macro to convert from big endian to little endian format and vice versa.
|
||||
* Beware: The macro evaluates its parameter more than once!
|
||||
*/
|
||||
#define _ByteSwap(__V) ((((__V) & 0x000000FF) << 24) | \
|
||||
(((__V) & 0xFF000000) >> 24) | \
|
||||
(((__V) & 0x0000FF00) << 8) | \
|
||||
(((__V) & 0x00FF0000) >> 8))
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Helper functions */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
static int IsShortcut (char C)
|
||||
/* Return true if the given character is a shortcut */
|
||||
{
|
||||
return (C >= 0x01 && C <= 0x1F);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 _ByteSwapIfNeeded (u32 D, unsigned ByteOrder)
|
||||
/* Put the bytes into the correct order according to ByteOrder */
|
||||
{
|
||||
/* Swap bytes if needed and return the result */
|
||||
switch (ByteOrder) {
|
||||
case boLittleEndian: return D;
|
||||
default: return _ByteSwap (D);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 ByteSwapIfNeeded (u32 D, const AreaCodeDesc* Desc)
|
||||
/* Put the bytes into the correct order according to ByteOrder in Desc */
|
||||
{
|
||||
/* Swap bytes if needed and return the result */
|
||||
return _ByteSwapIfNeeded (D, Desc->ByteOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 _Load_u32 (FILE* F, unsigned ByteOrder)
|
||||
/* Load an u32 from the current file position and swap it if needed */
|
||||
{
|
||||
u32 D;
|
||||
|
||||
/* Read the data from the file */
|
||||
fread (&D, sizeof (D), 1, F);
|
||||
|
||||
/* Swap bytes if needed and return the result */
|
||||
return _ByteSwapIfNeeded (D, ByteOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 _Load_u24 (FILE* F, unsigned ByteOrder)
|
||||
/* Load an u24 from the current file position and swap it if needed */
|
||||
{
|
||||
u32 D = 0;
|
||||
|
||||
/* Read the data from the file */
|
||||
fread (&D, 3, 1, F);
|
||||
|
||||
/* Swap bytes if needed and return the result */
|
||||
return _ByteSwapIfNeeded (D, ByteOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 Load_u32 (const AreaCodeDesc* Desc)
|
||||
/* Load an u32 from the current file position and swap it if needed */
|
||||
{
|
||||
return _Load_u32 (Desc->F, Desc->ByteOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 Load_u24 (const AreaCodeDesc* Desc)
|
||||
/* Load an u32 from the current file position and swap it if needed */
|
||||
{
|
||||
return _Load_u24 (Desc->F, Desc->ByteOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned LoadShortcut (const AreaCodeDesc* Desc, char* S,
|
||||
unsigned Size, unsigned char C)
|
||||
/* Read the string for shortcut C into S, return the count of bytes read */
|
||||
{
|
||||
unsigned CharsRead = 0;
|
||||
|
||||
/* Get the replacement string in u32 format */
|
||||
u32 Shortcut = Desc->Shortcut [C-1];
|
||||
|
||||
/* Insert character by character, do recursively replace shortcuts. */
|
||||
while (Shortcut && CharsRead < Size-1) {
|
||||
char C = Shortcut & 0x00FF;
|
||||
if (IsShortcut (C)) {
|
||||
/* This is another shortcut, replace it recursively */
|
||||
unsigned ReadCount = LoadShortcut (Desc, S, Size-CharsRead, C);
|
||||
CharsRead += ReadCount;
|
||||
S += ReadCount;
|
||||
} else {
|
||||
/* No shortcut, use the character itself */
|
||||
*S++ = C;
|
||||
CharsRead++;
|
||||
}
|
||||
Shortcut >>= 8;
|
||||
}
|
||||
|
||||
/* Return the count of characters read */
|
||||
return CharsRead;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void LoadString (const AreaCodeDesc* Desc, char* S, unsigned Count)
|
||||
/* Read a zero terminated string from the file */
|
||||
{
|
||||
unsigned CharsRead = 0;
|
||||
|
||||
/* String must hold at least one character plus terminator */
|
||||
assert (Count >= 2);
|
||||
|
||||
/* Fill the string */
|
||||
while (CharsRead < Count-1) {
|
||||
|
||||
/* Read the next character */
|
||||
int C = getc (Desc->F);
|
||||
|
||||
/* If it is EOF or NUL, we're done */
|
||||
if (C == EOF || C == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we have a real character or a shortcut */
|
||||
if (IsShortcut (C)) {
|
||||
/* Insert a shortcut string */
|
||||
unsigned ReadCount = LoadShortcut (Desc, S, Count-CharsRead, (char)C);
|
||||
CharsRead += ReadCount;
|
||||
S += ReadCount;
|
||||
} else {
|
||||
/* Normal character */
|
||||
*S++ = (char) C;
|
||||
CharsRead++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Set the terminating zero */
|
||||
*S = '\0';
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned LoadFileHeader (AreaCodeDesc* Desc)
|
||||
/* Load the header of a data file. Return one of the acXXX codes. */
|
||||
{
|
||||
int I;
|
||||
u32 Version;
|
||||
|
||||
/* Load the magic word in the format used int the file (do not convert) */
|
||||
u32 Magic = _Load_u32 (Desc->F, FileByteOrder);
|
||||
|
||||
/* Check what we got from the file, determine the byte order */
|
||||
switch (Magic) {
|
||||
|
||||
case BigMagic:
|
||||
Desc->ByteOrder = boBigEndian;
|
||||
break;
|
||||
|
||||
case LittleMagic:
|
||||
Desc->ByteOrder = boLittleEndian;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* OOPS - the file is probably not a valid data file */
|
||||
return acInvalidFile;
|
||||
|
||||
}
|
||||
|
||||
/* Now read the rest of the header data */
|
||||
Version = Load_u32 (Desc);
|
||||
Desc->Version = (Version >> 16);
|
||||
Desc->Build = (Version & 0xFFFF);
|
||||
Desc->Count = Load_u32 (Desc);
|
||||
Desc->AreaCodeStart = Load_u32 (Desc);
|
||||
Desc->InfoIndexStart = Load_u32 (Desc);
|
||||
Desc->InfoStart = Load_u32 (Desc);
|
||||
Desc->MinLength = Load_u32 (Desc);
|
||||
Desc->CodeDataSize = Load_u32 (Desc);
|
||||
|
||||
/* Read the shortcuts */
|
||||
for (I = 0; I < scCount; I++) {
|
||||
Desc->Shortcut [I] = Load_u32 (Desc);
|
||||
}
|
||||
|
||||
/* Check for some error conditions */
|
||||
if (ferror (Desc->F)) {
|
||||
/* Some sort of file problem */
|
||||
return acFileError;
|
||||
} else if (feof (Desc->F) || Desc->Count == 0) {
|
||||
/* This should not happen on a valid file */
|
||||
return acInvalidFile;
|
||||
} else if ((Desc->Version & 0xFF00) != acVersion) {
|
||||
return acWrongVersion;
|
||||
} else {
|
||||
/* Data is sane */
|
||||
return acOk;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 EncodeNumber (const char* Phone)
|
||||
/* Encode the number we got from the caller into the internally used BCD
|
||||
* format. If there are invalid chars in the number, return 0xFFFFFFFF.
|
||||
*/
|
||||
{
|
||||
unsigned I;
|
||||
unsigned Len;
|
||||
u32 P = 0; /* Initialize to make gcc happy */
|
||||
|
||||
/* Get the amount of characters to convert */
|
||||
Len = strlen (Phone);
|
||||
if (Len == 0) {
|
||||
/* Invalid */
|
||||
return 0xFFFFFFFF;
|
||||
} else if (Len > 8) {
|
||||
Len = 8;
|
||||
}
|
||||
|
||||
/* Convert the characters */
|
||||
for (I = 0; I < Len; I++) {
|
||||
/* Get the next character and check if it's valid */
|
||||
char C = Phone [I];
|
||||
if (!isascii (C) || !isdigit (C)) {
|
||||
/* Invalid digit */
|
||||
return 0xFFFFFFFF;
|
||||
}
|
||||
P = (P << 4) | (C & 0x0F);
|
||||
}
|
||||
|
||||
/* Fill the rest of the number with 0x0F */
|
||||
I = 8 - Len;
|
||||
while (I--) {
|
||||
P = (P << 4) | 0x0F;
|
||||
}
|
||||
|
||||
/* Done - return the result */
|
||||
return P;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static u32 ReadPhone (const AreaCodeDesc* Desc, long Index)
|
||||
/* Read the phone number that is located at the given index. If we have a
|
||||
* part of the table already loaded into memory, use the memory copy, else
|
||||
* read the phone number from disk.
|
||||
*/
|
||||
{
|
||||
if (Desc->Table && Index >= Desc->First && Index <= Desc->Last) {
|
||||
/* Use the already loaded table, but don't forget to swap bytes */
|
||||
return ByteSwapIfNeeded (Desc->Table [Index - Desc->First], Desc);
|
||||
} else {
|
||||
/* Load the value from the file */
|
||||
fseek (Desc->F, Desc->AreaCodeStart + Index * sizeof (u32), SEEK_SET);
|
||||
return Load_u32 (Desc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void LoadTable (AreaCodeDesc* Desc)
|
||||
/* Load a part of the table into memory */
|
||||
{
|
||||
u32 SpaceNeeded = (Desc->Last - Desc->First + 1) * sizeof (u32);
|
||||
Desc->Table = malloc (SpaceNeeded);
|
||||
if (Desc->Table == 0) {
|
||||
/* Out of memory. There is no problem with this now since we do
|
||||
* not really need the table in core memory (it speeds things up,
|
||||
* that's all). In addition to that, the memory requirement halves
|
||||
* with each iteration, so maybe we have more luck next time.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* Seek to the correct position in the file */
|
||||
fseek (Desc->F, Desc->AreaCodeStart + Desc->First * sizeof (u32), SEEK_SET);
|
||||
|
||||
/* Read the data */
|
||||
fread (Desc->Table, SpaceNeeded, 1, Desc->F);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned char CalcCodeLen (u32 Code)
|
||||
/* Calculate the length of a given (encoded) area code in characters */
|
||||
{
|
||||
u32 Mask;
|
||||
unsigned char Len = 0;
|
||||
for (Mask = 0xF0000000L; Mask; Mask >>= 4) {
|
||||
if ((Code & Mask) != Mask) {
|
||||
Len++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Len;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned CalcMatchingDigits (u32 Code1, u32 Code2)
|
||||
/* Return the count of digits that match when comparing both numbers from
|
||||
* left to right.
|
||||
*/
|
||||
{
|
||||
static const u32 Masks [9] = {
|
||||
0x00000000, 0xF0000000, 0xFF000000, 0xFFF00000,
|
||||
0xFFFF0000, 0xFFFFF000, 0xFFFFFF00, 0xFFFFFFF0,
|
||||
0xFFFFFFFF
|
||||
};
|
||||
|
||||
unsigned I = sizeof (Masks) / sizeof (Masks [0]) - 1;
|
||||
while ((Code1 & Masks [I]) != (Code2 & Masks [I])) {
|
||||
/* Next one */
|
||||
I--;
|
||||
}
|
||||
|
||||
/* Return the count of matching digits */
|
||||
return I;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Code */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned GetAreaCodeInfo (acInfo* AC, const char* PhoneNumber)
|
||||
/* Return - if possible - an information for the area code of the given number.
|
||||
* The function returns one of the error codes defined in areacode.h. If the
|
||||
* returned value is acOk, the AC struct is filled with the data of the
|
||||
* area code found. If we did not have an error, but there is no area code
|
||||
* that corresponds to the given number, the function returns acOk, but the
|
||||
* AC struct is filled with an empty Info field and a AreaCodeLen of zero.
|
||||
*/
|
||||
{
|
||||
u32 Phone; /* PhoneNumber encoded in BCD */
|
||||
long First, Last, Current; /* For binary search */
|
||||
u32 CurrentVal; /* The value at Table [Current] */
|
||||
int Found; /* Flag: We've found an exact match */
|
||||
unsigned RC = acOk; /* Result code of the function */
|
||||
unsigned char AreaCodeLen; /* Length of areacode found */
|
||||
u32 InfoStart; /* Starting offset of info string */
|
||||
AreaCodeDesc Desc;
|
||||
|
||||
|
||||
/* Clear the fields of the AC struct. Write a zero to the last field of
|
||||
* Info - this field is never written to by the rest of the code. So by
|
||||
* setting this to zero, we will assure a terminated string in case some
|
||||
* problem prevents the code below from executing correctly.
|
||||
*/
|
||||
AC->Info [0] = '\0';
|
||||
AC->Info [sizeof (AC->Info) - 1] = '\0';
|
||||
AC->AreaCodeLen = 0;
|
||||
|
||||
/* Convert the phone number into the internal representation. If the
|
||||
* number is invalid, return immidiately. This will also catch an empty
|
||||
* phone number, so the rest of the code may safely assume that phone
|
||||
* has a value that makes sense.
|
||||
*/
|
||||
Phone = EncodeNumber (PhoneNumber);
|
||||
if (Phone == 0xFFFFFFFF) {
|
||||
/* Invalid number */
|
||||
return acInvalidInput;
|
||||
}
|
||||
|
||||
/* Open the database file, check for errors */
|
||||
Desc.F = fopen (acFileName, "rb");
|
||||
if (Desc.F == 0) {
|
||||
/* We had an error opening the file */
|
||||
return acFileError;
|
||||
}
|
||||
|
||||
/* Initialize descriptor data where needed */
|
||||
Desc.Table = 0;
|
||||
|
||||
/* Read the header from the file */
|
||||
RC = LoadFileHeader (&Desc);
|
||||
if (RC != acOk) {
|
||||
/* Wrong file or file read error */
|
||||
goto ExitWithClose;
|
||||
}
|
||||
|
||||
/* Add dead code to work around gcc warnings */
|
||||
Current = 0;
|
||||
CurrentVal = 0;
|
||||
|
||||
/* Now do a (eventually repeated) binary search over the data */
|
||||
Found = 0;
|
||||
First = 0;
|
||||
do {
|
||||
|
||||
Last = (long) Desc.Count - 1;
|
||||
while (First <= Last && Found == 0) {
|
||||
|
||||
/* If we don't have read the table into memory, check if we can do
|
||||
* so now.
|
||||
*/
|
||||
if (Desc.Table == 0) {
|
||||
u32 NeedMemory = (Last - First + 1) * sizeof (u32);
|
||||
if (NeedMemory <= acMaxMem) {
|
||||
/* Ok, the current part of the table is now small enough to
|
||||
* load it into memory.
|
||||
*/
|
||||
Desc.First = First;
|
||||
Desc.Last = Last;
|
||||
LoadTable (&Desc);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set current to mid of range */
|
||||
Current = (Last + First) / 2;
|
||||
|
||||
/* Get the phone number from that place */
|
||||
CurrentVal = ReadPhone (&Desc, Current);
|
||||
|
||||
/* Do a compare */
|
||||
if (Phone > CurrentVal) {
|
||||
First = Current + 1;
|
||||
} else {
|
||||
Last = Current - 1;
|
||||
if (Phone == CurrentVal) {
|
||||
/* Exact match (whow!) - terminate the loop */
|
||||
Found = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If we don't have an exact match, we check for a partially one. If
|
||||
* Found is not true, the loop above will terminate with First > Last.
|
||||
* Beware: This means that the index is eventually invalid!
|
||||
*/
|
||||
if (Found == 0) {
|
||||
|
||||
unsigned MatchingDigits; /* Count of matching digits */
|
||||
|
||||
/* Set the new current index and check if it is valid */
|
||||
Current = First;
|
||||
if (Current >= (long) Desc.Count) {
|
||||
/* Not found */
|
||||
goto ExitWithClose;
|
||||
}
|
||||
|
||||
/* The index is valid, load the value */
|
||||
CurrentVal = ReadPhone (&Desc, Current);
|
||||
|
||||
/* Calculate the length of the area code */
|
||||
AreaCodeLen = CalcCodeLen (CurrentVal);
|
||||
assert (AreaCodeLen > 0);
|
||||
|
||||
/* Check if the prefix is actually the first part of the phone
|
||||
* number. If so, we've found a match.
|
||||
*/
|
||||
MatchingDigits = CalcMatchingDigits (Phone, CurrentVal);
|
||||
if (MatchingDigits >= AreaCodeLen) {
|
||||
|
||||
/* Match! */
|
||||
Found = 1;
|
||||
|
||||
} else {
|
||||
|
||||
/* Ok, now comes the tricky part: Since we allow numbers that
|
||||
* do completely contain other numbers (e.g. 0123 --> AAAA,
|
||||
* 01239 --> BBBB), we may have found the longer number and
|
||||
* this caused the mismatch. There maybe a match if we remove
|
||||
* one or more digits from the number.
|
||||
* Because empty digits are filled with hex 'F', the shorter
|
||||
* number (if one exists) comes *after* the one we found
|
||||
* already. If there is a shorter number, it has - as a
|
||||
* maximum - as many digits as were matching between the
|
||||
* number we searched for, and the one we found. Since we have
|
||||
* the length of the shortest number, contained in the data
|
||||
* file in the header, we can stop, if the matching digits get
|
||||
* below or equal to this value.
|
||||
*/
|
||||
if (MatchingDigits < Desc.MinLength) {
|
||||
/* No match! */
|
||||
goto ExitWithClose;
|
||||
}
|
||||
|
||||
/* Replace all non-matching digits by hex 'F', and start again
|
||||
* searching, beginning after the current value.
|
||||
*/
|
||||
Phone |= 0xFFFFFFFF >> (MatchingDigits * 4);
|
||||
First = Current + 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} while (Found == 0);
|
||||
|
||||
|
||||
/* Ok, we have now definitely found the code. Current is the index of the
|
||||
* area code. Seek to the corresponding position in the name index, get
|
||||
* the name position and the area code length from there (which is encoded
|
||||
* together with the offset in a three byte value). To be more compatible
|
||||
* with future versions, there is a field in the header that says, how big
|
||||
* the area code specific data at that place is.
|
||||
*/
|
||||
fseek (Desc.F, Desc.InfoIndexStart + Current * Desc.CodeDataSize, SEEK_SET);
|
||||
InfoStart = Load_u24 (&Desc);
|
||||
|
||||
/* The real area code length is in bit 20-23 of the value just read */
|
||||
AC->AreaCodeLen = (unsigned) ((InfoStart & 0xF00000) >> 20) + 1;
|
||||
|
||||
/* Seek to the start of the info */
|
||||
fseek (Desc.F, Desc.InfoStart + (InfoStart & 0xFFFFF), SEEK_SET);
|
||||
|
||||
/* Zero terminated info string follows. */
|
||||
LoadString (&Desc, AC->Info, sizeof (AC->Info));
|
||||
|
||||
#ifdef CHARSET_CP850
|
||||
/* Translate the info to the CP850 charset */
|
||||
{
|
||||
unsigned char *S = (unsigned char*) AC->Info;
|
||||
while (*S) {
|
||||
if (*S >= 128) {
|
||||
*S = CP850Map [*S - 128];
|
||||
}
|
||||
S++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ExitWithClose:
|
||||
/* Free the table memory if allocated */
|
||||
free (Desc.Table);
|
||||
|
||||
/* Close the data file */
|
||||
fclose (Desc.F);
|
||||
|
||||
/* Done, return the result */
|
||||
return RC;
|
||||
}
|
||||
|
||||
|
||||
|
Binary file not shown.
|
@ -1,193 +0,0 @@
|
|||
|
||||
AREACODE
|
||||
|
||||
|
||||
Portable library module to search for an area code in a database.
|
||||
|
||||
Version 2.00
|
||||
|
||||
(C) Copyright 1996-98 by Ullrich von Bassewitz
|
||||
<uz@musoftware.de>
|
||||
|
||||
|
||||
|
||||
1. Overview
|
||||
-----------
|
||||
|
||||
The areacode module together with its database serves as a helper for
|
||||
finding names for area codes. It is freely available, subject to the
|
||||
copyright notice below.
|
||||
|
||||
|
||||
|
||||
2. Function
|
||||
-----------
|
||||
|
||||
The module exports a few data types and one function. The function resolves
|
||||
a phone number (including the country code) to some text describing the area
|
||||
code found in the phone number. Current descriptions are in german, the
|
||||
database contains german, swiss and austrian area codes.
|
||||
|
||||
Usage is easy, just have a look into the header file areacode.h.
|
||||
|
||||
|
||||
|
||||
3. Supported systems and limitations
|
||||
------------------------------------
|
||||
|
||||
The module should run on nearly all system that have the following
|
||||
characteristics:
|
||||
|
||||
* 8 bit bytes
|
||||
|
||||
* An unsigned data type with 32 bits. The code makes some checks with the
|
||||
values in limits.h to find such a datatype for itself, if all checks
|
||||
fail, unsigned long is used. This may be overriden by #defining the
|
||||
macro u32 to the datatype needed.
|
||||
|
||||
* An ANSI compatible compiler supporting prototypes. The code should also
|
||||
compile with a C++ compiler, the header file uses the #ifdef __cpluplus
|
||||
checks.
|
||||
|
||||
* Big or little endian architectures. For something more weird (old
|
||||
Vaxes?) code has to be added.
|
||||
|
||||
* Systems with CP437, CP850 or ISO-8859-1 character sets. The "native"
|
||||
format is ISO-8859-1, for the DOS codepages the #define CHARSET_CP850has
|
||||
to be added when compiling the module.
|
||||
|
||||
The code has been tested under
|
||||
|
||||
* DOS (Watcom C/C++ 10.6)
|
||||
|
||||
* Windows-NT (Watcom C/C++ 10.6)
|
||||
|
||||
* OS/2 2.x (Watcom C/C++ 10.6)
|
||||
|
||||
* i386-Linux (egcs 1.03)
|
||||
|
||||
For these environments makefiles can be found in the make subdirectory.
|
||||
|
||||
The package has some limits as stated below:
|
||||
|
||||
* Current language is german.
|
||||
|
||||
* The data file contains area codes for germany, austria, switzerland,
|
||||
the netherlands, and some codes for the UK and US.
|
||||
|
||||
* The area code including the country code (but not including the
|
||||
international prefix, often 00) may not exceed 8 digits. This may be
|
||||
bumped up to 9 digits if needed with some disadvantages (more
|
||||
complicated code).
|
||||
|
||||
* An area code description must be shorter than 256 characters.
|
||||
|
||||
|
||||
|
||||
4. How to get the source & data files
|
||||
-------------------------------------
|
||||
|
||||
You may get the source for the package itself, for the datafile builder and
|
||||
for new datafiles from
|
||||
|
||||
ftp://ftp.musoftware.de/pub/uz/areacode/
|
||||
|
||||
Note: Please do not distribute modified data files. The data files contain
|
||||
a version stamp to make shure, users don't overwrite newer versions with
|
||||
older ones. This scheme will no longer work if data files are distributed
|
||||
by third parties.
|
||||
|
||||
Note: The datafile builder needs spunk, a C++ class library to compile.
|
||||
You may want to have a look in
|
||||
|
||||
ftp://ftp.musoftware.de/pub/uz/spunk/
|
||||
|
||||
for the current spunk version.
|
||||
|
||||
|
||||
|
||||
5. Installing the package
|
||||
-------------------------
|
||||
|
||||
For all systems the location of the data file has to be known. The default
|
||||
name (including the path) may be compiled into the module by #defining
|
||||
DATA_FILENAME, or set at runtime (see areacode.h).
|
||||
The Linux makefile will install the data file in a common place, so more
|
||||
than one software package depending on areacode is able to use the data file.
|
||||
|
||||
The data file contains a version stamp, to avoid overwriting a newer file
|
||||
by an older one, when installing more than one software package. The
|
||||
program acvers is used to determine the build version, it will output three
|
||||
numbers, the last one is the data file build (the first two are format
|
||||
version numbers that - hopefully - will not change).
|
||||
|
||||
|
||||
|
||||
6. Some notes on version 2.0
|
||||
----------------------------
|
||||
|
||||
Unfortunately, I was not able to keep binary compatibility for version 2.0.
|
||||
After realizing that, I used the opportunity to change more things that were
|
||||
due for some time (ISO-8859-1 as a native format is an example).
|
||||
|
||||
New in version 2.0:
|
||||
|
||||
* Source character set is now ISO-8859-1.
|
||||
|
||||
* Areacodes may be extensions of other codes. This leads to somewhat more
|
||||
overhead when searching (now using a modified binary search), but the
|
||||
feature was too useful to omit it.
|
||||
|
||||
* Detection of duplicate descriptions and partial duplicate descriptions.
|
||||
|
||||
* The string pool may now be compressed.
|
||||
|
||||
|
||||
|
||||
7. Copying
|
||||
----------
|
||||
|
||||
This software is provided 'as-is', without any expressed or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
|
||||
|
||||
8. Credits
|
||||
----------
|
||||
|
||||
Many thanks to all people that helped developing the module:
|
||||
|
||||
|
||||
Andreas Kool (akool@kool.f.eunet.de), author of isdnlog,
|
||||
for many suggestions and code testing.
|
||||
|
||||
Norbert Staudt (VKRG.Staudt@t-online.de),
|
||||
who sent me lots of sample programs resolving area codes.
|
||||
|
||||
Andreas Gutzwiller (andy@hippo.proxyon.imp.com),
|
||||
for the swiss area codes.
|
||||
|
||||
Alois Schneider (Alois.Schneider@magnet.at),
|
||||
for the austrian area codes.
|
||||
|
||||
Paul Slootman (paul@wurtel.demon.nl),
|
||||
for the two versions of the area codes for the netherlands
|
||||
and for his patience:-)
|
||||
|
||||
Michael Reinelt (reinelt@eunet.at),
|
||||
for kicking me until version 2.0 was finished.
|
||||
|
|
@ -1,125 +0,0 @@
|
|||
/*****************************************************************************/
|
||||
/* */
|
||||
/* AREACODE.H */
|
||||
/* */
|
||||
/* Portable library module to search for an area code in a database. */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1996-98 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@musoftware.de */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The code assumes
|
||||
* - 8 bit bytes
|
||||
* - unsigned long is 32 bit. This may be changed by #defining u32 to
|
||||
* a data type that is an 32 bit unsigned when compiling this module.
|
||||
* - ascii character set
|
||||
*
|
||||
* The code does *not* assume
|
||||
* - a specific byte order. Currently the code autoadjusts to big or
|
||||
* little endian data. If you have something more weird than that,
|
||||
* you have to add conversion code.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef AREACODE_H
|
||||
#define AREACODE_H
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Data, structs and constants */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
/* The name of the areacode data file. The default is what is #defined as
|
||||
* DATA_FILENAME. If this is not #defined, the default is "areacode.dat",
|
||||
* which is probably not what you want. In the latter case set this to
|
||||
* the correct filename *before* your first call to GetAreaCodeInfo.
|
||||
*/
|
||||
extern char* acFileName;
|
||||
|
||||
/* How much dynamic memory is GetAreaCodeInfo allowed to consume? Having less
|
||||
* memory means more disk access and vice versa. The function does even work
|
||||
* if you set this value to zero. For maximum performance, the function needs
|
||||
* 4 byte per area code stored in the data file. The default is 32KB.
|
||||
*/
|
||||
extern unsigned long acMaxMem;
|
||||
|
||||
/* Result codes of GetAreaCodeInfo */
|
||||
#define acOk 0 /* Done */
|
||||
#define acFileError 1 /* Cannot open/read file */
|
||||
#define acInvalidFile 2 /* The file exists but is no area code data file */
|
||||
#define acWrongVersion 3 /* Wrong version of data file */
|
||||
#define acInvalidInput 4 /* Input string is not a number or empty */
|
||||
|
||||
/* The result of an area code search */
|
||||
typedef struct {
|
||||
unsigned AreaCodeLen; /* The length of the area code found */
|
||||
char Info [256]; /* An info string */
|
||||
} acInfo;
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Code */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned GetAreaCodeInfo (acInfo* /*AC*/ , const char* /*PhoneNumber*/);
|
||||
/* Return - if possible - an information for the area code of the given number.
|
||||
* The function returns one of the error codes defined in areacode.h. If the
|
||||
* returned value is acOk, the AC struct is filled with the data of the
|
||||
* area code found. If we did not have an error, but there is no area code
|
||||
* that corresponds to the given number, the function returns acOk, but the
|
||||
* AC struct is filled with an empty Info field and a AreaCodeLen of zero.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* End of AREACODE.H */
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -1,127 +0,0 @@
|
|||
# *****************************************************************************
|
||||
# * *
|
||||
# * AREACODE Makefile for Linux *
|
||||
# * *
|
||||
# * (C) 1995-96 Ullrich von Bassewitz *
|
||||
# * Wacholderweg 14 *
|
||||
# * D-70597 Stuttgart *
|
||||
# * EMail: uz@ibb.schwaben.com *
|
||||
# * *
|
||||
# *****************************************************************************
|
||||
|
||||
|
||||
|
||||
# $Id: linux.mak,v 1.2 1998/12/09 19:21:16 akool Exp $
|
||||
#
|
||||
# $Log: linux.mak,v $
|
||||
# Revision 1.2 1998/12/09 19:21:16 akool
|
||||
# new "Areacode" lib version 2.0
|
||||
# from Ullrich von Bassewitz (uz@wuschel.musoftware.de)
|
||||
# now we are supporting .at .ch .de .nl .uk and .us
|
||||
# ATTENTION: The database-format has changed!
|
||||
#
|
||||
# Revision 1.1 1997/03/03 04:21:46 fritz
|
||||
# Added files in areacode/make
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Stuff you may want to edit
|
||||
|
||||
# The name of the data file after installation
|
||||
|
||||
DATATARGET=/usr/lib/areacodes
|
||||
|
||||
# Command line for the installation of the data file
|
||||
INSTALL = install -o bin -g bin -m 644
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Definitions
|
||||
|
||||
# Names of executables
|
||||
AS = gas
|
||||
AR = ar
|
||||
LD = ld
|
||||
ZIP = zip
|
||||
|
||||
# Flags for the GNU C compiler
|
||||
CFLAGS = -g -O2 -Wall
|
||||
|
||||
# Name of the data file
|
||||
DATASOURCE=areacode.dat
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
|
||||
.c.o:
|
||||
gcc $(CFLAGS) -c $<
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
ifeq (.depend,$(wildcard .depend))
|
||||
all: actest acvers
|
||||
include .depend
|
||||
else
|
||||
all: depend
|
||||
endif
|
||||
|
||||
|
||||
actest: areacode.o actest.o
|
||||
gcc -o actest areacode.o actest.o
|
||||
|
||||
acvers: acvers.o
|
||||
gcc -o acvers acvers.o
|
||||
|
||||
areacode.o: areacode.h areacode.c
|
||||
gcc $(CFLAGS) -DDATA_FILENAME="\"$(DATATARGET)\"" \
|
||||
-c -o areacode.o areacode.c
|
||||
|
||||
install: areacode.o acvers
|
||||
@if [ `id -u` != 0 ]; then \
|
||||
echo ""; \
|
||||
echo 'Do "make install" as root'; \
|
||||
echo ""; \
|
||||
false; \
|
||||
fi
|
||||
@if [ -f $(DATATARGET) ]; then \
|
||||
NewVersion=`./acvers $(DATASOURCE) | awk '{ print $$3 }'`;\
|
||||
OldVersion=`./acvers $(DATATARGET) | awk '{ print $$3 }'`;\
|
||||
echo "Current datafile build number: $$OldVersion"; \
|
||||
echo "Build number of new datafile: $$NewVersion"; \
|
||||
if [ $$NewVersion -gt $$OldVersion ]; then \
|
||||
echo "Installing new datafile"; \
|
||||
$(INSTALL) $(DATASOURCE) $(DATATARGET); \
|
||||
else \
|
||||
echo "Installed datafile is same or newer, skipping...";\
|
||||
fi; \
|
||||
else \
|
||||
echo "Installing new datafile"; \
|
||||
$(INSTALL) $(DATASOURCE) $(DATATARGET); \
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Create a dependency file
|
||||
|
||||
depend dep: .depend
|
||||
|
||||
.depend:
|
||||
@echo "Creating dependency information"
|
||||
$(CC) -MM *.c > .depend
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# clean up
|
||||
|
||||
distclean: zap
|
||||
|
||||
clean:
|
||||
-rm -f *.bak *~ *.o
|
||||
-rm -f acvers actest
|
||||
|
||||
zap: clean
|
||||
-rm -f .depend
|
||||
-rm -f *.o
|
||||
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
# *****************************************************************************
|
||||
# * *
|
||||
# * AREACODE Makefile for SVR4 *
|
||||
# * *
|
||||
# * (C) 1995-96 Ullrich von Bassewitz *
|
||||
# * Wacholderweg 14 *
|
||||
# * D-70597 Stuttgart *
|
||||
# * EMail: uz@ibb.schwaben.com *
|
||||
# * *
|
||||
# * *
|
||||
# * SVR40 Port by Felix Blank (felix@tasha.muc.de) *
|
||||
# * *
|
||||
# *****************************************************************************
|
||||
|
||||
|
||||
|
||||
# $Id: svr40.mak,v 1.1 1997/03/03 04:21:46 fritz Exp $
|
||||
#
|
||||
# $Log: svr40.mak,v $
|
||||
# Revision 1.1 1997/03/03 04:21:46 fritz
|
||||
# Added files in areacode/make
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Stuff you may want to edit
|
||||
|
||||
# The name of the data file after installation
|
||||
DATATARGET=/usr/local/lib/areacodes
|
||||
|
||||
# Command line for the installation of the data file
|
||||
INSTALL = install -o bin -g bin -m 644
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Definitions
|
||||
|
||||
# Names of executables
|
||||
AS = gas
|
||||
AR = ar
|
||||
LD = ld
|
||||
ZIP = zip
|
||||
CC = gcc
|
||||
|
||||
# Flags for the GNU C compiler
|
||||
CFLAGS=-O2 -Wall
|
||||
|
||||
# Name of the data file
|
||||
DATASOURCE=areacode.dat
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
|
||||
.c.o:
|
||||
gcc $(CFLAGS) -c $<
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
ifeq (.depend,$(wildcard .depend))
|
||||
all: actest acvers
|
||||
include .depend
|
||||
else
|
||||
all: depend
|
||||
endif
|
||||
|
||||
|
||||
actest: areacode.o actest.o
|
||||
gcc -o actest areacode.o actest.o
|
||||
|
||||
acvers: acvers.o
|
||||
gcc -o acvers acvers.o
|
||||
|
||||
areacode.o: areacode.h areacode.c
|
||||
gcc $(CFLAGS) -DDATA_FILENAME="\"$(DATATARGET)\"" \
|
||||
-DCHARSET_ISO -c -o areacode.o areacode.c
|
||||
|
||||
install: areacode.o acvers
|
||||
@if [ `id -u` != 0 ]; then \
|
||||
echo ""; \
|
||||
echo 'Do "make install" as root'; \
|
||||
echo ""; \
|
||||
false; \
|
||||
fi
|
||||
@if [ -f $(DATATARGET) ]; then \
|
||||
NewVersion=`./acvers $(DATASOURCE) | awk '{ print $$3 }'`;\
|
||||
OldVersion=`./acvers $(DATATARGET) | awk '{ print $$3 }'`;\
|
||||
echo "Current datafile build number: $$OldVersion"; \
|
||||
echo "Build number of new datafile: $$NewVersion"; \
|
||||
if [ $$NewVersion -gt $$OldVersion ]; then \
|
||||
echo "Installing new datafile"; \
|
||||
$(INSTALL) $(DATASOURCE) $(DATATARGET); \
|
||||
else \
|
||||
echo "Installed datafile is same or newer, skipping...";\
|
||||
fi; \
|
||||
else \
|
||||
echo "Installing new datafile"; \
|
||||
$(INSTALL) $(DATASOURCE) $(DATATARGET); \
|
||||
fi
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Create a dependency file
|
||||
|
||||
depend dep:
|
||||
@echo "Creating dependency information"
|
||||
$(CC) -MM *.c > .depend
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# clean up
|
||||
|
||||
distclean: zap
|
||||
|
||||
clean:
|
||||
-rm *.bak *~
|
||||
|
||||
zap: clean
|
||||
-rm *.o
|
||||
-rm .depend
|
||||
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
# *****************************************************************************
|
||||
# * *
|
||||
# * AREACODE Makefile *
|
||||
# * *
|
||||
# * (C) 1996 Ullrich von Bassewitz *
|
||||
# * Wacholderweg 14 *
|
||||
# * D-70597 Stuttgart *
|
||||
# * EMail: uz@ibb.schwaben.com *
|
||||
# * *
|
||||
# *****************************************************************************
|
||||
|
||||
|
||||
|
||||
# $Id: watcom.mak,v 1.1 1997/03/03 04:21:47 fritz Exp $
|
||||
#
|
||||
# $Log: watcom.mak,v $
|
||||
# Revision 1.1 1997/03/03 04:21:47 fritz
|
||||
# Added files in areacode/make
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Generelle Einstellungen
|
||||
|
||||
.AUTODEPEND
|
||||
.SUFFIXES .ASM .C .CC .CPP
|
||||
.SWAP
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Allgemeine Definitionen
|
||||
|
||||
# Names of executables
|
||||
AS = TASM
|
||||
AR = WLIB
|
||||
LD = WLINK
|
||||
!if $d(__OS2__)
|
||||
ZIP = zip
|
||||
MV = c:\os2\4os2\4os2 /C MOVE /Q
|
||||
!else
|
||||
ZIP = pkzip
|
||||
MV = mv
|
||||
!endif
|
||||
|
||||
|
||||
!if !$d(TARGET)
|
||||
!if $d(__OS2__)
|
||||
TARGET = OS2
|
||||
!else
|
||||
TARGET = DOS
|
||||
!endif
|
||||
!endif
|
||||
|
||||
LIBDIR= ..\spunk
|
||||
INCDIR= ..\spunk
|
||||
|
||||
|
||||
# target specific macros.
|
||||
!if $(TARGET)==OS2
|
||||
|
||||
# --------------------- OS2 ---------------------
|
||||
SYSTEM = os2v2
|
||||
CPP = WPP386
|
||||
CC = WCC386
|
||||
CCCFG = -bm -bt=$(TARGET) -d$(TARGET) -i=$(INCDIR) -d2 -onatx -zp4 -5 -fpi87 -zq -w2 -ze
|
||||
|
||||
!elif $(TARGET)==DOS32
|
||||
|
||||
# -------------------- DOS4G --------------------
|
||||
SYSTEM = dos4g
|
||||
CPP = WPP386
|
||||
CC = WCC386
|
||||
CCCFG = -bt=$(TARGET) -d$(TARGET) -i=$(INCDIR) -d2 -onatx -zp4 -5 -fpi -zq -w2 -ze
|
||||
|
||||
!elif $(TARGET)==DOS
|
||||
|
||||
# --------------------- DOS ---------------------
|
||||
SYSTEM = dos
|
||||
CPP = WPP
|
||||
CC = WCC
|
||||
# Optimize for size when running under plain DOS, but use 286 code. Don't
|
||||
# include ANY debugging code to make as many programs runable under plain DOS
|
||||
# as possible.
|
||||
CCCFG = -bt=$(TARGET) -d$(TARGET) -dSPUNK_NODEBUG -i=$(INCDIR) -d1 -oailmns -s -zp2 -zc -2 -fp2 -ml -zq -w2 -ze -zt255
|
||||
|
||||
!elif $(TARGET)==NETWARE
|
||||
|
||||
# --------------------- NETWARE -------------------
|
||||
SYSTEM = netware
|
||||
CPP = WPP386
|
||||
CC = WCC386
|
||||
CCCFG = -bm -bt=$(TARGET) -d$(TARGET) -i=$(INCDIR) -d1 -onatx -zp4 -5 -fpi -zq -w2 -ze
|
||||
|
||||
!elif $(TARGET)==NT
|
||||
|
||||
# --------------------- NT ----------------------
|
||||
SYSTEM = nt
|
||||
CPP = WPP386
|
||||
CC = WCC386
|
||||
CCCFG = -bm -bt=$(TARGET) -d$(TARGET) -i=$(INCDIR) -d1 -onatx -zp4 -5 -fpi87 -zq -w2 -ze
|
||||
|
||||
!else
|
||||
!error
|
||||
!endif
|
||||
|
||||
LIB = $(LIBDIR)\$(TARGET)\SPUNK.LIB
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
|
||||
.c.obj:
|
||||
$(CC) $(CCCFG) $<
|
||||
|
||||
.cc.obj:
|
||||
$(CPP) $(CCCFG) $<
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
all: actest acvers
|
||||
|
||||
actest: actest.exe
|
||||
|
||||
acvers: acvers.exe
|
||||
|
||||
os2:
|
||||
$(MAKE) -DTARGET=OS2
|
||||
|
||||
nt:
|
||||
$(MAKE) -DTARGET=NT
|
||||
|
||||
dos32:
|
||||
$(MAKE) -DTARGET=DOS32
|
||||
|
||||
dos:
|
||||
$(MAKE) -DTARGET=DOS
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# actest
|
||||
|
||||
actest.exe: areacode.obj \
|
||||
actest.obj
|
||||
-@copy makefile make\watcom.mak > nul
|
||||
$(LD) system $(SYSTEM) @&&|
|
||||
DEBUG all
|
||||
NAME actest.exe
|
||||
OPTION DOSSEG
|
||||
OPTION STACK=32K
|
||||
FILE areacode.obj
|
||||
FILE actest.obj
|
||||
|
|
||||
|
||||
acvers.exe: acvers.obj
|
||||
-@copy makefile make\watcom.mak > nul
|
||||
$(LD) system $(SYSTEM) @&&|
|
||||
DEBUG all
|
||||
NAME acvers.exe
|
||||
OPTION DOSSEG
|
||||
OPTION STACK=32K
|
||||
FILE acvers.obj
|
||||
|
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Aufr„umen
|
||||
|
||||
clean:
|
||||
-del *.bak
|
||||
|
||||
zap: clean
|
||||
-del *.obj
|
||||
-del *.mbr
|
||||
-del *.dbr
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
##
|
||||
## Makefile.am
|
||||
##
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
CLEANFILES = *~
|
||||
MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in
|
||||
|
||||
CFLAGS = -Wall -O2
|
||||
|
||||
sbin_PROGRAMS = avmcapictrl
|
||||
|
||||
avmcapictrl_SOURCES = avmcapictrl.c
|
||||
|
||||
man_MANS = avmcapictrl.8
|
||||
|
|
@ -1,704 +0,0 @@
|
|||
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
sbin_PROGRAMS = avmcapictrl$(EXEEXT)
|
||||
subdir = .
|
||||
DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/avmcapictrl.8.in \
|
||||
$(top_srcdir)/configure depcomp install-sh missing
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES = avmcapictrl.8
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"
|
||||
PROGRAMS = $(sbin_PROGRAMS)
|
||||
am_avmcapictrl_OBJECTS = avmcapictrl.$(OBJEXT)
|
||||
avmcapictrl_OBJECTS = $(am_avmcapictrl_OBJECTS)
|
||||
avmcapictrl_LDADD = $(LDADD)
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(avmcapictrl_SOURCES)
|
||||
DIST_SOURCES = $(avmcapictrl_SOURCES)
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
man8dir = $(mandir)/man8
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = -Wall -O2
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
I4LVERSION = @I4LVERSION@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
CLEANFILES = *~
|
||||
MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in
|
||||
avmcapictrl_SOURCES = avmcapictrl.c
|
||||
man_MANS = avmcapictrl.8
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
avmcapictrl.8: $(top_builddir)/config.status $(srcdir)/avmcapictrl.8.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed 's/$(EXEEXT)$$//' | \
|
||||
while read p p1; do if test -f $$p; \
|
||||
then echo "$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||
sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||
if ($$2 == $$4) files[d] = files[d] " " $$1; \
|
||||
else { print "f", $$3 "/" $$4, $$1; } } \
|
||||
END { for (d in files) print "f", d, files[d] }' | \
|
||||
while read type dir files; do \
|
||||
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
|
||||
} \
|
||||
; done
|
||||
|
||||
uninstall-sbinPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||
-e 's/$$/$(EXEEXT)/' `; \
|
||||
test -n "$$list" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
||||
|
||||
clean-sbinPROGRAMS:
|
||||
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
||||
avmcapictrl$(EXEEXT): $(avmcapictrl_OBJECTS) $(avmcapictrl_DEPENDENCIES) $(EXTRA_avmcapictrl_DEPENDENCIES)
|
||||
@rm -f avmcapictrl$(EXEEXT)
|
||||
$(LINK) $(avmcapictrl_OBJECTS) $(avmcapictrl_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avmcapictrl.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
install-man8: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
|
||||
@list=''; test -n "$(man8dir)" || exit 0; \
|
||||
{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man8:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man8dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.8[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(MANS)'; if test -n "$$list"; then \
|
||||
list=`for p in $$list; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
||||
if test -n "$$list" && \
|
||||
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
||||
echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
|
||||
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
||||
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
||||
echo " typically \`make maintainer-clean' will remove them" >&2; \
|
||||
exit 1; \
|
||||
else :; fi; \
|
||||
else :; fi
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-lzma: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lzma*) \
|
||||
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS) $(MANS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-man
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-sbinPROGRAMS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man: install-man8
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-man uninstall-sbinPROGRAMS
|
||||
|
||||
uninstall-man: uninstall-man8
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
|
||||
clean-generic clean-sbinPROGRAMS ctags dist dist-all \
|
||||
dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ \
|
||||
dist-xz dist-zip distcheck distclean distclean-compile \
|
||||
distclean-generic distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-man8 install-pdf install-pdf-am install-ps \
|
||||
install-ps-am install-sbinPROGRAMS install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||
uninstall-am uninstall-man uninstall-man8 \
|
||||
uninstall-sbinPROGRAMS
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -1,971 +0,0 @@
|
|||
# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
||||
# Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
|
||||
[m4_warning([this file was generated for autoconf 2.68.
|
||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 1
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.11'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.11.3], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
# _AM_AUTOCONF_VERSION(VERSION)
|
||||
# -----------------------------
|
||||
# aclocal traces this macro to find the Autoconf version.
|
||||
# This is a private macro too. Using m4_define simplifies
|
||||
# the logic in aclocal, which can simply ignore this definition.
|
||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.11.3])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 1
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 9
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])dnl
|
||||
AC_SUBST([$1_FALSE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||
m4_define([_AM_COND_VALUE_$1], [$2])dnl
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
|
||||
# 2010, 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 12
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
am__universal=false
|
||||
m4_case([$1], [CC],
|
||||
[case " $depcc " in #(
|
||||
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
||||
esac],
|
||||
[CXX],
|
||||
[case " $depcc " in #(
|
||||
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
||||
esac])
|
||||
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this. Also, some Intel
|
||||
# versions had trouble with output in subdirs
|
||||
am__obj=sub/conftest.${OBJEXT-o}
|
||||
am__minus_obj="-o $am__obj"
|
||||
case $depmode in
|
||||
gcc)
|
||||
# This depmode causes a compiler race in universal mode.
|
||||
test "$am__universal" = false || continue
|
||||
;;
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
|
||||
# This compiler won't grok `-c -o', but also, the minuso test has
|
||||
# not run yet. These depmodes are late enough in the game, and
|
||||
# so weak that their functioning should not be impacted.
|
||||
am__obj=conftest.${OBJEXT-o}
|
||||
am__minus_obj=
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=$am__obj \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
am__nodep='_no'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||
AC_SUBST([am__nodep])dnl
|
||||
_AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 5
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[{
|
||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
||||
# are listed without --file. Let's play safe and only enable the eval
|
||||
# if we detect the quoting.
|
||||
case $CONFIG_FILES in
|
||||
*\'*) eval set x "$CONFIG_FILES" ;;
|
||||
*) set x $CONFIG_FILES ;;
|
||||
esac
|
||||
shift
|
||||
for mf
|
||||
do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
}
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 16
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.62])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||
# is not polluted with repeated "-I."
|
||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||
[_AM_DEPENDENCIES(OBJC)],
|
||||
[define([AC_PROG_OBJC],
|
||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||
])
|
||||
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
|
||||
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
|
||||
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
|
||||
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
||||
AC_CONFIG_COMMANDS_PRE(dnl
|
||||
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
||||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
||||
])
|
||||
|
||||
dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
||||
dnl mangled by Autoconf and run in a shell conditional statement.
|
||||
m4_define([_AC_COMPILER_EXEEXT],
|
||||
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_arg=$1
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$_am_arg | $_am_arg:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
|
||||
# Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 1
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
if test x"${install_sh}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
*)
|
||||
install_sh="\${SHELL} $am_aux_dir/install-sh"
|
||||
esac
|
||||
fi
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo this is the am__doit target
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# Ignore all kinds of additional output from `make'.
|
||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||
*the\ am__doit\ target*)
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
;;
|
||||
esac
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||
*the\ am__doit\ target*)
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 6
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||
if test x"${MISSING+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
|
||||
*)
|
||||
MISSING="\${SHELL} $am_aux_dir/missing" ;;
|
||||
esac
|
||||
fi
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
|
||||
# Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 1
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check for `mkdir -p'.
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
||||
dnl adjustment using top_builddir (which is defined more often than
|
||||
dnl MKDIR_P).
|
||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
||||
case $mkdir_p in
|
||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
|
||||
# Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# --------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Reject unsafe characters in $srcdir or the absolute working directory
|
||||
# name. Accept space and tab only in the latter.
|
||||
am_lf='
|
||||
'
|
||||
case `pwd` in
|
||||
*[[\\\"\#\$\&\'\`$am_lf]]*)
|
||||
AC_MSG_ERROR([unsafe absolute working directory name]);;
|
||||
esac
|
||||
case $srcdir in
|
||||
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
|
||||
AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
|
||||
esac
|
||||
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t "$srcdir/configure" conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 1
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# ---------------------------
|
||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||
# This macro is traced by Automake.
|
||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||
|
||||
# AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# --------------------------
|
||||
# Public sister of _AM_SUBST_NOTMAKE.
|
||||
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||
# in the wild :-( We should find a proper way to deprecate it ...
|
||||
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
|
@ -1,152 +0,0 @@
|
|||
.TH AVMCAPICTRL 8 "January 2000" isdn4k-utils-@I4LVERSION@ "Linux System Administration"
|
||||
.UC 4
|
||||
.SH NAME
|
||||
avmcapictrl \- Add, reset or remove active AVM cards and load firmware
|
||||
.SH SYNOPSIS
|
||||
avmcapictrl add <portbase> <irq> <type>
|
||||
.br
|
||||
avmcapictrl load <bootcode> [<contrnr> [<protocol>
|
||||
.br
|
||||
[P2P | <dn1>:<spid1> [<dn2>:<spid2>]]]]
|
||||
.br
|
||||
avmcapictrl reset [contrnr]
|
||||
.br
|
||||
avmcapictrl remove [contrnr]
|
||||
.br
|
||||
avmcapictrl trace [contrnr] [off|short|on|full|shortnodata|nodata]
|
||||
.br
|
||||
avmcapictrl addcard <driver> <portbase> <irq> [ <membase> [ <cardnr> ] ]
|
||||
.SH DESCRIPTION
|
||||
.I avmcapictrl
|
||||
is used to register active AVM ISA cards to the kernelcapi system and
|
||||
therewith to the ISDN system. You need it also to upload the
|
||||
firmware to any active AVM card. If an error occurs please also
|
||||
check the kernel error messages using the command dmesg(8).
|
||||
.LP
|
||||
.SH COMMANDS
|
||||
.TP 5
|
||||
.B add <portbase> <irq> <type>
|
||||
is used to add an ISA card to the kernel-capi2.0 system.
|
||||
The
|
||||
.I portbase
|
||||
can have the values 0x150, 0x250, 0x300 and 0x340 for
|
||||
the B1 ISA cards, look at the jumper on the card.
|
||||
For a T1-ISA (HEMA) card you can select a wide range
|
||||
of ports.
|
||||
.br
|
||||
.I irq
|
||||
can be selected from the following values:
|
||||
.br
|
||||
3, 4, 5, 6, 7, 9, 10, 11, 12 and 15.
|
||||
.br
|
||||
.I type
|
||||
can be B1 or T1.
|
||||
.LP
|
||||
.TP 5
|
||||
.B load <bootcode> [<contrnr> [<protocol>
|
||||
.B [P2P | <dn1>:<spid1> [<dn2>:<spid2>]]]]
|
||||
is used to load the firmware to a card
|
||||
.I bootcode
|
||||
is a t4-file. The actual versions of the t4-files for the different
|
||||
D channel protocols can be found at
|
||||
ftp://ftp.in-berlin.de/pub/capi4linux/firmware/b1/
|
||||
.br
|
||||
You need different t4-files for different D channel protocols:
|
||||
b1-1tr6.t4 for 1TR6, b1.t4 for DSS1 and
|
||||
.br
|
||||
b1-usa.t4 for 5ESS and NI1 (DSS1 is also supported).
|
||||
.br
|
||||
For M1/M2 PCMCIA cards you need m1-s10.t4 or m1-s4.t4 depending on the
|
||||
handy type used.
|
||||
.br
|
||||
.I contrnr
|
||||
is the number of the controller (card) starting from 1.
|
||||
.br
|
||||
.I protocol
|
||||
can be DSS1, CT1, VN3, AUSTEL, 5ESS or NI1.
|
||||
.br
|
||||
.I P2P
|
||||
point to point
|
||||
.br
|
||||
.I DN1:SPID1 DN2:SPID2
|
||||
is for the american protocols 5ESS and NI1.
|
||||
.LP
|
||||
.TP 5
|
||||
.B reset [contrnr]
|
||||
is used to reset a card if loading has failed.
|
||||
This function only makes sense if a card is not successfully loaded.
|
||||
.br
|
||||
.I contrnr
|
||||
is the number of the controller (card) starting from 1.
|
||||
.LP
|
||||
.TP 5
|
||||
.B remove [contrnr]
|
||||
is used to remove a card previously added. You can also remove
|
||||
cards added automatically (for example a B1-PCI card).
|
||||
.br
|
||||
.I contrnr
|
||||
is the number of the controller (card) starting from 1.
|
||||
.LP
|
||||
.TP 5
|
||||
.B trace [contrnr] [off|short|on|full|shortnodata|nodata]
|
||||
is used to trace CAPI2.0 messages. The trace will be done
|
||||
as kernel messages, see dmesg(8).
|
||||
.br
|
||||
.I contrnr
|
||||
is the number of the controller (card) starting from 1.
|
||||
.br
|
||||
.I off
|
||||
switch off tracing
|
||||
.br
|
||||
.I short
|
||||
switch on "one line per CAPI2.0 message" tracing
|
||||
.br
|
||||
.I on | full
|
||||
switch on "full decode" tracing
|
||||
.br
|
||||
.I shortnodata
|
||||
switch on "one line per CAPI2.0 message" tracing, but exclude
|
||||
DATA_B3_IND and DATA_B3_REQ messages.
|
||||
.br
|
||||
.I on | full
|
||||
switch on full decode tracing, but exclude
|
||||
DATA_B3_IND and DATA_B3_REQ messages.
|
||||
.LP
|
||||
.TP 5
|
||||
.B addcard <driver> <portbase> <irq> [ <membase> [ <cardnr> ] ]
|
||||
is used to add a card, this is more generic than
|
||||
.I add.
|
||||
.br
|
||||
.I driver
|
||||
currently b1isa or t1isa
|
||||
.br
|
||||
.I portbase
|
||||
can have the values 0x150, 0x250, 0x300 and 0x340 for
|
||||
the b1isa driver, look at the jumper on the card.
|
||||
For t1isa driver you can select an wide range
|
||||
of ports.
|
||||
.br
|
||||
.I irq
|
||||
can be selected from the following values:
|
||||
3, 4, 5, 6, 7, 9, 10, 11, 12 and 15.
|
||||
.br
|
||||
.I membase
|
||||
memory address if needed by driver
|
||||
.br
|
||||
.I cardnr
|
||||
only useful with driver t1isa
|
||||
|
||||
.SH AUTHOR
|
||||
Carsten Paeth <calle@calle.in-berlin.de>
|
||||
.LP
|
||||
.SH SEE ALSO
|
||||
.I ttyI\c
|
||||
\&(4),
|
||||
.I isdnctrl\c
|
||||
\&(8),
|
||||
.I isdninfo\c
|
||||
\&(4).
|
||||
.I dmesg\c
|
||||
\&(8).
|
||||
.I syslogd\c
|
||||
\&(8).
|
|
@ -1,713 +0,0 @@
|
|||
/*
|
||||
* $Id: avmcapictrl.c,v 1.17 2004/01/16 15:27:13 calle Exp $
|
||||
*
|
||||
* AVM-B1-ISDN driver for Linux. (Control-Utility)
|
||||
*
|
||||
* Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
|
||||
*
|
||||
* $Log: avmcapictrl.c,v $
|
||||
* Revision 1.17 2004/01/16 15:27:13 calle
|
||||
* remove several warnings.
|
||||
*
|
||||
* Revision 1.16 2001/03/01 14:59:11 paul
|
||||
* Various patches to fix errors when using the newest glibc,
|
||||
* replaced use of insecure tempnam() function
|
||||
* and to remove warnings etc.
|
||||
*
|
||||
* Revision 1.15 2000/03/08 13:40:33 calle
|
||||
* check for /dev/isdn/capi20 if /dev/capi20 doesn't exist.
|
||||
*
|
||||
* Revision 1.14 2000/01/28 16:36:19 calle
|
||||
* generic addcard (call add_card function of named driver)
|
||||
*
|
||||
* Revision 1.13 1999/12/06 17:01:51 calle
|
||||
* more documentation and possible errors explained.
|
||||
*
|
||||
* Revision 1.12 1999/07/01 16:37:53 calle
|
||||
* New command with new driver
|
||||
* avmcapictrl trace [contrnr] [off|short|on|full|shortnodate|nodata]
|
||||
* to make traces of capi messages per controller.
|
||||
*
|
||||
* Revision 1.11 1999/06/21 15:30:45 calle
|
||||
* extend error message if io port is out of range, now tell user that an
|
||||
* AVM B1 PCI card must be added by loading module b1pci.
|
||||
*
|
||||
* Revision 1.10 1998/07/15 15:08:20 calle
|
||||
* port and irq check changed.
|
||||
*
|
||||
* Revision 1.9 1998/02/27 15:42:00 calle
|
||||
* T1 running with slow link.
|
||||
*
|
||||
* Revision 1.8 1998/02/24 17:56:23 calle
|
||||
* changes for T1.
|
||||
*
|
||||
* Revision 1.7 1998/02/07 20:32:00 calle
|
||||
* update man page, remove old cardtype M1, add is done via avm_cs.o
|
||||
*
|
||||
* Revision 1.6 1998/02/07 20:09:00 calle
|
||||
* - added support for DN1/SPID1 DN2/SPID2 for 5ESS und NI1 protocols.
|
||||
* - allow debuging of patchvalues.
|
||||
* - optimize configure.in/configure
|
||||
*
|
||||
* Revision 1.5 1998/01/16 14:02:08 calle
|
||||
* patchvalues working now, leased lines and dchannel protocols like
|
||||
* CT1,VN3 und AUSTEL support okay, point to point also patchable.
|
||||
*
|
||||
* Revision 1.3 1997/12/07 20:02:22 calle
|
||||
* prepared support for cardtype and different protocols
|
||||
*
|
||||
* Revision 1.2 1997/03/20 00:18:57 luethje
|
||||
* inserted the line #include <errno.h> in avmb1/avmcapictrl.c and imon/imon.c,
|
||||
* some bugfixes, new structure in isdnlog/isdnrep/isdnrep.c.
|
||||
*
|
||||
* Revision 1.1 1997/03/04 22:46:32 calle
|
||||
* Added program to add and download firmware to AVM-B1 card
|
||||
*
|
||||
* Revision 2.2 1997/02/12 09:31:39 calle
|
||||
* more verbose error messages
|
||||
*
|
||||
* Revision 1.1 1997/01/31 10:32:20 calle
|
||||
* Initial revision
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#define _LINUX_LIST_H
|
||||
#include <linux/b1lli.h>
|
||||
#include <linux/capi.h>
|
||||
/* new ioctls */
|
||||
#include <linux/kernelcapi.h>
|
||||
|
||||
static char capidevname[] = "/dev/capi20";
|
||||
static char capidevnamenew[] = "/dev/isdn/capi20";
|
||||
|
||||
char *cmd;
|
||||
char *ctrldev;
|
||||
int arg_ofs;
|
||||
|
||||
int debugpatch = 0;
|
||||
|
||||
void usage(void)
|
||||
{
|
||||
fprintf(stderr, "usage: %s add <portbase> <irq> [B1|T1 [<cardnr>]] (Add a new card)\n", cmd);
|
||||
fprintf(stderr, " or: %s load <bootcode> [contrnr [protocol [P2P | DN1:SPID1 [DN2:SPID2]]]] (load firmware)\n", cmd);
|
||||
fprintf(stderr, " or: %s reset [contrnr] (reset controller)\n", cmd);
|
||||
fprintf(stderr, " or: %s remove [contrnr] (reset controller)\n", cmd);
|
||||
#ifdef KCAPI_CMD_TRACE
|
||||
fprintf(stderr, " or: %s trace [contrnr] [off|short|on|full|shortnodate|nodata]\n", cmd);
|
||||
#endif
|
||||
#ifdef KCAPI_CMD_ADDCARD
|
||||
fprintf(stderr, " or: %s addcard <driver> <portbase> <irq> [ <membase> [ <cardnr> ] ]\n", cmd);
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#define DP_ERROR -1
|
||||
#define DP_NONE 0
|
||||
#define DP_DSS1 1
|
||||
#define DP_D64S 2
|
||||
#define DP_D64S2 3
|
||||
#define DP_D64SD 4
|
||||
#define DP_DS01 5
|
||||
#define DP_DS02 6
|
||||
#define DP_CT1 7
|
||||
#define DP_VN3 8
|
||||
#define DP_AUSTEL 9
|
||||
#define DP_5ESS 10 /* need SPID,SPID2,DN,DN2 */
|
||||
#define DP_NI1 11 /* need SPID,SPID2,DN,DN2 */
|
||||
#define DP_DSS1MOBIL 12
|
||||
#define DP_1TR6MOBIL 13
|
||||
#define DP_GSM 14
|
||||
#define DP_1TR6 15
|
||||
#define DP_T1 16
|
||||
|
||||
static struct pmap {
|
||||
char *name;
|
||||
int protocol;
|
||||
} pmap[] = {
|
||||
{ "DSS1", DP_DSS1 },
|
||||
{ "D64S", DP_D64S },
|
||||
{ "D64S2", DP_D64S2 },
|
||||
{ "D64SD", DP_D64SD },
|
||||
{ "DS01", DP_DS01 },
|
||||
{ "DS02", DP_DS02 },
|
||||
{ "CT1", DP_CT1 },
|
||||
{ "VN3", DP_VN3 },
|
||||
{ "AUSTEL", DP_AUSTEL },
|
||||
{ "5ESS", DP_5ESS },
|
||||
{ "NI1", DP_NI1 },
|
||||
{ "T1", DP_T1 },
|
||||
#if 0
|
||||
{ "DSS1MOBIL", DP_DSS1MOBIL },
|
||||
{ "1TR6MOBIL", DP_1TR6MOBIL },
|
||||
{ "GSM", DP_GSM },
|
||||
{ "1TR6", DP_1TR6 },
|
||||
#endif
|
||||
{ 0 },
|
||||
};
|
||||
|
||||
static void show_protocols()
|
||||
{
|
||||
struct pmap *p;
|
||||
int pos = 0;
|
||||
for (p=pmap; p->name; p++) {
|
||||
int len = strlen(p->name);
|
||||
if (pos + len + 2 > 80) {
|
||||
fprintf(stderr,",\n");
|
||||
pos = 0;
|
||||
}
|
||||
if (pos == 0) {
|
||||
fprintf(stderr, " %s", p->name);
|
||||
pos += 8 + len;
|
||||
} else {
|
||||
fprintf(stderr, ",%s", p->name);
|
||||
pos += 1 + len;
|
||||
}
|
||||
}
|
||||
if (pos)
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
static int dchan_protocol(char *pname)
|
||||
{
|
||||
struct pmap *p;
|
||||
for (p=pmap; p->name; p++) {
|
||||
if (strcasecmp(pname, p->name) == 0)
|
||||
return p->protocol;
|
||||
}
|
||||
return DP_ERROR;
|
||||
}
|
||||
|
||||
static char patcharea[2048];
|
||||
static int patchlen = 0;
|
||||
|
||||
static void addpatchvalue(char *name, char *value, int len)
|
||||
{
|
||||
int nlen = strlen(name);
|
||||
if (patchlen + nlen + len + 2 >= sizeof(patcharea)) {
|
||||
fprintf(stderr, "%s: can't add patchvalue %s\n" , cmd, name);
|
||||
exit(3);
|
||||
}
|
||||
patcharea[patchlen++] = ':';
|
||||
memcpy(&patcharea[patchlen], name, nlen);
|
||||
patchlen += nlen;
|
||||
patcharea[patchlen++] = 0;
|
||||
memcpy(&patcharea[patchlen], value, len);
|
||||
patchlen += len;
|
||||
patcharea[patchlen++] = 0;
|
||||
patcharea[patchlen+1] = 0;
|
||||
}
|
||||
|
||||
int set_configuration(avmb1_t4file *t4config, int protocol, int p2p,
|
||||
char *dn1, char *spid1, char *dn2, char *spid2)
|
||||
{
|
||||
if (protocol != DP_T1) {
|
||||
addpatchvalue("WATCHDOG", "1", 1);
|
||||
addpatchvalue("AutoFrame", "\001", 1);
|
||||
} else {
|
||||
addpatchvalue("WATCHDOG", "0", 1);
|
||||
}
|
||||
switch (protocol) {
|
||||
case DP_T1:
|
||||
case DP_NONE:
|
||||
break;
|
||||
case DP_DSS1:
|
||||
break;
|
||||
case DP_D64S:
|
||||
case DP_D64S2:
|
||||
case DP_D64SD:
|
||||
p2p = 0;
|
||||
addpatchvalue("FV2", "2", 1);
|
||||
addpatchvalue("TEI", "\000", 1);
|
||||
break;
|
||||
case DP_DS01:
|
||||
case DP_DS02:
|
||||
p2p = 0;
|
||||
addpatchvalue("FV2", "1", 1);
|
||||
addpatchvalue("TEI", "\000", 1);
|
||||
break;
|
||||
case DP_CT1:
|
||||
addpatchvalue("PROTOCOL", "\001", 1);
|
||||
break;
|
||||
case DP_VN3:
|
||||
addpatchvalue("PROTOCOL", "\002", 1);
|
||||
break;
|
||||
case DP_AUSTEL:
|
||||
addpatchvalue("PROTOCOL", "\004", 1);
|
||||
break;
|
||||
case DP_NI1:
|
||||
p2p = 0;
|
||||
addpatchvalue("PROTOCOL", "\003", 1);
|
||||
if (dn1 && spid1) {
|
||||
addpatchvalue("DN", dn1, strlen(dn1));
|
||||
addpatchvalue("SPID", spid1, strlen(spid1));
|
||||
}
|
||||
if (dn2 && spid2) {
|
||||
addpatchvalue("DN2", dn2, strlen(dn2));
|
||||
addpatchvalue("SPID2", spid2, strlen(spid2));
|
||||
}
|
||||
break;
|
||||
case DP_5ESS:
|
||||
p2p = 0;
|
||||
addpatchvalue("PROTOCOL", "\005", 1);
|
||||
if (dn1 && spid1) {
|
||||
addpatchvalue("DN", dn1, strlen(dn1));
|
||||
addpatchvalue("SPID", spid1, strlen(spid1));
|
||||
}
|
||||
if (dn2 && spid2) {
|
||||
addpatchvalue("DN2", dn2, strlen(dn2));
|
||||
addpatchvalue("SPID2", spid2, strlen(spid2));
|
||||
}
|
||||
break;
|
||||
case DP_DSS1MOBIL:
|
||||
addpatchvalue("PatchMobileMode", "0", 1);
|
||||
break;
|
||||
case DP_1TR6MOBIL:
|
||||
addpatchvalue("PatchMobileMode", "0", 1);
|
||||
break;
|
||||
case DP_GSM:
|
||||
break;
|
||||
case DP_1TR6:
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
if (p2p) {
|
||||
addpatchvalue("P2P", "\001", 1);
|
||||
addpatchvalue("TEI", "\000", 1);
|
||||
}
|
||||
t4config->len = patchlen+1;
|
||||
t4config->data = patcharea;
|
||||
if (debugpatch) {
|
||||
FILE *fp = fopen("/tmp/b1.pvals", "w");
|
||||
if (fp) {
|
||||
fwrite(t4config->data, t4config->len, 1, fp);
|
||||
fclose(fp);
|
||||
fprintf(stderr, "avmcapictrl: patchvalues written to /tmp/b1.pvals\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int validports[] =
|
||||
{0x150, 0x250, 0x300, 0x340, 0};
|
||||
int validirqs[] = { 3, 4, 5, 6, 7, 9, 10, 11, 12, 15, 0};
|
||||
int validhemairqs[] = { 3, 5, 7, 9, 10, 11, 12, 15, 0};
|
||||
|
||||
static int checkportandirq(int cardtype, int port, int irq)
|
||||
{
|
||||
int i;
|
||||
if (cardtype == AVM_CARDTYPE_T1) {
|
||||
if ((port & 0xf) != 0) {
|
||||
fprintf(stderr, "%s: illegal port %d\n", cmd, port);
|
||||
fprintf(stderr, "%s: 3 low bits had to be zero\n", cmd);
|
||||
return -1;
|
||||
}
|
||||
if ((port & 0x30) == 0x30) {
|
||||
fprintf(stderr, "%s: illegal port %d\n", cmd, port);
|
||||
fprintf(stderr, "%s: bit 4 and 5 can not be one together\n", cmd);
|
||||
return -1;
|
||||
}
|
||||
for (i = 0; validhemairqs[i] && irq != validhemairqs[i]; i++);
|
||||
if (!validhemairqs[i]) {
|
||||
fprintf(stderr, "%s: illegal irq %d\n", cmd, irq);
|
||||
fprintf(stderr, "%s: try one of %d", cmd, validhemairqs[0]);
|
||||
for (i = 1; validhemairqs[i]; i++)
|
||||
fprintf(stderr, ", %d", validhemairqs[i]);
|
||||
fprintf(stderr, "\n");
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; validports[i] && port != validports[i]; i++);
|
||||
if (!validports[i]) {
|
||||
fprintf(stderr, "%s: illegal io-addr 0x%x\n", cmd, port);
|
||||
fprintf(stderr, "%s: try one of 0x%x", cmd, validports[0]);
|
||||
for (i = 1; validports[i]; i++)
|
||||
fprintf(stderr, ", 0x%x", validports[i]);
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, "%s: to install a B1 PCI card load module b1pci.o\n", cmd);
|
||||
return -1;
|
||||
}
|
||||
for (i = 0; validirqs[i] && irq != validirqs[i]; i++);
|
||||
if (!validirqs[i]) {
|
||||
fprintf(stderr, "%s: illegal irq %d\n", cmd, irq);
|
||||
fprintf(stderr, "%s: try one of %d", cmd, validirqs[0]);
|
||||
for (i = 1; validirqs[i]; i++)
|
||||
fprintf(stderr, ", %d", validirqs[i]);
|
||||
fprintf(stderr, "\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int fd;
|
||||
int ac;
|
||||
capi_manufacturer_cmd ioctl_s;
|
||||
avmb1_extcarddef newcard;
|
||||
avmb1_loadandconfigdef ldef;
|
||||
avmb1_resetdef rdef;
|
||||
avmb1_getdef gdef;
|
||||
int newdriver;
|
||||
char *dn1 = 0;
|
||||
char *spid1 = 0;
|
||||
char *dn2 = 0;
|
||||
char *spid2 = 0;
|
||||
|
||||
if ((cmd = strrchr(argv[0], '/')) == 0) {
|
||||
cmd = argv[0];
|
||||
} else {
|
||||
++cmd;
|
||||
}
|
||||
if (argc > 1) {
|
||||
arg_ofs = 1;
|
||||
} else
|
||||
usage();
|
||||
ac = argc - (arg_ofs - 1);
|
||||
if ((fd = open(capidevname, O_RDWR)) < 0 && errno == ENOENT)
|
||||
fd = open(capidevnamenew, O_RDWR);
|
||||
if (fd < 0) {
|
||||
switch (errno) {
|
||||
case ENOENT:
|
||||
perror("Device file /dev/capi20 and /dev/isdn/capi20 missing, use instdev");
|
||||
exit(2);
|
||||
case ENODEV:
|
||||
perror("device capi20 not registered");
|
||||
fprintf(stderr, "look in /proc/devices.\n");
|
||||
fprintf(stderr, "maybe the devicefiles are installed with a wrong majornumber,\n");
|
||||
fprintf(stderr, "or you linux kernel version only supports 64 char device (check /usr/include/linux/major.h)\n");
|
||||
exit(2);
|
||||
}
|
||||
perror("/dev/capi20");
|
||||
exit(-1);
|
||||
}
|
||||
gdef.contr = 0;
|
||||
ioctl_s.cmd = AVMB1_GET_CARDINFO;
|
||||
ioctl_s.data = &gdef;
|
||||
newdriver = 0;
|
||||
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
if (errno != EINVAL)
|
||||
newdriver = 1;
|
||||
} else {
|
||||
newdriver = 1;
|
||||
}
|
||||
|
||||
if (!strcasecmp(argv[arg_ofs], "add")) {
|
||||
int port, irq, cardtype, cardnr = 0;
|
||||
if (ac >= 4) {
|
||||
sscanf(argv[arg_ofs + 1], "%i", &port);
|
||||
sscanf(argv[arg_ofs + 2], "%i", &irq);
|
||||
if (argv[arg_ofs + 3]) {
|
||||
if (strcasecmp(argv[arg_ofs + 3],"B1") == 0) {
|
||||
cardtype = AVM_CARDTYPE_B1;
|
||||
} else if (strcasecmp(argv[arg_ofs + 3],"T1") == 0) {
|
||||
cardtype = AVM_CARDTYPE_T1;
|
||||
if (argv[arg_ofs + 4])
|
||||
sscanf(argv[arg_ofs + 4], "%i", &cardnr);
|
||||
} else {
|
||||
fprintf(stderr, "%s: illegal cardtype \"%s\"\n", cmd, argv[arg_ofs + 3]);
|
||||
fprintf(stderr, "%s: try one of B1,T1", cmd);
|
||||
exit(-1);
|
||||
}
|
||||
} else {
|
||||
cardtype = AVM_CARDTYPE_B1;
|
||||
}
|
||||
if (checkportandirq(cardtype, port, irq) != 0)
|
||||
exit(1);
|
||||
newcard.port = port;
|
||||
newcard.irq = irq;
|
||||
newcard.cardtype = cardtype;
|
||||
newcard.cardnr = cardnr;
|
||||
if (!newdriver && cardtype != AVM_CARDTYPE_B1) {
|
||||
fprintf(stderr, "%s: only B1 supported by kernel driver, sorry\n", cmd);
|
||||
exit(1);
|
||||
}
|
||||
if (newdriver)
|
||||
ioctl_s.cmd = AVMB1_ADDCARD_WITH_TYPE;
|
||||
else ioctl_s.cmd = AVMB1_ADDCARD;
|
||||
ioctl_s.data = &newcard;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
perror("ioctl ADDCARD");
|
||||
fprintf(stderr, "%s: please also look at the kernel message, call command dmesg(8)\n", cmd);
|
||||
exit(-1);
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if ( strcasecmp(argv[arg_ofs], "load") == 0
|
||||
|| strcasecmp(argv[arg_ofs], "test") == 0 ) {
|
||||
struct stat st;
|
||||
int codefd;
|
||||
int contr = 1;
|
||||
int protocol = 0;
|
||||
int p2p = 0;
|
||||
|
||||
if (strcasecmp(argv[arg_ofs], "test") == 0)
|
||||
debugpatch = 1;
|
||||
|
||||
if (ac == 2) {
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (ac > 3)
|
||||
contr = atoi(argv[arg_ofs + 2]);
|
||||
|
||||
if (ac > 4) {
|
||||
if (!newdriver) {
|
||||
fprintf(stderr, "%s: need newer kernel driver to set protocol\n",
|
||||
cmd);
|
||||
exit(1);
|
||||
}
|
||||
protocol = dchan_protocol(argv[arg_ofs + 3]);
|
||||
if (protocol < 0) {
|
||||
fprintf(stderr,"invalid protocol \"%s\"\n",
|
||||
argv[arg_ofs + 3]);
|
||||
show_protocols();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
if (ac > 5) {
|
||||
if (strcasecmp(argv[arg_ofs + 4], "P2P") == 0) {
|
||||
p2p = 1;
|
||||
} else {
|
||||
if (protocol != DP_5ESS && protocol != DP_NI1) {
|
||||
fprintf(stderr,"parameter should be P2P not \"%s\"\n",
|
||||
argv[arg_ofs + 4]);
|
||||
exit(1);
|
||||
}
|
||||
dn1 = argv[arg_ofs + 4];
|
||||
spid1 = strchr(dn1, ':');
|
||||
if (spid1 == 0) {
|
||||
fprintf(stderr,"DN1 and SPID1 should be spearated by ':s': %s\n",
|
||||
argv[arg_ofs + 4]);
|
||||
exit(1);
|
||||
|
||||
}
|
||||
*spid1++ = 0;
|
||||
if (ac > 6) {
|
||||
dn2 = argv[arg_ofs + 5];
|
||||
spid2 = strchr(dn2, ':');
|
||||
if (spid2 == 0) {
|
||||
fprintf(stderr,"DN2 and SPID2 should be spearated by ':s': %s\n",
|
||||
argv[arg_ofs + 5]);
|
||||
exit(1);
|
||||
|
||||
}
|
||||
*spid2++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (stat(argv[arg_ofs + 1], &st)) {
|
||||
perror(argv[arg_ofs + 1]);
|
||||
exit(2);
|
||||
}
|
||||
if (!(codefd = open(argv[arg_ofs + 1], O_RDONLY))) {
|
||||
perror(argv[arg_ofs + 1]);
|
||||
exit(2);
|
||||
}
|
||||
ldef.contr = contr;
|
||||
ldef.t4file.len = st.st_size;
|
||||
ldef.t4file.data = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, codefd, 0);
|
||||
if (ldef.t4file.data == (unsigned char *) -1) {
|
||||
perror("mmap");
|
||||
exit(2);
|
||||
}
|
||||
|
||||
ldef.t4config.len = 0;
|
||||
ldef.t4config.data = 0;
|
||||
if (protocol || p2p || (dn1 && spid1) || (dn2 && spid2)) {
|
||||
set_configuration(&ldef.t4config, protocol, p2p,
|
||||
dn1, spid1, dn2, spid2);
|
||||
if (debugpatch)
|
||||
exit(0);
|
||||
} else if (debugpatch) {
|
||||
fprintf(stderr,"avmcapictrl: no patchvalues needed\n");
|
||||
}
|
||||
printf("Loading Bootcode %s ... ", argv[arg_ofs + 1]);
|
||||
fflush(stdout);
|
||||
if (newdriver)
|
||||
ioctl_s.cmd = AVMB1_LOAD_AND_CONFIG;
|
||||
else ioctl_s.cmd = AVMB1_LOAD;
|
||||
ioctl_s.data = &ldef;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
perror("\nioctl LOAD");
|
||||
fprintf(stderr, "%s: please also look at the kernel message, call command dmesg(8)\n", cmd);
|
||||
exit(2);
|
||||
}
|
||||
munmap(ldef.t4file.data, ldef.t4file.len);
|
||||
close(codefd);
|
||||
close(fd);
|
||||
printf("done\n");
|
||||
return 0;
|
||||
}
|
||||
if (!strcasecmp(argv[arg_ofs], "reset")) {
|
||||
int contr = 1;
|
||||
|
||||
if (ac > 2)
|
||||
contr = atoi(argv[arg_ofs + 1]);
|
||||
|
||||
rdef.contr = contr;
|
||||
ioctl_s.cmd = AVMB1_RESETCARD;
|
||||
ioctl_s.data = &rdef;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
fprintf(stderr, "%s: please also look at the kernel message, call command dmesg(8)\n", cmd);
|
||||
perror("\nioctl RESETCARD");
|
||||
exit(2);
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
if ( !strcasecmp(argv[arg_ofs], "remove")
|
||||
|| !strcasecmp(argv[arg_ofs], "delete")
|
||||
|| !strcasecmp(argv[arg_ofs], "del")) {
|
||||
int contr = 1;
|
||||
|
||||
if (ac > 2)
|
||||
contr = atoi(argv[arg_ofs + 1]);
|
||||
|
||||
rdef.contr = contr;
|
||||
ioctl_s.cmd = AVMB1_REMOVECARD;
|
||||
ioctl_s.data = &rdef;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
fprintf(stderr, "%s: please also look at the kernel message, call command dmesg(8)\n", cmd);
|
||||
perror("\nioctl REMOVECARD");
|
||||
exit(2);
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
#ifdef KCAPI_CMD_TRACE
|
||||
if (!strcasecmp(argv[arg_ofs], "trace")) {
|
||||
kcapi_flagdef fdef;
|
||||
char *s = 0;
|
||||
fdef.contr = 1;
|
||||
fdef.flag = 0;
|
||||
|
||||
if (ac > 2) {
|
||||
s = argv[arg_ofs + 1];
|
||||
if (isdigit(*s)) {
|
||||
fdef.contr = atoi(argv[arg_ofs + 1]);
|
||||
s = argv[arg_ofs + 2];
|
||||
}
|
||||
}
|
||||
if (s) {
|
||||
if (isdigit(*s)) {
|
||||
fdef.flag = atoi(s);
|
||||
} else if (strcasecmp(s, "off") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_OFF;
|
||||
} else if (strcasecmp(s, "short") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_SHORT;
|
||||
} else if (strcasecmp(s, "on") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_FULL;
|
||||
} else if (strcasecmp(s, "full") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_FULL;
|
||||
} else if (strcasecmp(s, "shortnodata") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_SHORT_NO_DATA;
|
||||
} else if (strcasecmp(s, "nodata") == 0) {
|
||||
fdef.flag = KCAPI_TRACE_FULL_NO_DATA;
|
||||
} else {
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
ioctl_s.cmd = KCAPI_CMD_TRACE;
|
||||
ioctl_s.data = &fdef;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
perror("\nioctl TRACE");
|
||||
exit(2);
|
||||
}
|
||||
close(fd);
|
||||
if (fdef.flag != KCAPI_TRACE_OFF)
|
||||
printf("%s: trace switched on, look at the kernel messages, check dmesg(8)\n", cmd);
|
||||
else printf("%s: trace switched off\n", cmd);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef KCAPI_CMD_ADDCARD
|
||||
if (!strcasecmp(argv[arg_ofs], "addcard")) {
|
||||
kcapi_carddef carddef;
|
||||
char *s = 0;
|
||||
int port;
|
||||
int irq;
|
||||
int cardnr = 0;
|
||||
unsigned long membase = 0;
|
||||
|
||||
memset(&carddef, 0, sizeof(carddef));
|
||||
|
||||
if (ac >= 5) {
|
||||
s = argv[arg_ofs + 1];
|
||||
if (strlen(s) > sizeof(carddef.driver)) {
|
||||
fprintf(stderr, "%s: driver name > %lu\n",
|
||||
cmd, (unsigned long)sizeof(carddef.driver));
|
||||
exit(1);
|
||||
}
|
||||
strncpy(carddef.driver, s, sizeof(carddef.driver));
|
||||
|
||||
if (sscanf(argv[arg_ofs + 2], "%i", &port) != 1) {
|
||||
fprintf(stderr, "%s: invalid port \"%s\"\n",
|
||||
cmd, argv[arg_ofs + 2]);
|
||||
exit(1);
|
||||
}
|
||||
carddef.port = port;
|
||||
|
||||
if (sscanf(argv[arg_ofs + 3], "%i", &irq) != 1) {
|
||||
fprintf(stderr, "%s: invalid irq \"%s\"\n",
|
||||
cmd, argv[arg_ofs + 3]);
|
||||
exit(1);
|
||||
}
|
||||
carddef.irq = irq;
|
||||
|
||||
if (argv[arg_ofs + 4]) {
|
||||
if (sscanf(argv[arg_ofs + 4], "%li", &membase) != 1) {
|
||||
fprintf(stderr, "%s: invalid membase \"%s\"\n",
|
||||
cmd, argv[arg_ofs + 4]);
|
||||
exit(1);
|
||||
}
|
||||
carddef.membase = membase;
|
||||
|
||||
if (argv[arg_ofs + 5]) {
|
||||
if (sscanf(argv[arg_ofs + 5], "%i", &cardnr) != 1) {
|
||||
fprintf(stderr, "%s: invalid cardnr \"%s\"\n",
|
||||
cmd, argv[arg_ofs + 5]);
|
||||
exit(1);
|
||||
}
|
||||
carddef.cardnr = cardnr;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "%s: missing arguments\n", cmd);
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ioctl_s.cmd = KCAPI_CMD_ADDCARD;
|
||||
ioctl_s.data = &carddef;
|
||||
if ((ioctl(fd, CAPI_MANUFACTURER_CMD, &ioctl_s)) < 0) {
|
||||
perror("\nioctl ADDCARD");
|
||||
exit(2);
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
usage();
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,25 +0,0 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.68])
|
||||
|
||||
AC_INIT([avmcapictrl],[1.17])
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_PREFIX_DEFAULT([/usr])
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
|
||||
I4LVERSION=${I4LVERSION:-"?.?"}
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h sys/ioctl.h unistd.h)
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_CHECK_FUNCS(mmap)
|
||||
|
||||
dnl Define which variables to substitute & which files to generate
|
||||
AC_SUBST(I4LVERSION)
|
||||
|
||||
AC_OUTPUT(Makefile avmcapictrl.8)
|
688
avmb1/depcomp
688
avmb1/depcomp
|
@ -1,688 +0,0 @@
|
|||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2011-12-04.11; # UTC
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
|
||||
# 2011 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add `dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mechanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.o.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
tmpdepfile4=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test "$stat" = 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/ \1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/ /
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
527
avmb1/install-sh
527
avmb1/install-sh
|
@ -1,527 +0,0 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2011-01-19.21; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
# Protect names problematic for `test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
# Protect names problematic for `test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names problematic for `test' and other utilities.
|
||||
case $src in
|
||||
-* | [=\(\)!]) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
331
avmb1/missing
331
avmb1/missing
|
@ -1,331 +0,0 @@
|
|||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2012-01-06.13; # UTC
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
||||
# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case $1 in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
# Exit code 63 means version mismatch. This often happens
|
||||
# when the user try to use an ancient version of a tool on
|
||||
# a file that requires a minimum version. In this case we
|
||||
# we should proceed has if the program had been absent, or
|
||||
# if --run hadn't been passed.
|
||||
if test $? = 63; then
|
||||
run=:
|
||||
msg="probably too old"
|
||||
fi
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
autom4te touch the output file, or create a stub one
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
||||
\`g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# normalize program name to check for.
|
||||
program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
# Now exit if we have it, but it failed. Also exit now if we
|
||||
# don't have it and --version was passed (most likely to detect
|
||||
# the program). This is about non-GNU programs, so use $1 not
|
||||
# $program.
|
||||
case $1 in
|
||||
lex*|yacc*)
|
||||
# Not GNU programs, they don't have --version.
|
||||
;;
|
||||
|
||||
*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||
# Could not run --version or --help. This is probably someone
|
||||
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||
# $TOOL exists and not knowing $TOOL uses missing.
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case $program in
|
||||
aclocal*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case $f in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, but is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison*|yacc*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' $msg. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG=\${$#}
|
||||
case $LASTARG in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test ! -f y.tab.h; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if test ! -f y.tab.c; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex*|flex*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG=\${$#}
|
||||
case $LASTARG in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test ! -f lex.yy.c; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit $?
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
# The file to touch is that specified with -o ...
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -z "$file"; then
|
||||
# ... or it is the one specified with @setfilename ...
|
||||
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '
|
||||
/^@setfilename/{
|
||||
s/.* \([^ ]*\) *$/\1/
|
||||
p
|
||||
q
|
||||
}' $infile`
|
||||
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||
fi
|
||||
# If the file does not exist, the user really needs makeinfo;
|
||||
# let's fail without touching anything.
|
||||
test -f $file || exit 1
|
||||
touch $file
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequisites for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -1,24 +0,0 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies foreign
|
||||
CLEANFILES = *~ comperr
|
||||
MAINTAINERCLEANFILES = configure aclocal.m4 Makefile.in config.h.in
|
||||
stamp-h.in
|
||||
include_HEADERS = capi20.h capiutils.h capicmd.h
|
||||
lib_LTLIBRARIES = libcapi20.la
|
||||
lib_LIBRARIES = libcapi20dyn.a
|
||||
|
||||
libcapi20_la_SOURCES = capi20.c capifunc.c convert.c
|
||||
libcapi20_la_LDFLAGS = -version-info ${LIBCAPI_VERSION}:${LIBCAPI_VERSION_RELEASE}:${LIBCAPI_VERSION_AGE}
|
||||
libcapi20_la_CFLAGS = -fno-strict-aliasing
|
||||
|
||||
libcapi20dyn_a_SOURCES = capidyn.c
|
||||
libcapi20dyn_a_CFLAGS = -fPIC
|
||||
# libcapi20_la_LIBADD = $(LIBADD_DL)
|
||||
|
||||
$(OBJECTS): libtool
|
||||
|
||||
export SED
|
||||
|
||||
libtool: $(LIBTOOL_DEPS)
|
||||
$(SHELL) ./config.status --recheck
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue