wanpipe/Setup

7159 lines
184 KiB
Bash
Executable File

#!/bin/sh
#
# Setup WANPIPE WAN Router Installation/Removal Script.
#
# Copyright (c) 1996-2007, Sangoma Technologies 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 of the License, or (at your option) any later version.
# ----------------------------------------------------------------------------
# Oct 26, 2007 Konrad Hammel Updated minor start script bug
# Nov 27, 2005 David Rokhvarg Added Echo Debugging option
# Mar 18, 2002 Nenad Corbic Added BSCSTRM protocol
# Mar 01, 2002 Nenad Corbic Added option to split rpm build into
# two packages: util and mod.
# Jan 05, 2002 Nenad Corbic Updated for 2.2.4 Release
# Mar 02, 2001 Nenad Corbic Added 2.4.2 kernel support
# Added a check for MODVERSIONS
# Feb 21, 2001 Nenad Corbic Fixed the kernel gcc compile bug.
# Feb 20, 2001 Nenad Corbic Fixed the kernel upgrade bug.
# Jan 31, 2001 Nenad Corbic Updated all help messages
# Added kernel upgrade feature
# Added WANPIPE driver compile feature
# Dec 25, 2000 Nenad Corbic Updated for v2.2.0
# Feb 29, 2000 Nenad Corbic Removed print statements in file verification
# procedure.
# Oct 04, 1999 Nenad Corbic Updated for v2.1.0
# Aug 26, 1999 Nenad Corbic Updated for v2.0.7
# Aug 04, 1999 Nenad Corbic Updated for v2.0.5
# Oct 13, 1998 Jaspreet Singh Updated for v2.0.4
# Aug 31, 1998 Jaspreet Singh Updated for v2.0.3
# Dev 09, 1997 Jaspreet Singh Updated for v2.0.2
# Nov 28, 1997 Jaspreet Singh Updated for v2.0.1
# Nov 06, 1997 Jaspreet Singh Updated for v2.0.0
# Oct 16, 1997 Jaspreet Singh Added UID = 0 check
# Aug 26, 1997 Farhan Thawar Added patches.txt info
# Jul 28, 1997 Jaspreet Singh Updated for v1.0.5
# Jul 10, 1997 Jaspreet Singh Updated for v1.0.4
# Jan 15, 1997 Gene Kozin Added patch selection and upgrade features
# Dec 16, 1996 Gene Kozin Initial version based on Sangoma's WANPIPE(tm)
# ============================================================================
####### FUNCTION DEFINITIONS #################################################
# ----------------------------------------------------------------------------
# Clear the screen if it is supported.
# ----------------------------------------------------------------------------
clearscr()
{
if test $NONINTERACTIVE; then
return
fi
# check if the terminal environment is set up
[ "$TERM" ] && clear 2> /dev/null
}
check_bash ()
{
BASH_SUPPORT=`echo $BASH_VERSION | cut -d'.' -f1 2> /dev/null`
}
check_gcc ()
{
if [ "$USR_CC" != "" ]; then
eval "$USR_CC --version 2> /dev/null > /dev/null"
if [ $? -ne 0 ]; then
echo "Error: Failed to find version of $USR_CC"
return 1;
fi
eval "$USR_CC --version | grep \"^2\" > /dev/null"
if [ $? -eq 0 ]; then
GCC_VER=2;
else
GCC_VER=3;
fi
return 0;
fi
GCC_VER=3
eval "gcc --version 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
CC=gcc
cd $DRIVER_UPDATE_DIR/src/net
eval "gcc --version | grep \"^2\" > /dev/null"
if [ $? -eq 0 ]; then
GCC_VER=2;
else
GCC_VER=3;
fi
cd $PROD_HOME
return 0;
fi
eval "cc --version 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
CC=cc
return 0;
fi
return 1
}
check_awk ()
{
eval "type awk 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
AWK_SUPPORT=YES
else
AWK_SUPPORT=NO
fi
}
#fix for 2.6.18 kernels
check_inode_struct ()
{
if [ -e $SOURCEDIR/include/linux/fs.h ];then
eval "grep i_private $SOURCEDIR/include/linux/fs.h >/dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DWANPIPE_USE_I_PRIVATE"
fi
fi
}
# ----------------------------------------------------------------------------
# Display error message.
# ----------------------------------------------------------------------------
error()
{
echo -e "Error: $*!" >&2
return 0
}
# ----------------------------------------------------------------------------
# Pause.
# ----------------------------------------------------------------------------
pause()
{
local force_pause=$1
if [ -z $force_pause ]; then
if test $NONINTERACTIVE; then
return 0
fi
else
shift
fi
[ $# -ne 0 ] && echo -e $* >&2
echo -e "Press [Enter] to continue...\c" >&2
read tmp
return 0
}
# ----------------------------------------------------------------------------
# Prompt user for input.
# ----------------------------------------------------------------------------
prompt()
{
if test $NONINTERACTIVE; then
return 0
fi
echo -ne "$*" >&2
read CMD rest
return 0
}
# ----------------------------------------------------------------------------
# Get Yes/No
# ----------------------------------------------------------------------------
getyn()
{
if test $NONINTERACTIVE; then
return 0
fi
while prompt "$* (y/n) "
do case $CMD in
[yY]) return 0
;;
[nN]) return 1
;;
*) echo -e "\nPlease answer y or n" >&2
;;
esac
done
}
# ----------------------------------------------------------------------------
# Select an item from the list.
# Return: 0 - selection is in $SEL
# 1 - quit or empty list
# ----------------------------------------------------------------------------
get_select()
{
[ $# -eq 0 ] && return 1
while prompt "Please enter your selection (1..$# or q) ->"
do case ${CMD:="0"} in
[0-9]|[0-9][0-9])
[ $CMD -lt 1 -o $CMD -gt $# ] && continue
CMD=`expr $# - $CMD + 1 2>/dev/null`
until [ $# -eq $CMD ]
do shift
done
SEL=$1
return 0
;;
q|Q) return 1
;;
esac
done
}
# ----------------------------------------------------------------------------
# Select an item from the list.
# Return: 0 - selection is in $SEL
# 1 - quit or empty list
# ----------------------------------------------------------------------------
select_list()
{
[ $# -eq 0 ] && return 1
col=`expr $# / 10 + 1`
cnt=0
for option in $*
do cnt=`expr $cnt + 1`
echo -en "\t$cnt) $option"
[ `expr $cnt % $col` -eq 0 ] && echo ""
done
echo -e "\tq) quit\n"
get_select $*
}
# ----------------------------------------------------------------------------
# Parse product version.
# $1 product version X.Y.Z
#
# On exit, environment varibles are set as follows:
# MAJVER=X
# MINVER=Y
# SUBVER=Z
# ----------------------------------------------------------------------------
parse_version()
{
eval `echo $1 | awk '
BEGIN { FS = "." }
NR == 1 {
printf " MAJVER=%s", $1;
printf " MINVER=%s", $2;
printf " SUBVER=%s", $3
}
'`
}
# ----------------------------------------------------------------------------
# Display banner.
# ----------------------------------------------------------------------------
banner()
{
clearscr
echo -e "\t----------------------------------------------------------"
echo -e "\t WANPIPE v$PROD_VER Installation Script"
echo -e "\t Copyright (c) 1995-2008, Sangoma Technologies Inc."
echo -e "\t----------------------------------------------------------"
echo ""
return 0
}
# ----------------------------------------------------------------------------
# Show welcome screen.
# ----------------------------------------------------------------------------
welcome()
{
banner
cat << ENDOFTEXT
${DISTR_NAME} INSTALLATION
You are about to install ${DISTR_NAME} Multi-Protocol
Voice & WAN Router into your system.
This script will examine your system, then install, create
and/or modify necessary files and directories.
You must have Linux Kernel Headers along with
full development tools (i.e. GNU C compiler and utilities)
installed in order to be able to install this product.
This script will automatically compile all WANPIPE kernel
drivers and install them in their appropriate directory.
If you are installing Wanpipe for Asterisk/Zaptel this
script will will prompt you to re-install zaptel for you.
If you have previoulsy installed WANPIPE, this release
will overrite/upgrade full release without the need to
uninstall first!
IMPORTANT:
It is always recommended to say YES to all options
prompted during the install!
Please visit: http://wiki.sangoma.com for more info.
ENDOFTEXT
getyn "Would you like to install WANPIPE now? [y]"
}
# ----------------------------------------------------------------------------
# Goodbye.
# ----------------------------------------------------------------------------
goodbye()
{
banner
if test "$DRIVERS_COMPILED" = yes; then
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
cat <<ENDOFTEXT
WANPIPE (LITE) INSTALLATON: COMPLETE
WANPIPE installation is now complete. WANPIPE (LITE) kernel drivers
and configuration/debug utilities have been compiled and installed.
1) Proceed to configure the WANPIPE (LITE) drivers using the
/usr/sbin/wanhdlc configurator and ifconfig utility.
2) To uninstall WANPIPE (LITE) package run ./Setup remove
Please read WanpipeInstallation.(pdf/txt) manual for further instructions.
IMPORTANT:
---------
HOTPLUG may conflict with WANPIPE
Wanpipe interfaces names should be added to the
HOTPLUG igore list, located in /etc/hotplug/net.agent
or in /etc/hotplug.d/net.agent file.
Please read the ./docs/README.faq for more info.
IMPORTANT:
---------
The Linux Kernel and Modules in $SOURCEDIR:
DO NOT have to be manually recompiled!
WANPIPE (LITE) kernel modules are already installed :)
ENDOFTEXT
return
else
cat <<ENDOFTEXT
WANPIPE INSTALLATON: COMPLETE
WANPIPE installation is now complete. WANPIPE kernel drivers
and configuration/debug utilities have been compiled and installed.
1) Proceed to configure the WANPIPE drivers:
Asterisk/Zaptel: /usr/sbin/wancfg_zaptel
TDM API : /usr/sbin/wancfg_tdmapi
SMG SS7 : /usr/sbin/wancfg_smg
WAN Routing/API: /usr/sbin/wancfg
2) Use the /usr/sbin/wanrouter startup scrip to start and stop
the router. (eg: wanrouter start)
3) To uninstall WANPIPE package run ./Setup remove
Please read http://wiki.sangoma.com for further instructions.
ENDOFTEXT
fi
else
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
cat <<ENDOFTEXT
WANPIPE (LITE) INSTALLATION: PARTIAL COMPLETE
WANPIPE (LITE) utilities and configurators:
Installed sucessfully.
WANPIPE (LITE) kernel modules:
FAILED to install or compilation failed.
Please re-run ./Setup install to recompile WANPIPE (LITE) modules.
In case of failure, please contact Sangoma Tech Support.
ENDOFTEXT
else
cat <<ENDOFTEXT
WANPIPE INSTALLATION: PARTIAL COMPLETE
WANPIPE utilities and configurators:
Installed sucessfully.
WANPIPE kernel modules:
Drivers were not installed/compiled
1) Proceed to configure the WANPIPE drivers:
Asterisk/Zaptel: /usr/sbin/wancfg_zaptel
TDM API : /usr/sbin/wancfg_tdmapi
SMG SS7 : /usr/sbin/wancfg_smg
WAN Routing/API: /usr/sbin/wancfg
2) Use the /usr/sbin/wanrouter startup scrip to start and stop
the router. (eg: wanrouter start)
3) The temporary wanpipe directory can now be deleted
4) To uninstall WANPIPE package run ./Setup remove
Please read http://wiki.sangoma.com for further instructions.
ENDOFTEXT
fi
fi
}
# ----------------------------------------------------------------------------
# Prepare for installation.
# ----------------------------------------------------------------------------
prepare()
{
banner
# Verify filelist.
[ -f "$FILELIST" ] || {
error "File list ($FILELIST) not found"
return 1
}
# Verify files and fix permissions.
if [ $superuser = "YES" ]; then
echo "Fixing file permissions..."
fix_perms || {
error "Product is not completely installed. Please re-install"
return 1
}
fi
#Check if wanpipe modules are currently loaded
eval "lsmod | grep sdladrv > /dev/null"
if [ $? -eq 0 ]; then
echo
echo "Warning: Wanpipe Modules are currently running!"
echo "Its recommended to unload Wanpipe Modules before proceeding"
echo "with installation."
echo
getyn "\nWould you like to proceed?" || return 1
fi
missing_packages=" "
echo -n "Checking for C developement tools ..."
check_gcc
if [ $? -eq 0 ]; then
echo "($CC) OK"
else
echo -e "\n\tWarning: Wanpipe package requires C development tools to complete
the installation. Please install development package
before proceeding. GCC/KGCC/CC compiler not found"
return 1
fi
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
pause
return 0
fi
echo -n "Checking for C++ developement tools ..."
eval "g++ --version > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"g++ "
fi
echo -n "Checking for Make utility ..."
eval "make --version > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"make "
fi
echo -n "Checking for ncurses library ... "
if [ ! -f "/usr/include/ncurses.h" ] && [ ! -f "/usr/include/ncurses/ncurses.h" ]; then
echo "Failed!"
missing_packages=$missing_packages"ncurses "
else
echo "OK"
fi
echo -n "Checking for Perl developement tools ..."
eval "perl --version 2>/dev/null > /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"perl "
fi
echo -n "Checking for AWK ..."
eval "type awk 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"awk "
fi
echo -n "Checking for FLEX ..."
eval "type flex 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"flex "
fi
echo -n "Checking for Patch ..."
eval "patch --version 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"patch "
fi
echo -n "Checking for libtermcap-devel..."
if [ -f "/usr/include/termcap.h" ]; then
echo "OK"
else
"Failed!"
missing_packages=$missing_packages"libtermcap-devel "
fi
echo -n "Checking for yacc..."
eval "type yacc 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
echo "OK"
else
echo "Failed!"
missing_packages=$missing_packages"yacc "
fi
echo
if [ ! "$missing_packages" = " " ]; then
echo "WARNING: You are missing some prerequisites"
echo "Missing Packages $missing_packages" >> $CMP_LOG
for package in $missing_packages
do
case $package in
g++)
echo -e "\n C++ Compiler (g++)."
echo -e " Required for Wanpipe Utilities."
echo -e " Install gcc-c++ package (e.g yum install gcc-c++)."
;;
make)
echo -e "\n make utility."
echo -e " Required for compiling packages."
echo -e " Install make package (e.g yum install make)."
;;
bash)
echo -e "\n Bash v2 or greater."
echo -e " Required for wancfg and cfgft1 configuration utilities."
;;
ncurses)
echo -e "\n ncurses library."
echo -e " Required for wancfg and cfgft1 configuration utilities."
echo -e " Install ncurses development package (e.g yum install ncurses-devel)."
;;
perl)
echo -e "\n Perl development tools."
echo -e " Required for Wanpipe package."
echo -e " Install ncurses Perl package (e.g yum install perl)."
;;
awk)
echo -e "\n AWK."
echo -e " Required for wanrouter startup script."
echo -e " Install AWK package (e.g yum install gawk)."
;;
patch)
echo -e "\n Patch ."
echo -e " Required for Wanpipe Setup installation script."
echo -e " Install Patch package (e.g yum install patch)."
;;
libtermcap-devel)
echo -e "\n Libtermcap development tools ."
echo -e " Required for Wanpipe Utilities."
echo -e " Install libtermcap-devel package (e.g yum install libtermcap-devel)."
;;
flex)
echo -e "\n Flex package ."
echo -e " Required for Wancfg configuration utility."
echo -e " Install flex package (e.g yum install flex)."
;;
yacc)
echo -e "\n Yacc."
echo -e " Required for Wanpipe Utilities."
echo -e " Install byacc package (e.g yum install byacc)."
;;
esac
done
echo
getyn "Press Y to continue, N to abort installation"
if [ $? -eq 0 ]; then
return 0
else
echo
echo "Stopping install per users request"
echo
return 1
fi
fi
pause
return 0
}
# ----------------------------------------------------------------------------
# Verify files and fix permissions.
# ----------------------------------------------------------------------------
fix_perms()
{
echo -n -e "\nVerifying files and fixing permissions ..."
while read TYPE TARGET MODE OWNER GROUP rest
do
[ -z "$TARGET" ] && continue
[ -z "$MODE" -o -z "$OWNER" -o -z "$GROUP" ] && continue
#Remove wanpipe/ directory from the
#target path, since we are in wanpipe
#directory :)
TARGET=${TARGET#*/}
case $TYPE in
d)
[ -d $TARGET ] || {
continue
}
;;
f)
[ -f $TARGET ] || {
continue
}
;;
*) continue
;;
esac
echo "chmod $MODE $TARGET" > /dev/null
chmod $MODE $TARGET
echo "chown $OWNER $TARGET" > /dev/null
chown $OWNER $TARGET
chgrp $GROUP $TARGET
#echo "Ok."
done < $FILELIST
echo "Done";
return 0
}
apply_pre_211_fix ()
{
\cp -f $PROD_PATCH/$FIX_211 $SOURCEDIR
cd $SOURCEDIR
echo "Patching kernel lower than 2.2.11 !"
gzip -cd $FIX_211 | patch -p1 || {
getyn "\nWould you like to continue?" || return 1
search_rej
rm $SOURCEDIR/$FIX_211
return 0
}
rm $SOURCEDIR/$FIX_211
}
update_wanpipe_drivers ()
{
local res=;
echo
echo -n "Upgrading ${DISTR_NAME} kernel documentation ..."
cd $PROD_HOME
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
if [ -d "$SOURCEDIR/Documentation" ]; then
eval "cp -f README $SOURCEDIR/Documentation/networking/wanpipe.txt"
eval "cp -f README $SOURCEDIR/Documentation/networking/wan-router.txt"
fi
fi
echo -e "Done.\n"
echo
echo -n "Upgrading ${DISTR_NAME} kernel headers ..."
if [ ! -d $SOURCEDIR/include/linux ]; then
echo
echo "ERROR: Directory $SOURCEDIR/include/linux not found!"
echo " Corrupted linux headers in $SOURCEDIR dir."
echo
return 1
fi
cd $DRIVER_UPDATE_DIR/include/
if [ ! -e $WANPIPE_INCLUDE_DIR ]; then
eval "\mkdir -p $WANPIPE_INCLUDE_DIR"
fi
if [ ! -e $WANPIPE_INCLUDE_DIR/linux ]; then
cd $WANPIPE_INCLUDE_DIR
ln -s . linux
cd $DRIVER_UPDATE_DIR/include/
fi
eval "\cp -f *.h $WANPIPE_INCLUDE_DIR/ 2> /dev/null"
cd $DRIVER_UPDATE_DIR/wanec
eval "\cp -rf oct6100_api/include/ $WANPIPE_INCLUDE_DIR/oct6100_api 2> /dev/null"
eval "\cp -rf *.h $WANPIPE_INCLUDE_DIR/ 2> /dev/null"
eval "\cp -rf wanec_iface.h $SOURCEDIR/include/linux 2> /dev/null"
cd $DRIVER_UPDATE_DIR/include/
if [ $superuser = "YES" ] && [ -e /usr/include/linux ]; then
eval "\cp -f *.h /usr/include/linux/ 2> /dev/null"
fi
eval "\cp -f *.h $SOURCEDIR/include/linux/ 2> /dev/null"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
return 1
fi
if [ -e $DRIVER_UPDATE_DIR/include/annexg ]; then
cd $DRIVER_UPDATE_DIR/include/annexg
if [ -e /usr/include/linux ]; then
eval "\cp -f *.h /usr/include/linux/ 2> /dev/null"
fi
eval "\cp -f *.h $SOURCEDIR/include/linux/ 2> /dev/null"
fi
cd $DRIVER_UPDATE_DIR/include/
echo -n "Upgrading ${DISTR_NAME} kernel drivers ..."
if [ -d $SOURCEDIR/$LINUXDRIVERS_WAN ]; then
cd $DRIVER_UPDATE_DIR/src/wanrouter
echo $PROD_VER > $SOURCEDIR/net/wanrouter/patchlevel
eval "cp -f *.c $SOURCEDIR/$LINUXDRIVERS_WAN 2> /dev/null"
if [ $? -ne 0 ]; then
echo -e "Failed!\n"
return 1
fi
fi
if [ -d $SOURCEDIR/$LINUXDRIVERS_NET ]; then
cd $DRIVER_UPDATE_DIR/src/net
eval "cp -f *.c $SOURCEDIR/$LINUXDRIVERS_NET 2> /dev/null"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
return 1
fi
else
echo -e "Done.\n"
fi
#The latest release 2.2.3 and above contain two extra files
#sdla_te1.c sdla_56k.c. The kernel make files must be updated
#when we perform the module updates.
cd $SOURCEDIR
if [ $KPATCH -eq 2 ]; then
res=`grep sdla_56k.o drivers/net/Makefile`
if [ "$res" = "" ]; then
echo "Updating $SOURCEDIR/drivers/net/Makefile"
\cp -f $PROD_HOME/patches/$MAKE_PATCH_22X .
patch -p1 < $MAKE_PATCH_22X > /dev/null 2> /dev/null
\rm -f $MAKE_PATCH_22X
fi
res=`grep wanpipe_utils.o drivers/net/Makefile`
if [ "$res" = "" ]; then
echo "Updating $SOURCEDIR/drivers/net/Makefile"
\cp -f $PROD_HOME/patches/$MAKE_UTILS_PATCH_22X .
patch -p1 < $MAKE_UTILS_PATCH_22X > /dev/null 2> /dev/null
rm -f $MAKE_UTILS_PATCH_22X
fi
elif [ $KPATCH -eq 4 ]; then
ORIGMAKE="drivers/net/wan/Makefile"
NEWMAKE="drivers/net/wan/Makefile.nex"
cp $ORIGMAKE $ORIGMAKE.orig
res=`grep sdla_56k.o drivers/net/wan/Makefile`
if [ "$res" = "" ]; then
echo "Updating T1/E1 in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("sdla_ft1.o", "sdla_ft1.o sdla_56k.o sdla_te1.o ") ; print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
res=`grep wanpipe_utils.o drivers/net/wan/Makefile`
if [ "$res" = "" ]; then
echo "Updating Utils in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("sdla_ft1.o", "sdla_ft1.o wanpipe_utils.o ") ; print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
res=`grep wanpipe_abstr.o drivers/net/wan/Makefile`
if [ "$res" = "" ]; then
echo "Updating Abstr in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("sdla_ft1.o", "sdla_ft1.o wanpipe_abstr.o ") ; print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
res=`grep wanpipe_syncppp.o drivers/net/wan/Makefile`
if [ "$res" = "" ]; then
echo "Updating Syncppp in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("export-objs.*=\t", "export-objs =\twanpipe_syncppp.o ") ; print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
res=`grep wanpipe_multppp.o drivers/net/wan/Makefile`
if [ $? -ne 0 ]; then
echo "Updating MultPPP in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("sdla_ppp.o", "sdla_ppp.o\nwanpipe-$(CONFIG_WANPIPE_MULTPPP) += wanpipe_multppp.o"); print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
res=`grep sdla_mp_fr.o drivers/net/wan/Makefile`
if [ "$res" = "" ]; then
echo "Updating MultFR in $SOURCEDIR/drivers/net/wan/Makefile"
cat $ORIGMAKE | awk '{ gsub("wanpipe_multppp.o", "wanpipe_multppp.o\nwanpipe-$(CONFIG_WANPIPE_MULTFR) += sdla_mp_fr.o"); print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
fi
rm -f $NEWMAKE
ORIGMAKE=net/wanrouter/Makefile
NEWMAKE=net/wanrouter/Makefile.nex
cp $ORIGMAKE $ORIGMAKE.orig
res=`grep af_wanpipe net/wanrouter/Makefile`
if [ "$res" = "" ]; then
cat $ORIGMAKE | awk '{ gsub("obj-m.*:=", "obj-m := af_wanpipe.o"); print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
echo "Updating af_wanpipe in $SOURCEDIR/net/wanrouter/Makefile"
fi
res=`grep waniface.o net/wanrouter/Makefile`
if [ "$res" = "" ]; then
cat $ORIGMAKE | awk '{ gsub("obj-y.*:=", "obj-y := waniface.o"); print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
cat $ORIGMAKE | awk '{ gsub("export-objs.*:=", "export-objs := waniface.o"); print }' > $NEWMAKE
mv $NEWMAKE $ORIGMAKE
echo "Updating Waniface in $SOURCEDIR/net/wanrouter/Makefile"
fi
rm -f $NEWMAKE
fi
cd $PROD_HOME
return 0
}
get_kernel_ver ()
{
local tmp_ifs=$IFS
local err=0
IFS="="
while read name value;
do
if [ $AWK_SUPPORT = YES ]; then
name=`echo $name | awk '{ gsub(" ", "") ; print }'`
elif [ $BASH_SUPPORT -gt 1 ]; then
name=${name// /}
fi
if [ $AWK_SUPPORT = YES ]; then
value=`echo $value | awk '{ gsub(" ", "") ; print }'`
elif [ $BASH_SUPPORT -gt 1 ]; then
value=${value// /}
fi
case $name in
VERSION)
KVER=$value
;;
PATCHLEVEL)
KPATCH=$value
;;
SUBLEVEL)
KLVL=$value
;;
EXTRAVERSION)
KEVER=$value
break
;;
esac
done < $1/Makefile
KERNEL_VERSION=$KVER"."$KPATCH"."$KLVL$KEVER
if [ $KVER -eq 2 ] && [ $KPATCH -eq 6 ]; then
KERN_VER=26;
LINUXDRIVERS_NET="drivers/net/wan"
KLVL=${KLVL:-6}
elif [ $KVER -eq 2 ] && [ $KPATCH -eq 4 ]; then
KERN_VER=24;
LINUXDRIVERS_NET="drivers/net/wan"
elif [ $KVER -eq 2 ] && [ $KPATCH -eq 2 ]; then
KERN_VER=22;
LINUXDRIVERS_NET="drivers/net"
if [ $ADSL_PROT = YES ];then
echo "Warning: ADSL driver is only supported on 2.4.X & 2.6.X kernels!"
ADSL_PROT=NO
fi
fi
#It is possible that we couldn't find the kernel version from the Makefile
#Possible on SUSE kernels.
#Use the uname -r info obtained at the begining of the
#Setup sctipt.
IFS=$tmp_ifs
return $err
}
# ----------------------------------------------------------------------------
# Apply kernel patches.
# ----------------------------------------------------------------------------
apply_patches()
{
local before_14
local rc
banner
cat << ENDOFTEXT
Installing ${DISTR_NAME} Device Drivers: Linux KERNEL
To integrate ${DISTR_NAME} Multi-Protocol Voice & WAN Router
modules into the Linux kernel, the kernel has to be
updated with latest wanpipe sources. Install will only
modify existing wanpipe source that is already in the
Kernel.
IMPORTANT:
It is always recommended to say YES to all options
prompted during the install!
ENDOFTEXT
getyn "Would you like build wanpipe kernel drivers? [y]" || return 0
banner
if [ $WITH_LINUX_OP = NO ]; then
echo -e "\nPlease specify absolute path name of your linux directory"
echo -e "\nPress Enter for Default: $SOURCEDIR\n"
echo -n "#>"
if test -z $NONINTERACTIVE; then
read response
[ $response ] && {
SOURCEDIR=$response
}
fi
fi
echo -e "Setting linux directory to $SOURCEDIR\n";
INCLUDE=$SOURCEDIR/include/linux;
# Check kernel source directory
[ -d $SOURCEDIR ] || {
banner
cat << ENDOFTEXT
WARNING: Kernel source directory $SOURCEDIR not found!
You may choose to continue installation and then apply patches after
you install kernel source. To apply patches after ${DISTR_NAME} installation
has been completed run './Setup drivers'.
ENDOFTEXT
getyn "Would you like to continue?" || return 1
return 0
}
cd $PROD_HOME/patches
get_kernel_ver $SOURCEDIR
if [ $? -eq 1 ]; then
pause
return 1;
fi
eval "echo "$SOURCEDIR/include" > $PROD_HOME/.sysinclude"
#If the kernel has already been patched, offer an
#upgrade option.
check_kernel_patch_level $SOURCEDIR
#if [ $? -ne 0 ]; then
if [ 1 ]; then
echo
#echo "The kernel source in $SOURCEDIR has already been patched!"
#getyn "Would you like to upgrade ${DISTR_NAME} to the current version ?" || return 0
update_wanpipe_drivers
if [ $? -ne 0 ]; then
echo "
ERROR: Failed to upgrade ${DISTR_NAME} device drivers!
Make sure that following directories exist:
'$SOURCEDIR/$LINUXDRIVERS_WAN'
'$SOURCEDIR/$LINUXDRIVERS_NET'
Make sure that current kernel image version
matches the kernel version in $SOURCEDIR !!!
"
echo
getyn "Would you like to proceed ?" || return 1
else
echo "${DISTR_NAME} device drivers upgraded successfully!"
fi
echo
pause
return 0;
fi
cd $PROD_HOME/patches
#-------- Pathching 2.0.X Kernels------------------------
if [ $KPATCH -eq 0 ]
then
cat <<ENDOFTEXT
WARINIG
-------
Kernel 2.0.X detected!
This version of wanpipe does not support the 2.0.X kernels.
Please upgrade to 2.2.X or 2.4.X kernels, or use the
older version of wanpipe.
ENDOFTEXT
return 1;
fi
#---------- Patching 2.2.X kernels -----------------------
if [ $KPATCH -eq 2 ]
then
#patch a 2.2 kernel
PATCH=$PROD-v2214.gz
echo -e "\n\t2.2.X Kernel Detected!\n"
[ -f $PATCH ] || { getyn "Patch file missing $PATCH, Continue?";
return; }
if [ $KLVL -lt 11 ]; then
apply_pre_211_fix || return 1;
PATCH=$PROD-v2213.gz
elif [ $KLVL -lt 14 ]; then
echo "Patching kernel 2.2.$KLVL."
PATCH=$PROD-v2213.gz
elif [ $KLVL -eq 14 ]; then
echo "Patching kernel 2.2.$KLVL."
PATCH=$PROD-v2214.gz
elif [ $KLVL -lt 18 ]; then
echo "Patching kernel 2.2.$KLVL."
PATCH=$PROD-v2215.gz
elif [ $KLVL -eq 18 ]; then
echo "Patching kernel 2.2.$KLVL"
PATCH=$PROD-v2218.gz
else
echo "Patching kernel 2.2.$KLVL"
PATCH=$PROD-v2219.gz
fi
fi
#----------- Patching 2.4.X Kernels --------------------------------
if [ $KPATCH -eq 4 ]
then
echo -e "\n\t2.4.X Kernel Detected!\n"
if [ $KLVL -lt 4 ]; then
PATCH=$PROD-v240.gz
echo -e "Patching a 2.4.$KLVL Kernel!\n"
elif [ $KLVL -lt 9 ]; then
echo "Patching a 2.4.$KLVL Kernel"
PATCH=$PROD-v244.gz
elif [ $KLVL -lt 16 ]; then
echo "Patching a 2.4.$KLVL Kernel"
PATCH=$PROD-v249.gz
else
echo "Patching a 2.4.$KLVL Kernel"
PATCH=$PROD-v2416.gz
fi
fi
[ -f $PATCH ] || { getyn "Patch file missing $PATCH, Continue?";
return; }
cp $PROD_PATCH/$PATCH $SOURCEDIR
cd $SOURCEDIR
gzip -cd $PATCH | patch -p1 || {
echo "ERROR: Patching failed!"
echo "The kernel source used is not supported!"
echo "Call Sangoma at 905-474-1990 or use an older kernel"
echo
echo "If the patch failed in the documentation section"
echo "the failure should be ignored! Thus, proceed with"
echo "installation."
echo
echo "Note, that this kernel patch is only relevant"
echo "if you are going to recompile the kernel with"
echo "wanpipe drivers!."
echo
echo "If you are using the ./Setup script to recompile"
echo "wanpipe modules, the patch failure can be ignored !"
if test -z $NONINTERACTIVE; then
rm $SOURCEDIR/$PATCH
getyn "\nWould you like to continue?" || return 1
else
echo
echo "Repeat the build procedure to ignore the error!"
return 1
fi
}
rm $SOURCEDIR/$PATCH
update_wanpipe_drivers
if [ $? -ne 0 ]; then
echo "
ERROR: Failed to patch ${DISTR_NAME} device drivers!
Make sure that following directories exist:
'$SOURCEDIR/$LINUXDRIVERS_WAN'
'$SOURCEDIR/$LINUXDRIVERS_NET'
Make sure that current running kernel image version
matches the kernel version in $SOURCEDIR !!!
"
echo
if test -z $NONINTERACTIVE; then
getyn "Would you like to proceed ?" || return 1
else
return 1
fi
else
echo -e "\nWanpipe drivers patched successfully!\n"
fi
# Remove backup files and re-biuld kernel source dependencies.
cd $SOURCEDIR
echo "Cleaning up. Please wait..."
rm -f `find . -name *.orig` 2> /dev/null
pause
#search_rej
return 0
}
# ----------------------------------------------------------------------------
# Install configuration files.
# ----------------------------------------------------------------------------
install_config()
{
banner
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
get_conf_dir
cat << ENDOFTEXT
WANPIPE (LITE) CONFIGURATION
Please read the wanpipe_lite_manual.(pdf/txt) manual for further
information.
ENDOFTEXT
else
cat << ENDOFTEXT
WANPIPE META CONFIGURATION
There are two configuration files associated with WANPIPE.
1) $META_CONF:
- defines locations of important files such as lock
and configuration files as well as start/stop
order of multiple WANPIPE devices.
2) $PROD_CONF:
- main configuration file for each WANPIPE device.
- defines interfaces, hardware and protocol information.
- this file can be created using the 'wancfg' GUI
utility or manually based on sample files located
in /etc/wanpipe/samples.
Please read the WanpipeInstallation.(pdf/txt) manual for further
information.
ENDOFTEXT
pause
# Create meta-configuration file.
create_mataconf
fi
return 0
}
function get_conf_dir ()
{
local response
#banner
if test -z $NONINTERACTIVE; then
echo -e "\nPlease specify a desired location for ${DISTR_NAME} configuration files."
echo -e "\n\t(Press Enter for Default: /etc/wanpipe)\n"
echo -n "<specify path:>"
read response
if [ $response ]; then
WAN_CONF_DIR=$response
else
WAN_CONF_DIR=/etc/wanpipe
fi
else
WAN_CONF_DIR=/etc/wanpipe
fi
if [ ! -d $WAN_CONF_DIR ]; then
\mkdir -p $WAN_CONF_DIR
fi
# Check kernel source directory
if [ ! -d $WAN_CONF_DIR ]; then
echo -e "\nERROR: Directory $WAN_CONF_DIR not found !\n"
getyn "Would you like to try again"
if [ $? -ne 0 ]; then
WAN_CONF_DIR=/etc/wanpipe
else
get_conf_dir
fi
fi
}
function get_bin_dir ()
{
local response
#banner
if test -z $NONINTERACTIVE; then
echo -e "\nPlease specify a location for WANPIPE binary, firmware files."
echo -e "\n\t(Press Enter for Default: /etc/wanpipe/firmware)\n"
echo -n "<specify path:>"
read response
if [ $response ]; then
WAN_FIRMWARE_DIR=$response
else
WAN_FIRMWARE_DIR=/etc/wanpipe/firmware
fi
else
WAN_FIRMWARE_DIR=/etc/wanpipe/firmware
fi
if [ ! -d $WAN_FIRMWARE_DIR ]; then
\mkdir -p $WAN_FIRMWARE_DIR
fi
if [ ! -d $WAN_FIRMWARE_DIR ]; then
echo -e "\nERROR: Directory $WAN_FIRMWARE_DIR not found !\n"
getyn "Would you like to try again?"
if [ $? -ne 0 ]; then
WAN_FIRMWARE_DIR=/etc/wanpipe/firmware
else
get_bin_dir
fi
fi
}
function get_intr_dir ()
{
local response=no
local response1
WAN_INTR_DIR=/etc/wanpipe/interfaces
if [ ! -d $WAN_INTR_DIR ]; then
\mkdir -p $WAN_INTR_DIR
fi
# if [ -d "/etc/sysconfig/network-scripts" ]; then
# echo -e "\nWould you like to use the NEW network interface types?"
# echo "(RedHat feature:"
# echo " * Interface files will be written into"
# echo " /etc/sysconfig/network-scripts directory."
# echo " * Interface file names will start with ifcfg-<ifname>"
# echo " * Enables the usage of ifup and ifdown scripts"
# echo -n "(y/n): "
# read response
# case $response in
# [yY]) WAN_INTR_DIR=/etc/sysconfig/network-scripts
# NEW_IF_TYPE=YES;
# response=yes
# ;;
# *) response=no
# ;;
# esac
# fi
#
# echo
if test -z $NONINTERACTIVE; then
if [ $response = no ]; then
echo -e "\nPlease specify a desired location for WANPIPE interface files."
echo -e "\n\t(Press Enter for Default: $WAN_INTR_DIR)\n"
echo -n "<specify path:>"
read response1
WAN_INTR_DIR=/etc/wanpipe/interfaces
if [ $response1 ]; then
WAN_INTR_DIR=$response1
fi
fi
echo
# Check kernel source directory
if [ ! -d $WAN_INTR_DIR ]; then
echo -e "\nERROR: Directory $WAN_INTR_DIR not found !\n"
getyn "Would you like to try again?"
if [ $? -ne 0 ]; then
WAN_INTR_DIR=/etc/wanpipe/interfaces
else
get_intr_dir
fi
fi
fi
}
# ----------------------------------------------------------------------------
# Create meta-configuration file.
# ----------------------------------------------------------------------------
create_mataconf()
{
local response
# Select directory for the log file.
if [ -d /var/log ]; then
LOG_FILE=/var/log/$PROD
elif [ -d /var/adm wanpipe1]; then
LOG_FILE=/var/adm/$PROD
else
LOG_FILE=/etc/wanpipe/$PROD.log
fi
# Select directory for the lock file.
if [ -d /var/lock/subsys ]; then
LOCK_FILE=/var/lock/subsys/$PROD
LOCK_DIR=/var/lock/subsys
elif [ -d /var/lock ]; then
LOCK_FILE=/var/lock/$PROD
LOCK_DIR=/var/lock
else
LOCK_FILE=/etc/wanpipe/$PROD.lck
LOCK_DIR=/etc/wanpipe
fi
if [ -f $ROOT/etc/wanpipe/wanrouter.rc ]; then
. /etc/wanpipe/wanrouter.rc
fi
if [ "$WAN_DEVICES" = "" ]; then
WAN_DEVICES="wanpipe1"
else
echo
echo "Wanpipe META config file found in /etc/wanpipe directory"
echo
echo "Wanpipe startup sequence: $WAN_DEVICES"
echo
getyn "Would you like to keep the original wanpipe startup sequence?"
if [ $? -ne 0 ]; then
echo
echo "New wanpipe startup sequence: wanpipe1"
WAN_DEVICES="wanpipe1"
fi
fi
get_conf_dir
get_intr_dir
get_bin_dir
ENABLE_IP_FWD=NO
# cat << EOF
#
#IP Forwarding enables/disables kernel packet routing.
# If this machine is a router select Y
# If this machine is a firewall select N
#
#Note:
# If ip forwarding is disabled the kernel will not
# route packets. Firewalling policy tables will have
# to be generaded first.
#
#Options:
#--------
# Yes: Enable ip forwarding on router startup.
# No: Leave ip forwarding unchanged.
#
#EOF
#
# getyn "Enable IP Forwarding on Wanrouter Startup"
# if [ $? -ne 0 ]; then
# ENABLE_IP_FWD=NO
# else
# ENABLE_IP_FWD=YES
# fi
#
if test $NONINTERACTIVE; then
ENABLE_IP_FWD=NO
fi
if [ $ANNEXG_PROT = YES ]; then
ANNEXG_LOAD=YES;
fi
cat > $META_CONF << ENDOFTEXT
#!/bin/sh
# router.rc WAN router meta-configuration file.
#
# This file defines variables used by the router shell scripts
# and should be located in /etc/wanpipe directory. These are:
#
# ROUTER_BOOT = Boot flag (YES/NO).
# WAN_CONF_DIR = Where to put wanpipe config files.
# WAN_INTR_DIR = Where to put wanpipe interface files.
# WAN_LOG = Where to put start-up log file.
# WAN_LOCK = File used as a lock.
# WAN_LOCK_DIR =
# WAN_IP_FORWARD = Enable IP Forwarding on startup.
# WAN_DEVICES = Name of the wanpipe devices to be
# loaded on 'wanrouter start'
# (ex: "wanpipe1 wanpipe2 wanpipe3...")
#
# Note: Name of wanpipe devices correspond
# to the configuration files in
# WANPIPE_CONF_DIR directory:
# (ex. $WAN_CONF_DIR/wanpipe1.conf )
#
# Note: This file is 'executed' by the shell script, so
# the usual shell syntax must be observed.
ENDOFTEXT
echo "ROUTER_BOOT=YES" >> $META_CONF
echo "WAN_CONF_DIR=$WAN_CONF_DIR" >> $META_CONF
echo "WAN_INTR_DIR=$WAN_INTR_DIR" >> $META_CONF
echo "WAN_BIN_DIR=/usr/sbin" >> $META_CONF
echo "WAN_LOG=$LOG_FILE" >> $META_CONF
echo "WAN_LOCK=$LOCK_FILE" >> $META_CONF
echo "WAN_LOCK_DIR=$LOCK_DIR" >> $META_CONF
echo "WAN_IP_FORWARD=$ENABLE_IP_FWD" >> $META_CONF
echo "NEW_IF_TYPE=$NEW_IF_TYPE" >> $META_CONF
echo "WAN_LIB_DIR=/etc/wanpipe/lib" >> $META_CONF
echo "WAN_ADSL_LIST=/etc/wanpipe/wan_adsl.list" >> $META_CONF
echo "WAN_ANNEXG_LOAD=$ANNEXG_LOAD" >> $META_CONF
echo "WAN_SCTP_LOAD=$SCTP_LOAD" >> $META_CONF
echo "WAN_LIP_LOAD=$LIP_LOAD" >> $META_CONF
echo "WAN_DYN_WANCONFIG=NO" >> $META_CONF
echo "WAN_SCRIPTS_DIR=/etc/wanpipe/scripts" >> $META_CONF
echo "WAN_FIRMWARE_DIR=$WAN_FIRMWARE_DIR" >> $META_CONF
echo "WAN_DEVICES_REV_STOP_ORDER=YES" >> $META_CONF
echo "WAN_DEVICES=\"$WAN_DEVICES\"" >> $META_CONF
return 0
}
# ----------------------------------------------------------------------------
# Install initialization scripts.
# ----------------------------------------------------------------------------
install_init()
{
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
return 0
fi
if [ $NO_AUTO_START -eq 1 ]; then
return 0;
fi
banner
cat << ENDOFTEXT
WANPIPE BOOTSTRAP CONFIGURATION
Your system uses System V -style initialization scripts. You have an option
to add router start-up script to those scripts so that the router will start
automatically when system enters multi-user mode and shut down when it enters
single-user mode or when it is halted.
i.e. By selecting this option WANPIPE will startup on system bootup and
stop on system shutdown.
ENDOFTEXT
getyn "Would you like to install WANPIPE start-up scripts?" || return 0
cd $PROD_HOME/util/wancfg_zaptel
eval "./wancfg_zaptel.pl --silent --install_boot_script"
if [ $? -ne 0 ]; then
echo "Failed to install boot scripts"
fi
if [ "$TDM_PROT" = "YES" ]; then
getyn "Would you like to auto-execute ztcfg after wanrouter start?" || return 0
if [ ! -d $WAN_CONF_DIR/scripts ]; then
eval "\mkdir -p $WAN_CONF_DIR/scripts >/dev/null 2>/dev/null"
fi
eval "\cp -f $PROD_HOME/samples/wanpipe_zaptel_start $WAN_CONF_DIR/scripts/start > /dev/null 2> /dev/null"
if [ ! -f $WAN_CONF_DIR/scripts/start ]; then
echo "Error: Could not copy auto-ztcfg script"
fi
fi
cd $PROD_HOME
}
# ----------------------------------------------------------------------------
# Old Install initialization scripts.
# ----------------------------------------------------------------------------
install_init_old()
{
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
return 0
fi
if [ $NO_AUTO_START -eq 1 ]; then
return 0;
fi
# Examine system bootstrap files.
if [ -d /etc/rc0.d ]
then RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]
then RC_DIR=/etc/rc.d
else return 0
fi
eval "find $RC_DIR -name 'S*wanrouter' | xargs rm 2> /dev/null"
eval "find $RC_DIR -name 'K*wanrouter' | xargs rm 2> /dev/null"
banner
cat << ENDOFTEXT
WANPIPE BOOTSTRAP CONFIGURATION
Your system uses System V -style initialization scripts. You have an option
to add router start-up script to those scripts so that the router will start
automatically when system enters multi-user mode and shut down when it enters
single-user mode or when it is halted.
i.e. By selecting this option WANPIPE will startup on system bootup and
stop on system shutdown.
ENDOFTEXT
getyn "Would you like to install WANPIPE start-up scripts?" || return 0
PROD_INIT=$PROD_INIT$PROD
echo -e "\n\t WANPIPE Setup for boot startup "
if test -z $ROOT; then
# Install start scripts.
[ -d $RC_DIR/rc2.d ] && ln -sf $PROD_INIT $RC_DIR/rc2.d/$START_SCRIPT
[ -d $RC_DIR/rc3.d ] && ln -sf $PROD_INIT $RC_DIR/rc3.d/$START_SCRIPT
[ -d $RC_DIR/rc4.d ] && ln -sf $PROD_INIT $RC_DIR/rc4.d/$START_SCRIPT
[ -d $RC_DIR/rc5.d ] && ln -sf $PROD_INIT $RC_DIR/rc5.d/$START_SCRIPT
# Install stop scripts.
[ -d $RC_DIR/rc0.d ] && ln -sf $PROD_INIT $RC_DIR/rc0.d/$STOP_SCRIPT
[ -d $RC_DIR/rc1.d ] && ln -sf $PROD_INIT $RC_DIR/rc1.d/$STOP_SCRIPT
[ -d $RC_DIR/rc6.d ] && ln -sf $PROD_INIT $RC_DIR/rc6.d/$STOP_SCRIPT
[ -d $RC_DIR/init.d ] && ln -sf $PROD_INIT $RC_DIR/init.d/$PROD
else
# Install start scripts.
[ -d $RC_DIR/rc2.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc2.d/$START_SCRIPT
[ -d $RC_DIR/rc3.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc3.d/$START_SCRIPT
[ -d $RC_DIR/rc4.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc4.d/$START_SCRIPT
[ -d $RC_DIR/rc5.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc5.d/$START_SCRIPT
# Install stop scripts.
[ -d $RC_DIR/rc0.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc0.d/$STOP_SCRIPT
[ -d $RC_DIR/rc1.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc1.d/$STOP_SCRIPT
[ -d $RC_DIR/rc6.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/rc6.d/$STOP_SCRIPT
[ -d $RC_DIR/init.d ] && install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$RC_DIR/init.d/$PROD
fi
if [ "$TDM_PROT" = "YES" ]; then
getyn "Would you like to auto-execute ztcfg after wanrouter start?" || return 0
if [ ! -d $WAN_CONF_DIR/scripts ]; then
eval "\mkdir -p $WAN_CONF_DIR/scripts >/dev/null 2>/dev/null"
fi
eval "\cp -f $PROD_HOME/samples/wanpipe_zaptel_start $WAN_CONF_DIR/scripts/start > /dev/null 2> /dev/null"
if [ ! -f $WAN_CONF_DIR/scripts/start ]; then
echo "Error: Could not copy auto-ztcfg script"
fi
fi
pause
return 0
}
# ----------------------------------------------------------------------------
# Remove product.
# ----------------------------------------------------------------------------
remove()
{
banner
echo "You are about to uninstall WANPIPE package!"
getyn "\nAre you sure?" || return 0
# Remove wanpipe modules
echo " "
echo "Removing Wanpipe modules"
module_list="sdladrv wanrouter wanpipe_lip wanpipe_syncppp wanpipe af_wanpipe wanec"
for module_name in $module_list
do
eval "modprobe -l |grep $module_name > /dev/null"
if [ $? -eq 0 ]; then
module_path=`modprobe -l |grep $module_name`
\rm -f $module_path >/dev/null
echo " $module_path removed"
else
echo " $module_name module not found"
fi
done
echo "Probing for modules (depmod -a)..."
eval "depmod -a"
# Read meta-configuration file.
if [ -f $ROUTER_RC ]; then
source $ROUTER_RC
fi
# X25API_CONF=${X25API_CONF:=$X25API_CONF}
ROUTER_LOG=${ROUTER_LOG:=/var/log/$PROD}
ROUTER_LOCK=${ROUTER_LOCK:=/var/lock/$PROD}
[ -f $ROUTER_LOCK ] && {
error "Router appears to be running. Stop it first"
return 1
}
# Remove start-up scripts.
remove_init
# Remove log and configuration files.
echo "Removing log and configuration files..."
[ -f $ROUTER_RC ] && rm -f $ROUTER_RC
[ -f $ROUTER_LOG ] && rm -f $ROUTER_LOG
#FIXME: Find a better way of doing this
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
if [ -d /etc/wanpipe ]; then
rm -rf /etc/wanpipe
fi
else
IFCFG_LIST=`ls /etc/wanpipe/ifcfg-* 2>/dev/null`
for ifcfg in $IFCFG_LIST; do
[ -f "$ifcfg" ] && rm -f $ifcfg
done
fi
# Remove contents of the home directory.
echo -e "\nYou can now delete $PROD_HOME directory and its contents."
return 0
}
# ----------------------------------------------------------------------------
# Remove initialization scripts.
# ----------------------------------------------------------------------------
remove_init()
{
# Examine system bootstrap files.
if [ -d /etc/rc0.d ]
then RC_DIR=/etc
elif [ -d /etc/rc.d/rc0.d ]
then RC_DIR=/etc/rc.d
else return 0
fi
echo "Removing start-up scripts..."
[ -f $RC_DIR/rc2.d/$START_SCRIPT ] && rm -f $RC_DIR/rc2.d/$START_SCRIPT
[ -f $RC_DIR/rc3.d/$START_SCRIPT ] && rm -f $RC_DIR/rc3.d/$START_SCRIPT
[ -f $RC_DIR/rc5.d/$START_SCRIPT ] && rm -f $RC_DIR/rc4.d/$START_SCRIPT
[ -f $RC_DIR/rc5.d/$START_SCRIPT ] && rm -f $RC_DIR/rc5.d/$START_SCRIPT
[ -f $RC_DIR/rc0.d/$STOP_SCRIPT ] && rm -f $RC_DIR/rc0.d/$STOP_SCRIPT
[ -f $RC_DIR/rc1.d/$STOP_SCRIPT ] && rm -f $RC_DIR/rc1.d/$STOP_SCRIPT
[ -f $RC_DIR/rc6.d/$STOP_SCRIPT ] && rm -f $RC_DIR/rc6.d/$STOP_SCRIPT
[ -f $RC_DIR/init.d/$PROD ] && rm -f $RC_DIR/init.d/$PROD
eval "find $RC_DIR -name 'S*wanrouter' | xargs rm 2> /dev/null"
eval "find $RC_DIR -name 'K*wanrouter' | xargs rm 2> /dev/null"
return 0
}
search_rej ()
{
echo -e "\nLooking for Reject files"
find $SOURCEDIR/. -name '*.rej' > $PROD_HOME/REJECT_FILE
if [ -s $PROD_HOME/REJECT_FILE ]
then
echo -e "\n!!! Reject Files found: check the $PROD_HOME/REJECT_FILE !!!"
echo -e " WARNING: Patching is not completed"
echo -e "\n If the patch version matches the kernel version, there should be "
echo -e " no errors, thus copy a fresh kernel into the $SOURCEDIR"
echo -e " directory and try again."
echo -e "\n If the patch verison is different from the kernel version, check"
echo -e " the reject files in $PROD_HOME/REJECT_FILE. A patch will have"
echo -e " to be added in manually. Refer to the README file in "
echo -e " ftp.sangoma.com /pub/linux/v2.2.X/(Kernel Version) directory. "
echo -e "\n For further assistance email ncorbic@sangoma.com or contact Sangoma"
echo -e " at (905) 474 1990.\n"
pause
else
echo -e "\n PATCH SUCCESSFUL: no reject files found :)\n"
rm $PROD_HOME/REJECT_FILE
pause
fi
}
compile_src ()
{
banner
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
cat << ENDOFTEXT
WANPIPE UTILITIES SETUP
WANPIPE utilities are used to:
1) create WANPIPE configuration files.
(/usr/sbin/wancfg)
2) create configuration files for Zaptel and Asterisk
(/usr/sbin/wancfg_zaptel)
3) start,stop,restart individual/all devices and interfaces.
(/usr/sbin/wanrouter)
4) debug line, protocol and driver problems.
(/usr/sbin/wanpipemon)
5) aid in WANPIPE API development
(/etc/wanpipe/api)
Refer to the WanpipeInstallation.(pdf/txt) for more information.
ENDOFTEXT
pause
fi
[ -d $INCLUDE ] || {
echo -e "\n\t\tERROR: System environment setup failure !!\n"
echo -e "\tLinux include directory does not exist: $INCLUDE\n"
echo -e "\tCompilation process requires the above path"
echo -e "\tthe $INCLUDE directory must point to the location of the"
echo -e "\tWANPIPE header files, found in linux source include directory\n"
echo -e "\tPlease install the Linux source in $SOURCEDIR before"
echo -e "\tproceeding"
pause
return 0
}
if [ ! -e $SOURCEDIR/include/asm ]; then
echo -e "
WARNING: The Linux source in $SOURCEDIR has not been configured.
Please proceed to configure the source before compiling
wanpipe utilities (ex: make menuconfig and make dep)."
echo
pause
return 0
fi
if [ ! -e $SOURCEDIR/include/linux/version.h ]; then
echo -e "
WARNING: The Linux source in $SOURCEDIR has not been configured.
Please proceed to configure the source before compiling
wanpipe utilities (ex: make menuconfig and make dep)."
echo
pause
return 0
fi
check_gcc
if [ $? -ne 0 ]; then
echo
pause
echo -e "\n\tWarning: Wanpipe package requires C development tools to complete
the installation. Please install development package
before proceeding. GCC/KGCC/CC compiler not found"
return 0
fi
delete_old_tools;
cd $PROD_HOME/util
echo
echo -n "Compiling ${DISTR_NAME} Utilities ..."
MAKEINC=
if [ "$ADSL_PROT" = "YES" ]; then
MAKEINC=$MAKEINC" PROTOCOL_DEFS=-DCONFIG_PRODUCT_WANPIPE_ADSL "
fi
if [ $ENABLE_ECHO_DEBUG -eq 1 ]; then
MAKEINC=$MAKEINC" ENABLE_WANPIPEMON_ZAP=YES "
fi
eval "make CC=$CC SYSINC=$SOURCEDIR/include WANINCDIR=$WANPIPE_INCLUDE_DIR $MAKEINC >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]
then
echo -e "Done.\n"
else
echo
echo "make CC=$CC SYSINC=$SOURCEDIR/include $MAKEINC"
echo
echo -e "Failed!\n"
echo -e "\n\t\t!!! ${DISTR_NAME} Tools Compilation Failed !!!"
echo -e "\tPossible solution:"
echo -e "\t\t Wanpipe header files were not installed properly"
echo -e "\t\t in $SOURCEDIR/include directory"
echo -e "\tPlease contact Sangoma Tech. at 905 474-1990\n"
pause
return 1
fi
echo
echo "Compiling ${DISTR_NAME} WanCfg Utility ..."
WANCFG_DEFS=
if [ "$TDM_PROT" = "YES" ]; then
WANCFG_DEFS=$WANCFG_DEFS" ENABLE_ZAPTEL_PARSER=YES ZAPINC=$ZAPTEL_INSTALL_DIR"
fi
eval "make -C wancfg all CC=$CC SYSINC=$SOURCEDIR/include $WANCFG_DEFS >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]
then
echo -e "Done.\n"
else
echo
echo -e "Failed!\n"
echo -e "\n\t\t!!! ${DISTR_NAME} WanCfg Compilation Failed !!!"
echo -e "\tPossible solution:"
echo -e "\t\t FLEX Package not installed"
echo -e "\t\t Non-standard C/C++ library (eg: ulibc)\n"
echo -e "\tPlease contact Sangoma Tech. at 905 474-1990\n"
getyn "Proceed with installation without WanCfg ?" || return 1;
fi
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
return 0
fi
cd $PROD_HOME/util/misc
echo
echo -n "Compiling WANPIPE Misc Utilities ..."
eval "make CC=$CC SYSINC=$SOURCEDIR/include > /dev/null"
echo -e "Done.\n"
echo
echo -n "Compiling WANPIPE LibSangoma TDM API library ..."
cd $PROD_HOME/api
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "find /usr/local/lib -name 'libsangoma*' > /dev/null 2>/dev/null"
if [ $? -eq 0 ]; then
eval "find /usr/local/lib -name 'libsangoma*' | xargs rm > /dev/null 2>/dev/null"
fi
fi
cd libsangoma
eval "./configure --prefix=$ROOT/usr >> $CMP_LOG 2>> $CMP_LOG"
eval "make clean >> $CMP_LOG 2>> $CMP_LOG"
eval "make CC=$CC SYSINC=$SOURCEDIR/include >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed. \n"
pause
fi
eval "make install >> $CMP_LOG 2>> $CMP_LOG"
if [ $superuser = "YES" ] && [ -z $ROOT ]; then
eval "ldconfig > /dev/null 2> /dev/null"
fi
echo
echo -n "Compiling WANPIPE API Development Utilities ..."
cd $PROD_HOME/api
eval "make CC=$CC SYSINC=$SOURCEDIR/include >> $CMP_LOG 2>> $CMP_LOG"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
echo -e "\tERROR: Failed to compile WANPIPE API Tools !!!"
echo -e "\t\nPlease contact Sangoma Technologies"
pause
fi
if [ -d $PROD_HOME/util/wanec_client ] && [ -d $DRIVER_UPDATE_DIR/wanec ] ; then
echo
echo -n "Compiling WANPIPE HWEC Utilities ..."
cd $PROD_HOME/util/wanec_client
eval "make CC=$CC SYSINC=$SOURCEDIR/include WANEC_DIR=$DRIVER_UPDATE_DIR/wanec >> $CMP_LOG 2>> $CMP_LOG "
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
echo -e "\tERROR: Failed to compile WANPIPE HWEC Tools !!!"
echo -e "\t\nPlease contact Sangoma Technologies"
pause
fi
else
echo
echo -n "WANPIPE HWEC Utilities not installed"
echo
fi
echo -e "\tWANPIPE Environment Setup Complete !!!\n"
pause
return 0
}
delete_old_tools()
{
cd $PROD_HOME/util
make clean 2> /dev/null > /dev/null
cd $PROD_HOME
}
check_kernel_patch_level ()
{
local DIR=$1;
local val
if [ -f "$DIR/net/wanrouter/patchlevel" ]; then
val=`cat $DIR/net/wanrouter/patchlevel`
echo -e "\tCurrent WANPIPE kernel patch is $val"
if [ $val = "2.0.3" ]; then
return 0
elif [ $val = "2.2.1" ]; then
if [ $KPATCH -eq 4 ] && [ $KLVL -gt 3 ]; then
return 0
else
return 1
fi
else
return 1
fi
fi
return 0
}
clean_up ()
{
[ -f "/usr/sbin/router" ] && rm -f /usr/sbin/router
[ -f $RC_DIR/rc2.d/$OLD_START ] && rm -f $RC_DIR/rc2.d/$OLD_START
[ -f $RC_DIR/rc3.d/$OLD_START ] && rm -f $RC_DIR/rc3.d/$OLD_START
[ -f $RC_DIR/rc5.d/$OLD_START ] && rm -f $RC_DIR/rc4.d/$OLD_START
[ -f $RC_DIR/rc5.d/$OLD_START ] && rm -f $RC_DIR/rc5.d/$OLD_START
[ -f $RC_DIR/rc0.d/$OLD_STOP ] && rm -f $RC_DIR/rc0.d/$OLD_STOP
[ -f $RC_DIR/rc1.d/$OLD_STOP ] && rm -f $RC_DIR/rc1.d/$OLD_STOP
[ -f $RC_DIR/rc6.d/$OLD_STOP ] && rm -f $RC_DIR/rc6.d/$OLD_STOP
[ -f "/etc/router.rc" ] && rm -f /etc/router.rc
}
get_distrib()
{
grep -i "red *hat" "/etc/issue" > /dev/null
if [ $? -eq 0 ]
then
return 1; #RedHat Found
else
return 0;
fi
}
function check_for_af_wanpipe_updates()
{
if [ $KVER -eq 2 ] && [ $KPATCH -eq 6 ]; then
if [ $KLVL -eq 11 ]; then
eval "grep sk_zapped $SOURCEDIR/include/net/sock.h > /dev/null 2> /dev/null"
if [ $? -ne 0 ]; then
AF_EXTRA_FLAGS="$AF_EXTRA_FLAGS -DAF_WANPIPE_2612_FORCE_UPDATE"
fi
elif [ $KLVL -gt 11 ]; then
AF_EXTRA_FLAGS="$AF_EXTRA_FLAGS -DAF_WANPIPE_2612_FORCE_UPDATE"
fi
fi
}
function wan_kernel_version_conflict_fix()
{
local FLAGS=
if [ $LINUX_VANILLA -gt 0 ]; then
return;
fi
if [ $KVER -eq 2 ] && [ $KPATCH -eq 6 ]; then
if [ $KLVL -eq 11 ]; then
if [ "$KEVER" != "" ]; then
FLAGS="$FLAGS -DAF_WANPIPE_2612_FORCE_UPDATE"
fi
elif [ $KLVL -gt 11 ]; then
FLAGS="$FLAGS -DAF_WANPIPE_2612_FORCE_UPDATE"
fi
if [ $KLVL -eq 5 ]; then
if [ "$KEVER" != "" ]; then
FLAGS="$FLAGS -DWANPIPE_MOD_266_FORCE_UPDATE"
fi
elif [ $KLVL -gt 5 ]; then
FLAGS="$FLAGS -DWANPIPE_MOD_266_FORCE_UPDATE"
fi
fi
if [ "$FLAGS" != "" ]; then
echo "Wan Update Flags: $FLAGS"
CFLAGS="$CFLAGS $FLAGS "
fi
}
function is_distr_fedora2()
{
local distr
if [ ! -f /etc/issue ]; then
return 0
fi
distr=`cat /etc/issue | grep "(Tettnang)"`
#If release is not Fedora2 then
#get out
if [ "$distr" = "" ]; then
return 0
fi
return 1
}
function update_redhat_as()
{
local distr
local rc
local cmd=$1
if [ ! -f /etc/issue ]; then
return 0
fi
distr=`cat /etc/issue | grep "(Panama)"`
#If release is not RedHat AS then
#get out
if [ "$distr" = "" ]; then
return 0
fi
if [ ! -f $SOURCEDIR/include/linux/version.h ]; then
return 0
fi
if [ $cmd -eq 0 ]; then
if [ ! -d /tmp ]; then
mkdir /tmp
fi
\cp -f $SOURCEDIR/include/linux/version.h /tmp/version.h
rc=`cat /tmp/version.h | awk '{ gsub("132105", "132106") ; print }' > $SOURCEDIR/include/linux/version.h`
else
if [ -f /tmp/version.h ]; then
\cp -f /tmp/version.h $SOURCEDIR/include/linux/version.h
fi
fi
return 0;
}
function wan_get_kernel_flags()
{
# echo "make -C $SOURCEDIR SUBDIRS=$PWD drivers/net/wan/sdladrv 2> /dev/null"
if [ ! -d $SOURCEDIR/wanpipe ]; then
mkdir -p $SOURCEDIR/wanpipe
fi
cp $DRIVER_UPDATE_DIR/src/net/sdladrv.c $SOURCEDIR/wanpipe
tmp1=`make -C $SOURCEDIR SUBDIRS=$PWD wanpipe/sdladrv 2> /dev/null`
# echo "TMP =---$tmp---"
tmp=${tmp1#*gcc}
tmp1=$tmp;
# echo "TMP1 =---$tmp1---"
tmp=${tmp1%%wanpipe/*}
tmp1=$tmp
tmp=${tmp1%%-m elf*}
tmp1=$tmp;
tmp=${tmp1%%-c *};
tmp1=$tmp;
tmp=${tmp1//-Iinclude\//-I$SOURCEDIR\/include/}
CFLAGS_EXTRA=$tmp
if [ $DISABLE_GCC_DEBUG -gt 0 ]; then
tmp=${CFLAGS_EXTRA//-g/}
CFLAGS_EXTRA=$tmp
fi
if [ "$CFLAGS_EXTRA" = "" ]; then
echo "Major Error: Failed to obtain kernel CFLAGS from $SOURCEDIR"
fi
if [ -d $SOURCEDIR/wanpipe ]; then
\rm -rf $SOURCEDIR/wanpipe
fi
#echo "CFLAGS_EXTRA=$CFLAGS_EXTRA"
echo
}
function build_kernel_module()
{
modname=$1
modfiles=$2
extra_flags=$3
local_link=$4
bin_link=$4
ofiles=
extra_flags=$extra_flags" -I/$WANPIPE_INCLUDE_DIR -I$WANPIPE_INCLUDE_DIR/oct6100_api -I$WANPIPE_INCLUDE_DIR/oct6100_api/oct6100api "
if [ $KBUILD_DISABLE -ne 1 ] && [ $KERN_VER -eq 26 ]; then
for file in $modfiles
do
ofiles=$ofiles"$file.o "
local_link=$local_link" $file.o "
done
echo "make MODULE_NAME=$modname OBJS=\"$ofiles\" SUBDIRS=$PWD CC=$CC KDIR=$SOURCEDIR \
EXTRA_CFLAGS=\"-D__LINUX__ $PROTOCOL_DEFINES $extra_flags \"" >> $CMP_BUILD
chmod 755 $CMP_BUILD
make MODULE_NAME=$modname OBJS="$ofiles" CC=$CC SUBDIRS=$PWD KBUILD_VERBOSE=$KBUILD_VERBOSE KDIR=$SOURCEDIR \
EXTRA_CFLAGS="-D__LINUX__ $PROTOCOL_DEFINES $extra_flags " >> $CMP_LOG 2>> $CMP_LOG
if [ $? -ne 0 ]; then
echo
echo "---------------------------------------------"
echo
cat $CMP_LOG
echo
echo "---------------------------------------------"
echo
exit 1;
else
if [ $KBUILD_VERBOSE -eq 1 ]; then
cat $CMP_LOG
fi
fi
if [ "$bin_link" != "" ]; then
#echo "----------------------------"
#echo "ld $LD_ELF -r -o $modname.o $local_link"
#echo "----------------------------"
#echo
echo "ld $LD_ELF -r -o $modname.o $local_link" >> $CMP_BUILD
$EVALCMD "ld $LD_ELF -r -o $modname.o $local_link"
#echo "----------------------------"
#echo "ld $LD_ELF -r -o $modname.ko $modname.o $modname.mod.o"
#echo "----------------------------"
#echo
echo "ld $LD_ELF -r -o $modname.ko $modname.o $modname.mod.o" >> $CMP_BUILD
$EVALCMD "ld $LD_ELF -r -o $modname.ko $modname.o $modname.mod.o"
fi
else
for file in $modfiles
do
#echo "----------------------------"
#echo "$CFLAGS $PROTOCOL_DEFINES $extra_flags -DKBUILD_BASENAME=$file -DKBUILD_MODNAME=$modname -c -o tmp/$file.o $file.c"
#echo "----------------------------"
#echo
$EVALCMD "$CFLAGS $PROTOCOL_DEFINES $extra_flags -DKBUILD_BASENAME=$file -DKBUILD_MODNAME=$modname -c -o tmp/$file.o $file.c"
local_link=$local_link" tmp/$file.o "
done
#echo "----------------------------"
#echo "ld $LD_ELF -r -o mod/$modname.o $local_link"
#echo "----------------------------"
#echo
echo "$EVALCMD \"ld $LD_ELF -r -o mod/$modname.o $local_link\"" >> $CMP_BUILD
$EVALCMD "ld $LD_ELF -r -o mod/$modname.o $local_link"
if [ $KERN_VER -eq 26 ]; then
#echo "----------------------------"
#echo "$CFLAGS -DKBUILD_BASENAME=$modname -DKBUILD_MODNAME=$modname -c -o mod/$modname.mod.o $modname.mod.c"
#echo "----------------------------"
#echo
$EVALCMD "$CFLAGS -DKBUILD_BASENAME=$modname -DKBUILD_MODNAME=$modname -c -o mod/$modname.mod.o $modname.mod.c"
#echo "----------------------------"
#echo "ld $LD_ELF -r -o mod/$modname.ko mod/$modname.o mod/$modname.mod.o"
#echo "----------------------------"
#echo
$EVALCMD "ld $LD_ELF -r -o mod/$modname.ko mod/$modname.o mod/$modname.mod.o"
fi
fi
}
function build_wanec_module ()
{
local home=`pwd`
local BTDIR=oct6100_api/apilib/bt
local LARGMATHDIR=oct6100_api/apilib/largmath
local LLMANDIR=oct6100_api/apilib/llman
local OCTAPIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_api
local OCTAPIMIDIR=oct6100_api/octdeviceapi/oct6100api/oct6100_apimi
if [ $KERN_VER -eq 24 ]; then
BTDIR=./
LARGMATHDIR=./
LLMANDIR=./
OCTAPIDIR=./
OCTAPIMIDIR=./
fi
local EXTRA_FLAGS="-I. -I$home -I$home/oct6100_api -I$home/oct6100_api/include -I$home/oct6100_api/include -I$home/oct6100_api/include/apilib -I$home/oct6100_api/include/apilib -I$home/oct6100_api/include/octrpc -I$home/oct6100_api/include/oct6100api -I$home/oct6100_api/octdeviceapi/oct6100api -DENABLE_TONE_PLAY "
local files="wanec_iface wanec_cmd wanec_utils wanec_dev $BTDIR/octapi_bt0 $LARGMATHDIR/octapi_largmath $LLMANDIR/octapi_llman $OCTAPIMIDIR/oct6100_mask_interrupts $OCTAPIDIR/oct6100_adpcm_chan $OCTAPIDIR/oct6100_channel $OCTAPIDIR/oct6100_chip_open $OCTAPIDIR/oct6100_chip_stats $OCTAPIDIR/oct6100_conf_bridge $OCTAPIDIR/oct6100_debug $OCTAPIDIR/oct6100_events $OCTAPIDIR/oct6100_interrupts $OCTAPIDIR/oct6100_memory $OCTAPIDIR/oct6100_miscellaneous $OCTAPIDIR/oct6100_mixer $OCTAPIDIR/oct6100_phasing_tsst $OCTAPIDIR/oct6100_playout_buf $OCTAPIDIR/oct6100_remote_debug $OCTAPIDIR/oct6100_tlv $OCTAPIDIR/oct6100_tone_detection $OCTAPIDIR/oct6100_tsi_cnct $OCTAPIDIR/oct6100_tsst $OCTAPIDIR/oct6100_user "
eval "make SUBDIRS=$PWD clean >> $CMP_BUILD 2>> $CMP_BUILD"
if [ $KERN_VER -eq 24 ]; then
if [ -e wanectmp ]; then
eval "rm -rf wanectmp 2>" /dev/null
fi
mkdir wanectmp
eval "\cp -rf $(find . -name '*.*' | xargs) wanectmp/" > /dev/null
cd wanectmp
mkdir mod
mkdir tmp
fi
build_kernel_module wanec "$files" "$EXTRA_FLAGS"
if [ $? -ne 0 ]; then
return $?;
fi
if [ $KERN_VER -eq 24 ]; then
cd $home
if [ -e wanectmp/mod/wanec.o ]; then
eval "\cp -f wanectmp/mod/wanec.o ."
fi
eval "rm -rf wanectmp"
fi
return 0
}
function sangoma_64bit_4g_check()
{
eval "uname -a | grep x86_64" > /dev/null 2> /dev/null
if [ $? -ne 0 ] ; then
val=`cat /proc/meminfo | grep MemTotal | cut -d':' -f2`
tmp=${val// /}
b=`expr match "$tmp" '\([0-9]*\)'`
morethan4bg=`expr $b \> 4000000`
if [ $morethan4bg -eq 1 ]; then
#More than 4G of memory
return 0;
else
return 1;
fi
fi
#not 64bit 4G mode
return 1;
}
function create_kernel_mod_file()
{
local file=$1
eval "$SOURCEDIR/scripts/mod/modpost -m -i $SOURCEDIR/Module.symvers $file 2> /dev/null 2> /dev/null"
}
function update_kernel_custom_name()
{
local make_name="fedora2_make"
if [ ! -f $SOURCEDIR/Makefile ]; then
echo "Error: File $SOURCEDIR/Makefile not found!"
return 1;
fi
\cp -f $SOURCEDIR/Makefile /tmp/$make_name
rc=`cat /tmp/$make_name | awk '{ gsub("custom", "") ; print }' > $SOURCEDIR/Makefile`
cur_home=`pwd`
cd $SOURCEDIR
make prepare-all > /dev/null 2> /dev/null
echo "Kernel name in $SOURCEDIR/Makefile updated successfully ($?)"
cd $cur_home
echo
return 0
}
function update_fedora2()
{
local distr
local rc
local cmd=$1
local ver_name="fedora2_version.h"
if [ ! -f /etc/issue ]; then
return 1
fi
distr=`cat /etc/issue | grep "(Tettnang)"`
#If release is not Fedora2 then
#get out
if [ "$distr" = "" ]; then
return 1
fi
if [ ! -f $SOURCEDIR/include/linux/version.h ]; then
return 0
fi
if [ $cmd -eq 0 ]; then
if [ ! -d /tmp ]; then
mkdir /tmp
fi
\cp -f $SOURCEDIR/include/linux/version.h /tmp/$ver_name
rc=`cat /tmp/$ver_name | awk '{ gsub("132613", "132614") ; print }' > $SOURCEDIR/include/linux/version.h`
else
if [ -f /tmp/$ver_name ]; then
\cp -f /tmp/$ver_name $SOURCEDIR/include/linux/version.h
fi
fi
return 0;
}
function select_compilation_mode()
{
banner
local response=
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_GENERIC "
return
fi
if [ "$PROTS" != "" ]; then
#User has already selected protocols on command line
return;
fi
cat << ENDOFTEXT
Please Select Compilation Mode
1. WAN Protocols Support
Protocols: Frame Relay, CHDLC, PPP, ATM, X25, ADSL, TDM API
Default for: Wan Routing, Data & Voice API devel.
2. TDM Voice (Zaptel) Support
Protocols: TDMV (Zaptel), TDM API on AFT adatpers.
Default for: Asterisk & CallWeaver
3. TDM Voice (Zaptel) + WAN Protocol Support
4. SMG (SS7) (Default for Asterisk/CallWeaver SMG/SS7 install)
5. SMG (SS7) + TDM Voice (Zaptel)
Default for: Asterisk/CallWeaver SS7 + PRI
6. TDM API
Protocols: TDM API on AFT adapters:
Default for: FreeSwitch, Yate, Sunrise
Custom voice development
7. Custom Compilation Mode
Specify protocols to be added into the WANPIPE
kernel drivers.
ENDOFTEXT
echo -n "Please select (1,2,3,4,5,6 or 7) [Default: 1]: "
if test -z $NONINTERACTIVE; then
read response
#if [ -z $response ]; then
# response=1
#fi
if [ "$response" -eq 1 ]; then
enable_protocols $DEFAULT_PROTOCOLS
elif [ "$response" -eq 2 ]; then
enable_protocols "TDM"
enable_protocols "AFT_TE1"
LIP_PROT=NO
LIP_LOAD=NO
elif [ "$response" -eq 3 ]; then
enable_protocols "TDM"
enable_protocols $DEFAULT_PROTOCOLS
elif [ "$response" -eq 4 ]; then
enable_protocols "XMTP2"
enable_protocols "AFT_TE1"
elif [ "$response" -eq 5 ]; then
enable_protocols "TDM"
enable_protocols "XMTP2"
enable_protocols "AFT_TE1"
elif [ "$response" -eq 6 ]; then
enable_protocols "AFT_TE1"
elif [ "$response" -eq 7 ]; then
enable_custom_protocols
else
select_compilation_mode
fi
else
if [ "$PROTS" = "" ]; then
enable_protocols $DEFAULT_PROTOCOLS
fi
fi
}
function makefile_function ()
{
echo "$1" >> Makefile
}
function compile_drivers ()
{
banner
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
cat << ENDOFTEXT
WANPIPE (LITE) KERNEL DRIVER COMPILATION
The next step in WANPIPE (LITE) installation involves compiling
WANPIPE (LITE) kernel module.
Therefore, NO kernel recompilation is required :)
WANPIPE (LITE) driver attaches to kernel WAN stacks:
* Frame Relay
* PPP
* Cisco HDLC
Refer to the wanpipe_lite_manual.(pdf/txt) documentation.
ENDOFTEXT
else
cat << ENDOFTEXT
WANPIPE KERNEL DRIVER COMPILATION
The next step in WANPIPE installation involves compiling
WANPIPE kernel modules.
This script will compile and install WANPIPE modules
into the currently running linux kernel.
For greater customization you will be prompted to
select which Protocol/Drivers you would like to
build into the WANPIPE kernel modules.
Wanpipe for Asterisk/Zaptel
Default for Asterisk/Zaptel
Wanpipe for Wan Routing/API
Default for Wan/IP Routing and Data API
Wanpipe for Asterisk SMG/SS7
Default for Asterisk SS7
Wanpipe for TDM API
Default for FreeSwitch and Voice API
Custom Compilation:
------------------
Customise WANPIPE driver compilation to add only the
protocols that you need. This way one can reduce
the size of the WANPIPE kernel drivers.
Refer to http://wiki.sangoma.com for more info
ENDOFTEXT
fi
if [ -d "$DRIVER_TMP_DIR" ]; then
rm -rf $DRIVER_TMP_DIR
fi
\mkdir "$DRIVER_TMP_DIR"
\mkdir "$DRIVER_TMP_DIR/mod"
\mkdir "$DRIVER_TMP_DIR/tmp"
get_kernel_ver $SOURCEDIR
if [ $? -eq 1 ]; then
pause
return 1
fi
echo
getyn "Proceed to build ${DISTR_NAME} kernel modules ? [y]" || return 0;
if [ ! -d $DRIVER_TMP_DIR ]; then
eval "\mkdir -p $DRIVER_TMP_DIR > /dev/null"
if [ $? -ne 0 ]; then
echo "ERROR: Failed to create $DRIVER_TMP_DIR directory!!!"
pause
return 1
fi
fi
ANNEXG_LOAD=NO
check_gcc
if [ $? -ne 0 ]; then
echo
pause
echo -e "\n\tWarning: Wanpipe package requires C development tools to complete
the installation. Please install development package
before proceeding. GCC/KGCC/CC compiler not found!"
return 1
fi
if [ ! -f $SOURCEDIR/.config ] && [ -d $SOURCEDIR/configs ]; then
tmp_k_ver="$KVER"."$KPATCH"."$KLVL"
tmp_k_arch=`uname -m`
tmp_smp=`uname -a | grep SMP`
if [ ! -z $tmp_smp ]; then
tmp_config_file="kernel-$tmp_k_ver-$tmp_k_arch-smp.config"
else
tmp_config_file="kernel-$tmp_k_ver-$tmp_k_arch.config"
fi
if [ -f $SOURCEDIR/configs/$tmp_config_file ] && ! test $NONINTERACTIVE; then
echo
echo " Warning:"
echo " The Linux source in $SOURCEDIR doesn't have a .config"
echo " file."
echo
echo " Would you like me to configure the Linux source based"
echo " on the currently running Linux image: $KERNEL_UNAME"
echo
getyn " Configure the Linux source for $KERNEL_UNAME ?"
if [ $? -eq 0 ]; then
tmp_home=`pwd`
cd $SOURCEDIR
\cp -f $SOURCEDIR/configs/$tmp_config_file $SOURCEDIR/.config
eval "make oldconfig_nonint > /dev/null 2> /dev/null"
if [ $KERN_VER -eq 26 ]; then
eval "make prepare0 > /dev/null 2> /dev/null"
fi
cd $tmp_home
echo
echo " Linux source config completed successfuly"
pause
fi
fi
fi
if [ ! -d $SOURCEDIR/include/asm ] || [ ! -f $SOURCEDIR/include/linux/autoconf.h ]; then
echo -e "\n"
echo "ERROR: The $SOURCEDIR contains a fresh, unconfigured kernel!"
echo ""
echo " If you already have a working kernel image, a"
echo " simple kernel configuration can solve this problem"
echo " In linux source dirctory run: "
echo
echo " make dep modules"
echo
echo " Then retry the Setup script !!"
echo ""
echo " If you are still expriencing problems please contact"
echo " Sangoma Tech Support"
pause
return 1
fi
# if [ $KERN_VER -ne 26 ] && [ ! -f $SOURCEDIR/include/linux/modversions.h ]; then
# echo -e "\n"
# echo "ERROR: The $SOURCEDIR contains a fresh, unconfigured kernel!"
# echo
# echo " If you already have a working kernel image, a"
# echo " simple kernel configuration can solve this problem"
# echo " In linux source dirctory run: "
# echo
# echo " make dep modules"
# echo
# echo " Then retry the Setup script !!"
# echo
# echo " If you are still expriencing problems please contact"
# echo " Sangoma Tech Support"
# pause
# return 1
# fi
eval "grep \"define *CONFIG_WAN_ROUTER *1\" $SOURCEDIR/include/linux/autoconf.h > /dev/null"
if [ $? -eq 0 ]; then
echo -e "\n"
echo "ERROR: The ${DISTR_NAME} drivers in $SOURCEDIR have been"
echo " configured/compiled into the kernel."
echo " It's usually recommended that drivers be compiled"
echo " as modules."
echo
echo " Please contact Sangoma Tech Support"
echo
pause
return 1
fi
eval "grep \"define *CONFIG_MODVERSIONS\" $SOURCEDIR/include/linux/autoconf.h > /dev/null"
if [ $? -eq 0 ]; then
if [ $KERN_VER -ne 26 ]; then
MODVER=" -DMODVERSIONS -include $SOURCEDIR/include/linux/modversions.h "
fi
MOD_ENABLED=y
else
MODVER=""
MOD_ENALBED=n
fi
cd $DRIVER_TMP_DIR
#Copy the WANPIPE device drivers
#into a temporary directory
eval "\cp -f $DRIVER_UPDATE_DIR/src/net/* . >/dev/null 2>/dev/null"
eval "\cp -f $DRIVER_UPDATE_DIR/src/wanrouter/* .>/dev/null 2>/dev/null"
eval "\cp -f $PROD_HOME/kbuild/Makefile . >/dev/null 2>/dev/null"
for file in $DRIVERS_MOD_LIST
do
eval "\cp $DRIVER_UPDATE_DIR/src/net/$file . >/dev/null 2>/dev/null"
done
update_redhat_as 0
update_fedora2 0
select_compilation_mode
#Disply all supported protocols that will be compiled
#into the driver.
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
echo -e "\n\tSupported WAN Protocols:\n"
fi
if [ $FR_PROT = YES ]; then
cat << ENDOFTEXT
- Frame Relay
Support for frame relay routing, API, or
bridging.
ENDOFTEXT
fi
if [ $CHDLC_PROT = YES ]; then
cat << ENDOFTEXT
- Cisco HDLC
Support for Dual Port Cisco HDLC routing
API, and TTY PPP over HDLC Streaming on
S514-PCI/S508-ISA cards.
ENDOFTEXT
fi
if [ $PPP_PROT = YES ]; then
cat << ENDOFTEXT
- PPP
Support for PPP routing on S514-PCI/S508-ISA cards.
ENDOFTEXT
fi
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
pause
fi
echo
if [ $MPPP_PROT = YES ]; then
cat << ENDOFTEXT
- Multi Protocol Driver
Support for kernel RawHDLC/PPP/CHDLC/X25
on each Sangoma adapter (S514-PCI/S508-ISE)
port PRI and SEC.
ENDOFTEXT
fi
if [ $MFR_PROT = YES ]; then
cat << ENDOFTEXT
- Multi-Port Frame Relay
Support for kernel Frame Relay over HDLC streaming.
This protocol can support a frame relay link
on each Sangoma port (PRI and SEC) on S514/S508 cards.
ENDOFTEXT
fi
if [ $ANNEXG_PROT = YES ]; then
cat << ENDOFTEXT
- MP API
Support for Kernel LAPB/X25/DSP Protocol Stack.
The MP API Stacks can run on both PRI and SEC ports on S514/S508
adapters. Furthermore, MP API Stacks can be configured
to run on top of MP Frame Relay or MP Protocol drivers.
ENDOFTEXT
fi
if [ $X25_PROT = YES ]; then
cat << ENDOFTEXT
- X25
Support for X25 routing and API on S514 and S508
cards.
ENDOFTEXT
fi
if [ "$PKG_NAME" != "wanpipe-lite" ] ;then
cat << ENDOFTEXT
- API Socket
Support for X25, HDLC, CHDLC and Frame Relay API
socket development.
ENDOFTEXT
fi
pause
echo
if [ "$BISYNC_PROT" = "YES" ]; then
cat << ENDOFTEXT
- BiSync API
Support for MultiPoint Bisync API on S514 and S508
cards. Used for connecting to real Bisync network.
ENDOFTEXT
pause
echo
fi
if [ "$BSCSTRM_PROT" = "YES" ]; then
cat << ENDOFTEXT
- BiSync Streaming API
Support for Bisync Streaming API on S514 and S508
cards. Used for receiving custom Bisync data via
custom APIs.
ENDOFTEXT
pause
echo
fi
if [ "$SS7_PROT" = "YES" ]; then
cat << ENDOFTEXT
- SS7 Level2 API
Support for SS7 Level2 API on S514 and S508
cards.
ENDOFTEXT
pause
echo
fi
if [ "$ADSL_PROT" = "YES" ]; then
cat << ENDOFTEXT
- ADSL Protocol
Support for S518 ADSL cards.
Protocols: Ethernet over ATM (LLC/VC) (PPPoE)
Classical IP over ATM (LLC/VC)
PPP over ATM (LLC/VC)
Standards: T.413, G.DMT, G.lite ...
ENDOFTEXT
pause
echo
fi
if [ "$AFT_TE1_PROT" = "YES" ]; then
cat << ENDOFTEXT
- AFT TE1 Support
Support for AFT TE1 Cards.
Protocols: Frame Relay
PPP
CHDLC
API: HDLC (Raw)
Transparent Bitstreaming
ENDOFTEXT
pause
echo
fi
if [ "$AFT_TE3_PROT" = "YES" ]; then
cat << ENDOFTEXT
- AFT TE3 Support
Support for AFT TE3 Cards.
Protocols: Frame Relay
PPP
CHDLC
API: HDLC (Raw)
Transparent Bitstreaming
ENDOFTEXT
pause
echo
fi
if [ "$ATM_PROT" = "YES" ]; then
cat << ENDOFTEXT
- ATM Protocol
Support for AFT and S514-(X) T1/E1/V35 cards.
Protocols: Ethernet over ATM (AAL5) (LLC/VC) (PPPoE)
PPP over ATM (PPPoA) (LLC/VC) AFT Only
Classical IP over ATM (LLC/VC)
ENDOFTEXT
pause
echo
fi
if [ "$KATM_PROT" = "YES" ]; then
cat << ENDOFTEXT
- Linux Kernel ATM Stack Protocol
Support for AFT T1/E1 cards.
Protocols: Kernel ATM Stack over AFT ATM (AAL5)
ENDOFTEXT
pause
echo
fi
if [ "$XMTP2_PROT" = "YES" ]; then
cat << ENDOFTEXT
- XMTP2 SS7 Protocol
Support for LIP XMTP2 AFT cards only.
ENDOFTEXT
pause
echo
fi
if [ "$ECHO_MASTER_PROT" = "YES" ]; then
cat << ENDOFTEXT
- TDMV Echo Detection and Control (EDAC) Feature
Support for A102/A104 TDMV cards.
ENDOFTEXT
pause
echo
fi
if [ "$SDLC_PROT" = "YES" ]; then
cat << ENDOFTEXT
- SDLC API Protocol
Support for SDLC API protocol on S514/S508 cards.
ENDOFTEXT
pause
echo
fi
if [ "$EDU_PROT" = "YES" ]; then
cat << ENDOFTEXT
- EDU API Protocol
Support for Educational Development package over
S514/S508 cards.
ENDOFTEXT
pause
echo
fi
if [ "$BITSTRM_PROT" = "YES" ]; then
cat << ENDOFTEXT
- BITSTRM Protocol
Support for Bitstream Protocol over S514/S508 cards.
Bitstream protocol can Tx/Rx data over individual
T1/E1 DS0's as well as Tx/Rx raw bit streams.
ENDOFTEXT
pause
echo
fi
if [ "$POS_PROT" = "YES" ]; then
cat << ENDOFTEXT
- POS S509/S515 Hardware/Protocol Support
Support for Point of Sale (POS) protocol over
S515/S509 cards. Point of Sale protocols include I
BM 4860, NCR 2126, NCR 1255.
ENDOFTEXT
pause
echo
fi
if [ "$ADCCP_PROT" = "YES" ]; then
cat << ENDOFTEXT
- ADCCP Lapb API Protocol Support
Support for ADCCP Lapb API protocol over
S514/S508 Cards.
ENDOFTEXT
pause
echo
fi
if [ "$ASYHDLC_PROT" = "YES" ]; then
cat << ENDOFTEXT
- Async HDLC API Protocol Support
Support for Async HDLC support over S514/S508 Cards.
ENDOFTEXT
pause
echo
fi
if [ "$TDM_PROT" = "YES" ]; then
cat << ENDOFTEXT
- TDM Voice Hardware Support for Asterisk PBX Software
Hardware Support for Asterisk PBX Software over
AFT T1/E1 Cards.
ENDOFTEXT
pause
echo
fi
if [ "$XDLC_PROT" = "YES" ]; then
cat << ENDOFTEXT
- XDLC API Support
LIP XDLC Support
ENDOFTEXT
pause
echo
fi
if test -z $NONINTERACTIVE; then
if [ -e $SOURCEDIR/include/config/kernel.release ]; then
KERNEL_VERSION=`cat $SOURCEDIR/include/config/kernel.release`
echo "Source kernel name:$KERNEL_VERSION"
fi
if [ $KERNEL_VERSION != $KERNEL_UNAME ]; then
echo
echo -e "WARNING: Module installation dir mismatch!"
echo -e " Linux source name = $KERNEL_VERSION"
echo -e " Current image name = $KERNEL_UNAME"
echo
echo -e " If you are building wanpipe modules for the"
echo -e " currently running image, use the $KERNEL_UNAME"
echo -e " directory (i.e. select 'y') "
echo
getyn "Install modules for current image: $KERNEL_UNAME ?"
if [ $? -eq 0 ]; then
KERNEL_VERSION=$KERNEL_UNAME;
is_distr_fedora2
if [ $? -eq 1 ]; then
echo
echo -e " Fedora2 Update: "
echo -e " In order to compile for the current kernel"
echo -e " The word 'custom' must be taken out of the"
echo -e " $SOURCEDIR/Makefile"
echo -e " Then in $SOURCEDIR/ run 'make prepare-all'"
echo
getyn "Would you like us to do it for you ?"
if [ $? -eq 0 ]; then
update_kernel_custom_name
update_fedora2 0
if [ $? -ne 0 ]; then
echo
echo "Auto configuration failed!"
echo "Proceed to make above changes manually!"
echo "Then restart the ./Setup process"
echo
pause
return 1
fi
else
echo
echo "Proceed to make above changes manually!"
echo "Then restart the ./Setup process"
echo
pause
return 1
fi
fi
fi
echo
echo "Installing modules for kernel: $KERNEL_VERSION !"
echo
fi
fi
if [ $ANNEXG_PROT = "YES" ]; then
cp -f $DRIVER_UPDATE_DIR/include/annexg/*.h .
fi
echo
echo -n "Checking for SMP support ..."
eval "grep \"CONFIG_SMP *1\" $SOURCEDIR/include/linux/autoconf.h > /dev/null"
if [ $? -eq 0 ]; then
echo -e "Enabled.\n"
CONFIG_SMP=YES;
elif [ $FORCE_SMP ] && [ $FORCE_SMP=YES ]; then
echo -e "Forced.\n"
CONFIG_SMP=YES;
else
echo -e "Disabled.\n"
eval "uname -a |grep SMP > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo
echo " Warning: Current image is configured for SMP"
getyn " Would you like to proceed with installation?"
if [ $? -ne 0 ]; then
exit 1
fi
fi
CONFIG_SMP=NO;
fi
#Find out our processor type. This is needed to properly
#compile our modules.
echo -n "Checking current processor type ..."
if [ -e $SOURCEDIR/include/linux/autoconf.h ]; then
grep "CONFIG_ARCH \"" $SOURCEDIR/include/linux/autoconf.h > /dev/null
if [ $? -eq 0 ] ; then
ARCH=`grep "CONFIG_ARCH \"" $SOURCEDIR/include/linux/autoconf.h | cut -d '"' -f2`
fi
fi
if [ -z $ARCH ]; then
ARCH=`uname -m`
fi
echo -e "$ARCH\n"
LD_ELF=
case $ARCH in
x86_64*) LD_ELF="-m elf_x86_64"
;;
ia64*) LD_ELF=" -T $SOURCEDIR/arch/ia64/module.lds "
;;
i686*) LD_ELF="-m elf_i386"
;;
i586*) ARCH=i386
LD_ELF="-m elf_i386"
;;
i486*) ARCH=i386
LD_ELF="-m elf_i386"
;;
i386*) LD_ELF="-m elf_i386"
;;
ppc*)
;;
*)
echo "Error: Unsuppored architecture type $ARCH!"
pause
return 1
;;
esac
REGPARM_OPT=""
if [ "$USER_CFLAGS" != "" ]; then
echo
echo "Appending User CFLAGS: $USER_CFLAGS"
echo
fi
wan_kernel_version_conflict_fix
if [ "$USE_CFLAGS" != "" ]; then
echo
echo "Compiling with user CFLAGS: $USE_CFLAGS"
echo
CFLAGS=$USE_CFLAGS;
fi
#Setup the COMPILATOIN FLAGS depending on the kernel type
if [ $KERN_VER -eq 26 ]; then
if [ "$USE_CFLAGS" = "" ]; then
CFLAGS="$CC -Wp,-MD,.wanpipe.o.d -nostdinc -iwithprefix include -D__LINUX__ -Dlinux -D__KERNEL__ -I$SOURCEDIR/include -DMODULE $CFLAGS"
wan_get_kernel_flags
CFLAGS="$CFLAGS $CFLAGS_EXTRA"
fi
check_inode_struct
if [ 1 -eq 1 ]; then
echo
echo "--------------------------------------------------"
echo "CFLAGS: $CFLAGS"
echo "--------------------------------------------------"
echo
fi
echo -n "Checking for REGPARM kernel option ..."
eval "grep \"define *CONFIG_REGPARM *1\" $SOURCEDIR/include/linux/autoconf.h > /dev/null"
if [ $? -eq 0 ]; then
echo -e "Enabled.\n"
REGPARM_OPT=".regparm"
else
#Taken from kernel Makefile
SUBARCH=$( uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
#New way of checking REGPARM because its enabled
#by default on 2.6.20 kernel and up
if [ $SUBARCH != "" ]; then
eval "grep \"CFLAGS.*=.*-pipe.*regparm\" $SOURCEDIR/arch/$SUBARCH/Makefile" > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
echo -e "Enabled.\n"
REGPARM_OPT=".regparm"
else
echo -e "Disabled.\n"
fi
else
echo -e "Disabled.\n"
fi
fi
echo -n "Compiling General ${DISTR_NAME} Driver for 2.6.X Kernel ."
elif [ $KERN_VER -eq 24 ]; then
echo -n "Compiling General ${DISTR_NAME} Driver for 2.4.X Kernel ."
if [ "$USE_CFLAGS" = "" ]; then
case $ARCH in
x86_64*)
CFLAGS="$CC -D__LINUX__ -Dlinux -D__KERNEL__ -I$SOURCEDIR/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Wno-unused -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables -nostdinc -iwithprefix include -DMODULE -DEXPORT_SYMTAB"
;;
*)
if [ $KLVL -lt 32 ]; then
CFLAGS="$CC -D__LINUX__ -Dlinux -D__KERNEL__ -I$SOURCEDIR/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -march=$ARCH -DMODULE -DEXPORT_SYMTAB"
else
CFLAGS="$CC -D__LINUX__ -Dlinux -D__KERNEL__ -I$SOURCEDIR/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=$ARCH -fno-unit-at-a-time -DMODULE -nostdinc -iwithprefix include -DMODULE -DEXPORT_SYMTAB"
fi
#Old gcc do not have this option, thus we must check for it.
eval "$CC -mpreferred-stack-boundary=2 -S -o /dev/null \
-xc /dev/null >/dev/null 2>&1"
if [ $? -eq 0 ]; then
CFLAGS=$CFLAGS" -mpreferred-stack-boundary=2 "
fi
;;
esac
fi
else
echo "ERROR: Unsupported Kernel Version $(uname -r)"
pause
return 1
fi
if [ $CONFIG_SMP = YES -a $KERN_VER -eq 22 ]; then
CFLAGS=$CFLAGS" -D__SMP__"
fi
CFLAGS="$CFLAGS $MODVER"
if [ "$TDM_PROT" = "YES" ]; then
CFLAGS="$CFLAGS $ASTERISK_IFLAGS"
fi
if [ "$USER_CFLAGS" != "" ]; then
CFLAGS="$CFLAGS $USER_CFLAGS"
fi
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
flag=`grep "cisco_proto" $SOURCEDIR/include/linux/if.h 2> /dev/null`
if [ -z "$flag" ]; then
CFLAGS=$CFLAGS" -DOLD_IFSETTINGS_STRUCT"
fi
fi
if [ -d "$DRIVER_UPDATE_DIR/wanec" ]; then
PROTOCOL_DEFINES=$PROTOCOL_DEFINES" -DCONFIG_WANPIPE_HWEC "
fi
#Compile all individual protocols first
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=wanpipe_main -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/wanpipe_main.o wanpipe_main.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=wanpipe_hdlc -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/wanpipe_hdlc.o wanpipe_hdlc.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=wanpipe_linux_iface -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/wanpipe_linux_iface.o wanpipe_linux_iface.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_56k -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_56k.o sdla_56k.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_te1 -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_te1.o sdla_te1.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_8te1 -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_8te1.o sdla_8te1.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_te3 -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_te3.o sdla_te3.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=wanpipe_utils -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/wanpipe_utils.o wanpipe_utils.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_abstr -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/wanpipe_abstr.o wanpipe_abstr.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdladrv -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdladrv.o sdladrv.c sdladrv_fe.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_xilinx -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_xilinx.o sdla_xilinx.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=sdla_aft_te1 -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/sdla_aft_te1.o sdla_aft_te1.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=aft_a104 -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/aft_a104.o aft_a104.c"
eval "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=aft_analog -DKBUILD_MODNAME=wanpipe_lite \
-c -o tmp/aft_analog.o aft_analog.c"
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
fi
MEXT=o
if [ $KERN_VER -eq 26 ]; then
MEXT=ko
fi
eval "ld $LD_ELF -r -o mod/wanpipe_lite.$MEXT tmp/wanpipe_main.o tmp/wanpipe_hdlc.o \
tmp/wanpipe_linux_iface.o tmp/sdla_te1.o tmp/sdla_8te1.o tmp/sdla_te3.o tmp/sdla_56k.o \
tmp/wanpipe_utils.o tmp/wanpipe_abstr.o tmp/sdla_xilinx.o tmp/sdla_aft_te1.o \
tmp/sdladrv.o tmp/aft_a104.o tmp/aft_analog.o "
install -D -m 644 mod/wanpipe_lite.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_lite.$MEXT
# End of LITE
else
if [ 0 -eq 1 ]; then
echo
echo "ALLFLAGS"
echo "--------------------------------------------------"
echo "$CFLAGS"
echo "--------------------------------------------------"
echo
echo
fi
if [ 0 -eq 1 ]; then
echo
echo "---------------------------------"
echo "$CFLAGS $PROTOCOL_DEFINES -DKBUILD_BASENAME=wanmain -DKBUILD_MODNAME=wanrouter -c -o tmp/wanmain.o wanmain.c"
echo "---------------------------------"
echo
fi
cat <<ENDOFTEXT > $PROD_HOME/Compile_Setup.sh
#!/bin/sh
if [ -e kdrvcmp ]; then
rm -rf kdrvcmp
fi
mkdir kdrvcmp
cd kdrvcmp
ln -s . common
ln -s . modinfo
mkdir tmp
mkdir mod
cp -f ../patches/kdrivers/src/net/* .
cp -f ../patches/kdrivers/src/wanrouter/* .
cp -f ../patches/kdrivers/src/lip/* .
cp -f ../patches/kdrivers/src/lip/bin/* .
cp -rf ../patches/kdrivers/include/* /usr/src/linux/include/linux
cp -rf ../patches/kdrivers/include/* /usr/include/linux
cp -f ../samples/Makefile .
cp -f ../Compile.sh .
chmod 755 Compile.sh
cd ..
echo "Compile Environmet Setup"
ENDOFTEXT
tmp=${CFLAGS/$CC/}
cat <<ENDOFTEXT > $PROD_HOME/Compile.sh
#!/bin/sh
make CFLAGS="$tmp" PROTOCOL_DEFINES="$PROTOCOL_DEFINES"
ENDOFTEXT
tmp=${CFLAGS/$CC/}
cat <<ENDOFTEXT > $PROD_HOME/GCFLAGS
$tmp $PROTOCOL_DEFINES
ENDOFTEXT
EVALCMD=eval
WANPIPE_OBJS=
rm -f sdladrv_src.c
ln -s sdladrv.c sdladrv_src.c
build_kernel_module sdladrv "sdladrv_src sdladrv_fe"
build_kernel_module wanrouter "wanmain wanproc waniface"
AF_EXTRA_FLAGS="-DCONFIG_PRODUCT_WANPIPE_SOCK_DATASCOPE"
check_for_af_wanpipe_updates
rm -f af_wanpipe_src.c
ln -s af_wanpipe.c af_wanpipe_src.c
build_kernel_module af_wanpipe "af_wanpipe_src af_wanpipe_datascope" "$AF_EXTRA_FLAGS"
echo -n "."
if [ "$FR_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_fr "
fi
if [ "$CHDLC_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_chdlc "
fi
if [ "$PPP_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_ppp "
fi
echo -n "."
if [ "$X25_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_x25 "
fi
if [ "$MPPP_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"wanpipe_multppp "
SYNCPPP_PROT=YES
fi
if [ "$MFR_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_mp_fr "
fi
if [ "$ANNEXG_PROT" = "YES" ]; then
#ANNEXG_X25_FLAGS="-DX25_SW -DX25_SWITCH_DEFAULT_API "
ANNEXG_X25_FLAGS=" "
for file in $DRIVERS_MPAPI_X25
do
\cp $DRIVER_UPDATE_DIR/src/net/annexg/$file .
done
for file in $DRIVERS_MPAPI_LAPB
do
\cp $DRIVER_UPDATE_DIR/src/net/annexg/$file .
done
for file in $DRIVERS_MPAPI_DSP
do
\cp $DRIVER_UPDATE_DIR/src/net/annexg/$file .
done
for file in $DRIVERS_MPAPI_MOD_FILES
do
\cp $DRIVER_UPDATE_DIR/src/net/annexg/$file .
done
build_kernel_module wanpipe_lapb "lapb_iface lapb_in lapb_out lapb_proc lapb_subr lapb_timer lapb_x25_iface"
build_kernel_module wanpipe_x25 "x25_api_iface x25_dsp_iface x25_facils x25_iface x25_in x25_out x25_proc x25_subr x25_switch x25_timer x25_utils"
build_kernel_module wanpipe_dsp "dsp_api_iface dsp_iface dsp_in dsp_out dsp_proc dsp_subr dsp_timer "
fi
if [ "$SS7_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_ss7.c .
if [ "$SS7_USER_ID" = "" ]; then
echo -e "Failed!\n"
echo
echo "ERROR: SS7 User ID must be suppiled!"
pause
return 0
fi
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_ss7 "
fi
if [ "$EDU_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_edu.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_edu "
fi
if [ "$BISYNC_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_bsc.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_bsc "
fi
if [ "$BSCSTRM_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_bscstrm.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_bscstrm "
fi
echo -n "."
if [ "$BITSTRM_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_bitstrm.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_bitstrm "
SYNCPPP_PROT=YES
fi
if [ "$ADSL_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_adsl.c .
adsl_file=wanpipe_adsl.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $DRIVER_UPDATE_DIR/src/bin/$adsl_file ]; then
echo "Warning: ADSL Binary $adsl_file not found!"
echo "Using wanpipe_adsl.gcc3.i386.o"
adsl_file=wanpipe_adsl.gcc3.i386.o
fi
\cp $DRIVER_UPDATE_DIR/src/bin/$adsl_file tmp/wanpipe_adsl.o
\cp $DRIVER_UPDATE_DIR/src/bin/$adsl_file wanpipe_adsl.o
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_adsl "
WANPIPE_BIN_OBJS=$WANPIPE_BIN_OBJS"wanpipe_adsl.o "
SYNCPPP_PROT=YES
fi
if [ "$ATM_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_atm.c .
atm_file=wanpipe_atm.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $DRIVER_UPDATE_DIR/src/bin/$atm_file ]; then
echo "Warning: ATM Binary $atm_file not found!"
echo "Using wanpipe_atm.gcc3.i386.o"
atm_file=wanpipe_atm.gcc3.i386.o
fi
\cp $DRIVER_UPDATE_DIR/src/bin/$atm_file tmp/wanpipe_atm.o
\cp $DRIVER_UPDATE_DIR/src/bin/$atm_file wanpipe_atm.o
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_atm "
WANPIPE_BIN_OBJS=$WANPIPE_BIN_OBJS"wanpipe_atm.o "
SYNCPPP_PROT=YES
fi
if [ "$ECHO_MASTER_PROT" = "YES" ]; then
echo_file=wanpipe_edac.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $DRIVER_UPDATE_DIR/src/bin/$echo_file ]; then
echo "Warning: ECHO MASTER Binary $echo_file not found!"
echo "Using wanpipe_edac.gcc3.i386.o"
echo_file=wanpipe_edac.gcc3.i386.o
fi
\cp $DRIVER_UPDATE_DIR/src/net/sdla_edac.c .
\cp $DRIVER_UPDATE_DIR/src/bin/$echo_file tmp/wanpipe_edac.o
\cp $DRIVER_UPDATE_DIR/src/bin/$echo_file wanpipe_edac.o
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_edac "
WANPIPE_BIN_OBJS=$WANPIPE_BIN_OBJS"wanpipe_edac.o "
fi
if [ "$SDLC_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_sdlc.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_sdlc "
fi
if [ "$POS_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_pos.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_pos "
fi
if [ "$ADCCP_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_adccp.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_adccp "
fi
if [ "$ASYHDLC_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_asyhdlc.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_asyhdlc "
fi
if [ "$TDM_PROT" = "YES" ]; then
\cp $DRIVER_UPDATE_DIR/src/net/sdla_tdmv.c .
\cp $DRIVER_UPDATE_DIR/src/net/sdla_remora_tdmv.c .
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_tdmv sdla_remora_tdmv "
WANPIPE_EXTRA_CFLAGS=$WANPIPE_EXTRA_CFLAGS"-I$ZAPTEL_INSTALL_DIR "
fi
if [ "$AFT_TE1_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_xilinx sdla_aft_te1 aft_a104 sdla_remora aft_analog "
fi
if [ "$AFT_TE3_PROT" = "YES" ]; then
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_aft_te3 "
fi
if [ "$SYNCPPP_PROT" = "YES" ]; then
rm -f wanpipe_syncppp_src.c
ln -s wanpipe_syncppp.c wanpipe_syncppp_src.c
build_kernel_module wanpipe_syncppp wanpipe_syncppp_src
fi
echo -n "."
WANPIPE_OBJS=$WANPIPE_OBJS"sdla_56k sdla_te1 sdla_8te1 sdla_te3 sdla_ft1 wanpipe_utils wanpipe_abstr wanpipe_linux_iface "
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
return 1
fi
if [ "$WAN_FRM_UPDATE_DRIVER" = "YES" ] &&
[ -d "$DRIVER_UPDATE_DIR/src/wan_aften" ]; then
echo
\cp -f $DRIVER_UPDATE_DIR/src/wan_aften/*.c .
\cp -f $DRIVER_UPDATE_DIR/src/wan_aften/*.h .
rm -f wan_aften_src.c
ln -s wan_aften.c wan_aften_src.c
build_kernel_module wan_aften "wan_aften_src wanpipe_linux_iface"
fi
if [ -d "$DRIVER_UPDATE_DIR/wanec" ]; then
home_tmp=`pwd`
cd $DRIVER_UPDATE_DIR/wanec
\cp -f $PROD_HOME/kbuild/Makefile.wanec Makefile
build_wanec_module
if [ $? -eq 0 ]; then
echo "WAN HWEC module enabled and compiled!"
else
echo "WAN HWEC module failed to compile!"
fi
cd $home_tmp
fi
if [ "$LIP_PROT" = "YES" ]; then
LIP_LOAD="YES";
LIP_BIN_OBJS=
LIP_OBJS=
echo
\cp -f $DRIVER_UPDATE_DIR/src/lip/*.c .
\cp -f $DRIVER_UPDATE_DIR/src/lip/bin/*.o .
if [ -e $DRIVER_UPDATE_DIR/src/lip/lip_katm ]; then
\cp -f $DRIVER_UPDATE_DIR/src/lip/lip_katm/*.c .
\cp -f $DRIVER_UPDATE_DIR/src/lip/lip_katm/*.h .
fi
LIP_LINKED_PROTOCOLS=
TMP_CFLAGS="-I/$WANPIPE_INCLUDE_DIR -I/ -I$SOURCEDIR/include -I$SOURCEDIR/include/linux -I../include/common -I../include "
if [ "$REGPARM_OPT" = ".regparm" ]; then
TMP_CFLAGS=$TMP_CFLAGS" -mregparm=3 "
fi
if [ $FR_PROT = "YES" ]; then
if [ -e $DRIVER_UPDATE_DIR/fr ]; then
echo -n "Compiling Frame Relay sources..."
lhome=`pwd`
cd $DRIVER_UPDATE_DIR/fr
eval "rm -f *.o" >/dev/null 2>/dev/null
eval "make clean"
eval "make all EXTRA_CFLAGS=\" $TMP_CFLAGS \" ARCH=$ARCH " >>$CMP_LOG 2>>$CMP_LOG
if [ $? -eq 0 ]; then
echo -e "Done"
echo " "
else
echo -e "Failed"
cat $CMP_LOG
fi
\cp -f wanpipe_fr.o $lhome/wanpipe_fr.o
fr_file=wanpipe_fr.o
cd $lhome
else
fr_file=wanpipe_fr.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $fr_file ]; then
echo "Warning: FR Binary $fr_filenot found!"
echo "Using wanpipe_fr.gcc3.i386.o"
fr_file=wanpipe_fr.gcc3.i386.o
fi
\cp $fr_file wanpipe_fr.o
fi
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_fr.o "
fi
if [ $PPP_PROT = "YES" ] || [ $CHDLC_PROT = "YES" ]; then
if [ -e $DRIVER_UPDATE_DIR/sppp ]; then
echo -n "Compiling PPP and CHDLC sources..."
lhome=`pwd`
cd $DRIVER_UPDATE_DIR/sppp
eval "rm -f *.o" >/dev/null 2>/dev/null
eval "make clean"
eval "make all EXTRA_CFLAGS=\" $TMP_CFLAGS -Iinclude \" ARCH=$ARCH " >>$CMP_LOG 2>>$CMP_LOG
if [ $? -eq 0 ]; then
echo -e "Done"
echo " "
else
echo -e "Failed"
cat $CMP_LOG
fi
\cp -f wanpipe_sppp.o $lhome/wanpipe_sppp.o
cd $lhome
sppp_file=wanpipe_sppp.o
else
sppp_file=wanpipe_sppp.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $sppp_file ]; then
echo "Warning: SPPP Binary $sppp_file not found!"
echo "Using wanpipe_sppp.gcc3.i386.o"
sppp_file=wanpipe_sppp.gcc3.i386.o
fi
\cp $sppp_file wanpipe_sppp.o
fi
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_sppp.o "
fi
if [ $ATM_PROT = "YES" ]; then
lip_atm_file=wanpipe_lip_atm.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $lip_atm_file ]; then
echo "Warning: LIP ATM Binary $lip_atm_file not found!"
echo "Using wanpipe_lip_atm.gcc3.i386.o"
lip_atm_file=wanpipe_lip_atm.gcc3.i386.o
fi
cp $lip_atm_file wanpipe_lip_atm.o
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_lip_atm.o "
fi
if [ $LAPB_PROT = "YES" ]; then
lapb_file=wanpipe_lapb.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $lapb_file ]; then
echo "Warning: FR Binary $lapb_file not found!"
echo "Using wanpipe_lapb.gcc3.i386.o"
lapb_file=wanpipe_lapb.gcc3.i386.o
fi
cp $lapb_file wanpipe_lapb.o
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_lapb.o "
fi
if [ $XDLC_PROT = "YES" ]; then
xdlc_file=wanpipe_xdlc.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $xdlc_file ]; then
echo "Warning: FR Binary $xdlc_file not found!"
echo "Using wanpipe_xdlc.gcc3.i386.o"
xdlc_file=wanpipe_xdlc.gcc3.i386.o
fi
cp $xdlc_file wanpipe_xdlc.o
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_xdlc.o "
fi
if [ $XMTP2_PROT = "YES" ]; then
SCTP_LOAD=YES
xmtp2_file=wanpipe_xmtp2.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e $xmtp2_file ]; then
echo "Warning: FR Binary $xmtp2_file not found!"
echo "Using wanpipe_xmtp2.gcc3.i386.o"
xmtp2_file=wanpipe_xmtp2.gcc3.i386.o
fi
cp $xmtp2_file wanpipe_xmtp2.o
LIP_BIN_OBJS=$LIP_BIN_OBJS"wanpipe_xmtp2.o "
if [ -d xmtp2km ]; then
rm -rf xmtp2km
fi
\cp -rf $DRIVER_UPDATE_DIR/src/xmtp2km .
cd xmtp2km
cp ../Makefile .
ln -s ../mod mod
ln -s ../tmp tmp
xmtp2km_file=xmtp2km.gcc$GCC_VER.$ARCH$REGPARM_OPT.o
if [ ! -e bin/$xmtp2km_file ]; then
echo "Warning: XMTP2KM Binary $xmtp2km_file not found!"
xmtp2km_file=xmtp2km.gcc3.i386.o
echo "Using $xmtp2km_file"
fi
XMTP2KM_OBJ="main2_6 fwmsg"
build_kernel_module xmtp2km "$XMTP2KM_OBJ" "-D__XMTP2__" "bin/$xmtp2km_file"
if [ -e xmtp2km.ko ]; then
\cp -f xmtp2km.ko ../mod
fi
cd ..
fi
LIP_DEFINES="-DWANLIP_DRIVER -DWPLIP_TTY_SUPPORT"
lip_src_mods="wanpipe_lip_iface wanpipe_lip_bh wanpipe_lip_prot wanpipe_lip_netdev wanpipe_lip_sub wanpipe_lip_tty wanpipe_abstr wanpipe_linux_iface "
if [ $KATM_PROT = "YES" ]; then
lip_src_mods=$lip_src_mods" wanpipe_katm_iface wanpipe_katm_sub"
fi
build_kernel_module wanpipe_lip "$lip_src_mods" "$LIP_DEFINES" "$LIP_BIN_OBJS"
if [ $FR_PROT = "YES" ]; then
echo "FR compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$fr_file"
echo
fi
if [ $PPP_PROT = "YES" ] || [ $CHDLC_PROT = "YES" ]; then
echo "PPP/CHDLC compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$sppp_file"
echo
fi
if [ $LAPB_PROT = "YES" ]; then
echo "Lapb compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$lapb_file"
echo
fi
if [ $XDLC_PROT = "YES" ]; then
echo "Xdlc compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$xdlc_file"
echo
fi
if [ $ATM_PROT = "YES" ]; then
echo "ATM compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$lip_atm_file"
echo
fi
if [ $XMTP2_PROT = "YES" ]; then
echo "XMTP2 compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$xmtp2_file"
echo
fi
fi
if [ "$ADSL_PROT" = "YES" ]; then
echo "ADSL binary compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$adsl_file"
echo
fi
if [ "$ATM_PROT" = "YES" ]; then
echo "ATM binary compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$atm_file"
echo
fi
if [ "$ECHO_MASTER_PROT" = "YES" ]; then
echo "TDMV Echo Detection (EDAC) binary compiled for GCC Ver=$GCC_VER Arch=$ARCH File:$echo_file"
echo
fi
echo -n "Linking Wanpipe Driver and protocols ..."
#Link in appropriate protocols as needed.
WANPIPE_OBJS=$WANPIPE_OBJS"sdlamain wanpipe_tdm_api wanpipe_codec wanpipe_codec_law "
build_kernel_module wanpipe "$WANPIPE_OBJS" "$WANPIPE_EXTRA_CFLAGS" "$WANPIPE_BIN_OBJS"
\cp -f *.ko mod/ > /dev/null 2> /dev/null
MEXT=o
if [ $KERN_VER -eq 26 ]; then
MEXT=ko
fi
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
return 1
fi
update_redhat_as 1
update_fedora2 1
wp_comp_err=0;
if [ ! -e mod/sdladrv.$MEXT ]; then
echo "Compilation Error: Module sdladrv.$MEXT not found!"
wp_comp_err=1;
fi
if [ ! -e mod/wanpipe.$MEXT ]; then
echo "Compilation Error: Module mod/wanpipe.$MEXT not found!"
wp_comp_err=1;
fi
if [ ! -e mod/wanrouter.$MEXT ]; then
echo "Compilation Error: Module mod/wanrouter.$MEXT not found!"
wp_comp_err=1;
fi
if [ ! -e mod/af_wanpipe.$MEXT ]; then
echo "Compilation Error: Module mod/af_wanpipe.$MEXT not found!"
wp_comp_err=1;
fi
if [ "$LIP_PROT" = "YES" ] && [ ! -e mod/wanpipe_lip.$MEXT ]; then
echo "Compilation Error: Module mod/wanpipe_lip.$MEXT not found!"
wp_comp_err=1;
fi
if [ "$XMTP2_PROT" = "YES" ] && [ ! -e mod/xmtp2km.$MEXT ]; then
echo "Compilation Error: Module mod/xmtp2km.$MEXT not found!"
wp_comp_err=1;
fi
if [ $wp_comp_err -eq 1 ]; then
echo
echo "Wanpipe drivers failed to compile"
echo "Please review the above error messages"
echo "and/or contact Sangoma Tech Support."
echo
return 1
fi
#Copy the newly compiled modules into the /lib/modules directory.
echo -n "Updating Kernel Modules ..."
if [ $KERN_VER -eq 24 ] || [ $KERN_VER -eq 26 ]; then
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/sdladrv.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_syncppp.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wan_aften.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanrouter.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/af_wanpipe.$MEXT* > /dev/null 2> /dev/null"
eval "\rm -f $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanpipe_lip.$MEXT* > /dev/null 2> /dev/null"
install -D -m 644 mod/sdladrv.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/sdladrv.$MEXT
install -D -m 644 mod/wanpipe.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe.$MEXT
install -D -m 644 mod/wanrouter.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanrouter.$MEXT
install -D -m 644 mod/af_wanpipe.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/af_wanpipe.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/sdladrv.$MEXT" | xargs gzip -f9
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe.$MEXT" | xargs gzip -f9
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanrouter.$MEXT" | xargs gzip -f9
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/af_wanpipe.$MEXT" | xargs gzip -f9
fi
if [ -f mod/wanpipe_syncppp.$MEXT ]; then
install -D -m 644 mod/wanpipe_syncppp.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_syncppp.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_syncppp.$MEXT" | xargs gzip -f9
fi
fi
if [ -f mod/wan_aften.$MEXT ]; then
install -D -m 644 mod/wan_aften.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wan_aften.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wan_aften.$MEXT" | xargs gzip -f9
fi
fi
if [ -d "$DRIVER_UPDATE_DIR/wanec" ]; then
install -D -m 644 $DRIVER_UPDATE_DIR/wanec/wanec.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanec.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanec.$MEXT" | xargs gzip -f9
fi
fi
if [ -f mod/wanpipe_x25.$MEXT ]; then
install -D -m 644 mod/wanpipe_x25.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_x25.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_x25.$MEXT" |xargs gzip -f9
fi
fi
if [ -f mod/wanpipe_lapb.$MEXT ]; then
install -D -m 644 mod/wanpipe_lapb.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_lapb.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_lapb.$MEXT" |xargs gzip -f9
fi
fi
if [ -f mod/wanpipe_dsp.$MEXT ]; then
install -D -m 644 mod/wanpipe_dsp.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_dsp.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_dsp.$MEXT" |xargs gzip -f9
fi
fi
if [ -f mod/xmtp2km.$MEXT ]; then
install -D -m 644 mod/xmtp2km.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/xmtp2km.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/xmtp2km.$MEXT" |xargs gzip -f9
fi
fi
if [ -f mod/wanpipe_lip.$MEXT ]; then
install -D -m 644 mod/wanpipe_lip.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanpipe_lip.$MEXT
if [ $GZ_MODULES ] && [ $GZ_MODULES=YES ]; then
echo "$ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanpipe_lip.$MEXT" |xargs gzip -f9
fi
fi
cat <<ENDOFTEXT > $CMP_INSTALL
#!/bin/sh
mv *.ko mod/ > /dev/null 2> /dev/null
install -D -m 644 mod/sdladrv.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/sdladrv.$MEXT
install -D -m 644 mod/wanpipe.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe.$MEXT
install -D -m 644 mod/wanrouter.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanrouter.$MEXT
install -D -m 644 mod/af_wanpipe.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/af_wanpipe.$MEXT
if [ -f mod/wanpipe_syncppp.$MEXT ]; then
install -D -m 644 mod/wanpipe_syncppp.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_syncppp.$MEXT
fi
if [ -f mod/wan_aften.$MEXT ]; then
install -D -m 644 mod/wan_aften.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wan_aften.$MEXT
fi
if [ -f mod/wanpipe_lip.$MEXT ]; then
install -D -m 644 mod/wanpipe_lip.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/net/wanrouter/wanpipe_lip.$MEXT
fi
if [ -f mod/wanpipe_x25.$MEXT ]; then
install -D -m 644 mod/wanpipe_x25.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_x25.$MEXT
fi
if [ -f mod/wanpipe_lapb.$MEXT ]; then
install -D -m 644 mod/wanpipe_lapb.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_lapb.$MEXT
fi
if [ -f mod/wanpipe_dsp.$MEXT ]; then
install -D -m 644 mod/wanpipe_dsp.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/wanpipe_dsp.$MEXT
fi
if [ -f mod/xmtp2km.$MEXT ]; then
install -D -m 644 mod/xmtp2km.$MEXT $ROOT/lib/modules/$KERNEL_VERSION/kernel/drivers/net/wan/xmtp2km.$MEXT
fi
echo
echo "Modules installed in $ROOT/lib/modules/$KERNEL_VERSION: OK"
echo
ENDOFTEXT
chmod 755 $CMP_INSTALL
cat <<ENDOFTEXT > .clean.$$
#!/bin/sh
rm -f *.ko
rm -f tmp/*.*o
rm -f mod/*.*o
echo "Clean Done"
ENDOFTEXT
cat .clean.$$ ../samples/clean.sh > $CMP_CLEAN
chmod 755 $CMP_CLEAN
else
install -D -m 644 mod/sdladrv.o $ROOT/lib/modules/$KERNEL_VERSION/net/sdladrv.o
install -D -m 644 mod/wanpipe.o $ROOT/lib/modules/$KERNEL_VERSION/net/wanpipe.o
install -D -m 644 mod/wanrouter.o $ROOT/lib/modules/$KERNEL_VERSION/misc/wanrouter.o
install -D -m 644 mod/af_wanpipe.o $ROOT/lib/modules/$KERNEL_VERSION/misc/af_wanpipe.o
if [ -f mod/wanpipe_syncppp.o ]; then
install -D -m 644 mod/wanpipe_syncppp.o $ROOT/lib/modules/$KERNEL_VERSION/net/wanpipe_syncppp.o
fi
if [ -f mod/wan_aften.o ]; then
install -D -m 644 mod/wan_aften.o $ROOT/lib/modules/$KERNEL_VERSION/misc/wan_aften.o
fi
if [ -f mod/wanpipe_lip.o ]; then
install -D -m 644 mod/wanpipe_lip.o $ROOT/lib/modules/$KERNEL_VERSION/misc/wanpipe_lip.o
fi
fi
if [ $? -eq 0 ]; then
echo -e "Done.\n"
else
echo -e "Failed!\n"
return 1
fi
# End of !LITE
fi
if test -z $ROOT; then
#Check dependencies.
eval "depmod -a 2> $PROD_HOME/tmp.$$"
if [ -f $PROD_HOME/tmp.$$ ]; then
eval "grep wanpipe -i $PROD_HOME/tmp.$$ 2> /dev/null"
rc1=$?
eval "grep sdladrv -i $PROD_HOME/tmp.$$ 2> /dev/null"
rc2=$?
eval "grep wanrouter -i $PROD_HOME/tmp.$$ 2> /dev/null"
rc3=$?
eval "grep af_wanpipe -i $PROD_HOME/tmp.$$ 2> /dev/null"
rc4=$?
if [ $rc1 -eq 0 ] || [ $rc2 -eq 0 ] || [ $rc3 -eq 0 ] || [ $rc4 -eq 0 ]; then
echo "WARNING: Module dependencies failed!"
echo ""
echo " The MODULE_VERSIONS in the current linux source"
echo " are different from the current linux image."
echo " Or the MODULE_VERSIONS have been turned off in"
echo " the current linux source."
echo
echo " In this case, take this messages as a WARNING, and"
echo " proceed with ${DISTR_NAME} installation."
echo " After the installation is complete, run"
echo
echo " wanrouter hwprobe"
echo
echo " to test ${DISTR_NAME} kernel modules!."
echo " If the hardware probe is successfull ignore the"
echo " above message, otherwise call Sangoma Tech Support"
echo ""
rm -f $PROD_HOME/tmp.$$
if [ -d "$DRIVER_TMP_DIR" ]; then
rm -rf $DRIVER_TMP_DIR
fi
pause
fi
rm -f $PROD_HOME/tmp.$$
fi
fi
#OPTIONAL
if [ -d "$DRIVER_TMP_DIR" ] && [ "$DEVEL_DEBUG" = "NO" ]; then
rm -rf $DRIVER_TMP_DIR
fi
getyn "Visually Confirm that driver compilation was successful!"
if [ $? -eq 0 ]; then
echo "Compilation Successful."
DRIVERS_COMPILED=yes
else
echo "Compilation Failed!"
return 1
fi
return 0
}
function install_chan_woomera()
{
AST_MODULES=chan_woomera.c
if test $NONINTERACTIVE; then
ast_src_dir=/usr/src/asterisk
fi
cd $PROD_HOME/$SSMG_DIR
cd sangoma_mgd.trunk
CUR_PWD=`pwd`
if [ "$ast_src_dir" = "" ]; then
echo
echo "Please Specify Asterisk Source Directory"
echo "Default [/usr/src/asterisk] just press <enter>"
echo
echo -n "Asterisk Source: "
read ast_src_dir
if [ "$ast_src_dir" = "" ]; then
ast_src_dir="/usr/src/asterisk"
fi
fi
echo
echo
echo "Installing chan_woomera in: $ast_src_dir"
echo
if [ ! -d $ast_src_dir ]; then
echo
echo "Directory $ast_src_dir not found!"
echo
return 1
fi
if [ ! -e $ast_src_dir/contrib/scripts/astxs ]; then
echo
echo "Invalid asterisk source in $ast_src_dir"
echo
return 1
fi
eval "cp -f g711.h $ast_src_dir/"
eval "cp -f $AST_MODULES $ast_src_dir/"
cd $ast_src_dir
for mod in $AST_MODULES
do
echo "Installing: $mod"
eval "perl ./contrib/scripts/astxs -install $mod > /dev/null"
if [ $? -ne 0 ]; then
echo
echo "Error: Failed to install $mod module!"
install_failures=$install_failures"$mod "
else
echo "Done"
fi
done
cd $CUR_PWD
if [ "$install_failures" = "" ]; then
echo
echo "Installatoin Complete"
echo
else
echo
echo "-------------------------------------"
echo
echo "There was an ERROR in asterisk modules installation"
echo "Following modules failed to install:"
echo -e "\t$install_failures"
echo
echo
return 1
fi
return 0
}
function install_ssmg ()
{
if [ "$SSMG" != "YES" ]; then
return 0;
fi
cd $PROD_HOME/$SSMG_DIR
banner
echo "Installing LibSangoma Library..."
cd libsangoma.trunk
eval "./configure; make clean; make; make install" > /dev/null
if [ $? -ne 0 ]; then
echo "FAILED"
return 1
fi
if [ -d /etc/ld.so.conf.d ]; then
\cp -f libsangoma.so.conf /etc/ld.so.conf.d/
eval "ldconfig"
elif [ -f /etc/ld.so.conf ]; then
cat /etc/ld.so.conf libsangoma.so.conf > ldconf.$$
mv ldconf.$$ /etc/ld.so.conf
eval "ldconfig"
else
echo "Warning: LD Conf files not found in /etc directory"
echo "Please add /usr/local/lib to the LD_LIBRARY_PATH"
echo
pause
fi
echo "Installing LibSangoma Library...DONE"
echo
cd $PROD_HOME/$SSMG_DIR
cd sangoma_mgd.trunk
echo "Installing Sangoma Media Gateway Daemon..."
cd lib/libteletone/
eval "./configure --prefix=$ROOT/usr; make clean; make CC=$CC; make install " > /dev/null
if [ $? -ne 0 ]; then
echo "FAILED"
return 1
fi
if [ $superuser = "YES" ]; then
eval "ldconfig"
fi
cd $PROD_HOME/$SSMG_DIR
cd sangoma_mgd.trunk
getyn "Add Woomera config in Asterisk Extensions and Iax Conf"
if [ $? -ne 0 ]; then
return 0;
fi
if [ -f $ROOT/etc/asterisk/extensions.conf ]; then
eval "grep -i woomera $ROOT/etc/asterisk/extensions.conf 2> /dev/null > /dev/null"
if [ $? -ne 0 ]; then
cat $ROOT/etc/asterisk/extensions.conf ./conf/woomera_ext.conf > conf.$$
mv conf.$$ $ROOT/etc/asterisk/extensions.conf
echo "Asterisk extensions.conf file updated with woomera config"
else
echo "Asterisk extensions.conf already updated"
fi
fi
if [ -f $ROOT/etc/asterisk/iax.conf ]; then
eval "grep -i ss7 $ROOT/etc/asterisk/iax.conf 2> /dev/null > /dev/null"
if [ $? -ne 0 ]; then
cat $ROOT/etc/asterisk/iax.conf ./conf/woomera_iax.conf > conf.$$
mv conf.$$ $ROOT/etc/asterisk/iax.conf
echo "Asterisk iax.conf file updated with ss7 guest config"
else
echo "Asterisk iax.conf already updated"
fi
fi
pause
return 0
}
function install_all ()
{
echo "Installing ${DISTR_NAME} Files ... !"
echo "Installing ${DISTR_NAME} Utilities in $ROOT/usr/sbin"
cd $PROD_HOME/util
make install WAN_VIRTUAL=$ROOT > /dev/null 2> /dev/null
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
cd $PROD_HOME
\cp -rf samples $ROOT/etc/wanpipe
install -D -m 755 $PROD_HOME/scripts/wanlite $ROOT/usr/sbin/wanlite
pause
return 0
fi
install -D -m 755 $WANROUTER_STARTUP_SMPL $ROOT/$WANROUTER_STARTUP
cd $PROD_HOME/util/misc
make install WAN_VIRTUAL=$ROOT > /dev/null 2> /dev/null
echo "Installing wanrouter.rc in $ROOT/etc/wanpipe"
cd $PROD_HOME
install -D -m 644 wanrouter.rc $ROOT/etc/wanpipe/wanrouter.rc
echo "Installing wanpipe libraries in $ROOT/etc/wanpipe"
\mkdir -p $ROOT/etc/wanpipe/lib/
\cp -f $PROD_HOME/util/wancfg_legacy/lib/* $ROOT/etc/wanpipe/lib/
echo "Installing firmware in $ROOT/etc/wanpipe/firmware"
\cp -rf firmware $ROOT/etc/wanpipe/
if [ ! -f $ROOT/etc/wanpipe/interfaces ]; then
\mkdir -p $ROOT/etc/wanpipe/interfaces
fi
echo "Installing documentation in $ROOT/usr/share/doc/wanpipe"
if [ ! -d $ROOT/usr/share/doc/wanpipe ]; then
\mkdir -p $ROOT/usr/share/doc/wanpipe
fi
\cp -f doc/* $ROOT/usr/share/doc/wanpipe
\cp -f README* $ROOT/usr/share/doc/wanpipe
echo "Installing sample api code in $ROOT/etc/wanpipe/api"
\cp -rf api $ROOT/etc/wanpipe
\cp -rf samples $ROOT/etc/wanpipe
\cp -rf util/wanec_apilib /etc/wanpipe/api
if [ ! -d $ROOT/etc/wanpipe/scripts ]; then
\mkdir -p $ROOT/etc/wanpipe/scripts
fi
echo "Installing driver headers in $ROOT/etc/wanpipe/api/include/linux"
if [ ! -d $ROOT/etc/wanpipe/api/include/linux ]; then
\mkdir -p $ROOT/etc/wanpipe/api/include/linux
fi
cd $PROD_HOME
if [ -d wan_ec ]; then
cp -rf wan_ec $ROOT/etc/wanpipe
echo "Installing Hardware Echo Cancel Utilites"
cd util/wanec_client
make install WAN_VIRTUAL=$ROOT > /dev/null 2> /dev/null
cd $PROD_HOME
if [ ! -e /dev/wanec ]; then
mknod /dev/wanec c 242 0
fi
else
echo "Hardware Echo Cancel Utilites Not Installed"
fi
cd $PROD_HOME
if [ ! -f $ROOT/etc/wanpipe/api/include/linux/ ]; then
\mkdir -p $ROOT/etc/wanpipe/api/include/linux/
fi
\cp -f $DRIVER_UPDATE_DIR/include/*.* $ROOT/etc/wanpipe/api/include/linux/
pause
return 0
}
function uninstall_all ()
{
echo "Uninstalling ${DISTR_NAME} Binaries!\n"
cd $PROD_HOME/util
make uninstall WAN_VIRTUAL=$ROOT > /dev/null 2> /dev/null
if [ "$PKG_NAME" = "wanpipe-lite" ]; then
pause
return 0;
fi
cd $PROD_HOME/util/misc
make uninstall WAN_VIRTUAL=$ROOT > /dev/null 2> /dev/null
cd $PROD_HOME
rm -f $ROOT/usr/sbin/wp_pppconfig
rm -rf $ROOT/usr/doc/wanpipe
rm -rf $ROOT/etc/wanpipe
pause
return 0
}
function enable_custom_protocols ()
{
local level=$1
if test $NONINTERACTIVE; then
return 0
fi
if [ "$level" != "" ]; then
enable_protocols $DEFAULT_PROTOCOLS
fi
while [ 1 ];
do
banner
if [ "$level" = "" ]; then
cat <<ENDOFTEXT
DEFAULT Protocols
ENDOFTEXT
if [ $FR_PROT = NO ]; then
echo -n "[FR] : Frame Relay "
else
echo -n "[FR]* : Frame Relay "
fi
if [ $PPP_PROT = NO ]; then
echo "[PPP] : PPP"
else
echo "[PPP]* : PPP"
fi
if [ $CHDLC_PROT = NO ]; then
echo -n "[CHDLC] : Cisco HDLC "
else
echo -n "[CHDLC]* : Cisco HDLC "
fi
if [ $X25_PROT = NO ]; then
echo "[X25] : X25 API"
else
echo "[X25]* : X25 API"
fi
echo
# cat <<ENDOFTEXT
#
# Kernel Protocol Implementations
#ENDOFTEXT
if [ $MFR_PROT = NO ]; then
echo -n "[MFR] : MP Frame Relay "
else
echo -n "[MFR]* : MP Frame Relay "
fi
if [ $MPPP_PROT = NO ]; then
echo "[MPROT] : MP Prot"
else
echo "[MPROT]* : MP Prot"
fi
if [ $ADSL_PROT = NO ]; then
echo -n "[ADSL] : ADSL (S518) "
else
echo -n "[ADSL]* : ADSL (S518) "
fi
if [ $ATM_PROT = NO ]; then
echo "[ATM] : ATM"
else
echo "[ATM]* : ATM"
fi
echo
if [ $AFT_TE1_PROT = NO ]; then
echo -n "[AFT_TE1] : AFT_TE1 (A101/2/4)"
else
echo -n "[AFT_TE1]*: AFT_TE1 (A101/2/4)"
fi
if [ $AFT_TE3_PROT = NO ]; then
echo "[AFT_TE3] : AFT_TE3 (A105)"
else
echo "[AFT_TE3]*: AFT_TE3 (A105)"
fi
echo
fi
cat <<ENDOFTEXT
API Protocols
ENDOFTEXT
if [ $SDLC_PROT = NO ]; then
echo -n "[SDLC] : SDLC "
else
echo -n "[SDLC]* : SDLC "
fi
if [ $BISYNC_PROT = NO ]; then
echo "[BISYNC] : MP Bisync"
else
echo "[BISYNC]* : MP Bisync"
fi
if [ $BSCSTRM_PROT = NO ]; then
echo -n "[BSCSTRM] : Bisync Stream "
else
echo -n "[BSCSTRM]*: Bisync Stream "
fi
if [ $BITSTRM_PROT = NO ]; then
echo "[BITSTRM] : Bit Stream"
else
echo "[BITSTRM]*: Bit Stream"
fi
if [ $POS_PROT = NO ]; then
echo -n "[POS] : POS (S509/S515) "
else
echo -n "[POS]* : POS (S509/S515) "
fi
if [ $EDU_PROT = NO ]; then
echo "[EDU] : Wan EduKit"
else
echo "[EDU]* : Wan EduKit"
fi
if [ $SS7_PROT = NO ]; then
echo -n "[SS7] : SS7 L2 (S514) "
else
echo -n "[SS7]* : SS7 L2 (S514) "
fi
if [ $ANNEXG_PROT = NO ]; then
echo "[MPAPI] : MP API"
else
echo "[MPAPI]* : MP API"
fi
if [ $ADCCP_PROT = NO ]; then
echo -n "[ADCCP] : ADCCP LAPB API "
else
echo -n "[ADCCP]* : ADCCP LAPB API "
fi
if [ $ASYHDLC_PROT = NO ]; then
echo "[ASYHDLC] : Async HDLC API"
else
echo "[ASYHDLC]*: Async HDLC API"
fi
if [ $LIPAPI_PROT = NO ]; then
echo -n "[LIPAPI] : LIP XDLC/LAPB "
else
echo -n "[LIPAPI]* : LIP XDLC/LAPB "
fi
if [ $TDM_PROT = NO ]; then
echo "[TDM] : TDMV Asterisk"
else
echo "[TDM]* : TDMV Asterisk $TDM_DCHAN"
fi
if [ $XMTP2_PROT = NO ]; then
echo "[XMTP2] : XMTP2 SS7 "
else
echo "[XMTP2]* : XMTP2 SS7 "
fi
cat <<ENDOFTEXT
[DEF] : Enable All Default [API] : Enable All API
[ALL] : Enable All Protocols [NONE]: Disable ALL Protocols
[EXIT|Q|q]: Exit Protocol Selection
ENDOFTEXT
echo -n "Please select a protocol option in [<opt>]: "
read response
if [ "$response" = "EXIT" ]; then
return 0;
fi
if [ "$response" = "Q" ]; then
return 0;
fi
if [ "$response" = "q" ]; then
return 0;
fi
echo "$response" | grep "DEF" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $DEFAULT_PROTOCOLS
fi
echo "$response" | grep "^API" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $API_PROTOCOLS
fi
echo "$response" | grep "ALL" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $DEFAULT_PROTOCOLS
enable_protocols $API_PROTOCOLS
fi
echo "$response" | grep "NONE" > /dev/null
if [ $? -eq 0 ]; then
init_all_protocols
fi
echo "$response" | grep "TDM" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $response
enable_protocols AFT_TE1
fi
if [ $response != "DEF" ] &&
[ $response != "API" ] &&
[ $response != "ALL" ] &&
[ $response != "NONE" ] &&
[ $response != "TDM" ]; then
enable_protocols $response
if [ $? -ne 0 ]; then
pause
fi
fi
done
}
search_and_replace()
{
local input_file_name=$1
local output_file_name=$2
local search_str="$3"
local replace_str="$4"
local tmp_file=output.tmp
#echo "input_file_name:$input_file_name"
#echo "output_file_name:$output_file_name"
#echo "search_str:$search_str"
#echo "replace_str:$replace_str"
eval "grep '$search_str' $input_file_name > /dev/null 2> /dev/null"
if [ $? -ne 0 ]; then
echo "Did NOT find the seached str:$search_str"
return 1
else
#echo "Found the seached str"
eval "sed 's/'\"$search_str\"'/'\"$replace_str\"'/' $input_file_name > $tmp_file"
mv $tmp_file $output_file_name
fi
return $?
}
function tdmv_get_zaptel_path ()
{
if [ $ZAPTEL_PATH_OP != "YES" ]; then
find_zap_dirs
fi
if [ 0 ]; then
if [ $ZAPTEL_PATH_OP != "YES" ]; then
echo
echo -e "\nPlease specify absolute path to Zaptel source directory"
echo -e "\n[default:$ZAPTEL_INSTALL_DIR]\n"
echo -n "<specify path:> "
if [ ! -d $ZAPTEL_INSTALL_DIR ]; then
echo -e "Warning: $ZAPTEL_INSTALL_DIR does not exist\n"
fi
if test -z $NONINTERACTIVE; then
read response
[ $response ] && {
ZAPTEL_INSTALL_DIR=$response
}
fi
fi
if [ ! -f $ZAPTEL_INSTALL_DIR/zaptel.h ]; then
echo " Zaptel source not found in $ZAPTEL_INSTALL_DIR"
ZAPTEL_INSTALL_DIR="/usr/src/zaptel"
if test $NONINTERACTIVE; then
return 1
else
getyn " Press Y to specify another Zaptel source directory, N to exit"
if [ $? -ne 0 ]; then
exit 1;
fi
tdmv_get_zaptel_path
fi
fi
fi
#zaptel.c renamed to zaptel-base.c in zaptel v1.2.13 and later
if [ -e $ZAPTEL_INSTALL_DIR/zaptel-base.c ]; then
ZAPTEL_C_FILE="zaptel-base.c";
fi
return 0;
}
function tdmv_apply_zaptel_dchan_patch_old ()
{
local rc
ZAPTEL_PATCH_FILE=zaptel.patch
if [ ! -e $PROD_HOME/zaptel ]; then
echo "Error: Zaptel Patch Directory Not Found!"
return 1;
fi
lhome=`pwd`
cd $ZAPTEL_INSTALL_DIR
if [ ! -e CVS ]; then
ZAPTEL_PATCH_FILE=zaptel-1.0.9.patch
fi
if [ ! -f $PROD_HOME/zaptel/$ZAPTEL_PATCH_FILE ];then
echo "Error: Zaptel Patch File zaptel/$ZAPTEL_PATCH_FILE Not Found!"
cd $lhome
return 1;
fi
eval "grep \"DCHAN_TX\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
eval "grep \"ZT_DCHAN_TX_V2\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Zaptel DCHAN patch V.02 already installed"
cd $lhome
return 0
else
echo "ERROR: Old Zaptel DCHAN patch detected in $ZAPTEL_INSTALL_DIR"
echo
echo " Please install a fresh version of Zaptel source and"
echo " run ./Setup again."
echo
cd $lhome
exit 1
fi
fi
cp $PROD_HOME/zaptel/$ZAPTEL_PATCH_FILE zaptel.patch
eval "patch -p1 < zaptel.patch"
rc=$?
echo
if [ $rc -ne 0 ]; then
echo "Zaptel DCHAN Patch Failed"
rc=1
else
eval "grep \"ZT_DCHAN_TX_V2\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Zaptel Source Patched with DCHAN V.02 Successfully"
rc=0
else
echo "Zaptel DCHAN V.02 Patch Failed"
rc=1
fi
fi
cd $lhome
return $rc
}
function tdmv_apply_zaptel_chunk_patch () {
lhome=`pwd`
TEMP=tmp
cd $ZAPTEL_INSTALL_DIR
echo "Applying Zaptel Chunk patch..."
echo " "
#modify zaptel.h
eval "cat zaptel.h | sed '/^#define ZT_CHUNKSIZE/c\#define ZT_CHUNKSIZE $ZAP_CHUNK' >$TEMP 2>/dev/null"
if [ $? -ne 0 ]; then
echo " Failed to substitute ZT_CHUNKSIZE string in zaptel.h"
exit 1
else
eval "\mv -f $TEMP zaptel.h"
if [ $? -ne 0 ]; then
echo " Failed to overwrite existing zaptel.h"
exit 1
else
echo " Zaptel patched for chunk size successfully"
zaptel_modified=1
fi
fi
#remove wct4xxp module from Makefile
eval "cat Makefile |sed 's/wct1xxp wct4xxp wcte11xp/wct1xxp wcte11xp/g'>$TEMP 2>/dev/null "
if [ $? -ne 0 ]; then
echo " Failed to remove wct4xxp from Makefile"
exit 1
else
eval "\mv -f $TEMP Makefile"
if [ $? -ne 0 ]; then
echo " Failed to overwrite existing Makefile"
exit 1
else
echo " wct4xxp module removed from Makefile successfully"
zaptel_modified=1
fi
fi
eval "cat Makefile |sed 's/^SUBDIR_MODULES:=.*//g'>$TEMP 2>/dev/null "
if [ $? -ne 0 ]; then
echo " Failed to remove wct4xxp from Makefile"
exit 1
else
eval "\mv -f $TEMP Makefile"
if [ $? -ne 0 ]; then
echo " Failed to overwrite existing Makefile"
exit 1
else
echo " wct4xxp module removed from Makefile successfully"
zaptel_modified=1
fi
fi
if [ -f Makefile.kernel26 ]; then
eval "cat Makefile.kernel26 | sed 's/^obj-m.*+=.*wct4xx.*//g'>$TEMP 2>/dev/null "
if [ $? -ne 0 ]; then
echo " Failed to remove wct4xxp from Makefile.kernel26"
exit 1
else
eval "\mv -f $TEMP Makefile.kernel26"
echo " wct4xxp module removed from Makefile.kernel26 successfully"
zaptel_modified=1
fi
fi
cd $lhome
return 0;
}
function tdmv_apply_zaptel_echo_debug_patch ()
{
local rc
if [ ! -e $PROD_HOME/zaptel ]; then
echo "Error: Zaptel Patch Directory Not Found!"
return 1;
fi
if [ ! -f $PROD_HOME/zaptel/$ZAPTEL_C_ECHO_DEBUG_PATCH ]; then
echo "Error: file $ZAPTEL_C_ECHO_DEBUG_PATCH Not Found!"
return 1;
fi
if [ ! -f $PROD_HOME/zaptel/$ZAPTEL_H_ECHO_DEBUG_PATCH ]; then
echo "Error: file $ZAPTEL_H_ECHO_DEBUG_PATCH Not Found!"
return 1;
fi
#######################################################################################
lhome=`pwd`
cd $ZAPTEL_INSTALL_DIR
#check if some version of the patch is already installed in $ZAPTEL_C_FILE
eval "grep \"GET_ECHO_SPIKE_SAMPLE\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Echo Debugging patch for Zaptel already installed in $ZAPTEL_C_FILE."
echo "Consider using fresh (unpatched) Zaptel source."
cd $lhome
return 0
fi
#check if some version of the patch is already installed in zaptel.h
eval "grep \"ECHO_SPIKE_SAMPLE_LEN\" zaptel.h > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Echo Debugging patch for Zaptel already installed in zaptel.h."
echo "Consider using fresh (unpatched) Zaptel source."
cd $lhome
return 0
fi
#######################################################################################
cp $PROD_HOME/zaptel/$ZAPTEL_C_ECHO_DEBUG_PATCH .
eval "patch $ZAPTEL_C_FILE $ZAPTEL_C_ECHO_DEBUG_PATCH > /dev/null 2> /dev/null"
rc=$?
if [ $rc -ne 0 ]; then
echo "Echo Detection patch for Zaptel Failed (1)"
cd $lhome
return 1
fi
#######################################################################################
eval "search_and_replace zaptel.h zaptel.h \"$ZAPTEL_H_SEARCH_STR\" \"$ZAPTEL_H_ECHO_DEBUG_PATCH_STR\""
rc=$?
if [ $rc -ne 0 ]; then
echo "Echo Detection patch for Zaptel Failed (2)"
cd $lhome
return 1
fi
#######################################################################################
cp $PROD_HOME/zaptel/$ZAPTEL_H_ECHO_DEBUG_PATCH .
eval "patch zaptel.h $ZAPTEL_H_ECHO_DEBUG_PATCH > /dev/null 2> /dev/null"
rc=$?
echo
if [ $rc -ne 0 ]; then
echo "Echo Detection patch for Zaptel Failed (3)"
cd $lhome
return 1
fi
#######################################################################################
echo " Zaptel Source patched with Echo Debugging code Successfully"
zaptel_modified=1
rc=0
cd $lhome
return $rc
}
function tdmv_apply_zaptel_edac_patch ()
{
local rc
if [ ! -e $PROD_HOME/edac ]; then
echo "Error: Zaptel Patch Directory Not Found!"
return 1;
fi
if [ ! -f $PROD_HOME/edac/$EDAC_ZAP_PATCH_FILE ]; then
echo "Error: Echo Detection patch file for Zaptel edac/$EDAC_ZAP_PATCH_FILE Not Found!"
return 1;
fi
lhome=`pwd`
cd $ZAPTEL_INSTALL_DIR
#check if some version of the patch is already installed
eval "grep \"SANGOMA_GET_ED_STATE\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Echo Detection patch for Zaptel already installed."
echo "Consider using fresh (unpatched) Zaptel source."
cd $lhome
return 0
fi
cp $PROD_HOME/edac/$EDAC_ZAP_PATCH_FILE .
#eval "patch -F 3 -c -d $ZAPTEL_INSTALL_DIR < $EDAC_ZAP_PATCH_FILE"
eval "patch -p1 < $EDAC_ZAP_PATCH_FILE"
rc=$?
echo
if [ $rc -ne 0 ]; then
echo "Echo Detection patch for Zaptel Failed"
rc=1
else
eval "grep \"SANGOMA_GET_ED_STATE\" $ZAPTEL_C_FILE > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Zaptel Source patched with Echo Detection V1.00 Successfully"
rc=0
else
echo "Echo Detection and Control patch for Zaptel failed!"
rc=1
fi
fi
cd $lhome
zaptel_modified=1
return $rc
}
function tdmv_apply_asterisk_edac_patch ()
{
local rc
tdmv_get_asterisk_source_path
if [ $? -ne 0 ]; then
return 1;
fi
if [ ! -e $PROD_HOME/edac ]; then
echo "Error: Zaptel Patch Directory Not Found!"
return 1;
fi
if [ -d $ASTERISK_INSTALL_DIR/CVS ]; then
#We are running Asterisk CVS use the CVS patch
EDAC_ASTERISK_PATCH_FILE=$EDAC_ASTERISK_CVS_PATCH_FILE
fi
if [ ! -f $PROD_HOME/edac/$EDAC_ASTERISK_PATCH_FILE ]; then
echo "Error: Echo Detection patch file for Asterisk edac/$EDAC_ASTERISK_PATCH_FILE Not Found!"
return 1;
fi
lhome=`pwd`
cd $ASTERISK_INSTALL_DIR/channels
#check if some version of the patch is already installed
eval "grep \"SANGOMA_SPIKE_SAMPLE_LEN\" chan_zap.c > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Echo Detection patch for Asterisk already installed."
echo "Consider using fresh (unpatched) Asterisk source."
cd $lhome
return 0
fi
cd $ASTERISK_INSTALL_DIR
cp $PROD_HOME/edac/$EDAC_ASTERISK_PATCH_FILE .
eval "patch -p1 < $EDAC_ASTERISK_PATCH_FILE"
rc=$?
echo
if [ $rc -ne 0 ]; then
echo "Echo Detection patch for Asterisk Failed"
rc=1
else
cd $ASTERISK_INSTALL_DIR/channels
eval "grep \"SANGOMA_SPIKE_SAMPLE_LEN\" chan_zap.c > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
echo "Asterisk Source patched with Echo Detection V1.00 Successfully"
rc=0
else
echo "Echo Detection and Control patch for Asterisk failed!"
rc=1
fi
fi
cd $lhome
return $rc
}
function tdmv_compile_zaptel()
{
lhome=`pwd`
cd $ZAPTEL_INSTALL_DIR
echo
echo -n " Removing current Zaptel compilation(make clean)..."
if [ -f configure ]; then
eval "./configure >> $PROD_HOME/zaptel_compilation_log 2>> $PROD_HOME/zaptel_compilation_log"
fi
eval "make clean >> $PROD_HOME/zaptel_compilation_log 2>> $PROD_HOME/zaptel_compilation_log"
if [ ! $? -eq 0 ]; then
cat $PROD_HOME/zaptel_compilation_log
echo
echo "Error: Could not remove current Zaptel Compilation"
echo " See $PROD_HOME/zaptel_compilation_log for details"
echo " Contact Sangoma Tech Support"
echo
getyn "Would you like to continue?"
if [ $? -ne 0 ]; then
exit 1
fi
else
echo "OK"
if [ -e menuselect/mxml ]; then
cd menuselect/mxml
eval "grep \" $ZAPTEL_MENUSELECT_SEARCH_STR\" Makefile.in > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
eval "search_and_replace Makefile.in Makefile.in \"$ZAPTEL_MENUSELECT_SEARCH_STR\" \"$ZAPTEL_MENUSELECT_REMOVE\""
fi
if [ -e Makefile ]; then
eval "grep \" $ZAPTEL_MENUSELECT_SEARCH_STR\" Makefile > /dev/null 2> /dev/null"
if [ $? -eq 0 ]; then
eval "search_and_replace Makefile Makefile \"$ZAPTEL_MENUSELECT_SEARCH_STR\" \"$ZAPTEL_MENUSELECT_REMOVE\""
fi
fi
fi
fi
cd $ZAPTEL_INSTALL_DIR
echo -n " Recompiling/reinstalling Zaptel(make install)..."
eval "make >> $PROD_HOME/zaptel_compilation_log 2>> $PROD_HOME/zaptel_compilation_log"
if [ ! $? -eq 0 ]; then
echo
echo
echo "-------------------------------------------"
cat $PROD_HOME/zaptel_compilation_log
echo "-------------------------------------------"
echo
echo "Error: Zaptel recompilation/reinstallation failed"
echo " See $PROD_HOME/zaptel_compilation_log for details"
echo " Contact Sangoma Tech Support"
echo
getyn "Would you like to continue?"
if [ $? -ne 0 ]; then
exit 1
fi
else
eval "make install >> $PROD_HOME/zaptel_compilation_log 2>> $PROD_HOME/zaptel_compilation_log"
echo "OK"
echo
fi
cd $lhome
}
function tdmv_check_zaptel_udev()
{
echo -n "Checking for UDEV Zaptel compatibility..."
if [ ! -e /etc/udev ]; then
echo
echo " UDEV rules not used "
return 0
fi
#UDEV rules
if [ ! -f /etc/udev/rules.d/50-udev.rules ]; then
echo " UDEV rules not found/or not used "
return 0
else
eval "grep \"zapctl\" /etc/udev/rules.d/50-udev.rules > /dev/null"
if [ $? -ne 0 ]; then
echo
getyn " Would you like to add UDEV rules for Zaptel devices ?"
if [ $? -eq 0 ]; then
cp /etc/udev/rules.d/50-udev.rules /etc/udev/rules.d/50-udev.rules.old
# echo "Your original udev rules have been copied to /etc/udev/rules.d/50-udev.rules.old"
cat $PROD_HOME/samples/udevRulesPatch >> /etc/udev/rules.d/50-udev.rules
eval "grep \"zapctl\" /etc/udev/rules.d/50-udev.rules > /dev/null"
if [ $? -eq 0 ]; then
echo " UDEV rules applied successfully"
else
echo " UDEV rules patch failed"
return 1
fi
fi
else
echo "OK"
fi
fi
#UDEV permissions
if [ ! -f /etc/udev/permissions.d/50-udev.permissions ]; then
echo " UDEV permissions not found/or not used "
return 0
else
eval "cat /etc/udev/permissions.d/50-udev.permissions |grep zap |grep root:root > /dev/null"
if [ $? -ne 0 ]; then
echo
getyn " Would you like to add UDEV permissions for root user ?"
if [ $? -eq 0 ]; then
cp /etc/udev/permissions.d/50-udev.permissions /etc/udev/permissions.d/50-udev.permissions.old
# echo "Your original udev permisions have been copied to /etc/udev/permissions.d/50-udev.permissions.old"
echo -e "\n# zaptel devices -- for running asterisk as root" >> /etc/udev/permissions.d/50-udev.permissions
echo -e "zap/*:root:root:05700" >> /etc/udev/permissions.d/50-udev.permissions
eval "cat /etc/udev/permissions.d/50-udev.permissions |grep zap |grep root:root:05700 > /dev/null"
if [ $? -eq 0 ]; then
echo " UDEV root permissions applied successfully"
else
echo " UDEV permissions patch failed"
fi
fi
fi
eval "cat /etc/udev/permissions.d/50-udev.permissions |grep zap |grep asterisk:asterisk > /dev/null"
if [ $? -ne 0 ]; then
echo
getyn " Would you like to add UDEV Permissions for non-root user?"
if [ $? -eq 0 ]; then
echo -e "\n# zaptel devices -- for running asterisk as a different user " >> /etc/udev/permissions.d/50-udev.permissions
echo -e "zap/*:asterisk:asterisk:660" >> /etc/udev/permissions.d/50-udev.permissions
eval "cat /etc/udev/permissions.d/50-udev.permissions |grep zap |grep asterisk:asterisk:660 > /dev/null"
if [ $? -eq 0 ]; then
echo " UDEV non-root permissions applied successfully"
else
echo " UDEV permissions patch failed"
fi
fi
fi
fi
echo
pause
echo
}
function find_zap_dirs_invalid ()
{
echo
echo "Invalid Response $response"
echo
clear
find_zap_dirs "$1"
}
function find_zap_dirs ()
{
local cnt
local dir
local zapdir_manual=0
local zapdirs=$1
echo
echo "Looking for zaptel directory in /usr/src ..."
echo "-------------------------------------------"
if [ "$zapdirs" = "" ]; then
zapdirs=`find /usr/src -maxdepth 2 -name 'zaptel*' | xargs `
if [ -d "/usr/src/zaptel" ]; then
zapdirs="/usr/src/zaptel "$zapdirs
fi
fi
unset zapdir_array;
if [ -f $PROD_HOME/zaptel/zaptel.path ]; then
zapextradir=`cat $PROD_HOME/zaptel/zaptel.path`
fi
cnt=1
for dir in $zapdirs
do
if [ ! -d $dir ]; then
continue
fi
if [ ! -f $dir/zaptel.h ];then
continue;
fi
if [ "$dir" = "/usr/src/zaptel" ] && [ $cnt -ne 1 ]; then
continue;
fi
zapdir_array[$cnt]=$dir;
echo "$cnt : $dir "
cnt=$((cnt+1))
done
if [ $cnt -eq 1 ]; then
echo
echo "No zaptel dirs found in /usr/src "
echo "Please use option \"m\" to enter zaptel path"
echo
fi
echo "------------------------------------------ "
for dir in $zapextradir
do
if [ ! -d $dir ]; then
continue
fi
if [ ! -f $dir/zaptel.h ]; then
continue;
fi
zapdir_array[$cnt]=$dir;
echo "$cnt : $dir (entered manually) "
cnt=$((cnt+1))
done
echo "------------------------------------------ "
echo "m : Enter zaptel path manually"
echo
# echo "d2: Download Latest 1.2"
# echo "d4: Download Latest 1.4"
echo "(ctrl-c to Exit)"
echo -n "Please select working zaptel directory [1-$((cnt-1))][m]: "
response=1
if [ -z $NONINTERACTIVE ] || [ $zaptel_auto_install = "YES" ]; then
read response
fi
if [ "$response" = "" ]; then
find_zap_dirs_invalid "$zapdirs"
elif [ $response = "m" ]; then
echo
echo "Please enter zaptel dir: [Default: $ZAPTEL_DFLT_INSTALL_DIR]"
echo -n "#> "
read response
if [ "$response" = "" ]; then
ZAPTEL_INSTALL_DIR=$ZAPTEL_DFLT_INSTALL_DIR
else
ZAPTEL_INSTALL_DIR=$response
fi
zapdir_manual=1
# elif [ $response = "q" ]; then
# find_zap_dir_quit=1
# return 1;
elif [ $response -gt 0 ] && [ $response -lt $cnt ]; then
ZAPTEL_INSTALL_DIR=${zapdir_array[$response]}
else
find_zap_dirs_invalid "$zapdirs"
fi
if [ ! -f $ZAPTEL_INSTALL_DIR/zaptel.h ]; then
echo
echo "Error: zaptel.h not found in $ZAPTEL_INSTALL_DIR"
echo
echo
zapdir_manual=0
pause 1
clear
find_zap_dirs "$zapdirs"
fi
if [ $find_zap_dir_quit -eq 1 ] ; then
ZAPTEL_INSTALL_DIR=$ZAPTEL_DFLT_INSTALL_DIR
return 1
fi
if [ $zapdir_manual -eq 1 ]; then
eval "grep \"$ZAPTEL_INSTALL_DIR\" $PROD_HOME/zaptel/zaptel.path 2> /dev/null > /dev/null "
if [ $? -ne 0 ]; then
echo "$ZAPTEL_INSTALL_DIR" >> $PROD_HOME/zaptel/zaptel.path
fi
fi
#echo "GO AUTOMATIC ZAPDIR= $ZAPTEL_INSTALL_DIR"
ZAPTEL_PATH_OP="YES";
#zaptel.c renamed to zaptel-base.c in zaptel v1.2.13 and later
if [ -e $ZAPTEL_INSTALL_DIR/zaptel-base.c ]; then
ZAPTEL_C_FILE="zaptel-base.c";
fi
return 0;
}
function tdmv_get_asterisk_source_path ()
{
echo
echo -e "\nPlease specify absolute path to Asterisk source directory"
echo -e "\n\t(Press Enter for Default: $ASTERISK_INSTALL_DIR)\n"
if test -z $NONINTERACTIVE; then
read response
[ $response ] && {
ASTERISK_INSTALL_DIR=$response
}
fi
if [ ! -f $ASTERISK_INSTALL_DIR/channels/chan_zap.c ]; then
cat <<ENDOFTEXT
WARNING: The Asterisk Source directory has not been
found in $ASTERISK_INSTALL_DIR!
EDAC installation failed.
ENDOFTEXT
pause
return 1;
fi
return 0;
}
function enable_protocols ()
{
local PROT_MATCH=NO
local PROTOCOL=$1
local ARG
ARG=${2:-NO}
echo "$PROTOCOL" | grep "FR" > /dev/null
if [ $? -eq 0 ]; then
if [ $FR_PROT != YES ]; then
echo "Enabling the FR Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_FR "
fi
PROT_MATCH=YES
FR_PROT=YES
fi
echo "$PROTOCOL" | grep "CHDLC" > /dev/null
if [ $? -eq 0 ]; then
if [ $CHDLC_PROT != YES ]; then
echo "Enabling the CHDLC Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_CHDLC "
fi
PROT_MATCH=YES
CHDLC_PROT=YES
fi
echo "$PROTOCOL" | grep "PPP" > /dev/null
if [ $? -eq 0 ]; then
if [ $PPP_PROT != YES ]; then
echo "Enabling the PPP Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_PPP "
fi
PROT_MATCH=YES
PPP_PROT=YES
fi
echo "$PROTOCOL" | grep "X25" > /dev/null
if [ $? -eq 0 ]; then
if [ $X25_PROT != YES ]; then
echo "Enabling the X25 API Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_X25 "
fi
PROT_MATCH=YES
X25_PROT=YES
fi
echo "$PROTOCOL" | grep "ADSL" > /dev/null
if [ $? -eq 0 ]; then
if [ -z $ARCH ]; then
ARCH=`uname -m`
fi
if [ $KERN_VER != 24 ] && [ $KERN_VER != 26 ]; then
cat <<ENDOFTEXT
WARNING: The ADSL Protocol not supported on non 2.4.X kernels!
Please contact Sangoma Technologies for more info.
Tel. 905 474 1990 ex113
Email: techdesk@sangoma.com
ENDOFTEXT
ADSL_PROT=NO
PROT_MATCH=YES
elif [ $ARCH = "x86_64" ] || [ $ARCH = "ia64" ]; then
cat <<ENDOFTEXT
WARNING: The ADSL Protocol not supported on 64bit architectures!
Please contact Sangoma Technologies for more info.
Tel. 905 474 1990 ex113
Email: techdesk@sangoma.com
ENDOFTEXT
ADSL_PROT=NO
PROT_MATCH=YES
else
if [ $ADSL_PROT != YES ]; then
echo "Enabling the ADSL Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_ADSL "
fi
ADSL_PROT=YES
PROT_MATCH=YES
fi
fi
echo "$PROTOCOL" | grep "KATM" > /dev/null
if [ $? -eq 0 ]; then
if [ $KATM_PROT != YES ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_LIP_KATM "
fi
KATM_PROT=YES
PROT_MATCH=YES
#Note that KATM will also match
#ATM protocol, so ATM will automatically be
#enabled.
fi
echo "$PROTOCOL" | grep "ATM" > /dev/null
if [ $? -eq 0 ]; then
if [ $KERN_VER != 24 ] && [ $KERN_VER != 26 ]; then
cat <<ENDOFTEXT
WARNING: The ATM Protocol not supported on kernels lower than 2.4.0!
Please contact Sangoma Technologies for more info.
Tel. 905 474 1990 ex113
Email: techdesk@sangoma.com
ENDOFTEXT
ATM_PROT=NO
PROT_MATCH=YES
else
if [ $ATM_PROT != YES ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_LIP_ATM -DCONFIG_PRODUCT_WANPIPE_ATM "
fi
ATM_PROT=YES
PROT_MATCH=YES
fi
fi
echo "$PROTOCOL" | grep "XMTP2" > /dev/null
if [ $? -eq 0 ]; then
if [ $XMTP2_PROT != YES ]; then
echo "Enabling the SS7 XMTP2 Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_XMTP2 "
fi
PROT_MATCH=YES
XMTP2_PROT=YES
SSMG=YES
fi
echo "$PROTOCOL" | grep "MFR" > /dev/null
if [ $? -eq 0 ]; then
if [ $MFR_PROT != YES ]; then
echo "Enabling the Multi-Port Frame Relay Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_MULTFR "
fi
PROT_MATCH=YES
MFR_PROT=YES
fi
echo "$PROTOCOL" | grep "MPROT" > /dev/null
if [ $? -eq 0 ]; then
if [ $MPPP_PROT != YES ]; then
echo "Enabling the Multi Protocol Driver"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_MULTPROT "
fi
PROT_MATCH=YES
MPPP_PROT=YES
fi
echo "$PROTOCOL" | grep "EDU" > /dev/null
if [ $? -eq 0 ]; then
if [ $EDU_PROT != YES ]; then
echo "Enabling the EDU Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_EDU "
fi
EDU_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "BISYNC" > /dev/null
if [ $? -eq 0 ]; then
if [ $BISYNC_PROT != YES ]; then
echo "Enabling the BISYNC Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_BSC "
fi
BISYNC_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "BITSTRM" > /dev/null
if [ $? -eq 0 ]; then
if [ $BITSTRM_PROT != YES ]; then
echo "Enabling the BITSTRM Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_BITSTRM "
fi
BITSTRM_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "BSCSTRM" > /dev/null
if [ $? -eq 0 ]; then
if [ $BSCSTRM_PROT != YES ]; then
echo "Enabling the BSCSTRM Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_BSCSTRM "
fi
BSCSTRM_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "SDLC" > /dev/null
if [ $? -eq 0 ]; then
if [ $SDLC_PROT != YES ]; then
echo "Enabling the SDLC Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_SDLC "
fi
SDLC_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "POS" > /dev/null
if [ $? -eq 0 ]; then
if [ $POS_PROT != YES ]; then
echo "Enabling the POS Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_POS "
fi
POS_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "ADCCP" > /dev/null
if [ $? -eq 0 ]; then
if [ $ADCCP_PROT != YES ]; then
echo "Enabling the ADCCP Lapb Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_ADCCP "
fi
ADCCP_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "ASYHDLC" > /dev/null
if [ $? -eq 0 ]; then
if [ $ASYHDLC_PROT != YES ]; then
echo "Enabling the ASYHDLC API Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_ASYHDLC "
fi
ASYHDLC_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "AFT_TE1" > /dev/null
if [ $? -eq 0 ]; then
if [ $AFT_TE1_PROT != YES ]; then
echo "Enabling the AFT TE1 Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_AFT -DCONFIG_PRODUCT_WANPIPE_AFT_TE1 -DCONFIG_PRODUCT_WANPIPE_CODEC_SLINEAR_LAW"
fi
AFT_TE1_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "AFT_TE3" > /dev/null
if [ $? -eq 0 ]; then
if [ $AFT_TE3_PROT != YES ]; then
echo "Enabling the AFT TE3 Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_AFT_TE3 "
fi
AFT_TE3_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "LIPAPI" > /dev/null
if [ $? -eq 0 ]; then
if [ $XDLC_PROT != YES ]; then
echo "Enabling the XDLC Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_XDLC "
fi
if [ $LAPB_PROT != YES ]; then
echo "Enabling the LAPB Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_LIP_LAPB -DCONFIG_PRODUCT_WANPIPE_LIP_LAPD "
fi
XDLC_PROT=YES
LAPB_PROT=YES
LIPAPI_PROT=YES
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "TDM" > /dev/null
if [ $? -eq 0 ]; then
tdmv_get_zaptel_path
if [ $? -eq 0 ]; then
ZAP_MOD_DIR=/lib/modules/$(uname -r)
if [ $KERN_VER -eq 24 ]; then
ZAPTEL_NAME=zaptel.o
else
ZAPTEL_NAME=zaptel.ko
fi
if [ -e $ZAP_MOD_DIR/zaptel/$ZAPTEL_NAME ] && [ -e $ZAP_MOD_DIR/misc/$ZAPTEL_NAME ]; then
echo
echo "-------------------------------------------------------------"
echo "CRITICAL WARNING: Multiple ZAPTEL Installations Found"
echo
echo "./Setup has found MULTIPLE ZAPTEL driver installations in:"
echo " $ZAP_MOD_DIR/zaptel and"
echo " $ZAP_MOD_DIR/misc directory."
echo
echo " The ZAPTEL drivers in $ZAP_MOD_DIR/zaptel are OLD."
echo
echo " This is illegal, and CAN cause Wanpipe to CRASH."
echo
echo " Please solve this PROBLEM by removing OLD ZAPTEL"
echo " kerenl modules before installing WANPIPE. "
echo
echo " eg: rm -rf $ZAP_MOD_DIR/zaptel"
echo " depmod -a"
echo
echo " For more info please Contact Sangoma Technologies."
echo "-------------------------------------------------------------"
TDM_PROT=NO
TDM_DCHAN=
echo
exit 1
else
echo
if [ $TDM_PROT != YES ]; then
echo "Enabling the TDM Voice Asterisk Support"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE "
ASTERISK_IFLAGS="-I$ZAPTEL_INSTALL_DIR"
WANCFG_ZAPTEL_CFG=YES
fi
#Check for new zaptel hw hdlc option
if [ -f $ZAPTEL_INSTALL_DIR/zaptel-base.c ]; then
eval "grep hdlc_hard_xmit $ZAPTEL_INSTALL_DIR/zaptel-base.c > /dev/null 2> /dev/null"
if [ $? -eq 0 ] ; then
echo "Native Zaptel HW HDLC Support Detected - No patch required"
echo "Zaptel source unmodified"
TDM_DCHAN="(DCHAN)"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL "
fi
fi
#Check if dchan patch is already enabled
if [ "$TDM_DCHAN" = "" ]; then
eval "grep ZT_DCHAN_TX_V2 $ZAPTEL_INSTALL_DIR/* 2> /dev/null > /dev/null"
if [ $? -eq 0 ]; then
TDM_DCHAN="(DCHAN)"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN"
echo "Sangoma DCHAN Patch detected in zaptel"
zaptel_modified=1
fi
fi
if [ "$TDM_DCHAN" = "" ]; then
echo
echo
getyn "Enable TDMV DCHAN Native HDLC Support & Patch Zaptel (recommended) ?"
if [ $? -eq 0 ]; then
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN"
echo
eval "$PROD_HOME/patches/sangoma-zaptel-patch.sh $ZAPTEL_INSTALL_DIR"
result=$?
if [ $result -eq 0 ]; then
TDM_DCHAN="(DCHAN)"
echo " Zaptel DCHAN Patch successful"
echo
zaptel_modified=1
elif [ $result -eq 1 ]; then
TDM_DCHAN="(DCHAN)"
echo
zaptel_modified=1
else
echo "Zaptel Update Failed!"
echo
echo "Your zaptel source is now corrupted"
echo "Please untar new zaptel source in $ZAPTEL_INSTALL_DIR."
echo
echo "Please contact Sangoma support!"
echo
TDM_DCHAN=
exit 1
fi
fi
fi
if [ $ZAP_CHUNK_OP == "YES" ] ; then
tdmv_apply_zaptel_chunk_patch
fi
####################################################################
if [ $ENABLE_ECHO_DEBUG -eq 1 ]; then
getyn "Compile Echo Debugging Support for Zaptel ? "
if [ $? -eq 0 ]; then
tdmv_apply_zaptel_echo_debug_patch
if [ $? -eq 0 ]; then
zaptel_modified=1
else
ENABLE_ECHO_DEBUG=0
echo
echo "Echo Debug Patch Failed!! Your Zaptel source may be corrupted!!"
fi
getyn " Confirm Echo Debugging Support for Zaptel Patching ?"
echo
if [ $? -eq 1 ]; then
exit 1
fi
fi
fi
####################################################################
if [ $ENABLE_EDAC -gt 0 ] && [ "$ECHO_MASTER_PROT" = "NO" ]; then
echo
getyn "Compile TDMV Echo Detection and Control (EDAC) Support (y/n)? "
if [ $? -eq 0 ]; then
echo
tdmv_apply_zaptel_edac_patch
if [ $? -eq 0 ]; then
echo
echo "Note: Please recompile/reinstall ZAPTEL drivers"
echo
echo
getyn "Confirm EDAC Zaptel Patching: yes/no to continue!"
#now patch Asterisk
tdmv_apply_asterisk_edac_patch
##############################
if [ $? -eq 0 ]; then
#both Zaptel and Asterisk patched successfully
zaptel_modified=1
asterisk_modified=1
getyn "Confirm EDAC Asterisk Patching: yes/no to continue!"
ECHO_MASTER_PROT=YES
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_ECHOMASTER"
else
echo
ECHO_MASTER_PROT=NO
fi
##############################
else
echo
ECHO_MASTER_PROT=NO
fi
fi
fi
TDM_PROT=YES
if [ $zaptel_modified ] && [ $zaptel_modified -eq 1 ] && [ "$ZAPTEL_COMPILE_DISABLE" = "NO" ]; then
echo
getyn "Recompile/reinstall Zaptel (recommended) ?"
if [ $? -eq 0 ]; then
tdmv_compile_zaptel
else
echo " Recompile/reinstall zaptel after Wanpipe installation"
fi
fi
if [ $asterisk_modified ] && [ $asterisk_modified -eq 1 ]; then
getyn "Your Asterisk source was modified, recompile/reinstall zaptel ?"
if [ $? -eq 0 ]; then
echo "DavidY: Compile Asterisk here"
# tdmv_compile_asterisk
else
echo " Recompile/reinstall Asterisk after Wanpipe installation"
fi
fi
tdmv_check_zaptel_udev
fi
fi
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "MPAPI" > /dev/null
if [ $? -eq 0 ]; then
if [ ! -d $DRIVER_UPDATE_DIR/src/net/annexg ]; then
if [ $ARG = YES ]; then
ANNEXG_LOAD=YES;
else
cat <<ENDOFTEXT
WARNING: The MPAPI Protocol Stacks are not part of this release!
Please contact Sangoma Technologies
Tel. 905 474 1990 ex113
Email: techdesk@sangoma.com
ENDOFTEXT
pause
fi
else
if [ $ANNEXG_PROT != YES ]; then
echo "Enabling the MPAPI Protocol Stacks"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_ANNEXG "
fi
ANNEXG_PROT=YES
if [ $MPPP_PROT != YES ]; then
echo "Enabling the Multi Protocol Driver"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_MULTPROT "
fi
MPPP_PROT=YES
if [ $MFR_PROT != YES ]; then
echo "Enabling the Multi-Port Frame Relay Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_MULTFR "
fi
MFR_PROT=YES
fi
PROT_MATCH=YES
fi
echo "$PROTOCOL" | grep "SS7" > /dev/null
if [ $? -eq 0 ]; then
if [ ! -f $DRIVER_UPDATE_DIR/src/net/sdla_ss7.c ]; then
cat <<ENDOFTEXT
WARNING: The SS7 Protocol is not part of this release!
Please contact Sangoma Technologies
Tel. 905 474 1990 ex113
Email: techdesk@sangoma.com
ENDOFTEXT
pause
else
if [ $SS7_PROT != YES ]; then
echo "Enabling the SS7 Protocol"
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DCONFIG_PRODUCT_WANPIPE_SS7 "
fi
SS7_PROT=YES
fi
PROT_MATCH=YES
fi
if [ $PROT_MATCH = NO ]; then
echo
echo "Error: invalid --protocol option"
echo
echo "Available non-default protocols are: $AVAIL_PROTOCOLS";
echo "Example: ./Setup install --protocol=BITSTRM-BISYNC"
echo
return 1
fi
return 0
}
function init_all_protocols ()
{
FR_PROT=NO
PPP_PROT=NO
CHDLC_PROT=NO
X25_PROT=NO
AFT_TE1_PROT=NO
AFT_TE3_PROT=NO
WAN_FRM_UPDATE_DRIVER=YES
LIP_PROT=YES
LIP_LOAD=YES
ECHO_MASTER_PROT=NO
ADSL_PROT=NO
MFR_PROT=NO
ANNEXG_PROT=NO
ANNEXG_LOAD=NO
MPPP_PROT=NO
ATM_PROT=NO
KATM_PROT=NO
XMTP2_PROT=NO
SS7_PROT=NO
EDU_PROT=NO
BISYNC_PROT=NO
BITSTRM_PROT=NO
BSCSTRM_PROT=NO
SDLC_PROT=NO
POS_PROT=NO
ADCCP_PROT=NO
ASYHDLC_PROT=NO
TDM_PROT=NO
LAPB_PROT=NO
XDLC_PROT=NO
LIPAPI_PROT=NO
EXTRA_LINK_MODULES=""
PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE "
TDM_DCHAN=
}
function detect_rpm_build_utility()
{
local use_rpmbuild=0
RPM=`which rpmbuild`
if [ "$RPM" = "" ]; then
RPM=`which rpm`
if [ "$RPM" = "" ]; then
echo "Error: RPM executable not found!"
exit 1;
fi
else
use_rpmbuild=1
fi
rpmver=`$RPM --version 2> /dev/null | cut -d ' ' -f3 | cut -d '.' -f1`
if [ ! -z $rpmver ] && [ $rpmver -lt 4 ]; then
RPMOPT="--buildroot"
else
if [ $use_rpmbuild -eq 1 ]; then
RPMOPT="--buildroot"
else
RPMOPT="--root"
fi
fi
}
function compile_aft_firmware_util()
{
lhome=`pwd`
\cp -f $PROD_HOME/util/wan_aftup $PROD_HOME/rpmbuild/etc/wanpipe/firmware/ -r
cd $PROD_HOME/rpmbuild/etc/wanpipe/firmware/wan_aftup
echo "Compiling firmware update utilities..."
eval "make wan_aftup" >/dev/null 2>/dev/null
if [ ! $? -eq 0 ]; then
echo "failed"
exit
else
echo "done"
fi
\rm -f *.c
\rm -f *.o
\rm -f *.h
\rm -f Makefile
cd $lhome
}
function usage()
{
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
cat <<ENDOFTEXT | less
USAGE:
======
./Setup {command}
or
./Setup {command} [ optinal command extensions ]
commands:
---------
install : Install/Upgrade WANPIPE
upgrade : Upgrade WANPIPE kernel device drivers
and utilities. (Same as install!)
remove : Uninstall WANPIPE
remove_init : Uninstall WANPIPE Boot Startup Scripts
install_init : Install WANPIPE Boot Startup Scripts
drivers : Re-install and Re-compile
WANPIPE kernel device drivers ONLY
buildrpm : Build the custom WANPIPE RPM binary for the
current system.
For further help read README.rpm
helprpm : RPM build help information.
builddeb : Build the custom WANPIPE Debian binary
: package for current system.
utility : Re-compile WANPIPE Tools/Utilities
<any key> : Help
optional command extensions:
----------------------------
--silent : Non interactive. Run all above commands
without user interaction. Thus default
environment values are assumed such
as:
Linux source dir: $SOURCEDIR
Architecture : uname -m
Kernel Image : uname -r
--builddir : Install WANPIPE package into a virtual
directory. The path must be
absolute and must exist. Default is set
to system root( / ).
eg: --builddir=/root/wanpipe_build
--with-linux: Build modules using a custom linux
source directory. Default value is
set to $SOURCEDIR
eg: --with-linux=/usr/src/linux-2.4.4
--arch : Build modules using a custom defined
architecture. (i686 or i586)
By default: (uname -m)
eg: --arch=i686
--split_rpms: Option to split the rpm build into
util and modules package. Thus,
splitting user space utilities and
kernel modules into two packages.
Default: one rpm package containing
both utilites and modules.
eg: ./Setup buildrpm --split_rpms
--linux-vanilla: Compile wanpipe drivers as if the
current linux source is a vanilla source.
Used to remove the default assumption that
stock distribution kernels pull changes
from higher linux kernel versions.
--no-gcc-debug: Remove -g option out of gcc compile argumetns.
--protocol: Option to compile in extra protocols
that are not installed by default.
eg: ./Setup install --protocol=<PROT>
Extra Protocols Supported:
SS7 : SS7 Level 2 API prot support
BITSTRM: BitStreaming Protocol support
BSCSTRM: Nasdaq BiSync API protocol
BISYNC : Multi-Point Bisync API protocol
SDLC : SDLC API protocol support
EDU : Wan EduKit Driver suporrt
POS : POS (S509/S515) hw/prot support
SDLC : SDLC API protocol
MPAPI : Multi Protocol API: X25,LAPB,DSP
ADCCP : ADCCP API protocol (LapB)
TDM : Hardware TDM VOICE support to Asterisk PBX
ENDOFTEXT
else
cat <<ENDOFTEXT
USAGE:
======
./Setup {command}
commands:
---------
install : Install WANPIPE (LITE)
remove : Uninstall WANPIPE (LITE)
<any key>: Help
ENDOFTEXT
fi
return 0
}
####### MAIN #################################################################
# set -x
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
KERNEL_VERSION=`uname -r`
KERNEL_UNAME=`uname -r`
PKG_NAME=wanpipe
DISTR_NAME="WANPIPE"
PROD=wanrouter
PROD_VER=3.2.2
PROD_HOME=`pwd`
WAN_CONF_DIR=/etc/wanpipe
META_CONF=$WAN_CONF_DIR/$PROD.rc
WAN_INTR_DIR=$PROD_HOME/interfaces
PROD_CONF=$WAN_CONF_DIR/wanpipe1.conf
PROD_PATCH=$PROD_HOME/patches
PROD_INIT=/usr/sbin/
FILELIST=$PROD_HOME/Filelist
SOURCEDIR=/lib/modules/$(uname -r)/build
START_SCRIPT=S11$PROD
OLD_START=S05router
STOP_SCRIPT=K70$PROD
OLD_STOP=K10router
INCLUDE=$SOURCEDIR/include/linux
ROUTER_RC=$META_CONF
UTIL_DIR=$PROD_HOME/util
UTIL_BIN_DIR=$PROD_HOME/util/bin
FIX_211="Fix_below_2211.gz"
ARCH=`uname -m`
WAN_TOOLS="wanconfig sdladump wanpipemon wanpipemon_legacy wpkbdmon wpbackupd"
WANROUTER_STARTUP_SMPL=$PROD_HOME/samples/wanrouter
WANROUTER_STARTUP=/usr/sbin/wanrouter
LINUX_VANILLA=0
DISABLE_GCC_DEBUG=0
ENABLE_EDAC=0
ENABLE_ECHO_DEBUG=0
ZAPTEL_PATH_OP="NO"
ZAPTEL_COMPILE_DISABLE="NO"
ZAP_CHUNK_OP="NO"
CMP_LOG=$PROD_HOME/setup_drv_compile.log
CMP_BUILD=build.sh
CMP_INSTALL=install.sh
CMP_CLEAN=clean.sh
DEVEL_DEBUG=NO
SSMG_DIR=ssmg
WANPIPE_INCLUDE_DIR=/usr/include/wanpipe
WANCFG_ZAPTEL_CFG=NO
WANCFG_ZAPTEL=/usr/sbin/wancfg_zaptel
find_zap_dir_quit=0
zaptel_auto_install="NO"
echo > $CMP_LOG
echo "WANPIPE DRIVER COMPILE LOG" >> $CMP_LOG
echo "`date`" >> $CMP_LOG
echo "-----------------------------------" >> $CMP_LOG
DRIVERS_MOD_LIST="sdladrv.mod.c wanrouter.mod.c wanpipe_syncppp.mod.c wanpipe.mod.c af_wanpipe.mod.c"
DRIVERS_MPAPI_MOD_FILES="wanpipe_lapb.mod.c wanpipe_x25.mod.c wanpipe_dsp.mod.c"
DRIVERS_MPAPI_DSP="dsp_timer.c dsp_subr.c dsp_proc.c dsp_out.c dsp_in.c dsp_iface.c dsp_api_iface.c"
DRIVERS_MPAPI_LAPB="lapb_iface.c lapb_in.c lapb_out.c lapb_proc.c lapb_subr.c lapb_timer.c lapb_x25_iface.c"
DRIVERS_MPAPI_X25="x25_api_iface.c x25_dsp_iface.c x25_facils.c x25_iface.c x25_in.c x25_out.c x25_proc.c x25_subr.c x25_switch.c x25_timer.c x25_utils.c"
DRIVER_UPDATE_DIR=$PROD_PATCH/kdrivers
DRIVER_TMP_DIR=$PROD_HOME/kdrvtmp
DRIVERS_COMPILED=no
NEW_IF_TYPE=NO
MAKE_PATCH_22X="makefile.patch.2.2.X"
MAKE_PATCH_240="makefile.patch.2.4.0"
MAKE_PATCH_244="makefile.patch.2.4.4"
MAKE_UTILS_PATCH_24X="makefile.patch.utils.2.4.X"
MAKE_UTILS_PATCH_22X="makefile.patch.utils.2.2.X"
AF_WANPIPE_MAKE_PATCH_24X="makefile.af_wanpipe.patch"
TEMP=$PROD_HOME/temp.$$
WANCFG=$PROD_HOME/util/wancfg_legacy/wancfg_legacy
CFGFT1=$PROD_HOME/util/ft1/wanpipe_cfgft1
RPMOPT="--root"
PROTOCOL=""
EXTRA_LINK_MODULES=""
PROTOCOL_DEFINES="-DCONFIG_PRODUCT_WANPIPE_BASE "
SS7_USER_ID="0"
ANNEXG_LOAD=NO
SCTP_LOAD=NO
ZAPTEL_DFLT_INSTALL_DIR="/usr/src/zaptel"
ZAPTEL_INSTALL_DIR=$ZAPTEL_DFLT_INSTALL_DIR
ZAPTEL_C_FILE="zaptel.c"
ASTERISK_IFLAGS=
EDAC_ZAP_PATCH_FILE=ed_zaptel.patch
ASTERISK_INSTALL_DIR="/usr/src/asterisk"
EDAC_ASTERISK_PATCH_FILE=ed_asterisk.patch
EDAC_ASTERISK_CVS_PATCH_FILE=ed_asterisk_cvs.patch
########################################################################
# D channel "search and replace" version of patch
ZAPTEL_C_SEARCH_STR="chan->writen\[chan->inwritebuf\] = amnt;"
ZAPTEL_C_PATCH="if ((chan->flags \& ZT_FLAG_HDLC) \&\& chan->span->ioctl != NULL){\n\
if (chan->span->ioctl(chan, ZT_DCHAN_TX_V2, amnt)==0){\n\
return amnt;\n\
}\n\
}\n\
chan->writen[chan->inwritebuf] = amnt;"
# D channel patching for zaptel version 1.2.17.1/1.4.2.1 or above
ZAPTEL_C_SEARCH_STR_NEW="chan->writen\[res\] = amnt;"
ZAPTEL_C_PATCH_NEW="if ((chan->flags \& ZT_FLAG_HDLC) \&\& chan->span->ioctl != NULL){\n\
if (chan->span->ioctl(chan, ZT_DCHAN_TX_V2, amnt)==0){\n\
return amnt;\n\
}\n\
}\n\
chan->writen[res] = amnt;"
# Zaptel 1.4.2.1 "Menuselect" issue
ZAPTEL_MENUSELECT_SEARCH_STR="autoconf"
ZAPTEL_MENUSELECT_REMOVE=" "
#NOTE1: the 'sed' command does NOT work on more than one line, so the
#closing '*/' will be pushed AFTER the inserted strings.
ZAPTEL_H_SEARCH_STR=" \* 80-85 are reserved for dynamic span stuff"
ZAPTEL_H_PATCH=\
" \* 80-85 are reserved for dynamic span stuff\n\
\*\/\n\
#define ZT_DCHAN_TX _IOR (ZT_CODE, 60, int)\n\
#define ZT_DCHAN_TX_V1 ZT_DCHAN_TX\n\
#define ZT_DCHAN_TX_V2 ZT_DCHAN_TX\n\/\*"
#NOTE2: the "/*" at the end needed to match the leftover '*/' after the comment
########################################################################
#Echo Debug patch is done in 2 parts: 1. is search and replace
# 2. using 'patch' program
#The reason is: 'patch' alone fails, if DCHAN patch already applied
ZAPTEL_C_ECHO_DEBUG_PATCH=zaptel.c.echo_debug.patch
ZAPTEL_H_ECHO_DEBUG_PATCH=zaptel.h.echo_debug.patch
ZAPTEL_H_ECHO_DEBUG_PATCH_STR=\
" \* 80-85 are reserved for dynamic span stuff\n\
\*\/\n\
#define GET_ECHO_SPIKE_SAMPLE _IOR (ZT_CODE, 64, int)\n\
#define SEND_ECHO_SPIKE _IOR (ZT_CODE, 65, int)\n\/\*"
########################################################################
setup_cmd=$1;
# Detect distribution type (FULL or LITE)
DIR=${PROD_HOME##/*/}
if [ $DIR = "wanpipe_lite" ]; then
PKG_NAME=wanpipe-lite
DISTR_NAME="WANPIPE (LITE)"
PROD_VER=`grep "WANPIPE_LITE_VERSION *\"" "${DRIVER_UPDATE_DIR}/include/wanpipe_version.h" | cut -d'"' -f2`
PROD_VER=`echo $PROD_VER | awk '{ gsub(" ", "") ; print }'`
if [ -z $PROD_VER ]; then
PROD_VER=1.1.1
fi
if [ "$setup_cmd" != "install" -a "$setup_cmd" != "remove" ]; then
usage
exit 1
fi
fi
#Initialize supportd protocols
#that are not compiled by default
init_all_protocols
#List of available non-standard protocols
#Used as part of an errror message
AVAIL_PROTOCOLS="
SS7 EDU BISYNC BITSTRM BSCSTRM SDLC
POS EDU SDLC MPAPI ADCCP TDM
"
#Enable default protocols
DEFAULT_PROTOCOLS="FR-CHDLC-PPP-MFR-MPROT-X25-AFT_TE1-AFT_TE3"
API_PROTOCOLS="SS7-BISYNC-BSCSTRM-BITSTRM-POS-EDU-SDLC-MPAPI-ADCCP-TDM-XDLC-ASYHDLC"
CC=gcc
USR_CC=
KBUILD_VERBOSE=0
KBUILD_DISABLE=0
NO_AUTO_START=0
PROTS=
ROOT=;
WITH_LINUX_OP="NO";
SPLIT_RPMS="NO";
check_bash
check_awk
#Check for kernel series 2.2.X or 2.4.X
eval "uname -r | grep \"^2.4.*\" > /dev/null"
if [ $? -eq 0 ]; then
KERN_VER=24
LINUXDRIVERS_NET="drivers/net/wan"
DEFAULT_PROTOCOLS=$DEFAULT_PROTOCOLS"-ADSL-ATM"
else
eval "uname -r | grep \"^2.6.*\" > /dev/null"
if [ $? -eq 0 ]; then
KERN_VER=26
LINUXDRIVERS_NET="drivers/net/wan"
DEFAULT_PROTOCOLS=$DEFAULT_PROTOCOLS"-ADSL-ATM"
else
KERN_VER=22
LINUXDRIVERS_NET="drivers/net"
eval "uname -r | grep \"^2.0.*\" > /dev/null"
if [ $? -eq 0 ]; then
echo
echo "Wanpipe drivers do not support 2.0.X kernels !!!"
echo "Please upgrade to 2.2.X 2.4.X 2.6.X kernels"
echo "or install an older version of wanpipe, version 2.2.2"
echo
exit 0;
fi
fi
fi
LINUXDRIVERS_WAN="net/wanrouter"
superuser=NO;
if [ "$UID" = 0 ]; then
superuser=YES;
fi
# Check router home directory.
[ -d "$PROD_HOME" ] || {
error "Router home directory ($PROD_HOME) not found"
exit 1
}
NONINTERACTIVE=;
if [ "$setup_cmd" = "remove_init" ]; then
remove_init;
find /etc/rc* | grep wan
exit;
fi
if [ "$setup_cmd" = "install_init" ]; then
install_init;
find /etc/rc* | grep wan
exit;
fi
if [ "$setup_cmd" = "uninstall" ] || [ "$setup_cmd" = "remove" ]; then
remove;
uninstall_all
exit;
fi
if [ "$setup_cmd" = "zaptel" ]; then
setup_cmd="install"
zaptel_auto_install="YES"
#EXTRA_ARGS=" --protocol=TDM --silent --no-zaptel-compile "
EXTRA_ARGS=" --protocol=TDM --silent "
fi
if [ "$setup_cmd" = "buildrpm" ]; then
EXTRA_ARGS=" --no-zaptel-compile "
fi
if [ "$PKG_NAME" != "wanpipe-lite" ]; then
ARGS=$EXTRA_ARGS
while [ ! -z "$2" ];
do
ARGS_tmp=$ARGS"$2 "
ARGS=$ARGS_tmp
shift
done
#echo "ARGS: $ARGS"
for arg in $ARGS
do
#echo
#echo "ARG VAL=$arg"
case $arg in
--silent*)
NONINTERACTIVE=1;
;;
--linux-vanilla*)
LINUX_VANILLA=1;
;;
--no-gcc-debug*)
DISABLE_GCC_DEBUG=1;
;;
--usr-cc*)
USR_CC=`echo $arg | cut -d'=' -f2`;
eval "type $USR_CC";
if [ $? -ne 0 ]; then
echo "Error C compiler: $USR_CC doesnt exist!"
exit 1
fi
check_gcc
if [ $? -ne 0 ]; then
echo "Error: Failed to determine $USR_CC version";
exit 1
fi
CC=$USR_CC
;;
--kbuild-verbose*)
KBUILD_VERBOSE=1
;;
--devel-debug*)
DEVEL_DEBUG="YES"
;;
--kbuild-disable*)
KBUILD_DISABLE=1
;;
--edac*)
#TAKEN OUT
;;
--noautostart*)
NO_AUTO_START=1
;;
--ignore-t1-yellow*)
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DWANPIPE_IGNORE_T1_YELLOW "
;;
--64bit_4G*)
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DWANPIPE_64BIT_4G_DMA "
;;
--hwec_noise_reduction*)
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DWANEC_ENABLE_NOISE_REDUCTION "
;;
--with-linux*)
SOURCEDIR=`echo $arg | cut -d'=' -f2`;
if [ "$SOURCEDIR" = "" ]; then
echo "Error invalied --with-linux option";
exit 1;
fi
if [ ! -d "$SOURCEDIR" ]; then
echo "Error: Linux source directory not found: $SOURCEDIR";
exit 1;
fi
if [ ! -f "$SOURCEDIR/Makefile" ]; then
echo "Error: No vaild linux source found in $SOURCEDIR";
exit 1;
fi
INCLUDE=$SOURCEDIR/include/linux
WITH_LINUX_OP="YES";
;;
--echo-debug*)
ENABLE_ECHO_DEBUG=1;
;;
--zaptel-path*)
ZAPTEL_INSTALL_DIR=`echo $arg | cut -d'=' -f2`;
if [ "$ZAPTEL_INSTALL_DIR" = "" ]; then
echo "Error invalid --zaptel-path option";
exit 1;
fi
if [ ! -d "$ZAPTEL_INSTALL_DIR" ]; then
echo "Error: Zaptel source directory not found: $ZAPTEL_INSTALL_DIR";
exit 1;
fi
if [ ! -f "$ZAPTEL_INSTALL_DIR/Makefile" ]; then
echo "Error: Invalid zaptel source found in $ZAPTEL_INSTALL_DIR";
exit 1;
fi
ZAPTEL_PATH_OP="YES";
echo "Zaptel path defined as: $ZAPTEL_INSTALL_DIR"
;;
--with-zaptel*)
ZAPTEL_INSTALL_DIR=`echo $arg | cut -d'=' -f2`;
if [ "$ZAPTEL_INSTALL_DIR" = "" ]; then
echo "Error invalid --with-zaptel option";
exit 1;
fi
if [ ! -d "$ZAPTEL_INSTALL_DIR" ]; then
echo "Error: Zaptel source directory not found: $ZAPTEL_INSTALL_DIR";
exit 1;
fi
if [ ! -f "$ZAPTEL_INSTALL_DIR/Makefile" ]; then
echo "Error: Invalid zaptel source found in $ZAPTEL_INSTALL_DIR";
exit 1;
fi
ZAPTEL_PATH_OP="YES";
echo "Zaptel path defined as: $ZAPTEL_INSTALL_DIR"
;;
--no-zaptel-compile*)
ZAPTEL_COMPILE_DISABLE="YES";
;;
--builddir*)
ROOT=`echo $arg | cut -d'=' -f2`;
if [ "$ROOT" = "" ]; then
echo "Error: invalid --builddir option";
exit 1;
fi
tmp_val=`echo $ROOT | cut -d'/' -f1`
if [ "$tmp_val" != "" ]; then
echo "Error: invalid builddir directory: must be absolute path!";
exit 1;
fi
if [ ! -d "$ROOT" ]; then
echo "Error: builddir ($ROOT) not found: please create it first!";
exit 1;
fi
export ASTBROOT=$ROOT;
ASTBROOT=$ROOT;
TMP_123=${WANPIPE_INCLUDE_DIR#/*}
WANPIPE_INCLUDE_DIR=$ROOT/$TMP_123
TMP_123=${WANCFG_ZAPTEL#/*}
WANCFG_ZAPTEL=$ROOT/$TMP_123
;;
--acflags*)
USER_CFLAGS=`echo $arg | cut -d'=' -f2`
if [ "$USER_CFLAGS" = "" ]; then
echo "Error: invalid --acflags option: [ string ]";
fi
;;
--ocflags*)
USE_CFLAGS=`echo $arg | cut -d'=' -f2`
if [ "$USER_CFLAGS" = "" ]; then
echo "Error: invalid --ocflags option: [ string ]";
fi
;;
--protocol*)
PROTS=`echo $arg | cut -d'=' -f2`;
;;
--ss7_user_id*)
SS7_USER_ID=`echo $arg | cut -d'=' -f2`;
if [ "$SS7_USER_ID" = "" ]; then
echo "Error: invalid --ss7_user_id option: [ integer ]";
fi
;;
--ss7_ioctl_api*)
PROTOCOL_DEFINES="$PROTOCOL_DEFINES -DSS7_IOCTL_INTERFACE "
;;
--arch*)
ARCH=`echo $arg | cut -d'=' -f2`;
if [ $ARCH != "i686" ] && [ $ARCH != "i586" ] && [ $ARCH != "i486" ] && [ $ARCH != "i386" ] && [$ARCH !="x86_64" ]; then
echo "Error: Invalid Architecture [i686|i586|i486|i386|x86_64]\n"
exit 1;
fi
;;
--split_rpms*)
SPLIT_RPMS="YES";
;;
--force_smp)
FORCE_SMP="YES";
;;
--gz-modules)
GZ_MODULES="YES";
;;
--zap-chunk*)
ZAP_CHUNK=`echo $arg | cut -d'=' -f2`;
if [ $ZAP_CHUNK != "8" ] && [ $ZAP_CHUNK != "16" ] && [ $ZAP_CHUNK != "40" ] && [ $ZAP_CHUNK != "80" ]; then
echo "Error: Invalid Zaptel Chunk size"
exit 1;
else
echo "WARNING: Zaptel custom chunk option is EXPERIMENTAL"
echo "The wct4xxp module will be removed from your system"
getyn "Do you want to use custom Zaptel chunk size of $ZAP_CHUNK"
if [ $? -eq 0 ]; then
ZAP_CHUNK_OP="YES"
else
ZAP_CHUNK_OP="NO"
fi
fi
;;
*)
echo "Invalid option $arg"
exit 1;
;;
esac
done
if [ "$zaptel_auto_install" = "YES" ] && [ "$ZAPTEL_PATH_OP" != "YES" ]; then
find_zap_dirs
fi
if [ "$PROTS" != "" ]; then
echo "$PROTS" | grep "DEF" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $DEFAULT_PROTOCOLS "YES"
fi
echo "$PROTS" | grep "^API" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $API_PROTOCOLS "YES"
fi
echo "$PROTS" | grep "ALL" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols $DEFAULT_PROTOCOLS "YES"
enable_protocols $API_PROTOCOLS "YES"
fi
echo "$PROTS" | grep "TDM" > /dev/null
if [ $? -eq 0 ]; then
enable_protocols AFT_TE1 "YES"
fi
enable_protocols "$PROTS" "YES"
if [ $? -ne 0 ]; then
exit 1
fi
fi
if [ "$setup_cmd" = "drivers" ]; then
apply_patches || exit 1
compile_drivers || exit 1
exit;
fi
if [ "$setup_cmd" = "utility" ]; then
compile_src;
exit;
fi
if [ "$setup_cmd" = "meta" ]; then
install_config;
exit;
fi
if [ "$setup_cmd" = "inst" ]; then
install_all;
exit;
fi
if [ "$setup_cmd" = "ssmg" ]; then
SSMG=YES
install_ssmg;
exit;
fi
if [ "$setup_cmd" = "buildrpm" ] || [ "$setup_cmd" = "builddeb" ]; then
if [ ! -d $SOURCEDIR ]; then
echo
echo "Error: Linux source dir $SOURCEDIR not found!"
echo
exit
fi
if [ "$setup_cmd" = "buildrpm" ]; then
build_dir=rpmbuild
package_name="RPM"
else
build_dir=debbuild
package_name="DEB"
fi
if [ -d $PROD_HOME/$build_dir ]; then
\rm -rf $PROD_HOME/$build_dir > /dev/null 2> /dev/null
fi
\mkdir -p $PROD_HOME/$build_dir
PROTS=${PROTS:-$DEFAULT_PROTOCOLS}
enable_protocols $PROTS
get_kernel_ver $SOURCEDIR
banner
echo "
WANPIPE $package_name BUILD
Wanpipe $package_name will be build based on the
following Environment variables.
1. Linux Source Dir : $SOURCEDIR
2. Linux Source Name : $KERNEL_VERSION
3. Current Image Name: $KERNEL_UNAME
4. CPU Type : $ARCH
5. Wan Protocols : $PROTS
6. Build Directory : $PROD_HOME/$build_dir
"
if [ $TDM_PROT = "YES" ]; then
echo " 7. Zaptel Build Dir : $ZAPTEL_INSTALL_DIR "
fi
echo
echo
if [ $KERNEL_UNAME != $KERNEL_VERSION ]; then
echo "
WARNING:
The items 2 and 3 should usually be identical!
If they are not, you are building an $package_name for
a different kernel image name, Setup is assuming
you know what you are doing :)
"
fi
getyn "Would you like to build WANPIPE $package_name ?"
if [ $? -ne 0 ]; then
exit 1
fi
if [ $TDM_PROT = "YES" ]; then
$PROD_HOME/Setup install --silent --builddir=$PROD_HOME/$build_dir --with-linux=$SOURCEDIR --arch=$ARCH --protocol=$PROTS --ss7_user_id=$SS7_USER_ID --noautostart --no-zaptel-compile --zaptel-path=$ZAPTEL_INSTALL_DIR --usr-cc=$CC
else
$PROD_HOME/Setup install --silent --builddir=$PROD_HOME/$build_dir --with-linux=$SOURCEDIR --arch=$ARCH --protocol=$PROTS --ss7_user_id=$SS7_USER_ID --noautostart --usr-cc=$CC
fi
if [ $? -ne 0 ]; then
echo "Error: WANPIPE Installation Failed!"
exit 1;
fi
if [ "$setup_cmd" = "buildrpm" ]; then
compile_aft_firmware_util
detect_rpm_build_utility
if [ "$SPLIT_RPMS" = "YES" ]; then
eval "$RPM -bb --define '_unpackaged_files_terminate_build 0' $RPMOPT $PROD_HOME/rpmbuild $PROD_HOME/rpmspec/wanpipe-util.spec --target=$ARCH"
eval "$RPM -bb --define '_unpackaged_files_terminate_build 0' --define 'kern_ver $KERNEL_VERSION' $RPMOPT $PROD_HOME/rpmbuild $PROD_HOME/rpmspec/wanpipe-mod.spec --target=$ARCH"
else
eval "$RPM -bb --define 'kern_ver $KERNEL_VERSION' $RPMOPT $PROD_HOME/rpmbuild $PROD_HOME/rpmspec/wanpipe.spec --target=$ARCH"
fi
if [ $? -eq 0 ]; then
cat <<ENDOFTEXT
WANPIPE RPM BUILD SUCCESSFUL
The new rpm is located in /usr/src/redhat/RPMS/$ARCH
directory.
To install run:
rpm -i --force <rpm name>
ENDOFTEXT
else
cat <<ENDOFTEXT
WANPIPE RPM BUILD FAILED
Possible Solutions:
-------------------
1. Please make sure that you have
$SOURCEDIR directory pointing to a
linux kernel source.
2. Page up the screen and try to find an
error message during the build process.
3. Contact Sangoma Tech Support
ENDOFTEXT
fi
else
\mkdir -p $PROD_HOME/$build_dir/DEBIAN/
\cp -f deb_control/wanpipe.deb $PROD_HOME/$build_dir/DEBIAN/control
\cp -f deb_control/postinst $PROD_HOME/$build_dir/DEBIAN/
\cp -f deb_control/prerm $PROD_HOME/$build_dir/DEBIAN/
dpkg -b $build_dir > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
pver=${PROD_VER//\./}
build_pkg_name="wanpipe_"$pver"-k"$KVER$KPATCH$KLVL$KEVER"_"$ARCH".deb"
mv -f "$build_dir.deb" $build_pkg_name
cat <<ENDOFTEXT
WANPIPE DEB BUILD SUCCESSFUL
The new rpm is located in $PROD_HOME: $build_pkg_name
To install run:
dpkg -i <deb name>
ENDOFTEXT
else
cat <<ENDOFTEXT
WANPIPE DEB BUILD FAILED
Possible Solutions:
-------------------
1. Please make sure that you have
$SOURCEDIR directory pointing to a
linux kernel source.
2. Page up the screen and try to find an
error message during the build process.
3. Contact Sangoma Tech Support
ENDOFTEXT
fi
fi
if [ -d $PROD_HOME/$build_dir ]; then
rm -rf $PROD_HOME/$build_dir > /dev/null 2> /dev/null
fi
exit 0;
fi
if [ "$1" = "helprpm" ]; then
detect_rpm_build_utility
cat <<ENDOFTEXT
Building a Custom RPM
---------------------
./Setup buildrpm --with-linux=<absolute path> --arch=<custom architecture>
Create a custom rpm using the kernel in
--with-linux directory. Default kernel
location is $SOURCEDIR.
1. The absolute path must point to a
configured (.config file must exist)
kernel source. If path is not supplied
it's defaulted to $SOURCEDIR.
2. The RPM will be build in a virtual
directory called $PROD_HOME/rpmbuild/. Thus, it
will not pollute current environment
except the patches added to the
linux source directory (defined above).
3. --arch is used to specify architecutre option
during compilation of wanpipe kernel modules.
Supported options: i686 to i386.
By default architecture is obtained using the 'uname -m'
command.
In order to further customise a WANPIPE
RPM the user can manully create one.
1) Install WANPIPE package into a virtual
directory (eg: $PROD_HOME/rpmbuild)
./Setup install --silent --builddir=$PROD_HOME/rpmbuild
2) Customize the $PROD_HOME/rpmbulid directory.
eg: Copy already created wanpipe1.conf
configuration file into
$PROD_HOME/rpmbuild/etc/wanpipe directory.
So that the RPM installation will
already have a configured wanpipe card.
3) Build the rpm based on the $PROD_HOME/rpmbuild
directory:
$RPM -bb $RPMOPT $PROD_HOME/rpmbuild \\
$PROD_HOME/rpmspec/wanpipe.spec
ENDOFTEXT
exit 0;
fi
fi
if [ "$setup_cmd" != "install" ] && [ "$setup_cmd" != "upgrade" ]; then
usage
exit 1
fi
welcome || exit 0
prepare || exit 1
apply_patches || exit 1
compile_drivers || exit 1
install_init || exit 1
install_config || exit 1
compile_src || exit 1
install_all
install_ssmg
clean_up
goodbye
if [ -z $NONINTERACTIVE ] && [ "$WANCFG_ZAPTEL_CFG" = "YES" ] && [ -e $WANCFG_ZAPTEL ]; then
echo
echo "Wanpipe / Zaptel Configuration"
echo "=============================="
echo
echo "wancfg_zaptel configurator can create all wanpipe devices"
echo "for ZAPTEL as well as /etc/zaptel.conf file."
echo "Optionally: wancfg_zaptel can also create Asterisk zapata.conf"
echo "-----------------------------------------------------"
getyn "Would you like to configure wanpipe devices for ZAPTEL?"
if [ $? -eq 0 ]; then
eval "$WANCFG_ZAPTEL"
else
echo "Wanpipe Installation Complete"
echo "-----------------------------"
echo "Please proceed to configure wanpipe user /usr/sbin/wancfg"
echo
fi
fi