confd: add -6 option to gen-interfaces for SLACC on port interfaces

This change updates the documentation for the script, hopefully it is
more readable now than the previous wall of text.

Also, a new -6 option to toggle IPv6 SLACC option for port interfaces.
This, in combination with omitting the -b option, allows for enabling
SLACC on interfaces that would otherwise not get an address.

No functional change, tested manually [skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2023-11-03 12:55:44 +01:00
committed by Tobias Waldekranz
parent 64222bdac3
commit d0f3960d71
+44 -8
View File
@@ -1,14 +1,15 @@
#!/bin/sh #!/bin/sh
# Generates ietf-intefaces + ietf-ip settings for all detected interfaces # Generates ietf-intefaces + ietf-ip settings for all detected interfaces.
# Interfaces must be of type Ethernet (copper/sfp), not be "internal" DSA
# ports, and must have a "parentbus", i.e., be physical ports.
# #
# Usage: gen-interfaces [-4bd] # Interfaces must be of type Ethernet (copper/sfp), not be "internal"
# DSA ports, and must have a "parentbus", i.e., be physical ports.
# #
# -b brN Bridged mode, set all interfaces as ports in brN # The script mainly caters to two modes of operation: switch and router.
# -4 Generic option for both modes, enables ZeroConf IPv4 # There is also a mixed mode with limited usability. Other use-cases or
# -d Generic option for both modes, enables DHCPv4 client # combinations we recommend overriding this script in your br2-external
# rootfs overlay.
# #
### Router Mode (default) ##############################################
# By default this script generates plain interfaces with IPv6 autoconfig # By default this script generates plain interfaces with IPv6 autoconfig
# (EUI64) enabled. Useful both in a plain router and a Fail Secure mode # (EUI64) enabled. Useful both in a plain router and a Fail Secure mode
# where any switchcore-backed ports should be prevented from switching. # where any switchcore-backed ports should be prevented from switching.
@@ -21,6 +22,14 @@
# can be used to enable IPv4 and DHCP on a single service interface if # can be used to enable IPv4 and DHCP on a single service interface if
# needed. # needed.
# #
# Note: interfaces classified as ports, i.e., switchcore interfaces, or
# have been classified 'group port' by other means will by default
# *not* get an IPv6 address. This is by design, some may want to
# have port isolation and *no* IP communication by default. But,
# if you want IPv6 SLAAC on your port interfaces by default, add
# the -6 option to GEN_IFACE_OPTS in your /etc/confdrc.local
#
### Bridge Mode ########################################################
# The '-b brname' option triggers the bridge mode, creating a 'brname' # The '-b brname' option triggers the bridge mode, creating a 'brname'
# bridge interface using all interfaces classified in 'group port' by # bridge interface using all interfaces classified in 'group port' by
# the nameif script. In the bridge mode port interfaces do not have any # the nameif script. In the bridge mode port interfaces do not have any
@@ -28,6 +37,7 @@
# the '-4' option is set, ZeroConfig (169.254.x.y) is anabled on 'brN'. # the '-4' option is set, ZeroConfig (169.254.x.y) is anabled on 'brN'.
# If the '-d' option is set, a DHCPv4 client is enabled on 'brN'. # If the '-d' option is set, a DHCPv4 client is enabled on 'brN'.
# #
### Mixed Mode #########################################################
# A "mixed mode" is also supported, where the system may have multiple # A "mixed mode" is also supported, where the system may have multiple
# ports in a switchcore, but some Ethernet interfaces directly connected # ports in a switchcore, but some Ethernet interfaces directly connected
# to the SoC. In this case, if '-b brname' is given, all 'group port' # to the SoC. In this case, if '-b brname' is given, all 'group port'
@@ -38,8 +48,28 @@ set -e
bridge= bridge=
ipv4=false ipv4=false
ipv6=false
dhcp= dhcp=
usage()
{
cat <<EOF
Usage: gen-interfaces [-46d] [-b brN]
-4 Enable IPv4 ZeroConf, only for brN in bridge mode
-6 Enable IPv6 SLACC on *port* interfaces too
-b brN Bridged mode, add all port interfaces to brN
-d Enable DHCPv4 client, only for brN in bridge mode
IPv6 SLACC is default in non-bridged mode, but not for the port
interfaces, i.e., switchcore interfaces or otherwise classifed
as ports. Hence, -6 is necessary for platforms that have all
ports from a switchcore but do not want switching enabled.
EOF
exit 0
}
gen_interface() gen_interface()
{ {
cat <<EOF cat <<EOF
@@ -67,6 +97,9 @@ while [ "$1" != "" ]; do
-4) -4)
ipv4=true ipv4=true
;; ;;
-6)
ipv6=true
;;
-b) -b)
bridge="$2" bridge="$2"
shift shift
@@ -74,6 +107,9 @@ while [ "$1" != "" ]; do
-d) -d)
dhcp=true dhcp=true
;; ;;
-h)
usage
;;
*) *)
break break
esac esac
@@ -140,7 +176,7 @@ fi
cat <<EOF cat <<EOF
} }
$(for iface in $ifaces; do gen_interface $iface true; done) $(for iface in $ifaces; do gen_interface $iface true; done)
$(for iface in $ports; do gen_interface $iface false $bridge; done) $(for iface in $ports; do gen_interface $iface $ipv6 $bridge; done)
] ]
EOF EOF
if [ "$dhcp" = "true" ] && [ -n "$bridge" ]; then if [ "$dhcp" = "true" ] && [ -n "$bridge" ]; then