#!/bin/bash
# Purpose	: Creation of a jail for zebra
# Copyright (C) 2004 Networks Associates Technology Inc. All rights reserved.

if [ -f $NETAWSS/.profile.vars ]; then 
 . $NETAWSS/.profile.vars 
else 
 . /var/NAIENV/.profile.vars 
fi 
PATH=$wsPATH:$PATH

jail=/var/zebra.jail

files='/lib/libc.so.6
/lib/libm.so.6
/lib/libcrypt.so.1
/usr/lib/libreadline.so.4
/usr/lib/libncurses.so.5
/lib/ld-linux.so.2
/lib/libresolv.so.2
/usr/sbin/zebra
/usr/sbin/ospfd
/usr/sbin/ripd
/usr/sbin/bgpd
/etc/zebra/zebra.conf
/etc/zebra/ospfd.conf
/etc/zebra/ripd.conf
/etc/zebra/bgpd.conf'

# copy prototype files if required
for f in $NETAWSS/proto/zebra/*.conf; do
    g=/etc/zebra/${f##*/}
    [[ -e $g ]] || cp "$f" "$g"
done

# final list for copying into jail
filelist=$(ls -d $files 2>/dev/null)
    
start()
{
    # no point if zebra_jail isn't supposed to be running
    /sbin/chkconfig --level 3 zebra_jail || return 0
    [[ -e /var/lock/subsys/zebra_jail ]] && /etc/init.d/zebra_jail stop

    # Create the jail
    if [[ $jail/dev -ef /var/dev ]]; then
	/bin/umount $jail/dev || return
    fi
    /bin/rm -rf ${jail}
    /bin/mkdir ${jail}
    /bin/mkdir ${jail}/dev && /bin/mount --bind /var/dev ${jail}/dev
    /bin/mkdir -p ${jail}/lib/i686
    /bin/mkdir -p ${jail}/etc
    /bin/mkdir -m 0777 -p ${jail}/tmp

    # Create the libraries in the jail
    cp --parents --target-directory $jail $filelist

    # make links for vtysh to connect to daemon sockets
    for f in /etc/zebra/*.conf; do
	f=${f##*/} f=${f%.conf}
	ln -sf $jail/tmp/.$f /tmp
    done
}

stop()
{
    :	# nothing to do for stop
}

restart()
{
    stop
    start
    [[ -f $WS_RESTART_LIST ]] && echo zebra_jail >>"$WS_RESTART_LIST"
}

reload()
{
    ( for f in $filelist; do cmp -s $f $jail$f || exit 1; done ) && return 0
    restart
}

case $1 in
    (start) start ;;
    (stop) stop ;;
    (restart) restart ;;
    (reload) reload ;;
    (status) : ;;
    (*) echo $"Usage: $0 {start|stop|restart|reload|status}"; exit 1 ;;
esac

exit 0
