#!/bin/bash

# Set Sysctl values
sysctl -w kernel.panic=30
sysctl -w kernel.panic_on_oops=30

########Initialize AX.25 Ports and attach devices########

# What IPs are you using for this node's AX.25 devices?
# We assign a different IP to each interface, use as needed
amprIP0=44.128.1.1
amprIP1=44.128.1.2
#amprIP2=44.128.1.3
#amprIP3=44.128.1.4
#amprIP4=44.128.1.5

# Where are we going to log:
fpaclog=/var/log/fpac.log
ax25ipdlog=/var/log/ax25ipd.log

# Ensure IP forwarding is enabled
echo 1 > /proc/sys/net/ipv4/ip_forward

# Start ax25ipd and initialize master end of pseudo tty
echo "Installing ax25ipd Unix98 master pseudo tty"
/usr/sbin/ax25ipd &>$ax25ipdlog
awk '/\/dev\/pts/ {print $1}' $ax25ipdlog > /tmp/unix98
pidof ax25ipd > /var/run/ax25ipd.pid
export AXUDP=`tail -1 /tmp/unix98`
rm -f /tmp/unix98
echo -n "Starting ax25ipd          "
if [ -z "ps x | grep -c $(cat /var/run/ax25ipd.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

# Initialize ax0, attached to port axudp and the slave end of the 
# pseudo tty for ax25ipd
/usr/sbin/kissattach $AXUDP axudp $amprIP0 >/tmp/ax25-config.tmp
awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp
read Device < /tmp/ax25-config-tmp
rm -f /tmp/ax25-config.tmp
rm -f /tmp/ax25-config-tmp
# Check for Device
if [ -d /proc/sys/net/ax25/$Device ]
  then echo "Port axudp attached to $Device"
  cd /proc/sys/net/ax25/$Device/
  ifconfig $Device netmask 255.255.255.255
  ifconfig $Device broadcast 0.0.0.0
  # Parms for axudp - Kernels > 2.6.17
#  echo 10000 > t1_timeout # (Frack) /1000 = seconds ( 1 - 30) seconds
#  echo 3000 > t2_timeout # (RESPtime) /1000 = seconds (1 - 20)seconds
#  echo 300000 > t3_timeout # (Check) /1000 = seconds (0 - 3600) seconds
#  echo 0 > idle_timeout # Disconnect when idle /1000 = seconds (0 or greater)
#  echo 0 > ax25_default_mode # AX25 Default Mode 0 = Normal, 1 = Extended (0)
#  echo 0 > ip_default_mode # IP Default Mode 0 = Standard (mod 7),1 = Extended (mod 127)(0)
#  echo 0 > backoff_type # Backoff 0 = Original, 1 = linear, 2 = exponential (1)
#  echo 256 > maximum_packet_length # Frame Size 1 - 512 (256) - overrides setting in axports
#  echo 2 > connect_mode # Connect Mode 0 = None, 1 = Network, 2 = All (2)
#  echo 8 > maximum_retry_count # N2 (1 -31)
#  echo 180000 > dama_slave_timeout
#  echo 32 > extended_window_size
#  echo 2 > standard_window_size # Max frames - overrides setting in axports
#  echo 0 > protocol
else 
  echo "** Error setting $Device parms **"
fi

sleep 1
# Initialize ax1, attached to port vhfdrop and serial port ttyS0
/usr/sbin/kissattach /dev/ttyS0 vhfdrop $amprIP1 >/tmp/ax25-config.tmp
awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp
read Device < /tmp/ax25-config-tmp
rm -f /tmp/ax25-config.tmp
rm -f /tmp/ax25-config-tmp
# Check for Device
if [ -d /proc/sys/net/ax25/$Device ]
  then echo "Port vhfdrop attached to $Device"
  cd /proc/sys/net/ax25/$Device/
  ifconfig $Device netmask 255.255.255.255
  ifconfig $Device broadcast 0.0.0.0
  # Parms for vhfdrop - Kernels > 2.6.17
#  echo 10000 > t1_timeout # (Frack) /1000 = seconds ( 1 - 30) seconds
#  echo 3000 > t2_timeout # (RESPtime) /1000 = seconds (1 - 20)seconds
#  echo 300000 > t3_timeout # (Check) /1000 = seconds (0 - 3600) seconds
#  echo 0 > idle_timeout # Disconnect when idle /1000 = seconds (0 or greater)
#  echo 0 > ax25_default_mode # AX25 Default Mode 0 = Normal, 1 = Extended (0)
#  echo 0 > ip_default_mode # IP Default Mode 0 = Standard (mod 7),1 = Extended (mod 127)(0)
#  echo 0 > backoff_type # Backoff 0 = Original, 1 = linear, 2 = exponential (1)
#  echo 256 > maximum_packet_length # Frame Size 1 - 512 (256) - overrides setting in axports
#  echo 2 > connect_mode # Connect Mode 0 = None, 1 = Network, 2 = All (2)
#  echo 8 > maximum_retry_count # N2 (1 -31)
#  echo 180000 > dama_slave_timeout
#  echo 32 > extended_window_size
#  echo 2 > standard_window_size # Max frames - overrides setting in axports
#  echo 0 > protocol
else
  echo "** Error setting $Device parms **"
fi
# Adjust KISS Parameters: Persistence=128, slot=10, TX-Delay=250
#/usr/sbin/kissparms -p vhfdrop -r 228 -s 10 -l 20 -t 250

#sleep 1
## Initialize ax2, attached to port uhfdrop and serial port ttyS1
#/usr/sbin/kissattach /dev/ttyS1 uhfdrop $amprIP2 >/tmp/ax25-config.tmp
#awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp
#read Device < /tmp/ax25-config-tmp
#rm -f /tmp/ax25-config.tmp
#rm -f /tmp/ax25-config-tmp
## Check for Device
#if [ -d /proc/sys/net/ax25/$Device ]
#  then echo "Port uhfdrop attached to $Device"
#  cd /proc/sys/net/ax25/$Device/
#  ifconfig $Device netmask 255.255.255.255
#  ifconfig $Device broadcast 0.0.0.0
#  # Parms for uhfdrop - Kernels > 2.6.17
##  echo 10000 > t1_timeout # (Frack) /1000 = seconds ( 1 - 30) seconds
##  echo 3000 > t2_timeout # (RESPtime) /1000 = seconds (1 - 20)seconds
##  echo 300000 > t3_timeout # (Check) /1000 = seconds (0 - 3600) seconds
##  echo 0 > idle_timeout # Disconnect when idle /1000 = seconds (0 or greater)
##  echo 0 > ax25_default_mode # AX25 Default Mode 0 = Normal, 1 = Extended (0)
##  echo 0 > ip_default_mode # IP Default Mode 0 = Standard (mod 7),1 = Extended (mod 127)(0)
##  echo 0 > backoff_type # Backoff 0 = Original, 1 = linear, 2 = exponential (1)
##  echo 256 > maximum_packet_length # Frame Size 1 - 512 (256) - overrides setting in axports
##  echo 2 > connect_mode # Connect Mode 0 = None, 1 = Network, 2 = All (2)
##  echo 8 > maximum_retry_count # N2 (1 -31)
##  echo 180000 > dama_slave_timeout
##  echo 32 > extended_window_size
##  echo 2 > standard_window_size # Max frames - overrides setting in axports
##  echo 0 > protocol
#else
#  echo "** Error setting $Device parms **"
#fi
## Adjust KISS Parameters: Persistence=128, slot=10, TX-Delay=250
##/usr/sbin/kissparms -p uhfdrop -r 228 -s 10 -l 20 -t 250
#
#sleep 1
## Initialize ax3, attached to port west and serial port ttyS2
#/usr/sbin/kissattach /dev/ttyS2 west $amprIP3 >/tmp/ax25-config.tmp
#awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp
#read Device < /tmp/ax25-config-tmp
#rm -f /tmp/ax25-config.tmp
#rm -f /tmp/ax25-config-tmp
## Check for Device
#if [ -d /proc/sys/net/ax25/$Device ]
#  then echo "Port west attached to $Device"
#  cd /proc/sys/net/ax25/$Device/
#  ifconfig $Device netmask 255.255.255.255
#  ifconfig $Device broadcast 0.0.0.0
#  # Parms for west - Kernels > 2.6.17
##  echo 10000 > t1_timeout # (Frack) /1000 = seconds ( 1 - 30) seconds
##  echo 3000 > t2_timeout # (RESPtime) /1000 = seconds (1 - 20)seconds
##  echo 300000 > t3_timeout # (Check) /1000 = seconds (0 - 3600) seconds
##  echo 0 > idle_timeout # Disconnect when idle /1000 = seconds (0 or greater)
##  echo 0 > ax25_default_mode # AX25 Default Mode 0 = Normal, 1 = Extended (0)
##  echo 0 > ip_default_mode # IP Default Mode 0 = Standard (mod 7),1 = Extended (mod 127)(0)
##  echo 0 > backoff_type # Backoff 0 = Original, 1 = linear, 2 = exponential (1)
##  echo 256 > maximum_packet_length # Frame Size 1 - 512 (256) - overrides setting in axports
##  echo 2 > connect_mode # Connect Mode 0 = None, 1 = Network, 2 = All (2)
##  echo 8 > maximum_retry_count # N2 (1 -31)
##  echo 180000 > dama_slave_timeout
##  echo 32 > extended_window_size
##  echo 2 > standard_window_size # Max frames - overrides setting in axports
##  echo 0 > protocol
#else
#  echo "** Error setting $Device parms **"
#fi
## Adjust KISS Parameters: Persistence=128, slot=10, TX-Delay=250
##/usr/sbin/kissparms -p west -r 228 -s 10 -l 20 -t 250
#
#sleep 1
## Initialize ax4, attached to port east and serial port ttyS3
#/usr/sbin/kissattach /dev/ttyS3 east $amprIP4 >/tmp/ax25-config.tmp
#awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp
#read Device < /tmp/ax25-config-tmp
#rm -f /tmp/ax25-config.tmp
#rm -f /tmp/ax25-config-tmp
## Check for Device
#if [ -d /proc/sys/net/ax25/$Device ]
#  then echo "Port east attached to $Device"
#  cd /proc/sys/net/ax25/$Device/
#  ifconfig $Device netmask 255.255.255.255
#  ifconfig $Device broadcast 0.0.0.0
#  # Parms for east - Kernels > 2.6.17
##  echo 10000 > t1_timeout # (Frack) /1000 = seconds ( 1 - 30) seconds
##  echo 3000 > t2_timeout # (RESPtime) /1000 = seconds (1 - 20)seconds
##  echo 300000 > t3_timeout # (Check) /1000 = seconds (0 - 3600) seconds
##  echo 0 > idle_timeout # Disconnect when idle /1000 = seconds (0 or greater)
##  echo 0 > ax25_default_mode # AX25 Default Mode 0 = Normal, 1 = Extended (0)
##  echo 0 > ip_default_mode # IP Default Mode 0 = Standard (mod 7),1 = Extended (mod 127)(0)
##  echo 0 > backoff_type # Backoff 0 = Original, 1 = linear, 2 = exponential (1)
##  echo 256 > maximum_packet_length # Frame Size 1 - 512 (256) - overrides setting in axports
##  echo 2 > connect_mode # Connect Mode 0 = None, 1 = Network, 2 = All (2)
##  echo 8 > maximum_retry_count # N2 (1 -31)
##  echo 180000 > dama_slave_timeout
##  echo 32 > extended_window_size
##  echo 2 > standard_window_size # Max frames - overrides setting in axports
##  echo 0 > protocol
#else
#  echo "** Error setting $Device parms **"
#fi
## Adjust KISS Parameters: Persistence=128, slot=10, TX-Delay=250
##/usr/sbin/kissparms -p east -r 228 -s 10 -l 20 -t 250

######## Finished initializing AX.25 ports and attaching devices ########


######## Start NET/ROM and FLEXd ########

# Start NET/ROM
#/usr/sbin/netromd &
#pidof netromd > /var/run/netromd.pid
#echo -n "Starting netromd          "
#if [ -z "ps x | grep -c $(cat /var/run/netromd.pid)" ]
#  then
#     echo -e "[failed]\n"
#     exit
#  else
#     echo -e "[ok]\n"
#fi

# Start FLEXd
#/usr/sbin/flexd
#pidof flexd > /var/run/flexd.pid
#echo -n "Starting flexd            "
#if [ -z "ps x | grep -c $(cat /var/run/flexd.pid)" ]
#  then
#     echo -e "[failed]\n"
#     exit
#  else
#     echo -e "[ok]\n"
#fi
######## Finished starting NET/ROM and FLEXd ########


######## Start daemons ########

# Start ax25d daemon to enable external logons
#/usr/sbin/ax25d &
#pidof ax25d > /var/run/ax25d.pid
#echo -n "Starting ax25d            "
#if [ -z "ps x | grep -c $(cat /var/run/ax25d.pid)" ]
#  then
#     echo -e "[failed]\n"
#     exit
#  else
#     echo -e "[ok]\n"
#fi

# Start Mheard daemon
/usr/sbin/mheardd
pidof mheardd > /var/run/mheardd.pid
echo -n "Starting mheardd          "
if [ -z "ps x | grep -c $(cat /var/run/mheardd.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

# Start FPACsoftware
echo "Starting up on:" >> $fpaclog
/bin/date >> $fpaclog
/usr/sbin/fpad >>$fpaclog 2>&1
pidof fpad > /var/run/fpad.pid
echo -n "Starting fpad             "
if [ -z "ps x | grep -c $(cat /var/run/fpad.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

/usr/sbin/fpacwpd >>$fpaclog 2>&1
pidof fpacwpd > /var/run/fpacwpd.pid
echo -n "Starting fpacwpd          "
if [ -z "ps x | grep -c $(cat /var/run/fpacwpd.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

/usr/sbin/fpacstat >>$fpaclog 2>&1
pidof fpacstat > /var/run/fpacstat.pid
echo -n "Starting fpacstat         "
if [ -z "ps x | grep -c $(cat /var/run/fpacstat.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

/usr/sbin/fpacroute >>$fpaclog 2>&1
pidof fpacroute > /var/run/fpacroute.pid
echo -n "Starting fpacroute        "
if [ -z "ps x | grep -c $(cat /var/run/fpacroute.pid)" ]
  then
     echo -e "[failed]\n"
     exit
  else
     echo -e "[ok]\n"
fi

######## End ########
