1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-03-09 15:40:20 +00:00

Merge branch 'develop'

This commit is contained in:
suyuan 2020-12-25 16:55:50 +08:00
commit a490d46299

View file

@ -7,6 +7,35 @@ CFG=/etc/board.json
[ -s $CFG ] || /bin/board_detect || exit 1 [ -s $CFG ] || /bin/board_detect || exit 1
[ -s /etc/config/network -a -s /etc/config/system ] && exit 0 [ -s /etc/config/network -a -s /etc/config/system ] && exit 0
generate_bridge() {
local name=$1
local macaddr=$2
uci -q batch <<-EOF
set network.$name=device
set network.$name.name=$name
set network.$name.type=bridge
EOF
if [ -n "$macaddr" ]; then
uci -q batch <<-EOF
set network.$name.macaddr=$macaddr
EOF
fi
}
bridge_vlan_id=0
generate_bridge_vlan() {
local name=$1_vlan
local device=$2
local ports="$3"
local vlan="$4"
uci -q batch <<-EOF
set network.$name=bridge-vlan
set network.$name.device='$device'
set network.$name.vlan='$vlan'
set network.$name.ports='$ports'
EOF
}
generate_static_network() { generate_static_network() {
uci -q batch <<-EOF uci -q batch <<-EOF
delete network.loopback delete network.loopback
@ -62,11 +91,12 @@ generate_static_network() {
addr_offset=2 addr_offset=2
generate_network() { generate_network() {
local ifname macaddr protocol type ipaddr netmask local ifname macaddr protocol type ipaddr netmask vlan
local bridge=$2
json_select network json_select network
json_select "$1" json_select "$1"
json_get_vars ifname macaddr protocol ipaddr netmask json_get_vars ifname macaddr protocol ipaddr netmask vlan
json_select .. json_select ..
json_select .. json_select ..
@ -77,6 +107,16 @@ generate_network() {
*\ * | lan:*) type="bridge" ;; *\ * | lan:*) type="bridge" ;;
esac esac
[ -n "$bridge" ] && {
if [ -z "$vlan" ]; then
bridge_vlan_id=$((bridge_vlan_id + 1))
vlan=$bridge_vlan_id
fi
generate_bridge_vlan $1 $bridge "$ifname" $vlan
ifname=$bridge.$vlan
type=""
}
uci -q batch <<-EOF uci -q batch <<-EOF
delete network.$1 delete network.$1
set network.$1='interface' set network.$1='interface'
@ -100,7 +140,7 @@ generate_network() {
static) static)
local ipad local ipad
case "$1" in case "$1" in
lan) ipad=${ipaddr:-"192.168.1.1"} ;; lan) ipad=${ipaddr:-"192.168.100.1"} ;;
*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;; *) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
esac esac
@ -236,7 +276,6 @@ generate_switch() {
json_select .. json_select ..
} }
generate_static_system() { generate_static_system() {
uci -q batch <<-EOF uci -q batch <<-EOF
delete system.@system[0] delete system.@system[0]
@ -264,6 +303,13 @@ generate_static_system() {
uci -q set "system.@system[-1].hostname=$hostname" uci -q set "system.@system[-1].hostname=$hostname"
fi fi
local compat_version
if json_get_var compat_version compat_version; then
uci -q set "system.@system[-1].compat_version=$compat_version"
else
uci -q set "system.@system[-1].compat_version=1.0"
fi
if json_is_a ntpserver array; then if json_is_a ntpserver array; then
local keys key local keys key
json_get_keys keys ntpserver json_get_keys keys ntpserver
@ -429,11 +475,21 @@ json_load "$(cat ${CFG})"
umask 077 umask 077
if [ ! -s /etc/config/network ]; then if [ ! -s /etc/config/network ]; then
bridge_name=""
touch /etc/config/network touch /etc/config/network
generate_static_network generate_static_network
json_get_vars bridge
[ -n "$bridge" ] && {
json_select bridge
json_get_vars name macaddr
generate_bridge "$name" "$macaddr"
json_select ..
bridge_name=$name
}
json_get_keys keys network json_get_keys keys network
for key in $keys; do generate_network $key; done for key in $keys; do generate_network $key $bridge_name; done
json_get_keys keys switch json_get_keys keys switch
for key in $keys; do generate_switch $key; done for key in $keys; do generate_switch $key; done