[Xen-devel] [PATCH v3] tools/hotpug: only attempt to call 'ip route' if there is valid command

paul@xen.org posted 1 patch 4 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/xen tags/patchew/1573206153-22090-1-git-send-email-paul@xen.org
tools/hotplug/Linux/vif-route | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
mode change 100644 => 100755 tools/hotplug/Linux/vif-route
[Xen-devel] [PATCH v3] tools/hotpug: only attempt to call 'ip route' if there is valid command
Posted by paul@xen.org 4 years, 5 months ago
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>
---
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Wei Liu <wl@xen.org>

v3:
 - Fix Wei's email address
 - Removed test of ${ipcmd}

v2:
 - Added routes for 'tap' devices
 - Whitespace fix
---
 tools/hotplug/Linux/vif-route | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 tools/hotplug/Linux/vif-route

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
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [PATCH v3] tools/hotpug: only attempt to call 'ip route' if there is valid command
Posted by Wei Liu 4 years, 5 months ago
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.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [PATCH v3] tools/hotpug: only attempt to call 'ip route' if there is valid command
Posted by Jürgen Groß 4 years, 5 months ago
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

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [PATCH v3] tools/hotpug: only attempt to call 'ip route' if there is valid command
Posted by Wei Liu 4 years, 5 months ago
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

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel