summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren 'Tadgy' Austin <darren@afterdark.org.uk>2019-11-13 22:10:37 +0000
committerDarren 'Tadgy' Austin <darren@afterdark.org.uk>2019-11-13 22:10:37 +0000
commit13dbfe19e521b9821dba0fee36a9e0ed8ab07fb6 (patch)
tree2d3492c3dd3c35cbedbc33cdf3da786cecd8937a
parent247bad13e843f349d062b86dafeec8fd3b8162e7 (diff)
downloadslacknetsetup-13dbfe19e521b9821dba0fee36a9e0ed8ab07fb6.tar.xz
Remove BONDOPTS, VLANOPTS and BROPTS and replace with generic IFOPTS.
Previously we had an xOPTS variable for each type of interface that could be configured. I've replaced this with a generic IFOPTS option which can be used to supply interface type specific options to 'ip'. As the option is now generic, it can be applied to physical interfaces too; so interfaces such as eth0 can have options applied just like a virtual interface.
-rw-r--r--rc.inet141
-rw-r--r--rc.inet1.conf33
2 files changed, 45 insertions, 29 deletions
diff --git a/rc.inet1 b/rc.inet1
index 5e31c08..b9374ce 100644
--- a/rc.inet1
+++ b/rc.inet1
@@ -154,12 +154,12 @@ br_open() {
debug_log "/sbin/ip link set dev $BRIF up"
/sbin/ip link set dev $BRIF up
done
- while read -r -d \| BROPT; do
- if [ -n "$BROPT" ]; then
- debug_log "/sbin/ip link set dev ${IFNAME[$1]} type bridge $BROPT"
- /sbin/ip link set dev ${IFNAME[$1]} type bridge $BROPT
+ while read -r -d \| IFOPT; do
+ if [ -n "$IFOPT" ]; then
+ debug_log "/sbin/ip link set dev ${IFNAME[$1]} type bridge $IFOPT"
+ /sbin/ip link set dev ${IFNAME[$1]} type bridge $IFOPT
fi
- done <<<"${BROPTS[$i]}|" # The | on the end is required.
+ done <<<"${IFOPTS[$i]}|" # The | on the end is required.
debug_log "/sbin/ip link set dev ${IFNAME[$1]} up"
/sbin/ip link set dev ${IFNAME[$1]} up
}
@@ -199,12 +199,14 @@ bond_create() {
debug_log "/sbin/ip link set dev $BONDIF up"
/sbin/ip link set dev $BONDIF up
done
- while read -r -d \| BONDOPT; do
- if [ -n "$BONDOPT" ]; then
- debug_log "/sbin/ip link set dev ${IFNAME[$1]} type bond $BONDOPT"
- /sbin/ip link set dev ${IFNAME[$1]} type bond $BONDOPT
+ # This has to be done *after* the interface is brought up because the
+ # 'primary <interface>' option has to occur after the interface is active.
+ while read -r -d \| IFOPT; do
+ if [ -n "$IFOPT" ]; then
+ debug_log "/sbin/ip link set dev ${IFNAME[$1]} type bond $IFOPT"
+ /sbin/ip link set dev ${IFNAME[$1]} type bond $IFOPT
fi
- done <<<"${BONDOPTS[$1]}|" # The | on the end is required.
+ done <<<"${IFOPTS[$1]}|" # The | on the end is required.
}
# Function to destroy a bond.
@@ -277,12 +279,21 @@ if_up() {
((IF_UP == 1)) && /sbin/ip link set dev $IFACE down
return
fi
- while read -r -d \| VLANOPT; do
- if [ -n "$VLANOPT" ]; then
- debug_log "/sbin/ip link set dev ${1} type vlan $VLANOPT"
- /sbin/ip link set dev ${1} type vlan $VLANOPT
+ while read -r -d \| IFOPT; do
+ if [ -n "$IFOPT" ]; then
+ debug_log "/sbin/ip link set dev ${1} type vlan $IFOPT"
+ /sbin/ip link set dev ${1} type vlan $IFOPT
fi
- done <<<"${VLANOPTS[$i]}|" # The | on the end is required.
+ done <<<"${IFOPTS[$i]}|" # The | on the end is required.
+ elif [ -z "${BONDNICS[$i]}" ] && [ -z "${BRNICS[$i]}" ]; then
+ # Only apply IFOPTS for a physical interface if it's not been handled
+ # by a higher level interface.
+ while read -r -d \| IFOPT; do
+ if [ -n "$IFOPT" ]; then
+ debug_log "/sbin/ip link set dev ${1} $IFOPT"
+ /sbin/ip link set dev ${1} $IFOPT
+ fi
+ done <<<"${IFOPTS[$i]}|" # The | on the end is required.
fi
# Set hardware address:
if [ -n "${HWADDR[$i]}" ]; then
diff --git a/rc.inet1.conf b/rc.inet1.conf
index cdb66ba..8ac6c8d 100644
--- a/rc.inet1.conf
+++ b/rc.inet1.conf
@@ -68,23 +68,12 @@ GATEWAY6=""
# =============================================================================
-# Change this to "yes" for debugging output to syslog (if available, stdout if
-# not).
-DEBUG_ETH_UP="no"
-
-# MAXNICS is the maximum number of interfaces that will be configured.
-# You may need to increase the MAXNICS value if you have many interfaces, or
-# you use multiple VLANs and/or bridges. The default is 6.
-#MAXNICS="6"
-
-# =============================================================================
-
# Example of how to configure a bond (link aggrigation) interface.
#IFNAME[0]="bond0"
#BONDNICS[0]="eth0 eth1"
#BONDMODE[0]="balance-rr"
-#BONDOPTS[0]="xmit_hash_policy layer2+3 | miimon 100"
+#IFOPTS[0]="xmit_hash_policy layer2+3 | miimon 100"
#IPADDR[0]="192.168.0.1"
#NETMASK[0]="24"
#IPALIASES[0]=""
@@ -104,7 +93,7 @@ DEBUG_ETH_UP="no"
# Support") for details of the options available. This option is not required
# for a standard VLAN to be configured.
#IFNAME[0]="eth0.10"
-#VLANOPTS[0]=""
+#IFOPTS[0]=""
#IPADDR[0]="192.168.10.1"
#NETMASK[0]="24"
#IPALIASES[0]=""
@@ -125,7 +114,7 @@ DEBUG_ETH_UP="no"
# required for a standard bridge to be configured.
#IFNAME[0]="br0"
#BRNICS[0]="eth0"
-#BROPTS[0]=""
+#IFOPTS[0]=""
#IPADDR[0]="192.168.0.1"
#NETMASK[0]="24"
#IPALIASES[0]=""
@@ -181,6 +170,11 @@ DEBUG_ETH_UP="no"
# Some examples of additional network parameters that you can use.
#IFNAME[4]="wlan0" # Use a different interface name instead of
# the default 'eth4'
+#IFOPTS[4]="" # A pipe (|) delimited list of interface type
+ # specific options to apply. These options
+ # can be found in the ip-link(8) man page in
+ # the approprite section for the interface
+ # type being configured.
#IPALIASES[4]="192.168.5.10/24" # Set up an IP alias. A netmask may be given
# with a /<prefix> after the IP address - if
# not supplied, /24 will be used as default.
@@ -224,3 +218,14 @@ DEBUG_ETH_UP="no"
#WLAN_WPAWAIT[4]=30 # In case it takes long for the WPA association
# to finish, you can increase the wait time
# (defaults to 10 seconds)
+
+# =============================================================================
+
+# Change this to "yes" for debugging output to syslog (if available, stdout if
+# not).
+DEBUG_ETH_UP="no"
+
+# MAXNICS is the maximum number of interfaces that will be configured.
+# You may need to increase the MAXNICS value if you have many interfaces, or
+# you use multiple VLANs and/or bridges. The default is 6.
+#MAXNICS="6"