lantiq: add runtime generation of /etc/config/network
authorJohn Crispin <john@openwrt.org>
Tue, 15 Nov 2011 18:21:00 +0000 (18:21 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 15 Nov 2011 18:21:00 +0000 (18:21 +0000)
SVN-Revision: 29161

target/linux/lantiq/base-files.mk [new file with mode: 0644]
target/linux/lantiq/base-files/etc/config/network [deleted file]
target/linux/lantiq/base-files/etc/uci-defaults/network [new file with mode: 0755]
target/linux/lantiq/base-files/lib/lantiq.sh

diff --git a/target/linux/lantiq/base-files.mk b/target/linux/lantiq/base-files.mk
new file mode 100644 (file)
index 0000000..d6682bd
--- /dev/null
@@ -0,0 +1,5 @@
+define Package/base-files/install-target
+       rm -f $(1)/etc/config/network
+endef
+
+
diff --git a/target/linux/lantiq/base-files/etc/config/network b/target/linux/lantiq/base-files/etc/config/network
deleted file mode 100644 (file)
index 183e6bf..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   eth0
-       option type     bridge
-       option proto    static
-       option ipaddr   192.168.1.1
-       option netmask  255.255.255.0
-
-config atm-bridge
-       option unit             0
-       option encaps   llc
-       option vpi              1
-       option vci              32
-       option payload  bridged # some ISPs need this set to 'routed'
-
-config interface wan
-       option ifname   nas0
-       option proto    pppoe
-       option username ""
-       option password ""
-       option unit 0
diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/network b/target/linux/lantiq/base-files/etc/uci-defaults/network
new file mode 100755 (executable)
index 0000000..f9a7237
--- /dev/null
@@ -0,0 +1,126 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 OpenWrt.org
+#
+
+set_interface_loopback() {
+       uci batch <<EOF
+set network.loopback='interface'
+set network.loopback.ifname='lo'
+set network.loopback.proto='static'
+set network.loopback.ipaddr='127.0.0.1'
+set network.loopback.netmask='255.0.0.0'
+EOF
+}
+
+set_interface_raw() {
+       local cfg=$1
+       local ifname=$2
+
+       uci batch <<EOF
+set network.$cfg='interface'
+set network.$cfg.ifname='$ifname'
+set network.$cfg.proto='none'
+EOF
+}
+
+set_interface_lan() {
+       local ifname=$1
+
+       uci batch <<EOF
+set network.lan='interface'
+set network.lan.ifname='$ifname'
+set network.lan.type='bridge'
+set network.lan.proto='static'
+set network.lan.ipaddr='192.168.1.1'
+set network.lan.netmask='255.255.255.0'
+EOF
+}
+
+set_interface_wan() {
+       local ifname=$1
+
+       uci batch <<EOF
+set network.wan='interface'
+set network.wan.ifname='$ifname'
+set network.wan.proto='dhcp'
+EOF
+}
+
+set_atm_wan() {
+       local vpi=$1
+       local vci=$2
+       local encaps=$3
+       local payload=$4
+
+       uci batch <<EOF
+set network.atm='atm-bridge'
+set network.atm.unit='0'
+set network.atm.vpi='$vpi'
+set network.atm.vci='$vci'
+set network.atm.encaps='$encaps'
+set network.atm.payload='$payload'
+set network.wan='interface'
+set network.wan.ifname='nas0'
+set network.wan.proto='pppoe'
+set network.wan.username='foo'
+set network.wan.password='bar'
+EOF
+}
+
+set_interfaces_lan_wan() {
+       local lan_ifname=$1
+       local wan_ifname=$2
+
+       set_interface_lan "$lan_ifname"
+       set_interface_wan "$wan_ifname"
+}
+
+add_switch() {
+       local name=$1
+       local reset=$2
+       local enable=$3
+       uci batch <<EOF
+add network switch
+set network.@switch[-1].name='$name'
+set network.@switch[-1].reset='$reset'
+set network.@switch[-1].enable_vlan='$enable'
+EOF
+}
+
+add_switch_vlan() {
+       local device=$1
+       local vlan=$2
+       local ports=$3
+       uci batch <<EOF
+add network switch_vlan
+set network.@switch_vlan[-1].device='$device'
+set network.@switch_vlan[-1].vlan='$vlan'
+set network.@switch_vlan[-1].ports='$ports'
+EOF
+}
+
+[ -e /etc/config/network ] && exit 0
+
+. /lib/lantiq.sh
+
+touch /etc/config/network
+
+set_interface_loopback
+set_interface_lan 'eth0'
+
+dsl=$(lantiq_soc_has_adsl)
+[ -z "$dsl" ] || set_atm_wan '1' '32' 'llc' 'bridged'
+
+board=$(lantiq_board_name)
+
+case "$board" in
+*)
+       # custom foo goes here
+       true
+       ;;
+esac
+
+uci commit network
+
+exit 0
index 75e8ac272b656d212a8ca8fe06a9cd1bdbffc0dd..3d36ed03fee56fd2f2415b662ccbb43f02463835 100644 (file)
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+lantiq_soc_has_adsl() {
+       ls /lib/modules/*/drv_dsl_cpe_api.ko
+}
+
 lantiq_soc_name() {
        grep ^system /proc/cpuinfo | sed "s/system type.*: \(.*\)/\1/g"
 }