start() { if [ -n "$cfg_eth_ext_ip$cfg_eth_prv_ip" ]; then while [ 1 ]; do echo "* Waiting for eth0 device..." ifconfig eth0 > /dev/null 2>&1 [ $? -eq 0 ] && break usleep 250000 done fi if [ -n "$cfg_bridge0_ip" ]; then for itf in $cfg_bridge0_itfs; do ifconfig $itf 0.0.0.0 done brctl addbr bridge0 for itf in $cfg_bridge0_itfs; do brctl addif bridge0 $itf done ifconfig bridge0 $cfg_bridge0_ip netmask $cfg_bridge0_nmask up ifconfig bridge0 multicast route add -net 224.0.0.0 netmask 240.0.0.0 dev bridge0 fi # Public ethernet. if [ -n "$cfg_eth_ext_ip" ]; then if [ -n "$cfg_eth_ext_mk" ]; then ifconfig eth0 "$cfg_eth_ext_ip" netmask "$cfg_eth_ext_mk" up else ifconfig eth0 "$cfg_eth_ext_ip" up fi ifconfig eth0 multicast route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 # Fixed mac address with $cfg_eth_ext_mac based derivated from IP address $cfg_eth_ext_ip if [ -n "$cfg_eth_ext_mac" ]; then ifconfig eth0 hw ether $cfg_eth_ext_mac fi fi if [ -n "$cfg_eth_ext_gw" ]; then route add default gw "$cfg_eth_ext_gw" fi if [ -n "$cfg_eth_ext_dns" ]; then echo "nameserver $cfg_eth_ext_dns" > /etc/resolv.conf fi # Private ethernet. if [ -n "$cfg_eth_prv_ip" ]; then ifconfig eth0:prv "$cfg_eth_prv_ip" up fi # Static ARP table. if [ -n "$cfg_arp_table" ]; then for e in $cfg_arp_table; do ip="$(echo $e | cut -f1 -d'|')" mac="$(echo $e | cut -f2 -d'|')" arp -s "$ip" "$mac" done fi } stop() { # Public ethernet. if [ -n "$cfg_eth_ext_gw" ]; then route del default fi if [ -n "$cfg_eth_ext_ip" ]; then route del -net 224.0.0.0 netmask 240.0.0.0 dev eth0 ifconfig eth0 down fi # Private ethernet. if [ -n "$cfg_eth_prv_ip" ]; then ifconfig eth0:prv down fi }