Files
openlan/dist/script/bridge
2022-07-29 23:38:54 +08:00

68 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
## Load configuration.
cfg="eth0.cfg"
if [ $# -ge 1 ]; then
cfg="$1"
shift
fi
if [ -e "$cfg" ]; then
. $cfg
fi
## Check enviroment.
if [ -z "$PHY" ] || [ -z "$ADDR" ] || [ -z "$PREFIX" ]; then
echo "Variable(PHY|ADDR|PREFIX) is NULL"
exit
fi
yum install bridge-utils -y
## Set variable
phy="$PHY"
addr="$ADDR"
prefix="$PREFIX"
br=br-"$PHY"
gw="$GATEWAY"
dns1="$DNS1"
## Configure script
brCfg=/etc/sysconfig/network-scripts/ifcfg-"$br"
phyCfg=/etc/sysconfig/network-scripts/ifcfg-"$phy"
## Generate bridge configure
echo "## Generate by OpenLAN project" > $brCfg
echo "STP=\"yes\"" >> $brCfg
echo "DELAY=\"2\"" >> $brCfg
echo "TYPE=\"Bridge\"" >> $brCfg
echo "NAME=\"$br\"" >> $brCfg
echo "DEVICE=\"$br\"" >> $brCfg
echo "BOOTPROTO=\"none\"" >> $brCfg
if [ -n "$addr" ]; then
echo "IPADDR=\"$addr\"" >> $brCfg
fi
if [ -n "$prefix" ]; then
echo "PREFIX=\"$prefix\"" >> $brCfg
fi
if [ -n "$gw" ]; then
echo "GATEWAY=\"$gw\"" >> $brCfg
fi
if [ -n "$dns1" ]; then
echo "DNS1=\"$dns1\"" >> $brCfg
fi
echo "ONBOOT=\"yes\"" >> $brCfg
echo "NM_CONTROLLED=\"no\"" >> $brCfg
## Generate physical configure
echo "## Generate by OpenLAN project" > $phyCfg
echo "TYPE=\"Ethernet\"" >> $phyCfg
echo "NAME=\"$phy\"" >> $phyCfg
echo "DEVICE=\"$phy\"" >> $phyCfg
echo "BOOTPROTO=\"none\"" >> $phyCfg
echo "ONBOOT=\"yes\"" >> $phyCfg
echo "NM_CONTROLLED=\"no\"" >> $phyCfg
echo "BRIDGE=\"$br\"" >> $phyCfg
echo "BRIDGING_OPTS=\"path_cost=4\"" >> $phyCfg # 4: 1G, 2: 10G, 19: 100Mb and 100: 1Mb.
ifdown "$br"; ifdown "$phy"; ifup "$br"; ifup "$phy";