#!/bin/sh
# post-atalkd.ini
#
# AppleTalk routing between internal networks

. /etc/inside.info

# Build list of devices for use by atalkd if not manually specified
if [ -z "$ATALKD_DEVICES" ]; then
	ATALKD_DEVICES="$INSIDE_DEV"
	if [ -n "$INSIDE_EXTRA_IF" ]; then
		for i in $INSIDE_EXTRA_IF; do
			eval "ATALKD_DEVICES=\"$ATALKD_DEVICES \$INSIDE_${i}_DEV\""
		done
	fi
fi

# Make sure each device appear only once
ATALKD_DEVICES=`for i in $ATALKD_DEVICES; do echo i; done | sort -u`

# Empty (and timestamp if possible) config file
which date > /dev/null && today=`date -uR`
echo "# This file automatically generated $today" > /etc/atalkd.conf

i=10
for j in $ATALKD_DEVICES; do
	i=`expr $i + 1`
	if [ $INSIDE_DEV = $j ]; then
		dev=$INSIDE_DEV
		title=$INSIDE_TITLE
	elif [ -n "$INSIDE_EXTRA_IF" ]; then
		for k in $INSIDE_EXTRA_IF; do
			eval "k_dev=\$INSIDE_${i}_DEVICE"
			if [ $k_dev = $j ]; then
				dev=$k_dev
				eval "title=\$INSIDE_${i}_TITLE"
			fi
		done
	else
		echo "Something's wrong: No atalkd devices found. Exiting...!"
		exit 1
	fi
	if [ $i = 11 ]; then
		ATALKD_PRIMARY_DEVICE=$dev
		ATALKD_PRIMARY_TITLE=$title
	else
		echo "$dev -router -phase 2 -net ${i}00-${i}01 -addr ${i}00.50 ${title:+-zone \"$title\"}" >> /etc/atalkd.conf
	fi
done
# Write primary device last - without routing if only a single interface
if [ $i = 11 ]; then
	echo "$ATALKD_PRIMARY_DEVICE -seed -phase 2 -net 1100-1101 -addr 1100.50 ${ATALKD_PRIMARY_TITLE:+-zone "$ATALKD_PRIMARY_TITLE"}" >> /etc/atalkd.conf
else
	echo "$ATALKD_PRIMARY_DEVICE -router -phase 2 -net 1100-1101 -addr 1100.50 ${ATALKD_PRIMARY_TITLE:+-zone "$ATALKD_PRIMARY_TITLE"}" >> /etc/atalkd.conf
fi

# Why does atalkd not use /var/run by default?
mkdir -p /var/lock

# Can't run without the kernel AppleTalk driver
lsmod | grep -c appletalk >/dev/null || insmod appletalk

echo "Starting atalkd in the background..."
/bin/atalkd -f /etc/atalkd.conf &
