blob: 53fd0f66dfa6806ac8791cc94d81680acf124b40 [file] [log] [blame]
Bart De Schuymere8b0a252005-06-14 19:20:43 +00001#!/bin/bash
2#
3# init script for the Ethernet Bridge filter tables
4#
Bart De Schuymer50441e92005-08-30 21:20:55 +00005# Written by Dag Wieers <dag@wieers.com>
6# Modified by Rok Papez <rok.papez@arnes.si>
7# Bart De Schuymer <bdschuym@pandora.be>
Bart De Schuymere8b0a252005-06-14 19:20:43 +00008#
9# chkconfig: - 15 85
10# description: Ethernet Bridge filtering tables
11#
Bart De Schuymer50441e92005-08-30 21:20:55 +000012# config: __SYSCONFIG__/ebtables (text)
13# __SYSCONFIG__/ebtables.<table> (binary)
Bart De Schuymere8b0a252005-06-14 19:20:43 +000014
15source /etc/init.d/functions
16source /etc/sysconfig/network
17
18# Check that networking is up.
19[ ${NETWORKING} = "no" ] && exit 0
20
Bart De Schuymer50441e92005-08-30 21:20:55 +000021[ -x __EXEC_PATH__/ebtables ] || exit 1
22[ -x __EXEC_PATH__/ebtables-save ] || exit 1
23[ -x __EXEC_PATH__/ebtables-restore ] || exit 1
Bart De Schuymere8b0a252005-06-14 19:20:43 +000024
25RETVAL=0
26prog="ebtables"
27desc="Ethernet bridge filtering"
28
Bart De Schuymer50441e92005-08-30 21:20:55 +000029#default configuration
30EBTABLES_TEXT_FORMAT="yes"
31EBTABLES_BINARY_FORMAT="yes"
32EBTABLES_MODULES_UNLOAD="yes"
33EBTABLES_SAVE_ON_STOP="no"
34EBTABLES_SAVE_ON_RESTART="no"
35EBTABLES_SAVE_COUNTER="no"
36
37config=__SYSCONFIG__/$prog-config
38[ -f "$config" ] && . "$config"
39
Bart De Schuymere8b0a252005-06-14 19:20:43 +000040start() {
41 echo -n $"Starting $desc ($prog): "
Bart De Schuymer50441e92005-08-30 21:20:55 +000042 if [ "$EBTABLES_BINARY_FORMAT" = "yes" ]; then
43 for table in $(ls __SYSCONFIG__/ebtables.* | sed s/*ebtables.//); do
44 __EXEC_PATH__/ebtables -t $table --atomic-file __SYSCONFIG__/ebtables.filter --atomic-commit || RETVAL=1
45 done
46 else
47 __EXEC_PATH__/ebtables-restore < /etc/sysconfig/ebtables || RETVAL=1
48 fi
Bart De Schuymere8b0a252005-06-14 19:20:43 +000049
50 if [ $RETVAL -eq 0 ]; then
51 success "$prog startup"
52 rm -f /var/lock/subsys/$prog
53 else
54 failure "$prog startup"
55 fi
Bart De Schuymere8b0a252005-06-14 19:20:43 +000056 echo
Bart De Schuymere8b0a252005-06-14 19:20:43 +000057}
58
59stop() {
60 echo -n $"Stopping $desc ($prog): "
Bart De Schuymer50441e92005-08-30 21:20:55 +000061 for table in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do
62 __EXEC_PATH__/ebtables -t $table --init-table || RETVAL=1
Bart De Schuymere8b0a252005-06-14 19:20:43 +000063 done
64
Bart De Schuymer50441e92005-08-30 21:20:55 +000065 if [ "$EBTABLES_MODULE_UNLOAD" = "yes" ]; then
66 for mod in $(grep -E '^(ebt|ebtable)_' /proc/modules | cut -f1 -d' ') ebtables; do
67 rmmod $mod || RETVAL=1
68 done
69 fi
70
Bart De Schuymere8b0a252005-06-14 19:20:43 +000071 if [ $RETVAL -eq 0 ]; then
72 success "$prog shutdown"
73 rm -f %{_localstatedir}/lock/subsys/$prog
74 else
75 failure "$prog shutdown"
76 fi
Bart De Schuymere8b0a252005-06-14 19:20:43 +000077 echo
Bart De Schuymere8b0a252005-06-14 19:20:43 +000078}
79
80restart() {
81 stop
82 start
83}
84
85save() {
86 echo -n $"Saving $desc ($prog): "
Bart De Schuymer50441e92005-08-30 21:20:55 +000087 if [ "$EBTABLES_TEXT_FORMAT" = "yes" ]; then
88 __EXEC_PATH__/ebtables-save > /etc/sysconfig/ebtables || RETVAL=1
89 fi
90 if [ "$EBTABLES_BINARY_FORMAT" = "yes" ]; then
91 for mod in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do
92 __EXEC_PATH__/ebtables -t $mod --atomic-file __SYSCONFIG__/ebtables.$mod --atomic-save || RETVAL=1
93 if [ "$EBTABLES_SAVE_COUNTER" = "no" ]; then
94 __EXEC_PATH__/ebtables -t $mod --atomic-file __SYSCONFIG__/ebtables.$mod -Z || RETVAL=1
95 fi
96 done
97 fi
Bart De Schuymere8b0a252005-06-14 19:20:43 +000098
99 if [ $RETVAL -eq 0 ]; then
100 success "$prog saved"
101 else
102 failure "$prog saved"
103 fi
104 echo
105}
106
107case "$1" in
108 start)
109 start
110 ;;
111 stop)
Bart De Schuymer50441e92005-08-30 21:20:55 +0000112 [ "$IPTABLES_SAVE_ON_STOP" = "yes" ] && save
Bart De Schuymere8b0a252005-06-14 19:20:43 +0000113 stop
114 ;;
115 restart|reload)
Bart De Schuymer50441e92005-08-30 21:20:55 +0000116 [ "$IPTABLES_SAVE_ON_RESTART" = "yes" ] && save
Bart De Schuymere8b0a252005-06-14 19:20:43 +0000117 restart
118 ;;
119 condrestart)
120 [ -e /var/lock/subsys/$prog ] && restart
121 RETVAL=$?
122 ;;
123 save)
124 save
125 ;;
126 status)
Bart De Schuymer50441e92005-08-30 21:20:55 +0000127 __EXEC_PATH__/ebtables-save
Bart De Schuymere8b0a252005-06-14 19:20:43 +0000128 RETVAL=$?
129 ;;
130 *)
131 echo $"Usage $0 {start|stop|restart|condrestart|save|status}"
132 RETVAL=1
133esac
134
135exit $RETVAL