2 # Copyright (C) 2006 OpenWrt.org
3 # Copyright (C) 2010 Vertical Communications
11 if [ "$vid" = "$netdev" ]; then
15 grep -q "$netdev" /proc
/net
/dev ||
return
17 if [ -n "$vid" ]; then
18 ip link add link
$netdev name
$1 type vlan id
$vid
21 ip link
set dev
$netdev up
22 ip
-4 address add
$pi_ip/$pi_netmask broadcast
$pi_broadcast dev
$1
25 preinit_config_switch
() {
26 local role roles ports device
enable reset
34 json_get_vars
enable reset
36 if [ "$reset" -eq "1" ]; then
37 swconfig dev
$name set reset
39 swconfig dev
$name set enable_vlan
$enable
41 if json_is_a roles array
; then
42 json_get_keys roles roles
45 for role
in $roles; do
47 json_get_vars ports device
50 if [ "$device" = "$lan_if" ]; then
51 swconfig dev
$name vlan
$role set ports
"$ports"
58 swconfig dev
$name set apply
64 preinit_config_board
() {
65 /bin
/board_detect
/tmp
/board.json
67 [ -f "/tmp/board.json" ] ||
return
69 .
/usr
/share
/libubox
/jshn.sh
72 json_load
"$(cat /tmp/board.json)"
80 [ -n "$ifname" ] ||
return
82 # only use the first one
85 if [ -x /sbin
/swconfig
]; then
86 # configure the switch, if present
88 json_get_keys keys switch
90 preinit_config_switch
$key $ifname
99 preinit_ip_config
$pi_ifname
103 [ "$pi_preinit_no_failsafe" = "y" ] && return
105 # if the preinit interface isn't specified and ifname is set in
106 # preinit.arch use that interface
107 if [ -z "$pi_ifname" ]; then
111 if [ -n "$pi_ifname" ]; then
112 preinit_ip_config
$pi_ifname
113 elif [ -d "/etc/board.d/" ]; then
117 preinit_net_echo
"Doing OpenWrt Preinit\n"
120 preinit_ip_deconfig
() {
121 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc
/net
/dev
&& {
124 netdev
=${pi_ifname%\.*}
127 if [ "$vid" = "$netdev" ]; then
131 ip
-4 address flush dev
$pi_ifname
132 ip link
set dev
$netdev down
134 if [ -n "$vid" ]; then
135 ip link delete
$pi_ifname
141 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc
/net
/dev
&& {
143 [ "$pi_preinit_net_messages" = "y" ] ||
{
144 [ "$pi_failsafe_net_message" = "true" ] &&
145 [ "$pi_preinit_no_failsafe_netmsg" != "y" ]
147 } && netmsg
$pi_broadcast "$1"
151 pi_indicate_preinit
() {
155 boot_hook_add preinit_main preinit_ip
156 boot_hook_add preinit_main pi_indicate_preinit