Skip to content

Commit 2187536

Browse files
committed
hook: vlan.sh: fix 'parse_cmdline' bug; if no hw_addr specified, default ifname to eth0
- `parse_cmdline` is actually `parse_kernel_cmdline_for` - no reason to double-newline results - allow for simple vlan_id=xxx without hwaddr for single-interface or first-interface VLAN scenarios Signed-off-by: Ricardo Pardini <[email protected]>
1 parent 9dc7c7d commit 2187536

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

files/vlan.sh

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function parse_kernel_cmdline_for() {
2626
if [ -z "${result}" ]; then
2727
return 1
2828
else
29-
printf "%s\n" "$result"
29+
printf "%s" "$result"
3030
fi
3131
}
3232

@@ -43,15 +43,14 @@ function add_vlan_interface() {
4343

4444
# check if hw_addr are set in the kernel commandline, otherwise return.
4545
if ! kernel_cmdline_exists hw_addr; then
46-
echo "No hw_addr=xx:xx:xx:xx:xx:xx set in kernel commandline; no VLAN handling." >&2
47-
return
46+
echo "No hw_addr=xx:xx:xx:xx:xx:xx set in kernel commandline." >&2
4847
fi
4948

5049
echo "Starting VLAN handling, parsing..." >&2
5150

5251
declare vlan_id hw_addr
53-
vlan_id="$(parse_cmdline vlan_id)"
54-
hw_addr="$(parse_cmdline hw_addr)"
52+
vlan_id="$(parse_kernel_cmdline_for vlan_id)"
53+
hw_addr="$(parse_kernel_cmdline_for hw_addr)"
5554

5655
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}'" >&2
5756

@@ -60,21 +59,23 @@ function add_vlan_interface() {
6059
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', searching for interface..." >&2
6160
ifname="$(ip -br link | awk '$3 ~ /'"${hw_addr}"'/ {print $1}')"
6261
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', found interface: '${ifname}'" >&2
63-
if [ -n "$ifname" ]; then
64-
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', adding VLAN interface..." >&2
65-
ip link set dev "${ifname}" up || true
66-
ip link add link "${ifname}" name "${ifname}.${vlan_id}" type vlan id "${vlan_id}" || true
67-
ip link set "${ifname}.${vlan_id}" up || true
68-
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', added VLAN interface: '${ifname}.${vlan_id}'" >&2
69-
return 0
70-
else
71-
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', no interface found for hw_addr." >&2
72-
return 3
73-
fi
7462
else
75-
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', no hw_addr found in kernel commandline." >&2
76-
return 2
63+
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', no hw_addr found in kernel commandline; default ifname to eth0." >&2
64+
ifname="eth0"
7765
fi
66+
67+
if [ -n "$ifname" ]; then
68+
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', adding VLAN interface..." >&2
69+
ip link set dev "${ifname}" up || true
70+
ip link add link "${ifname}" name "${ifname}.${vlan_id}" type vlan id "${vlan_id}" || true
71+
ip link set "${ifname}.${vlan_id}" up || true
72+
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', added VLAN interface: '${ifname}.${vlan_id}'" >&2
73+
return 0
74+
else
75+
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', no interface found for hw_addr." >&2
76+
return 3
77+
fi
78+
7879
else
7980
echo "VLAN handling - vlan_id: '${vlan_id}', hw_addr: '${hw_addr}', no vlan_id found in kernel commandline." >&2
8081
return 1

0 commit comments

Comments
 (0)