8c7451
#!/bin/bash
8c7451
8c7451
RETVAL=0
8c7451
8c7451
initialize() {
8c7451
  # Initialize $TYPE tables
8c7451
  echo -n $"  $TYPE tables: "
8c7451
  if [ -r /etc/sysconfig/ebtables.$TYPE ]; then
8c7451
    /sbin/ebtables -t $TYPE --atomic-file /etc/sysconfig/ebtables.$TYPE --atomic-commit > /dev/null || RETVAL=1
8c7451
  else
8c7451
    echo -n "not configured"
8c7451
  fi
8c7451
  if [ $RETVAL -eq 0 ]; then
8c7451
    echo -n $"[  OK  ]"
8c7451
    echo -ne "\r"
8c7451
  else
8c7451
    echo -n $"[FAILED]"
8c7451
    echo -ne "\r"
8c7451
  fi
8c7451
}
8c7451
8c7451
case $1 in
8c7451
  start)
8c7451
   # Initialize	filter tables
8c7451
   TYPE=filter
8c7451
   initialize
8c7451
 
8c7451
   # Initialize NAT tables
8c7451
   echo
8c7451
   TYPE=nat
8c7451
   initialize
8c7451
8c7451
   # Initialize broute tables
8c7451
   echo
8c7451
   TYPE=broute
8c7451
   initialize
8c7451
  ;;
8c7451
  stop)
8c7451
    /sbin/ebtables -t filter --init-table || RETVAL=1
8c7451
    /sbin/ebtables -t nat --init-table || RETVAL=1
8c7451
    /sbin/ebtables -t broute --init-table || RETVAL=1
8c7451
8c7451
    for mod in $(grep -E '^(ebt|ebtable)_' /proc/modules | cut -f1 -d' ') ebtables; do
8c7451
       /sbin/rmmod $mod || RETVAL=1
8c7451
    done
8c7451
8c7451
    if [ $RETVAL -eq 0 ]; then
8c7451
      echo -n $"[  OK  ]"
8c7451
      echo -ne "\r"
8c7451
    else
8c7451
      echo -n $"[FAILED]"
8c7451
      echo -ne "\r"
8c7451
    fi
8c7451
  ;;
8c7451
  save)
8c7451
    echo -n $"Saving Ethernet bridge filtering (ebtables): "
8c7451
    /sbin/ebtables -t filter --atomic-file /etc/sysconfig/ebtables.filter --atomic-save || RETVAL=1
8c7451
    /sbin/ebtables -t nat --atomic-file /etc/sysconfig/ebtables.nat --atomic-save || RETVAL=1
8c7451
    /sbin/ebtables -t broute --atomic-file /etc/sysconfig/ebtables.broute --atomic-save || RETVAL=1
8c7451
    if [ $RETVAL -eq 0 ]; then
8c7451
      echo -n $"[  OK  ]"
8c7451
      echo -ne "\r"
8c7451
    else
8c7451
      echo -n $"[FAILED]"
8c7451
      echo -ne "\r"
8c7451
    fi
8c7451
  ;;
8c7451
  *)
8c7451
    echo "usage: ${0##*/} {start|stop|save}" >&2
8c7451
    exit 1
8c7451
  ;;
8c7451
esac
8c7451
8c7451
# vim:set ts=2 sw=2 ft=sh et: