[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |