#!/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