Message ID | 1573206153-22090-1-git-send-email-paul@xen.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] tools/hotpug: only attempt to call 'ip route' if there is valid command | expand |
On Fri, Nov 08, 2019 at 09:42:33AM +0000, paul@xen.org wrote: > From: Paul Durrant <pdurrant@amazon.com> > > The vif-route script should only call 'ip route' when 'ipcmd' has been > set, otherwise it will fail due to an incorrect command string. > > This patch also adds routes for 'tap' (i.e. emulated) devices as well as > 'vif' (i.e. PV) devices. Empirically offline/online commands relate to > 'vif' devices, and add/remove commands relate to 'tap' devices. However, > this patch treats them equally and uses ${type_if} to distinguish. By > adding cases for add/remove the command list becomes exhaustive and hence > 'ipcmd' is guaranteed to be set. > > Routes for 'tap' and 'vif' devices are distinguished by a route metric. > Emulated devices are used by HVM guests until they are unplugged, at which > point the PV device becomes active. Thus 'tap' devices should get a higher > priority (i.e. lower numbered) metric than 'vif' devices. > > There is also one small whitespace fix. > > Signed-off-by: Paul Durrant <pdurrant@amazon.com> Acked-by: Wei Liu <wl@xen.org> Cc Juergen I think this is a candidate for 4.13. Wei.
On 08.11.19 11:31, Wei Liu wrote: > On Fri, Nov 08, 2019 at 09:42:33AM +0000, paul@xen.org wrote: >> From: Paul Durrant <pdurrant@amazon.com> >> >> The vif-route script should only call 'ip route' when 'ipcmd' has been >> set, otherwise it will fail due to an incorrect command string. >> >> This patch also adds routes for 'tap' (i.e. emulated) devices as well as >> 'vif' (i.e. PV) devices. Empirically offline/online commands relate to >> 'vif' devices, and add/remove commands relate to 'tap' devices. However, >> this patch treats them equally and uses ${type_if} to distinguish. By >> adding cases for add/remove the command list becomes exhaustive and hence >> 'ipcmd' is guaranteed to be set. >> >> Routes for 'tap' and 'vif' devices are distinguished by a route metric. >> Emulated devices are used by HVM guests until they are unplugged, at which >> point the PV device becomes active. Thus 'tap' devices should get a higher >> priority (i.e. lower numbered) metric than 'vif' devices. >> >> There is also one small whitespace fix. >> >> Signed-off-by: Paul Durrant <pdurrant@amazon.com> > > Acked-by: Wei Liu <wl@xen.org> Release-acked-by: Juergen Gross <jgross@suse.com> Juergen
On Tue, Nov 12, 2019 at 11:01:26AM +0100, Jürgen Groß wrote: > On 08.11.19 11:31, Wei Liu wrote: > > On Fri, Nov 08, 2019 at 09:42:33AM +0000, paul@xen.org wrote: > > > From: Paul Durrant <pdurrant@amazon.com> > > > > > > The vif-route script should only call 'ip route' when 'ipcmd' has been > > > set, otherwise it will fail due to an incorrect command string. > > > > > > This patch also adds routes for 'tap' (i.e. emulated) devices as well as > > > 'vif' (i.e. PV) devices. Empirically offline/online commands relate to > > > 'vif' devices, and add/remove commands relate to 'tap' devices. However, > > > this patch treats them equally and uses ${type_if} to distinguish. By > > > adding cases for add/remove the command list becomes exhaustive and hence > > > 'ipcmd' is guaranteed to be set. > > > > > > Routes for 'tap' and 'vif' devices are distinguished by a route metric. > > > Emulated devices are used by HVM guests until they are unplugged, at which > > > point the PV device becomes active. Thus 'tap' devices should get a higher > > > priority (i.e. lower numbered) metric than 'vif' devices. > > > > > > There is also one small whitespace fix. > > > > > > Signed-off-by: Paul Durrant <pdurrant@amazon.com> > > > > Acked-by: Wei Liu <wl@xen.org> > > Release-acked-by: Juergen Gross <jgross@suse.com> Thanks. Queued. Also change hotpug to hotplug in the subject line. Wei. > > > Juergen
diff --git a/tools/hotplug/Linux/vif-route b/tools/hotplug/Linux/vif-route old mode 100644 new mode 100755 index c149ffc..05199bf --- a/tools/hotplug/Linux/vif-route +++ b/tools/hotplug/Linux/vif-route @@ -22,12 +22,16 @@ dir=$(dirname "$0") main_ip=$(dom0_ip) case "${command}" in + add) + ;& online) ifconfig ${dev} ${main_ip} netmask 255.255.255.255 up echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp ipcmd='add' cmdprefix='' ;; + remove) + ;& offline) do_without_error ifdown ${dev} ipcmd='del' @@ -35,13 +39,23 @@ case "${command}" in ;; esac -if [ "${ip}" ] ; then - # If we've been given a list of IP addresses, then add routes from dom0 to - # the guest using those addresses. - for addr in ${ip} ; do - ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} - done -fi +case "${type_if}" in + tap) + metric=1 + ;; + vif) + metric=2 + ;; + *) + fatal "Unrecognised interface type ${type_if}" + ;; +esac + +# If we've been given a list of IP addresses, then add routes from dom0 to +# the guest using those addresses. +for addr in ${ip} ; do + ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} metric ${metric} +done handle_iptable @@ -50,5 +64,5 @@ call_hooks vif post log debug "Successful vif-route ${command} for ${dev}." if [ "${command}" = "online" ] then - success + success fi