summaryrefslogtreecommitdiff
path: root/package/base-files/src/etc/network
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/src/etc/network')
-rwxr-xr-xpackage/base-files/src/etc/network/if-post-down.d/01-bridge26
-rwxr-xr-xpackage/base-files/src/etc/network/if-post-down.d/02-vlan10
-rwxr-xr-xpackage/base-files/src/etc/network/if-post-down.d/03-wireless21
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/01-atm41
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/02-vlan36
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/03-bridge29
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/04-wireless107
-rwxr-xr-xpackage/base-files/src/etc/network/if-up.d/01-bridge4
-rw-r--r--package/base-files/src/etc/network/interfaces2
9 files changed, 276 insertions, 0 deletions
diff --git a/package/base-files/src/etc/network/if-post-down.d/01-bridge b/package/base-files/src/etc/network/if-post-down.d/01-bridge
new file mode 100755
index 000000000..47f3c976b
--- /dev/null
+++ b/package/base-files/src/etc/network/if-post-down.d/01-bridge
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+if [ ! -x /usr/sbin/brctl ]
+then
+ exit 0
+fi
+
+case "$IF_BRIDGE_PORTS" in
+ "")
+ exit 0
+ ;;
+ none)
+ INTERFACES=""
+ ;;
+ *)
+ INTERFACES="$IF_BRIDGE_PORTS"
+ ;;
+esac
+
+for IF in $INTERFACES; do
+ ip link set down dev $IF && brctl delif $IFACE $IF
+done
+
+ip link set down dev $IFACE || exit 1
+brctl delbr $IFACE
+exit 0
diff --git a/package/base-files/src/etc/network/if-post-down.d/02-vlan b/package/base-files/src/etc/network/if-post-down.d/02-vlan
new file mode 100755
index 000000000..e448a7641
--- /dev/null
+++ b/package/base-files/src/etc/network/if-post-down.d/02-vlan
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+[ -x /sbin/vconfig ] || exit 0
+
+[ -e /proc/net/vlan/$IFACE ] && (
+ ip link set down dev $IFACE
+ vconfig rem $IFACE
+)
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-post-down.d/03-wireless b/package/base-files/src/etc/network/if-post-down.d/03-wireless
new file mode 100755
index 000000000..86e0c73e1
--- /dev/null
+++ b/package/base-files/src/etc/network/if-post-down.d/03-wireless
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+[ "${IFACE%%[0-9]*}" = "wlan" ] || exit 0
+
+case "$IF_WIRELESS_MODE" in
+ ap)
+ logger -t hostap "Killing hostapd"
+ pkill hostapd
+ ;;
+ sta)
+ [ "$IF_WIRELESS_SECURITY" != "none" ] && {
+ logger -t wireless "Killing wpa_supplicant"
+ pkill wpa_supplicant
+ }
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/01-atm b/package/base-files/src/etc/network/if-pre-up.d/01-atm
new file mode 100755
index 000000000..5c168c001
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/01-atm
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+[ -x /usr/sbin/br2684ctl ] || exit 0
+
+[ "${IFACE%%[0-9]*}" = "nas" ] || exit 0
+
+[ "$IF_ATM_ENCAPS" ] || encap=0
+[ "$IF_ATM_PAYLOAD" ] || payload=1
+[ "$IF_ATM_VPI" ] || IF_ATM_VPI=1
+[ "$IF_ATM_VCI" ] || IF_ATM_VCI=32
+
+[ "$IF_ATM_PAYLOAD" ] && case "$IF_ATM_PAYLOAD" in
+bridged)
+ payload=1
+ ;;
+routed)
+ payload=0
+ ;;
+*)
+ echo "Wrong payload, use either bridged or routed"
+ exit 1
+ ;;
+esac
+
+[ "$IF_ATM_ENCAPS" ] && case "$IF_ATM_ENCAPS" in
+llc)
+ encap=0
+ ;;
+vc)
+ encap=1
+ ;;
+*)
+ echo "Wrong Encapsulation use either llc or vc"
+ exit 1
+ ;;
+esac
+
+br2684ctl -b -c ${IFACE##*[a-z]} -e $encap -p $payload -a $IF_ATM_VPI.$IF_ATM_VCI
+ifconfig nas${IFACE##*[a-z]} up
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/02-vlan b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
new file mode 100755
index 000000000..35b7fca59
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/02-vlan
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+[ -x /sbin/vconfig ] || exit 0
+[ -d /proc/net/vlan ] || exit 0
+
+case "$IFACE" in
+ vlan*)
+ vconfig set_name_type VLAN_PLUS_VID_NO_PAD
+ VLANID=`echo $IFACE|sed "s/vlan*//"`
+ ;;
+ eth*.*)
+ vconfig set_name_type DEV_PLUS_VID_NO_PAD
+ VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.*//g"`
+ IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/"`
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+if [ "$IF_VLAN_RAW_DEVICE" != "" ]; then
+ if ! grep -q "$IF_VLAN_RAW_DEVICE" /proc/net/dev
+ then
+ echo "$IF_VLAN_RAW_DEVICE does not exist, unable to create $IFACE"
+ exit 1
+ fi
+ ip link set up dev $IF_VLAN_RAW_DEVICE
+ vconfig add $IF_VLAN_RAW_DEVICE $VLANID
+ if [ "$IF_MAC_ADDRESS" != "" ]
+ then
+ ip link set $IF_VLAN_RAW_DEVICE.$VLANID address $IF_MAC_ADDRESS
+ fi
+ ip link set up dev $IF_VLAN_RAW_DEVICE.$VLANID
+fi
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/03-bridge b/package/base-files/src/etc/network/if-pre-up.d/03-bridge
new file mode 100755
index 000000000..41ddb2b58
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/03-bridge
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+[ -x /usr/sbin/brctl ] || exit 0
+
+case "$IF_BRIDGE_PORTS" in
+ "")
+ exit 0
+ ;;
+ none)
+ INTERFACES=""
+ ;;
+ *)
+ INTERFACES="$IF_BRIDGE_PORTS"
+ ;;
+esac
+
+brctl addbr $IFACE || exit 1
+
+for IF in $INTERFACES; do
+ if ! grep -q $IF /proc/net/dev; then
+ echo "Error: interface '$IF' does not exist!"
+ brctl delbr $IFACE
+ exit 1
+ fi
+ brctl addif $IFACE $IF
+ ip link set up dev $IF
+done
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-pre-up.d/04-wireless b/package/base-files/src/etc/network/if-pre-up.d/04-wireless
new file mode 100755
index 000000000..bc498e163
--- /dev/null
+++ b/package/base-files/src/etc/network/if-pre-up.d/04-wireless
@@ -0,0 +1,107 @@
+#!/bin/sh
+#set -x
+set -e
+
+[ "${IFACE%%[0-9]*}" = "wlan" ] || exit 0
+
+[ "$IF_WIRELESS_SSID" ] || exit 1
+[ "$IF_WIRELESS_CHANNEL" ] || exit 1
+[ "$IF_WIRELESS_HWMODE" ] || IF_WIRELESS_HWMODE=g
+
+wpa=0
+wpa1=0
+wpa2=0
+
+case "$IF_WIRELESS_SECURITY" in
+ none)
+ sec=1
+ ;;
+ wep)
+ sec=2
+ ;;
+ wpa)
+ sec=1
+ wpa1=1
+ ;;
+ wpa2)
+ sec=1
+ wpa2=1
+ ;;
+ wpa+wpa2)
+ sec=1
+ wpa=1
+ ;;
+ *)
+ sec=1
+ ;;
+esac
+
+case "$IF_WIRELESS_MODE" in
+ ap)
+ [ -x /usr/sbin/hostapd ] || {
+ logger -t hostap "No hostapd program found"
+ exit 1
+ }
+ logger -t hostap "Creating hostapd configuration"
+ cat /etc/hostapd.conf > /tmp/hostapd.conf
+ chmod 600 /tmp/hostapd.conf
+ echo "interface=${IFACE}" >> /tmp/hostapd.conf
+ echo "ssid=$IF_WIRELESS_SSID" >> /tmp/hostapd.conf
+ echo "channel=$IF_WIRELESS_CHANNEL" >> /tmp/hostapd.conf
+ echo "hw_mode=$IF_WIRELESS_HWMODE" >> /tmp/hostapd.conf
+ echo "auth_algs=$sec" >> /tmp/hostapd.conf
+ [ $wpa1 -eq 1 ] && {
+ logger -t hostap "using WPA for security"
+ echo "wpa=1" >> /tmp/hostapd.conf
+ echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
+ echo "wpa_pairwise=TKIP" >> /tmp/hostapd.conf
+ echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
+ }
+ [ $wpa2 -eq 1 ] && {
+ logger -t hostap "using WPA2 for security"
+ echo "wpa=2" >> /tmp/hostapd.conf
+ echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
+ echo "rsn_pairwise=CCMP" >> /tmp/hostapd.conf
+ echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
+ }
+ [ $wpa -eq 1 ] && {
+ logger -t hostap "using WPA and WPA2 for security"
+ echo "wpa=3" >> /tmp/hostapd.conf
+ echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
+ echo "wpa_pairwise=TKIP" >> /tmp/hostapd.conf
+ echo "rsn_pairwise=CCMP" >> /tmp/hostapd.conf
+ echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
+ }
+ logger -t hostap "Starting hostapd"
+ hostapd -B /tmp/hostapd.conf
+ ;;
+ sta)
+ [ -x /usr/sbin/iw ] || {
+ logger -t wireless "No iw utility found"
+ exit 1
+ }
+ ip link set up dev ${IFACE}
+ iw dev ${IFACE} set channel $IF_WIRELESS_CHANNEL
+ iw dev ${IFACE} connect $IF_WIRELESS_SSID
+ [ $wpa2 -eq 1 ] && {
+ [ -x /usr/sbin/wpa_supplicant ] || {
+ logger -t wireless "No wpa_supplicant found"
+ exit 1
+ }
+ touch /tmp/wpa_supplicant.conf
+ chmod 600 /tmp/wpa_supplicant.conf
+ echo "network={" > /tmp/wpa_supplicant.conf
+ echo " ssid=\"$IF_WIRELESS_SSID\"" >> /tmp/wpa_supplicant.conf
+ echo " psk=\"$IF_WIRELESS_PASSPHRASE\"" >> /tmp/wpa_supplicant.conf
+ echo " priority=5" >> /tmp/wpa_supplicant.conf
+ echo "}" >> /tmp/wpa_supplicant.conf
+ wpa_supplicant -B -Dnl80211 -i${IFACE} -c/tmp/wpa_supplicant.conf
+ }
+ ;;
+ *)
+ echo "Unknown operation mode $IF_WIRELESS_MODE given!"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/package/base-files/src/etc/network/if-up.d/01-bridge b/package/base-files/src/etc/network/if-up.d/01-bridge
new file mode 100755
index 000000000..e5962f12f
--- /dev/null
+++ b/package/base-files/src/etc/network/if-up.d/01-bridge
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+[ "${IFACE%%[0-9]*}" = "br" ] && ip link set up dev $IFACE
+exit 0
diff --git a/package/base-files/src/etc/network/interfaces b/package/base-files/src/etc/network/interfaces
new file mode 100644
index 000000000..f1bd92ed2
--- /dev/null
+++ b/package/base-files/src/etc/network/interfaces
@@ -0,0 +1,2 @@
+auto lo
+iface lo inet loopback