commit 03ad5670f8a7402e30b288a55d088e87685cd1a1 Author: James Dingwall Date: Tue Apr 19 12:45:31 2022 +0100 The set_mtu() function of xen-network-common.sh currently has this code: if [ ${type_if} = vif ] then local dev_=${dev#vif} local domid=${dev_%.*} local devid=${dev_#*.} local FRONTEND_PATH="/local/domain/$domid/device/vif/$devid" xenstore_write "$FRONTEND_PATH/mtu" ${mtu} fi This works fine if the device has its default name but if the xen config defines the vifname parameter the FRONTEND_PATH is incorrectly constructed. Learn the frontend path by reading the appropriate value from the backend. Also change use of `...` to $(...) for a consistent style in the script and adjust the valid check from `mtu > 0` to `mtu >= 68` per RFC 791. Signed-off-by: James Dingwall diff --git a/tools/hotplug/Linux/xen-network-common.sh b/tools/hotplug/Linux/xen-network-common.sh index 42fa704e8d..9a382c39f4 100644 --- a/tools/hotplug/Linux/xen-network-common.sh +++ b/tools/hotplug/Linux/xen-network-common.sh @@ -171,24 +171,20 @@ set_mtu () { local mtu=$(xenstore_read_default "$XENBUS_PATH/mtu" "") if [ -z "$mtu" ] then - mtu="`ip link show dev ${bridge}| awk '/mtu/ { print $5 }'`" + mtu="$(ip link show dev ${bridge}| awk '/mtu/ { print $5 }')" if [ -n "$mtu" ] then log debug "$bridge MTU is $mtu" fi fi - if [ -n "$mtu" ] && [ "$mtu" -gt 0 ] + if [ -n "$mtu" ] && [ "$mtu" -ge 68 ] then log debug "setting $dev MTU to $mtu" ip link set dev ${dev} mtu ${mtu} || : if [ ${type_if} = vif ] then - local dev_=${dev#vif} - local domid=${dev_%.*} - local devid=${dev_#*.} - - local FRONTEND_PATH="/local/domain/$domid/device/vif/$devid" + local FRONTEND_PATH="$(xenstore_read "$XENBUS_PATH/frontend")" xenstore_write "$FRONTEND_PATH/mtu" ${mtu} fi