Add argument checks and allow lladdrs and stp to be set
This commit is contained in:
parent
79cb1609e7
commit
f8856c5b33
94
netdev.sh
94
netdev.sh
|
@ -7,20 +7,25 @@ header_eb() {
|
||||||
}
|
}
|
||||||
|
|
||||||
header_if() {
|
header_if() {
|
||||||
echo "define INTERFACE $1"
|
local if="${1:?missing if}"
|
||||||
|
echo "define INTERFACE $if"
|
||||||
}
|
}
|
||||||
|
|
||||||
header_addr() {
|
header_addr() {
|
||||||
echo "define ADDR $1"
|
local addr="${1:?missing addr}"
|
||||||
|
echo "define ADDR $addr"
|
||||||
}
|
}
|
||||||
|
|
||||||
header_vlan() {
|
header_vlan() {
|
||||||
echo "define VLAN $1"
|
local vlan="${1:?missing vlan}"
|
||||||
echo "define PARENT $2"
|
local parent="${2:?missing parent}"
|
||||||
|
echo "define VLAN $vlan"
|
||||||
|
echo "define PARENT $parent"
|
||||||
}
|
}
|
||||||
|
|
||||||
header_vrf() {
|
header_vrf() {
|
||||||
echo "define VRF $1"
|
local vrf="${1:?missing vrf}"
|
||||||
|
echo "define VRF $vrf"
|
||||||
}
|
}
|
||||||
|
|
||||||
header_path() {
|
header_path() {
|
||||||
|
@ -44,12 +49,13 @@ h_if_addr() {
|
||||||
}
|
}
|
||||||
|
|
||||||
linkdel() {
|
linkdel() {
|
||||||
h_if "$1"
|
local if="${1:?missing if}"
|
||||||
|
h_if "$if"
|
||||||
echo 'ip link del $INTERFACE'
|
echo 'ip link del $INTERFACE'
|
||||||
}
|
}
|
||||||
|
|
||||||
ifbundle() {
|
ifbundle() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
[ -r "rc/bundle.interface.$if/type" ] || install -Dm644 <(echo bundle) rc/bundle.interface."$if"/type
|
[ -r "rc/bundle.interface.$if/type" ] || install -Dm644 <(echo bundle) rc/bundle.interface."$if"/type
|
||||||
shift 1
|
shift 1
|
||||||
for sname in $@; do
|
for sname in $@; do
|
||||||
|
@ -58,7 +64,7 @@ ifbundle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
new_link() {
|
new_link() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$if.link"
|
local sname="interface.$if.link"
|
||||||
|
|
||||||
|
@ -75,7 +81,7 @@ new_link() {
|
||||||
}
|
}
|
||||||
|
|
||||||
new_forward() {
|
new_forward() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="sysctl.net-ipv6-conf-$if-forwarding"
|
local sname="sysctl.net-ipv6-conf-$if-forwarding"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -106,8 +112,8 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
new_if_slave() {
|
new_if_slave() {
|
||||||
local master="$1"
|
local master="${1:?missing master}"
|
||||||
local slave="$2"
|
local slave="${2:?missing slave}"
|
||||||
|
|
||||||
local sname="interface.$master.slave.$slave"
|
local sname="interface.$master.slave.$slave"
|
||||||
ifbundle "$master" "$sname"
|
ifbundle "$master" "$sname"
|
||||||
|
@ -135,7 +141,7 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
new_if_bridge() {
|
new_if_bridge() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$if.create"
|
local sname="interface.$if.create"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -151,8 +157,46 @@ new_if_bridge() {
|
||||||
new_link "$if"
|
new_link "$if"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bridge_stp() {
|
||||||
|
local if="${1:?missing if}"
|
||||||
|
local state="${2:-1}"
|
||||||
|
|
||||||
|
local sname="interface.$if.stp"
|
||||||
|
ifbundle "$if" "$sname"
|
||||||
|
|
||||||
|
install -Dm644 <(
|
||||||
|
h_if "$if"
|
||||||
|
cat <<EOF
|
||||||
|
define STATE $state
|
||||||
|
EOF
|
||||||
|
echo 'ip link set $INTERFACE type bridge stp_state $STATE'
|
||||||
|
) rc/"$sname"/up
|
||||||
|
install -Dm644 <(
|
||||||
|
h_if "$if"
|
||||||
|
echo 'ip link set $INTERFACE type bridge stp_state 0'
|
||||||
|
) rc/"$sname"/down
|
||||||
|
install -Dm644 <(echo oneshot) rc/"$sname"/type
|
||||||
|
install -Dm644 /dev/null rc/"$sname"/dependencies.d/module.stp
|
||||||
|
install -Dm644 /dev/null rc/"$sname"/dependencies.d/interface."$if".create
|
||||||
|
}
|
||||||
|
|
||||||
|
if_lladdress() {
|
||||||
|
local if="${1:?missing if}"
|
||||||
|
local addr="${2:?missing addr}"
|
||||||
|
|
||||||
|
local sname="interface.$if.lladdr"
|
||||||
|
ifbundle "$if" "$sname"
|
||||||
|
|
||||||
|
install -Dm644 <(
|
||||||
|
h_if_addr "$if" "$addr"
|
||||||
|
echo 'ip link set $INTERFACE address $ADDR'
|
||||||
|
) rc/"$sname"/up
|
||||||
|
install -Dm644 <(echo oneshot) rc/"$sname"/type
|
||||||
|
install -Dm644 /dev/null rc/"$sname"/dependencies.d/interface."$if".create
|
||||||
|
}
|
||||||
|
|
||||||
new_if_phys() {
|
new_if_phys() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$if.create"
|
local sname="interface.$if.create"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -168,7 +212,7 @@ new_if_phys() {
|
||||||
}
|
}
|
||||||
|
|
||||||
new_if_wg() {
|
new_if_wg() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
# Main service for creating interface
|
# Main service for creating interface
|
||||||
local sname="interface.$if.create"
|
local sname="interface.$if.create"
|
||||||
|
@ -189,7 +233,7 @@ new_if_wg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
wgconf() {
|
wgconf() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$if.wg-config"
|
local sname="interface.$if.wg-config"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -210,8 +254,8 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
new_if_vrf() {
|
new_if_vrf() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
local table="$2"
|
local table="${2:?missing table}"
|
||||||
|
|
||||||
local sname="interface.$if.create"
|
local sname="interface.$if.create"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -236,7 +280,7 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
new_if_vlan() {
|
new_if_vlan() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
local vlan="$(echo $if | cut -d'-' -f2)"
|
local vlan="$(echo $if | cut -d'-' -f2)"
|
||||||
local parent="$(echo $if | cut -d'-' -f1)"
|
local parent="$(echo $if | cut -d'-' -f1)"
|
||||||
|
|
||||||
|
@ -259,8 +303,8 @@ new_if_vlan() {
|
||||||
}
|
}
|
||||||
|
|
||||||
addr_v6_static_if() {
|
addr_v6_static_if() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
local addr="$2"
|
local addr="${2:?missing addr}"
|
||||||
local addrn="$(echo "$addr" | sed 's/\//_/g')"
|
local addrn="$(echo "$addr" | sed 's/\//_/g')"
|
||||||
|
|
||||||
local sname="interface.$if.static.addr.6.$addrn"
|
local sname="interface.$if.static.addr.6.$addrn"
|
||||||
|
@ -279,8 +323,8 @@ addr_v6_static_if() {
|
||||||
}
|
}
|
||||||
|
|
||||||
route_v6_vrf_default_if() {
|
route_v6_vrf_default_if() {
|
||||||
local vrf="$1"
|
local vrf="${1:?missing vrf}"
|
||||||
local if="$2"
|
local if="${2:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$vrf.route.6.default"
|
local sname="interface.$vrf.route.6.default"
|
||||||
ifbundle "$vrf" "$sname"
|
ifbundle "$vrf" "$sname"
|
||||||
|
@ -301,7 +345,7 @@ route_v6_vrf_default_if() {
|
||||||
}
|
}
|
||||||
|
|
||||||
route_v6_vrf_default_unreach() {
|
route_v6_vrf_default_unreach() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
|
|
||||||
local sname="interface.$if.route.6.unreach"
|
local sname="interface.$if.route.6.unreach"
|
||||||
ifbundle "$if" "$sname"
|
ifbundle "$if" "$sname"
|
||||||
|
@ -319,8 +363,8 @@ route_v6_vrf_default_unreach() {
|
||||||
}
|
}
|
||||||
|
|
||||||
route_v6_vrf_sink_unreach() {
|
route_v6_vrf_sink_unreach() {
|
||||||
local if="$1"
|
local if="${1:?missing if}"
|
||||||
local addr="$2"
|
local addr="${2:?missing addr}"
|
||||||
local addrn="$(echo "$addr" | sed 's/\//_/g')"
|
local addrn="$(echo "$addr" | sed 's/\//_/g')"
|
||||||
|
|
||||||
local sname="interface.$if.route.6.sink.$addrn"
|
local sname="interface.$if.route.6.sink.$addrn"
|
||||||
|
|
|
@ -29,16 +29,22 @@ new_if_bridge "br-dn42"
|
||||||
new_if_slave "br-dn42" "phys2-42"
|
new_if_slave "br-dn42" "phys2-42"
|
||||||
|
|
||||||
new_if_bridge "f33d"
|
new_if_bridge "f33d"
|
||||||
|
bridge_stp "f33d"
|
||||||
|
if_lladdress "f33d" '02:00:00:00:f3:3d'
|
||||||
addr_v6_static_if "f33d" "2a04:5b81:2060:f33d::1/64"
|
addr_v6_static_if "f33d" "2a04:5b81:2060:f33d::1/64"
|
||||||
new_if_slave "f33d" "vnet2"
|
new_if_slave "f33d" "vnet2"
|
||||||
|
|
||||||
new_if_bridge "b00b"
|
new_if_bridge "b00b"
|
||||||
|
bridge_stp "b00b"
|
||||||
|
if_lladdress "b00b" '02:00:00:00:b0:0b'
|
||||||
addr_v6_static_if "b00b" "2a04:5b81:2060:b00b::1/64"
|
addr_v6_static_if "b00b" "2a04:5b81:2060:b00b::1/64"
|
||||||
new_if_slave "b00b" "vnet0"
|
new_if_slave "b00b" "vnet0"
|
||||||
new_if_slave "b00b" "vnet4"
|
new_if_slave "b00b" "vnet4"
|
||||||
new_if_slave "b00b" "phys2-66"
|
new_if_slave "b00b" "phys2-66"
|
||||||
|
|
||||||
new_if_bridge "d00d"
|
new_if_bridge "d00d"
|
||||||
|
bridge_stp "d00d"
|
||||||
|
if_lladdress "d00d" '02:00:00:00:d0:0d'
|
||||||
addr_v6_static_if "d00d" "2a04:5b81:2060:d00d::1/64"
|
addr_v6_static_if "d00d" "2a04:5b81:2060:d00d::1/64"
|
||||||
new_if_slave "d00d" "vnet3"
|
new_if_slave "d00d" "vnet3"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue