OpenWrt – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 #!/bin/sh
2 # Copyright (C) 2006 OpenWrt.org
3 # Copyright (C) 2010 Vertical Communications
4  
5 preinit_ip_config() {
6 local netdev vid
7  
8 netdev=${1%\.*}
9 vid=${1#*\.}
10  
11 if [ "$vid" = "$netdev" ]; then
12 vid=
13 fi
14  
15 grep -q "$netdev" /proc/net/dev || return
16  
17 if [ -n "$vid" ]; then
18 ip link add link $netdev name $1 type vlan id $vid
19 fi
20  
21 ip link set dev $netdev up
22 ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1
23 }
24  
25 preinit_config_switch() {
26 local role roles ports device enable reset
27  
28 local name=$1
29 local lan_if=$2
30  
31 json_select switch
32 json_select $name
33  
34 json_get_vars enable reset
35  
36 if json_is_a roles array; then
37 json_get_keys roles roles
38 json_select roles
39  
40 for role in $roles; do
41 json_select "$role"
42 json_get_vars ports device
43 json_select ..
44  
45 if [ "$device" = "$lan_if" ]; then
46 if [ "$reset" -eq "1" ]; then
47 swconfig dev $name set reset
48 fi
49  
50 swconfig dev $name set enable_vlan $enable
51 swconfig dev $name vlan $role set ports "$ports"
52 swconfig dev $name set apply
53 fi
54 done
55  
56 json_select ..
57 fi
58  
59 json_select ..
60 json_select ..
61 }
62  
63 preinit_config_board() {
64 /bin/board_detect /tmp/board.json
65  
66 [ -f "/tmp/board.json" ] || return
67  
68 . /usr/share/libubox/jshn.sh
69  
70 json_init
71 json_load "$(cat /tmp/board.json)"
72  
73 json_select network
74 json_select "lan"
75 json_get_vars ifname
76 json_select ..
77 json_select ..
78  
79 [ -n "$ifname" ] || return
80  
81 # only use the first one
82 ifname=${ifname%% *}
83  
84 if [ -x /sbin/swconfig ]; then
85 # configure the switch, if present
86  
87 json_get_keys keys switch
88 for key in $keys; do
89 preinit_config_switch $key $ifname
90 done
91 else
92 # trim any vlan ids
93 ifname=${ifname%\.*}
94 fi
95  
96 pi_ifname=$ifname
97  
98 preinit_ip_config $pi_ifname
99 }
100  
101 preinit_ip() {
102 [ "$pi_preinit_no_failsafe" = "y" ] && return
103  
104 # if the preinit interface isn't specified and ifname is set in
105 # preinit.arch use that interface
106 if [ -z "$pi_ifname" ]; then
107 pi_ifname=$ifname
108 fi
109  
110 if [ -n "$pi_ifname" ]; then
111 preinit_ip_config $pi_ifname
112 elif [ -d "/etc/board.d/" ]; then
113 preinit_config_board
114 fi
115  
116 preinit_net_echo "Doing OpenWrt Preinit\n"
117 }
118  
119 preinit_ip_deconfig() {
120 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
121 local netdev vid
122  
123 netdev=${pi_ifname%\.*}
124 vid=${pi_ifname#*\.}
125  
126 if [ "$vid" = "$netdev" ]; then
127 vid=
128 fi
129  
130 ip -4 address flush dev $pi_ifname
131 ip link set dev $netdev down
132  
133 if [ -n "$vid" ]; then
134 ip link delete $pi_ifname
135 fi
136 }
137 }
138  
139 preinit_net_echo() {
140 [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
141 {
142 [ "$pi_preinit_net_messages" = "y" ] || {
143 [ "$pi_failsafe_net_message" = "true" ] &&
144 [ "$pi_preinit_no_failsafe_netmsg" != "y" ]
145 }
146 } && netmsg $pi_broadcast "$1"
147 }
148 }
149  
150 pi_indicate_preinit() {
151 set_state preinit
152 }
153  
154 boot_hook_add preinit_main preinit_ip
155 boot_hook_add preinit_main pi_indicate_preinit