#!/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 < /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 < /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 "" 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 "" 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-" # 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 "" 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 < $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 < $PROD_HOME/Compile.sh #!/bin/sh make CFLAGS="$tmp" PROTOCOL_DEFINES="$PROTOCOL_DEFINES" ENDOFTEXT tmp=${CFLAGS/$CC/} cat < $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 < $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 < .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 " 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 <]: " 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 " " 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 < /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 < /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 < /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 < /dev/null if [ $? -eq 0 ]; then if [ ! -f $DRIVER_UPDATE_DIR/src/net/sdla_ss7.c ]; then cat < /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 < : 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= 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 <: 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 else cat < /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 else cat < /dev/null 2> /dev/null fi exit 0; fi if [ "$1" = "helprpm" ]; then detect_rpm_build_utility cat < --arch= 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