[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



On Thu, Nov 07, 2019 at 04:58:14PM +0000, paul@xxxxxxx wrote:
> From: Paul Durrant <pdurrant@xxxxxxxxxx>
> 
> 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 by making use of the 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.
> 
> NOTE: 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.
> 
> Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx>
> ---
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>

Looks like you need to update your address book. :-)

> ---
>  tools/hotplug/Linux/vif-route | 22 +++++++++++++++++++---
>  1 file changed, 19 insertions(+), 3 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..e71acae
> --- 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

Hmm... I think we may need to replace ifconfig with ip because now
distros (at least Debian and Arch) don't install ifconfig by default.

This can be done with a separate patch though.

>          echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp
>          ipcmd='add'
>          cmdprefix=''
>          ;;
> +    remove)
> +        ;&
>      offline)
>          do_without_error ifdown ${dev}
>          ipcmd='del'
> @@ -35,11 +39,23 @@ case "${command}" in
>          ;;
>  esac
>  

The list of action here is exhaustive per the comment of this file,
which means ipcmd will always be set. The test for ipcmd below becomes
unnecessary.

> -if [ "${ip}" ] ; then
> +case "${type_if}" in
> +    tap)
> +     metric=1
> +     ;;
> +    vif)
> +     metric=2
> +     ;;
> +    *)
> +     fatal "Unrecognised interface type ${type_if}"
> +     ;;
> +esac
> +
> +if [ "${ipcmd}" ] ; then
>      # If we've been given a list of IP addresses, then add routes from dom0 
> to
>      # the guest using those addresses.

I _think_ testing ${ip} here is still the correct action. The comment
suggests there could be no ip given. If that assumption is not correct,
please fix the comment as well.

Wei.

>      for addr in ${ip} ; do
> -      ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip}
> +      ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} 
> metric ${metric}
>      done
>  fi
>  
> @@ -50,5 +66,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@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/xen-devel

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.