105 lines
1.9 KiB
Bash
105 lines
1.9 KiB
Bash
#!/bin/sh
|
|
# config: /etc/sysconfig/arptables
|
|
|
|
# Source 'em up
|
|
. /etc/init.d/functions
|
|
|
|
ARPTABLES_CONFIG=/etc/sysconfig/arptables
|
|
|
|
arp_table() {
|
|
if fgrep -qsx $1 /proc/net/arp_tables_names; then
|
|
arptables -t "$@"
|
|
fi
|
|
}
|
|
|
|
flush_delete_chains() {
|
|
chains=$(cat /proc/net/arp_tables_names 2>/dev/null)
|
|
echo -n $"Flushing all chains:"
|
|
let ret=0
|
|
for i in $chains; do arptables -t $i -F; let ret+=$?; done
|
|
arptables -F; let ret+=$?
|
|
if [ $ret -eq 0 ]; then
|
|
success
|
|
else
|
|
failure
|
|
fi
|
|
echo
|
|
|
|
echo -n $"Removing user defined chains:"
|
|
let ret=0
|
|
for i in $chains; do arptables -t $i -X; let ret+=$?; done
|
|
arptables -X; let ret+=$?
|
|
if [ $ret -eq 0 ]; then
|
|
success
|
|
else
|
|
failure
|
|
fi
|
|
echo
|
|
}
|
|
|
|
start() {
|
|
if [ ! -x /usr/sbin/arptables ]; then
|
|
exit 4
|
|
fi
|
|
|
|
# don't do squat if we don't have the config file
|
|
if [ -f $ARPTABLES_CONFIG ]; then
|
|
# If we don't clear these first, we might be adding to
|
|
# pre-existing rules.
|
|
flush_delete_chains
|
|
|
|
for i in $(cat /proc/net/arp_tables_names 2>/dev/null); do
|
|
arptables -t $i -Z;
|
|
done
|
|
|
|
echo -n $"Applying arptables firewall rules: "
|
|
/usr/sbin/arptables-restore < $ARPTABLES_CONFIG && \
|
|
success || \
|
|
failure
|
|
echo
|
|
touch /var/lock/subsys/arptables
|
|
else
|
|
failure
|
|
echo
|
|
echo $"Configuration file /etc/sysconfig/arptables missing"
|
|
exit 6
|
|
fi
|
|
}
|
|
|
|
stop() {
|
|
flush_delete_chains
|
|
echo -n $"Resetting built-in chains to the default ACCEPT policy:"
|
|
arp_table filter -P INPUT ACCEPT && \
|
|
arp_table filter -P OUTPUT ACCEPT && \
|
|
success || \
|
|
failure
|
|
echo
|
|
rm -f /var/lock/subsys/arptables
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
|
|
stop)
|
|
stop
|
|
;;
|
|
|
|
restart|reload)
|
|
# "restart" is really just "start" as this isn't a daemon,
|
|
# and "start" clears any pre-defined rules anyway.
|
|
# This is really only here to make those who expect it happy
|
|
start
|
|
;;
|
|
|
|
condrestart|try-restart|force-reload)
|
|
[ -e /var/lock/subsys/arptables ] && start
|
|
;;
|
|
|
|
*)
|
|
exit 2
|
|
esac
|
|
|
|
exit 0
|