2 ########################################################################
3 # Begin $rc_base/init.d/network
5 # Description : Network Control Script
7 # Authors : Michael Tremer - m.s.tremer@googlemail.com
11 # Notes : Written for IPFire by its team
13 ########################################################################
17 .
/var
/ipfire
/ethernet
/settings
18 .
/var
/ipfire
/dhcp
/settings
19 .
/var
/ipfire
/ppp
/settings
20 .
/var
/ipfire
/vpn
/settings
22 # This is a small wrapper for dhcpcd.exe
23 if ( echo $0 |
/bin
/grep -q 'dhcpcd.exe' ); then
24 /etc
/rc.d
/init.d
/network red update
$1 $2
29 boot_mesg
"Loading MASQ helper modules"
32 modprobe ip_conntrack_ftp
34 modprobe ip_conntrack_h323
36 modprobe ip_conntrack_irc
38 modprobe ip_conntrack_mms
40 modprobe ip_conntrack_pptp
42 modprobe ip_conntrack_proto_gre
43 modprobe ip_nat_proto_gre
44 modprobe ip_conntrack_quake3
45 modprobe ip_nat_quake3
47 # Remove possible leftover files
48 rm -f CONFIG_ROOT
/red
/{active
,device
,dial-on-demand
,dns1
,dns2
,local-ipaddress
,remote-ipaddress
,resolv.conf
}
50 # This won't actually do anything unless a PCMCIA controller was
51 # detected at install time, because /etc/pcmcia.conf won't exist.
52 /etc
/rc.d
/rc.pcmcia start
53 # Now, just in case we found a PCMCIA USB controller, we'll need to reload
55 /usr
/local
/bin
/resetusb
57 # The 'for' loop force driver loading order
58 for NIC
in 0 1 2 3; do
60 if [ "$GREEN_DEV" == "$ETHX" ]; then
61 if [ "$GREEN_DRIVER" != "" ]; then
62 modprobe
$GREEN_DRIVER $GREEN_DRIVER_OPTIONS
66 if [ "$ORANGE_DEV" == "$ETHX" ]; then
67 if [ "$ORANGE_DRIVER" != "" ]; then
68 modprobe
$ORANGE_DRIVER $ORANGE_DRIVER_OPTIONS
72 if [ "$BLUE_DEV" == "$ETHX" ]; then
73 if [ "$BLUE_DRIVER" != "" ]; then
74 modprobe
$BLUE_DRIVER $BLUE_DRIVER_OPTIONS
78 if [ "$RED_DEV" == "$ETHX" ]; then
79 if [ "$RED_DRIVER" != "" ]; then
80 modprobe
$RED_DRIVER $RED_DRIVER_OPTIONS
86 if [ -d /proc
/bus
/pccard
]; then
87 boot_mesg
"Initializing PCMCIA cardbus modems"
92 boot_mesg
"Setting up IPFire firewall rules"
93 /etc
/rc.d
/init.d
/firewall start
; evaluate_retval
95 boot_mesg
"Setting up IP Accounting"
96 /etc
/rc.d
/helper
/writeipac.pl
97 /usr
/sbin
/fetchipac
-S; evaluate_retval
99 boot_mesg
"Setting IPFire DMZ pinholes"
100 /usr
/local
/bin
/setdmzholes
; evaluate_retval
102 if [ "$BLUE_DEV" != "" ]; then
103 boot_mesg
"Setting up wireless firewall rules"
104 /usr
/local
/bin
/restartwireless
; evaluate_retval
107 # Bringing interfaces up...
116 # Stopping all interfaces...
130 # Every interface has its own context to start/stop/restart.
135 boot_mesg
"Bringing green network up..."
136 if [ "$GREEN_DEV" != "" ]; then
137 ifconfig
$GREEN_DEV $GREEN_ADDRESS netmask
$GREEN_NETMASK broadcast
$GREEN_BROADCAST up
140 echo "WARNING: No driver set for GREEN"
144 boot_mesg
"Bringing green network down..."
145 ifconfig
$GREEN_DEV down
2> /dev
/null
; evaluate_retval
153 if [ "$CONFIG_TYPE" = "1" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "5" -o "$CONFIG_TYPE" = "7" ]; then
154 if [ "$ORANGE_DEV" != "" ]; then
155 boot_mesg
"Bringing orange network up..."
156 ifconfig
$ORANGE_DEV $ORANGE_ADDRESS netmask
$ORANGE_NETMASK broadcast
$ORANGE_BROADCAST up
162 if [ "$ORANGE_DEV" != "" ]; then
163 boot_mesg
"Bringing orange network down..."
164 ifconfig
$ORANGE_DEV down
2> /dev
/null
; evaluate_retval
173 if [ "$CONFIG_TYPE" = "4" -o "$CONFIG_TYPE" = "5" -o "$CONFIG_TYPE" = "6" -o "$CONFIG_TYPE" = "7" ]; then
174 if [ "$BLUE_DEV" != "" ]; then
175 boot_mesg
"Bringing blue network up..."
176 ifconfig
$BLUE_DEV $BLUE_ADDRESS netmask
$BLUE_NETMASK broadcast
$BLUE_BROADCAST up
182 if [ "$BLUE_DEV" != "" ]; then
183 boot_mesg
"Bringing blue network down..."
184 ifconfig
$BLUE_DEV down
2> /dev
/null
; evaluate_retval
193 boot_mesg
"Bringing red network up..."
194 # If RED is ethernet then check furthur...
195 if [ "$CONFIG_TYPE" == "2" -o "$CONFIG_TYPE" == "3" -o "$CONFIG_TYPE" == "6" -o "$CONFIG_TYPE" == "7" ]; then
196 # If we are DHCP or STATIC we have to start automatically
197 if [ "$RED_TYPE" == "DHCP" -o "$RED_TYPE" == "STATIC" ]; then
202 # Start DNSMASQ with defaults
203 if [ "$DOMAIN_NAME_GREEN" == "" ]; then
204 /usr
/sbin
/dnsmasq
-l /var
/state
/dhcp
/dhcpd.leases
206 /usr
/sbin
/dnsmasq
-l /var
/state
/dhcp
/dhcpd.leases
-s "$DOMAIN_NAME_GREEN"
209 # Only when AUTOCONNECT is on
210 if [ "$AUTOCONNECT" == "on" ]; then
211 /etc
/rc.d
/init.d
/red start
; evaluate_retval
215 boot_mesg
"Bringing red network down..."
216 /etc
/rc.d
/init.d
/red stop
218 /etc
/rc.d
/init.d
/red
clear; evaluate_retval
221 if [ ! -e /var
/lock
/rc.updatered.lock
]; then
222 /usr
/bin
/touch /var
/lock
/rc.updatered.lock
223 /usr
/bin
/logger
-s -p local0.info
-t rc.updatered
"$0 locking for $$"
226 while [ ! $count = 5 ]; do
228 if [ ! -e /var
/lock
/rc.updatered.lock
]; then
231 /usr
/bin
/logger
-s -p local0.info
-t rc.updatered
"$0 $$ waiting unlock"
237 IFACE
=`/bin/cat /var/ipfire/red/iface 2>/dev/null | /usr/bin/tr -d '\012'`
238 REMOTE
=`/bin/cat /var/ipfire/red/remote-ipaddress 2>/dev/null | /usr/bin/tr -d '\012'`
241 ### Retrieve DHCP Settings
243 if [ "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "6" -o "$CONFIG_TYPE" = "7" ]; then
244 if [ "$RED_TYPE" = "DHCP" ]; then
246 eval $
(/usr
/local
/bin
/readhash
/var
/ipfire
/ethernet
/settings
)
247 if [ "$DNS1" = "" ]; then
248 echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var
/ipfire
/red
/dns1
249 echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var
/ipfire
/red
/dns2
251 echo "$DNS1" > /var
/ipfire
/red
/dns1
252 echo "$DNS2" > /var
/ipfire
/red
/dns2
254 .
/var
/ipfire
/dhcpc
/dhcpcd-
${RED_DEV}.info
255 echo "$IPADDR" > /var
/ipfire
/red
/local-ipaddress
256 echo "$GATEWAY" > /var
/ipfire
/red
/remote-ipaddress
259 if [ "$PROTOCOL" = "RFC1483" -a "$METHOD" = "DHCP" ]; then
261 eval $
(/usr
/local
/bin
/readhash
/var
/ipfire
/ppp
/settings
)
262 if [ "$DNS" = "Automatic" ]; then
263 echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 1` > /var
/ipfire
/red
/dns1
264 echo -n `/etc/rc.d/helper/getdnsfromdhcpc.pl 2` > /var
/ipfire
/red
/dns2
266 echo "$DNS1" > /var
/ipfire
/red
/dns1
267 echo "$DNS2" > /var
/ipfire
/red
/dns2
269 .
/var
/ipfire
/dhcpc
/dhcpcd-
${IFACE}.info
270 echo $IPADDR > /var
/ipfire
/red
/local-ipaddress
271 echo $GATEWAY > /var
/ipfire
/red
/remote-ipaddress
276 ### Retrieve DNS settings
278 DNS1
=`/bin/cat /var/ipfire/red/dns1 2>/dev/null | /usr/bin/tr -d '\012'`
279 DNS2
=`/bin/cat /var/ipfire/red/dns2 2>/dev/null | /usr/bin/tr -d '\012'`
280 echo > /var
/ipfire
/red
/resolv.conf
#clear it
281 [ "$DNS1" != "" ] && echo "nameserver $DNS1" > /var
/ipfire
/red
/resolv.conf
282 [ "$DNS2" != "" ] && echo "nameserver $DNS2" >> /var
/ipfire
/red
/resolv.conf
288 /bin
/killall
-KILL dnsmasq
2> /dev
/null
292 [ "$DOMAIN_NAME_GREEN" ] && DOMopt
="-s $DOMAIN_NAME_GREEN"
293 if [ -e "/var/ipfire/red/dial-on-demand" -a "$DIALONDEMANDDNS" == "on" -a ! -e "/var/ipfire/red/active" ]; then
294 /usr
/sbin
/dnsmasq
-l /var
/state
/dhcp
/dhcpd.leases
$DOMopt -r /var
/ipfire
/ppp
/fake-resolv.conf
296 /usr
/sbin
/dnsmasq
-l /var
/state
/dhcp
/dhcpd.leases
$DOMopt -r /var
/ipfire
/red
/resolv.conf
300 # Reset default route to ippp0 for dial on demand
301 if [ -e "/var/ipfire/red/dial-on-demand" -a "$TYPE" == "isdn" -a ! -e "/var/ipfire/red/active" ]; then
302 /sbin
/route del default
2> /dev
/null
303 if [ ! -z "$REMOTE" ]; then
304 /sbin
/route add default gw
$REMOTE 2> /dev
/null
306 /sbin
/route add default dev ippp0
2> /dev
/null
311 eval $
(/usr
/local
/bin
/readhash
"$3")
314 /usr
/bin
/logger
-s -p local0.info
-t dhcpcd.exe
"${INTERFACE} has been configured with old IP=${IPADDR}"
315 if [ "$RED_TYPE" != 'PPTP' ]; then
316 /usr
/bin
/touch /var
/ipfire
/red
/active
320 /usr
/bin
/logger
-s -p local0.info
-t dhcpcd.exe
"${INTERFACE} has been configured with new IP=${IPADDR}"
321 if [ -e "/var/ipfire/red/active" ]; then
322 /usr
/local
/bin
/setfilters
323 /usr
/local
/bin
/setportfw
324 /usr
/local
/bin
/setxtaccess
325 /usr
/local
/bin
/setddns.pl
-f
326 /usr
/local
/bin
/restartsnort red
327 sleep $VPN_DELAYED_START && /usr
/local
/bin
/ipsecctrl S
&
328 /bin
/rm -f /var
/lock
/rc.updatered.lock
329 /usr
/bin
/logger
-s -p local0.info
-t rc.updatered
"unlocking from $$"
332 if [ "$RED_TYPE" != 'PPTP' ]; then
333 /usr
/bin
/touch /var
/ipfire
/red
/active
338 /usr
/bin
/logger
-s -p local0.info
-t dhcpcd.exe
"${INTERFACE} has been brought down"
339 rm -f /var
/ipfire
/red
/active
344 if [ -e "/var/ipfire/red/active" ]; then
345 [ "$IFACE" != "" ] && /sbin
/ifconfig
$IFACE -multicast
346 /etc
/rc.d
/init.d
/firewall reload
347 /usr
/local
/bin
/setfilters
348 /usr
/local
/bin
/restartsnort red
349 /usr
/local
/bin
/qosctrl restart
350 /usr
/local
/bin
/setportfw
351 /usr
/local
/bin
/setxtaccess
352 /usr
/local
/bin
/setddns.pl
-f
353 /etc
/rc.d
/helper
/writeipac.pl
354 /usr
/sbin
/fetchipac
-S
355 sleep $VPN_DELAYED_START && /usr
/local
/bin
/ipsecctrl S
&
357 /usr
/local
/bin
/ipsecctrl D
358 /etc
/rc.d
/init.d
/firewall reload
360 /bin
/rm -f /var
/lock
/rc.updatered.lock
361 /usr
/bin
/logger
-s -p local0.info
-t rc.updatered
"unlocking from $$"
367 echo "Usage: ${0} {start|stop|restart}"
368 echo " or: ${0} {green|orange|blue|red} {up|down}"
373 # End /etc/rc.d/init.d/network