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

Re: [Xen-devel] [PATCH 4/5] hotplug/linux: Add IPv6 support to vif-route



On Tue, 2014-05-20 at 16:56 +0200, Sylvain Munaut wrote:
> Signed-off-by: Sylvain Munaut <s.munaut@xxxxxxxxxxxxxxxxxxxx>

Seems reasonable: Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> ---
>  tools/hotplug/Linux/vif-common.sh |   33 +++++++++++++++++++++++++++++++++
>  tools/hotplug/Linux/vif-route     |   20 +++++++++++++++++++-
>  2 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/hotplug/Linux/vif-common.sh 
> b/tools/hotplug/Linux/vif-common.sh
> index 6cbb963..bb7b18b 100644
> --- a/tools/hotplug/Linux/vif-common.sh
> +++ b/tools/hotplug/Linux/vif-common.sh
> @@ -342,3 +342,36 @@ dom0_ip()
>    fi
>    echo "$result"
>  }
> +
> +
> +##
> +# ip6_of interface
> +#
> +# Print the first IPv6 address currently in use at the given interface, or 
> nothing if
> +# the interface is not up.
> +#
> +ip6_of()
> +{
> +  ip -6 -o addr show primary dev "$1" scope global | awk '$3 == "inet6" 
> {split($4,i,"/"); print i[1]; exit}'
> +}
> +
> +
> +##
> +# dom0_ip6
> +#
> +# Print the IPv6 address of the interface in dom0 through which we are 
> routing.
> +# This is the IP address on the interface specified as "netdev" as a 
> parameter
> +# to these scripts, or eth0 by default.  This function will return nothing 
> if no
> +# such interface could be found.
> +#
> +dom0_ip6()
> +{
> +  local nd=${netdev:-eth0}
> +  local result=$(ip6_of "$nd")
> +  if [ -z "$result" ]
> +  then
> +        ""
> +  else
> +        echo "$result"
> +  fi
> +}
> diff --git a/tools/hotplug/Linux/vif-route b/tools/hotplug/Linux/vif-route
> index 02f1403..8cf80d5 100644
> --- a/tools/hotplug/Linux/vif-route
> +++ b/tools/hotplug/Linux/vif-route
> @@ -24,11 +24,21 @@ dir=$(dirname "$0")
>  . "${dir}/vif-common.sh"
>  
>  main_ip=$(dom0_ip)
> +main_ip6=$(dom0_ip6)
> +
> +proxy_ndp=$(xenstore_read_default "$XENBUS_PATH/proxy_ndp" "off")
> +
>  
>  case "${command}" in
>      online)
>          ifconfig ${dev} ${main_ip} netmask 255.255.255.255 up
>          echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp
> +        if [ ! -z "${main_ip6}" ]; then
> +            ip -6 addr add ${main_ip6} dev ${vif}
> +            if [ "${proxy_ndp}" != "off" ]; then
> +                echo 1 >/proc/sys/net/ipv6/conf/${vif}/proxy_ndp
> +            fi
> +        fi
>          ipcmd='add'
>          cmdprefix=''
>          ;;
> @@ -43,7 +53,15 @@ 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}
> +        result=$(is_ipv6 "${addr}")
> +        if [ -z "${result}" ] ; then
> +            ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip}
> +        else
> +            ${cmdprefix} ip -6 route ${ipcmd} ${addr} dev ${vif} src 
> ${main_ip6}
> +            if [ "${proxy_ndp}" != "off" ]; then
> +                ${cmdprefix} ip -6 neighbor ${ipcmd} proxy ${addr} dev 
> ${netdev:-eth0}
> +            fi
> +        fi
>      done
>  fi
>  



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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