From 398db28710607f3635bca45c85358230ab842ba7 Mon Sep 17 00:00:00 2001 From: Leigh B Stoller Date: Tue, 21 Jan 2014 17:46:25 -0700 Subject: [PATCH] Switch to using vif-routing mode when there is a node attribute that say to do that instead of bridge mode. Sadly, the xen script that does this is broken and so here is our version. --- clientside/tmcc/linux/GNUmakefile.in | 3 +- clientside/tmcc/linux/xen/vif-route-emulab | 55 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100755 clientside/tmcc/linux/xen/vif-route-emulab diff --git a/clientside/tmcc/linux/GNUmakefile.in b/clientside/tmcc/linux/GNUmakefile.in index b264ede7c..40c343519 100644 --- a/clientside/tmcc/linux/GNUmakefile.in +++ b/clientside/tmcc/linux/GNUmakefile.in @@ -1,5 +1,5 @@ # -# Copyright (c) 2000-2013 University of Utah and the Flux Group. +# Copyright (c) 2000-2014 University of Utah and the Flux Group. # # {{{EMULAB-LICENSE # @@ -328,6 +328,7 @@ xen-install: dir-install $(INSTALL) -m 755 $(SRCDIR)/xen/interfaces $(SYSETCDIR)/network/ $(INSTALL) -m 755 $(SRCDIR)/xen/emulab-cnet.pl $(SYSETCDIR)/xen/scripts/ $(INSTALL) -m 755 $(SRCDIR)/xen/emulab-enet.pl $(SYSETCDIR)/xen/scripts/ + $(INSTALL) -m 755 $(SRCDIR)/xen/vif-route-emulab $(SYSETCDIR)/xen/scripts/ $(INSTALL) -m 755 $(SRCDIR)/xen/emulab-tun.pl $(SYSETCDIR)/xen/scripts/ $(INSTALL) -m 755 $(SRCDIR)/xen/create-image $(LBINDIR)/ $(INSTALL) -m 755 $(SRCDIR)/xen/mkimagecache $(BINDIR)/ diff --git a/clientside/tmcc/linux/xen/vif-route-emulab b/clientside/tmcc/linux/xen/vif-route-emulab new file mode 100755 index 000000000..6232ae73d --- /dev/null +++ b/clientside/tmcc/linux/xen/vif-route-emulab @@ -0,0 +1,55 @@ +#!/bin/bash +#============================================================================ +# ${XEN_SCRIPT_DIR}/vif-route +# +# Script for configuring a vif in routed mode. +# The hotplugging system will call this script if it is specified either in +# the device configuration given to Xend, or the default Xend configuration +# in ${XEN_CONFIG_DIR}/xend-config.sxp. If the script is specified in +# neither of those places, then vif-bridge is the default. +# +# Usage: +# vif-route (add|remove|online|offline) +# +# Environment vars: +# dev vif interface name (required). +# XENBUS_PATH path to this device's details in the XenStore (required). +# +# Read from the store: +# ip list of IP networks for the vif, space-separated (default given in +# this script). +#============================================================================ + +dir=$(dirname "$0") +. "${dir}/vif-common.sh" + +main_ip=$(dom0_ip) +bogus_ip="172.16.0.3" + +case "${command}" in + online) + ifconfig ${dev} ${bogus_ip} netmask 255.255.255.255 up + echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp + ipcmd='add' + cmdprefix='' + ;; + offline) + do_without_error ifdown ${dev} + ipcmd='del' + cmdprefix='do_without_error' + ;; +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 + +log debug "Successful vif-route ${command} for ${dev}." +if [ "${command}" = "online" ] +then + success +fi -- GitLab