1 # Copyright (C) 2006 OpenWrt.org
2 # Copyright (C) 2010 Vertical Communications
10 if [ "$vid" = "$netdev" ]; then
14 grep -q "$netdev" /proc/net/dev || return
16 if [ -n "$vid" ]; then
17 ip link add link $netdev name $1 type vlan id $vid
20 ip link set dev $netdev up
21 ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1
24 preinit_config_switch() {
25 local role roles ports device enable reset
33 json_get_vars enable reset
35 if [ "$reset" -eq "1" ]; then
36 swconfig dev $name set reset
38 swconfig dev $name set enable_vlan $enable
40 if json_is_a roles array; then
41 json_get_keys roles roles
44 for role in $roles; do
46 json_get_vars ports device
49 if [ "$device" = "$lan_if" ]; then
50 swconfig dev $name vlan $role set ports "$ports"
57 swconfig dev $name set apply
63 preinit_config_board() {
64 /bin/board_detect /tmp/board.json
66 [ -f "/tmp/board.json" ] || return
68 . /usr/share/libubox/jshn.sh
71 json_load "$(cat /tmp/board.json)"
76 json_get_values ports ports
80 [ -n "$device" -o -n "$ports" ] || return
82 # swconfig uses $device and DSA uses ports
87 # only use the first one
90 if [ -x /sbin/swconfig ]; then
91 # configure the switch, if present
93 json_get_keys keys switch
95 preinit_config_switch $key $ifname
100 # trim any vlan modifiers like :t
106 preinit_ip_config $pi_ifname
110 [ "$pi_preinit_no_failsafe" = "y" ] && return
112 # if the preinit interface isn't specified and ifname is set in
113 # preinit.arch use that interface
114 if [ -z "$pi_ifname" ]; then
118 if [ -n "$pi_ifname" ]; then
119 preinit_ip_config $pi_ifname
120 elif [ -d "/etc/board.d/" ]; then
124 preinit_net_echo "Doing OpenWrt Preinit\n"
127 preinit_ip_deconfig() {
128 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
131 netdev=${pi_ifname%\.*}
134 if [ "$vid" = "$netdev" ]; then
138 ip -4 address flush dev $pi_ifname
139 ip link set dev $netdev down
141 if [ -n "$vid" ]; then
142 ip link delete $pi_ifname
148 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
150 [ "$pi_preinit_net_messages" = "y" ] || {
151 [ "$pi_failsafe_net_message" = "true" ] &&
152 [ "$pi_preinit_no_failsafe_netmsg" != "y" ]
154 } && netmsg $pi_broadcast "$1"
158 pi_indicate_preinit() {
162 boot_hook_add preinit_main preinit_ip
163 boot_hook_add preinit_main pi_indicate_preinit