pve-manager/bridgevlanport
Wolfgang Bumiller 0bba4496df bridgevlanport: replace sed pipe with substitution
The previous code stripped *all* combinations of zero or
more letters and digits followed by a dot of an interface
name to retrieve the VLANID. At the same time the supposedly
opposite code for IF_VLAN_RAW_DEVICE only actually extracts
the part up to the *first* dot. Thus an interface named
'a.b.0' would have a VLANID of 0 and a raw device name of
just 'a'.
I also don't see a reason to limit the removed portions to
alphanumeric characters. I.e. an interface named tap-test.0
would result in a VLANID of 'tap-0' and an
IF_VLAN_RAW_DEVICE of 'test'.

A simple shell substitution seems to do a much better job
and is more efficient than forking out two processes with a
pipe.
2015-08-11 10:26:35 +02:00

24 lines
409 B
Bash
Executable File

#!/bin/sh
if [ ! -x /sbin/bridge ]
then
exit 0
fi
if [ "$MODE" = "start" ] ; then
case "$IFACE" in
*.[0-9]*)
VLANID="${IFACE##*.}"
IF_VLAN_RAW_DEVICE="${IFACE%.*}"
;;
esac
if [ -n "$IF_VLAN_RAW_DEVICE" ]; then
if [ -e "/sys/class/net/$IF_VLAN_RAW_DEVICE/bridge/vlan_filtering" ]; then
bridge vlan add dev $IF_VLAN_RAW_DEVICE vid $VLANID self
fi
fi
fi