blob: 253dc2901f8287f64725be516e64efb657389b01 [file] [log] [blame]
lh9ed821d2023-04-07 01:36:19 -07001#!/bin/sh
2#
3# $Id: lan.sh
4#
5path_sh=`nv get path_sh`
6. $path_sh/global.sh
7
8br_set()
9{
10 br_name=$lan_if
11
12 #ÉèÖÃÍøÇÅ
13 killall -9 udhcpd
14 echo "ifconfig $br_name down...................."
15 ifconfig $br_name down
16
17 echo "brctl delbr $br_name......................"
18 brctl delbr $br_name
19
20 echo "brctl addbr $br_name......................"
21 brctl addbr $br_name 2>>$test_log
22 if [ $? -ne 0 ];then
23 echo "Error: brctl addbr $br_name failed." >> $test_log
24 fi
25 echo "brctl setfd $br_name 0.1.................."
26 brctl setfd $br_name 0.1 2>>$test_log
27 if [ $? -ne 0 ];then
28 echo "Error: brctl setfd $br_name 0.1 failed." >> $test_log
29 fi
30 echo "ifconfig lo up......................."
31 ifconfig lo up 2>>$test_log
32 if [ $? -ne 0 ];then
33 echo "Error: ifconfig lo up failed." >> $test_log
34 fi
35 echo "ifconfig $br_name up......................"
36 ifconfig $br_name up 2>>$test_log
37 if [ $? -ne 0 ];then
38 echo "Error: ifconfig $br_name up failed." >> $test_log
39 fi
40
41 #´ò¿ªÍøÇŵØÖ·¸Ä±ä֪ͨµÄ¿ª¹Ø
42 echo 1 > /proc/sys/net/ipv4/conf/$br_name/arp_notify
43
44 br_node=`nv get br_node`
45
46 #analysis br_node ex: usb0+wifi0+¡­
47 IFS_OLD=$IFS
48 IFS="+"
49 for device in $br_node
50 do
51 ifconfig $device up
52
53 brctl addif $br_name $device 2>>$test_log
54 if [ $? -ne 0 ];then
55 echo "Error: brctl addif $br_name $device failed." >> $test_log
56 fi
57 done
xf.lidf7f8ba2024-09-12 23:53:34 -070058 br_node_num=`nv get br_node_num`
59 while [ $br_node_num -gt 0 ]
60 do
61 br_node_num=`expr $br_node_num - 1`
62 br_node=`nv get br_node$br_node_num`
63 if [ "x$br_node" != "x" ]; then
64 brname="bridge"$br_node_num
65 brctl addbr $brname 2>>$test_log
66 brctl setfd $brname 0.1 2>>$test_log
67 ifconfig $brname up 2>>$test_log
68 echo 1 > /proc/sys/net/ipv4/conf/$brname/arp_notify
69 for device in $br_node
70 do
71 ifconfig $device up 2>>$test_log
72 brctl addif $brname $device 2>>$test_log
73 nv set lan_name_$device=$brname
74 done
75 fi
76 done
lh9ed821d2023-04-07 01:36:19 -070077 IFS=$IFS_OLD
78
79}
80
81lan_set()
82{
83 ip=`nv get lan_ipaddr`
84 nm=`nv get lan_netmask`
85 ifconfig $lan_if $ip netmask $nm 2>>$test_log
86 if [ $? -ne 0 ];then
87 echo "Error: ifconfig $lan_if $ip netmask $nm failed." >> $test_log
88 fi
89
90 webv6_enable=`nv get webv6_enable`
91 ipv6=`nv get lan_ipv6addr`
92 if [ "x$webv6_enable" == "x1" ]; then
xf.li9d1a0e12023-09-20 01:43:20 -070093 ifconfig $lan_if $ipv6/64
lh9ed821d2023-04-07 01:36:19 -070094 if [ $? -ne 0 ];then
95 echo "Error: ifconfig $lan_if $ipv6 failed." >> $test_log
96 fi
97 fi
98}
99
100#½âÎöÄÚÍøµØÖ·¡¢Íø¹ØµØÖ·Í¨¹ýproc»úÖÆ¶¯Ì¬´«µÝ¸øÄںˣ¬ÒÔ±ãÄÚºËʵÏÖ·ÀÖ¹ÄÚÍøµØÖ·Ð¹Â¶¹¦ÄÜ
101lanip_proc()
102{
103 #ipµØÖ·»»Ëã³É4×Ö½ÚÕûÐÍÊÇÍøÂç×Ö½ÚÐò£¬Òªµßµ¹ÏÂ
104 #uclinux²»Ö§³Ö×óÒÆ×Ö·û
105 ip_value=`echo "$ip" | awk -F '.' '{printf $1 + 256* $2 + 256*256* $3 + 256*256*256* $4}'`
106 nm_value=`echo "$nm" | awk -F '.' '{printf $1 + 256* $2 + 256*256* $3 + 256*256*256* $4}'`
107
108 echo $ip_value > /sys/module/lanip_filter_ipv4/parameters/lan_ipaddr
109 echo $nm_value > /sys/module/lanip_filter_ipv4/parameters/lan_netmask
110}
111
112main()
113{
114 lan_enable=`nv get LanEnable`
115 if [ "x$lan_enable" == "x0" ]; then
116 exit 0
117 fi
118
119 echo "Info: lan.sh start" >> $test_log
120
121 if [ "x$lan_enable" == "x1" ]; then
122 br_set
123 fi
124
125 if [ "x$lan_if" != "x" ]; then
126 lan_set
127 fi
128
129 #vlanÅäÖã¬ÔÝʱ·ÅÓÚ´Ë´¦£¬1 ¿ª»úµÄʱºò²»ÐèÒª½«sw¼ÓÈëµ½ÍøÇÅÏÂ
130 #2 ´Ë´¦±ØÐ뽫sw upÆðÀ´£¬Èç¹û²»upµÄ»°½«²»»áÓÐrj45ÈȲå°Îʼþ
131 sw_name=`nv get swvlan`
132 ifconfig $sw_name up
133 natenable=`nv get natenable`
134 dosenable=`nv get dosenable`
135 if [[ "x$natenable" != "x0" || "x$dosenable" != "x0" ]]; then
136 lanip_proc
137 fi
138 if [ "x$dosenable" != "x0" ]; then
139 echo 1 > /sys/module/fast_common/parameters/lan_dos_enable
140 fi
141
lh758261d2023-07-13 05:52:04 -0700142 dhcps_in_cap=`nv get dhcps_in_cap`
lh9ed821d2023-04-07 01:36:19 -0700143
lh758261d2023-07-13 05:52:04 -0700144 if [ "x$dhcps_in_cap" != "x1" ]; then
lh9ed821d2023-04-07 01:36:19 -0700145 echo "" > $path_conf/udhcpd.leases
146
147 . $path_sh/user-config-udhcpd.sh
148
149 dhcp=`nv get dhcpEnabled`
150 if [ "$dhcp" == "1" ]; then
151 echo "Info: config-udhcpd.sh lan -r 1 start" >> $test_log
152 . $path_sh/config-udhcpd.sh "lan" -r 1
153 fi
lh758261d2023-07-13 05:52:04 -0700154 fi
lh9ed821d2023-04-07 01:36:19 -0700155 dnsmasq -i $lan_if -r $path_conf/resolv.conf &
156 . $path_sh/upnp.sh
157
158 #»ñÈ¡br0µÄipv6µØÖ·
159 ipv6lanipaddrcmd="ifconfig $br_name | grep Scope:Link | sed 's/^.*addr: //g' | sed 's/\/.*$//g'"
160 ipv6lanipaddr=`eval $ipv6lanipaddrcmd`
161 nv set ipv6_lan_ipaddr=$ipv6lanipaddr
xf.lie31de8b2023-12-26 23:38:58 -0800162 gw_in_cap=`nv get gw_in_cap`
163 if [ "x$gw_in_cap" == "x1" ]; then
164 lan_if_cap=`nv get lan_name_cap`
165 ap_ip=`nv get lan_ipaddr_cap`
166 ap_ipv6=`nv get lan_ipv6addr_cap`
167
168 ip route add default via $ap_ip
169 ip -6 route add default via $ap_ipv6 dev $lan_if_cap
170 echo "nameserver $ap_ip" >> /etc/resolv.conf
171 fi
lh9ed821d2023-04-07 01:36:19 -0700172}
173
174main