openwrt的network文件怎么生成的
本帖最后由 sunsili 于 2023-7-28 16:03 编辑openwrt的network文件怎么生成的?
openwrt的network文件,或者说在/etc/config下的文件,都是动态生成的。脚本的定义openwrt源码目录下的ackage/base-files/files/lib/functions中,有以下几个文件:ls package/base-files/files/lib/functions/
leds.shnetwork.shpreinit.shservice.shsystem.shuci-defaults-new.shuci-defaults.sh
其中uci-defaults.sh会生成默认的/etc/config下的文件,而其它文件是它的“库”。我们看一看uci-default.sh的内容cat package/base-files/files/lib/functions/uci-defaults.sh
#!/bin/sh
# Copyright (C) 2011 OpenWrt.org
UCIDEF_LEDS_CHANGED=0
ucidef_set_led_netdev() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local dev=$4
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='netdev'
set system.$cfg.dev='$dev'
set system.$cfg.mode='link tx rx'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_usbdev() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local dev=$4
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='usbdev'
set system.$cfg.dev='$dev'
set system.$cfg.interval='50'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_wlan() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local trigger=$4
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='$trigger'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_switch() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local trigger=$4
local port_mask=$5
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='$trigger'
set system.$cfg.port_mask='$port_mask'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_default() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local default=$4
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.default='$default'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_rssi() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local iface=$4
local minq=$5
local maxq=$6
local offset=$7
local factor=$8
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='rssi'
set system.$cfg.iface='rssid_$iface'
set system.$cfg.minq='$minq'
set system.$cfg.maxq='$maxq'
set system.$cfg.offset='$offset'
set system.$cfg.factor='$factor'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_timer() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local delayon=$4
local delayoff=$5
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='timer'
set system.$cfg.delayon='$delayon'
set system.$cfg.delayoff='$delayoff'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_led_mmc() {
local cfg="led_$1"
local name=$2
local sysfs=$3
local trigger=$4
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
set system.$cfg.trigger='$trigger'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_set_rssimon() {
local dev="$1"
local refresh="$2"
local threshold="$3"
local cfg="rssid_$dev"
uci -q get system.$cfg && return 0
uci batch <<EOF
set system.$cfg='rssid'
set system.$cfg.dev='$dev'
set system.$cfg.refresh='$refresh'
set system.$cfg.threshold='$threshold'
EOF
UCIDEF_LEDS_CHANGED=1
}
ucidef_commit_leds()
{
[ "$UCIDEF_LEDS_CHANGED" = "1" ] && uci commit system
}
ucidef_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'
set network.globals='globals'
set network.globals.ula_prefix='auto'
EOF
}
ucidef_set_interface_raw() {
local cfg=$1
local ifname=$2
local proto=${3:-"none"}
uci batch <<EOF
set network.$cfg='interface'
set network.$cfg.ifname='$ifname'
set network.$cfg.proto='$proto'
EOF
}
ucidef_set_interface_lan() {
local ifname=$1
uci batch <<EOF
set network.lan='interface'
set network.lan.ifname='$ifname'
set network.lan.force_link=1
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'
set network.lan.ip6assign='60'
EOF
}
ucidef_set_interface_wan() {
local ifname=$1
uci batch <<EOF
set network.wan='interface'
set network.wan.ifname='$ifname'
set network.wan.proto='dhcp'
set network.wan6='interface'
set network.wan6.ifname='$ifname'
set network.wan6.proto='dhcpv6'
EOF
}
ucidef_set_interfaces_lan_wan() {
local lan_ifname=$1
local wan_ifname=$2
ucidef_set_interface_lan "$lan_ifname"
ucidef_set_interface_wan "$wan_ifname"
}
ucidef_set_interface_macaddr() {
local ifname=$1
local mac=$2
uci batch <<EOF
set network.$ifname.macaddr='$mac'
EOF
}
ucidef_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
}
ucidef_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
}
ucidef_add_switch_port() {
local device=$1
local port=$2
uci batch <<EOF
add network switch_port
set network.@switch_port[-1].device='$device'
set network.@switch_port[-1].port='$port'
EOF
}
看到了吧,改这里的内容就会改到openwrt固件的默认配置了。调用这些库的脚本在这里:
root@OMJ:~# ls /etc/board.d
01_leds 02_network
对于网络,则是02_network文件,看看该文件的开头内容为:
root@OMJ:~# cat /etc/board.d/02_network
#!/bin/sh
. /lib/functions.sh. /lib/ramips.sh. /lib/functions/uci-defaults-new.sh. /lib/functions/system.sh
ramips_setup_rt3x5x_vlans(){ if [ ! -x /sbin/swconfig ]; then # legacy default ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" return fi local wanports="" local lanports="" for port in 5 4 3 2 1 0; do if [ `swconfig dev rt305x port $port get disable` = "1" ]; then continue fi if [ `swconfig dev rt305x port $port get lan` = "0" ]; then wanports="$port $wanports" else lanports="$port $lanports" fi done ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "rt305x" "1" "1" ucidef_add_switch_vlan "rt305x" "1" "$lanports 6t" ucidef_add_switch_vlan "rt305x" "2" "$wanports 6t"}
ramips_setup_interfaces(){ local board="$1"
ucidef_set_interface_loopback
case $board in a5-v11) ucidef_set_interface_lan "eth0.1" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 6t" ;;
3g150b | \ 3g300m | \ linkits7688 | \ linkits7688d | \ microwrt | \ w150m | \ zte-q7 | \ all0256n | \ all5002 | \ all5003 | \ broadway | \ dcs-930| \ dcs-930l-b1| \ ht-tm02| \ ncs601w | \ wnce2001) ucidef_add_switch "switch0" "1" "0" ucidef_set_interface_lan "eth0" ;;
3g-6200nl | \ mlw221 | \ mr-102n) ucidef_set_interface_lan "eth0.2" ;; mlwg2) ucidef_set_interface_lan "eth0.1" ;;
m2m) ucidef_add_switch "switch0" "4" ucidef_set_interface_lan "eth0" ;;
wizard8800 | \ wl-330n | \ wmr300) ucidef_set_interface_lan "eth0.1" ;;
b2c | \ nw718 | \ psr-680w | \ sl-r7205 | \ w502u | \ wr6202) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ;;
awapn2403) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 6t" ucidef_add_switch_vlan "switch0" "2" "1 6t" ;;
br-6475nd) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 9t" ucidef_add_switch_vlan "switch0" "2" "0 9t" ;;
re6500 | \ asl26555) ucidef_set_interface_lan "eth0.1" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 6t" ;;
cf-wr800n|\ ex2700) ucidef_set_interface_lan "eth0.1" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "4 6t" ;;
cy-swr1100) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 9t" ucidef_add_switch_vlan "switch0" "2" "4 9t" ;;
3g-6200n | \ ai-br100 | \ dir-610-a1 | \ dir-300-b7 | \ dir-320-b1 | \ dir-615-h1 | \ firewrt | \ pbr-m1 | \ hlk-rm04 | \ mt7621 | \ mt7628 | \ mzk-w300nh2 | \ mzk-750dhp | \ whr-300hp2 | \ whr-600d | \ wsr-600 | \ wsr-1166 | \ wt1520 | \ xiaomi-miwifi-mini |\ y1|\ zbt-wg2626) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 6t" ucidef_add_switch_vlan "switch0" "2" "4 6t" ;;
whr-1166d) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 6t" ucidef_add_switch_vlan "switch0" "2" "5 6t" ;; wizfi630a) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 6t" ucidef_add_switch_vlan "switch0" "2" "0 6t" ;; awm002-evb | \ awm003-evb | \ argus-atp52b | \ dir-645 | \ dir-860l-b1 | \ f5d8235-v1 | \ f5d8235-v2 | \ hg255d | \ rt-n14u | \ wrtnode | \ wt3020 | \ ur-326n4g | \ zbt-wa05) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 6t" ucidef_add_switch_vlan "switch0" "2" "0 6t" ;;
ur-336un) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ;;
br6524n | \ v11st-fe) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5t" ucidef_add_switch_vlan "switch0" "2" "0 5t" ;;
ar670w | \ ar725w | \ rt-n15 | \ wl-351) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5t" ucidef_add_switch_vlan "switch0" "2" "4 5t" ;;
rt-n56u) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 8t" ucidef_add_switch_vlan "switch0" "2" "4 8t" ;;
tew-691gr|\ tew-692gr) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" ucidef_add_switch_vlan "switch0" "2" "0t 5" ;;
vocore) ucidef_set_interface_lan "eth0.1" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 4 6t" ;;
wcr-150gn) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 6t" ucidef_add_switch_vlan "switch0" "2" "6t" ;;
wr8305rt) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4 6t" ucidef_add_switch_vlan "switch0" "2" "4 6t" ;;
y1s) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5 6t" ucidef_add_switch_vlan "switch0" "2" "0 6t" ;; d105 | \ na930 | \ omni-emb-hpm|\ wli-tx4-ag300n) ucidef_set_interface_lan "eth0" ;;
e1700 | \ mt7620a_mt7530) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch1" "1" "1" ucidef_add_switch_vlan "switch1" "1" "0 1 2 3 6t" ucidef_add_switch_vlan "switch1" "2" "4 6t" ;;
wzr-agl300nh) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5t" ucidef_add_switch_vlan "switch0" "2" "0 5t" ;; *) RT3X5X=`cat /proc/cpuinfo | egrep "(RT3.5|RT5350)"` if [ -n "${RT3X5X}" ]; then ramips_setup_rt3x5x_vlans else ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" fi ;; esac}
ramips_setup_macs(){ local board="$1" local lan_mac="" local wan_mac=""
case $board in br-6475nd) lan_mac=$(cat /sys/class/net/eth0/address) wan_mac=$(mtd_get_mac_binary devdata 7) ;;
w306r-v20) lan_mac=$(cat /sys/class/net/eth0/address) wan_mac=$(macaddr_add "$lan_mac" 5) ;;
tew-691gr) lan_mac=$(cat /sys/class/net/eth0/address) wan_mac=$(macaddr_add "$lan_mac" 3) ;;
tew-692gr) lan_mac=$(cat /sys/class/net/eth0/address) wan_mac=$(macaddr_add "$lan_mac" 4) ;;
m3 |\ m4 |\ x5 |\ x8) lan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_add "$lan_mac" -2) ;;
a5-v11 |\ bc2 |\ broadway |\ d105 |\ dir-620-a1 |\ esr-9753 |\ freestation5 |\ hlk-rm04 | \ mpr-a1 | \ mpr-a2 | \ dir-300-b7 | \ dir-320-b1 | \ psr-680w |\ sl-r7205 |\ y1 |\ y1s) lan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_setbit_la "$lan_mac") wan_mac=$(macaddr_add "$lan_mac" 1) ;;
ht-tm02) lan_mac=$(cat /sys/class/net/eth0/address) ;;
cy-swr1100 | \ dir-645) lan_mac=$(mtd_get_mac_ascii nvram lanmac) wan_mac=$(mtd_get_mac_ascii nvram wanmac) ;;
e1700) wan_mac=$(mtd_get_mac_ascii config WAN_MAC_ADDR) ;;
wcr-150gn) wan_mac=$(mtd_get_mac_binary factory 40) ;;
rt-n56u) lan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_setbit_la "$lan_mac") wan_mac=$(mtd_get_mac_binary factory 32772) ;;
all0239-3g | \ carambola | \ freestation5 | \ w502u | \ wnce2001) wan_mac=$(mtd_get_mac_binary factory 46) ;;
wsr-600|whr-300hp2|whr-600d|whr-1166d) wan_mac=$(mtd_get_mac_binary factory 4) lan_mac=$wan_mac ;; wizfi630a) lan_mac=$(mtd_get_mac_binary factory 4) wan_mac=$(mtd_get_mac_binary factory 40) ;; wsr-1166) local index="$(find_mtd_index "board_data")" wan_mac="$(grep -m1 mac= "/dev/mtd${index}" | cut -d= -f2)" lan_mac=$wan_mac ;; linkits7688 | \ linkits7688d) wan_mac=$(mtd_get_mac_binary factory 4) lan_mac=$(mtd_get_mac_binary factory 46) ;; *) lan_mac=$(cat /sys/class/net/eth0/address) wan_mac=$(macaddr_add "$lan_mac" 1) ;;
esac
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr lan $lan_mac [ -n "$wan_mac" ] && ucidef_set_interface_macaddr wan $wan_mac}
board_config_updateboard=$(ramips_board_name)ramips_setup_interfaces $boardramips_setup_macs $boardboard_config_flush
exit 0
页:
[1]