diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/Make.defs | 7 | ||||
-rw-r--r-- | tools/Makefile | 18 | ||||
-rw-r--r-- | tools/examples/Makefile | 27 | ||||
-rw-r--r-- | tools/examples/vifctl | 149 | ||||
-rwxr-xr-x | tools/examples/xm_dom_create.py | 406 | ||||
-rw-r--r-- | tools/examples/xmdefaults | 2 | ||||
-rw-r--r-- | tools/libxc/Makefile (renamed from tools/xc/lib/Makefile) | 27 | ||||
-rw-r--r-- | tools/libxc/rpm.spec (renamed from tools/xc/lib/rpm.spec) | 0 | ||||
-rw-r--r-- | tools/libxc/xc.h (renamed from tools/xc/lib/xc.h) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_atropos.c (renamed from tools/xc/lib/xc_atropos.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_bvtsched.c (renamed from tools/xc/lib/xc_bvtsched.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_domain.c (renamed from tools/xc/lib/xc_domain.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_elf.h (renamed from tools/xc/lib/xc_elf.h) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_evtchn.c (renamed from tools/xc/lib/xc_evtchn.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_io.c (renamed from tools/xc/lib/xc_io.c) | 8 | ||||
-rw-r--r-- | tools/libxc/xc_io.h (renamed from tools/xc/lib/xc_io.h) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_linux_build.c (renamed from tools/xc/lib/xc_linux_build.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_linux_restore.c (renamed from tools/xc/lib/xc_linux_restore.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_linux_save.c (renamed from tools/xc/lib/xc_linux_save.c) | 4 | ||||
-rw-r--r-- | tools/libxc/xc_misc.c (renamed from tools/xc/lib/xc_misc.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_netbsd_build.c (renamed from tools/xc/lib/xc_netbsd_build.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_physdev.c (renamed from tools/xc/lib/xc_physdev.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_private.c (renamed from tools/xc/lib/xc_private.c) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_private.h (renamed from tools/xc/lib/xc_private.h) | 0 | ||||
-rw-r--r-- | tools/libxc/xc_rrobin.c (renamed from tools/xc/lib/xc_rrobin.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/Makefile | 80 | ||||
-rw-r--r-- | tools/libxutil/allocate.c (renamed from tools/lib/allocate.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/allocate.h (renamed from tools/lib/allocate.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/debug.h (renamed from tools/lib/debug.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/enum.c (renamed from tools/lib/enum.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/enum.h (renamed from tools/lib/enum.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/file_stream.c (renamed from tools/lib/file_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/file_stream.h (renamed from tools/lib/file_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/gzip_stream.c (renamed from tools/lib/gzip_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/gzip_stream.h (renamed from tools/lib/gzip_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/hash_table.c (renamed from tools/lib/hash_table.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/hash_table.h (renamed from tools/lib/hash_table.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/iostream.c (renamed from tools/lib/iostream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/iostream.h (renamed from tools/lib/iostream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/kernel_stream.c (renamed from tools/lib/kernel_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/kernel_stream.h (renamed from tools/lib/kernel_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/lexis.c (renamed from tools/lib/lexis.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/lexis.h (renamed from tools/lib/lexis.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/lzi_stream.c (renamed from tools/lib/lzi_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/lzi_stream.h (renamed from tools/lib/lzi_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/lzo_stream.c (renamed from tools/lib/lzo_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/lzo_stream.h (renamed from tools/lib/lzo_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/marshal.c (renamed from tools/lib/marshal.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/marshal.h (renamed from tools/lib/marshal.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/socket_stream.c (renamed from tools/lib/socket_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/socket_stream.h (renamed from tools/lib/socket_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/string_stream.c (renamed from tools/lib/string_stream.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/string_stream.h (renamed from tools/lib/string_stream.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/sxpr.c (renamed from tools/lib/sxpr.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/sxpr.h (renamed from tools/lib/sxpr.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/sxpr_parser.c (renamed from tools/lib/sxpr_parser.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/sxpr_parser.h (renamed from tools/lib/sxpr_parser.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/sys_ctype.h (renamed from tools/lib/sys_ctype.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/sys_net.c (renamed from tools/lib/sys_net.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/sys_net.h (renamed from tools/lib/sys_net.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/sys_string.c (renamed from tools/lib/sys_string.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/sys_string.h (renamed from tools/lib/sys_string.h) | 0 | ||||
-rw-r--r-- | tools/libxutil/xdr.c (renamed from tools/lib/xdr.c) | 0 | ||||
-rw-r--r-- | tools/libxutil/xdr.h (renamed from tools/lib/xdr.h) | 0 | ||||
-rw-r--r-- | tools/misc/Makefile | 25 | ||||
-rw-r--r-- | tools/misc/netfix | 5 | ||||
-rw-r--r-- | tools/misc/xend (renamed from tools/xen/xend) | 4 | ||||
-rwxr-xr-x | tools/misc/xm (renamed from tools/xen/xm) | 2 | ||||
-rw-r--r-- | tools/python/Makefile (renamed from tools/xc/py/Makefile) | 0 | ||||
-rw-r--r-- | tools/python/setup.py | 48 | ||||
-rw-r--r-- | tools/python/xen/__init__.py (renamed from tools/xen/lib/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/__init__.py (renamed from tools/xen/lib/ext/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/xc/Makefile (renamed from tools/xu/Makefile) | 2 | ||||
-rw-r--r-- | tools/python/xen/ext/xc/setup.py (renamed from tools/xc/py/setup.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/xc/xc.c (renamed from tools/xc/py/Xc.c) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/xu/__init__.py (renamed from tools/xen/lib/xm/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/xu/domain_controller.h (renamed from tools/xu/lib/domain_controller.h) | 0 | ||||
-rw-r--r-- | tools/python/xen/ext/xu/xu.c (renamed from tools/xu/lib/xu.c) | 0 | ||||
-rw-r--r-- | tools/python/xen/util/Brctl.py (renamed from tools/xen/lib/xend/XendBridge.py) | 57 | ||||
-rw-r--r-- | tools/python/xen/util/__init__.py (renamed from tools/xen/lib/util/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/util/console_client.py (renamed from tools/xen/lib/util/console_client.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/util/ip.py (renamed from tools/xen/lib/util/ip.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/util/tempfile.py (renamed from tools/xen/lib/util/tempfile.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/Args.py (renamed from tools/xen/lib/xend/Args.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/EventServer.py (renamed from tools/xen/lib/xend/EventServer.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/EventTypes.py (renamed from tools/xen/lib/xend/EventTypes.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/PrettyPrint.py (renamed from tools/xen/lib/xend/PrettyPrint.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/Vifctl.py | 28 | ||||
-rw-r--r-- | tools/python/xen/xend/XendClient.py (renamed from tools/xen/lib/xend/XendClient.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendConsole.py (renamed from tools/xen/lib/xend/XendConsole.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDB.py (renamed from tools/xen/lib/xend/XendDB.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDomain.py (renamed from tools/xen/lib/xend/XendDomain.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDomainConfig.py (renamed from tools/xen/lib/xend/XendDomainConfig.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDomainInfo.py (renamed from tools/xen/lib/xend/XendDomainInfo.py) | 6 | ||||
-rw-r--r-- | tools/python/xen/xend/XendMigrate.py (renamed from tools/xen/lib/xend/XendMigrate.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendNode.py (renamed from tools/xen/lib/xend/XendNode.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendRoot.py (renamed from tools/xen/lib/xend/XendRoot.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/XendVnet.py (renamed from tools/xen/lib/xend/XendVnet.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/__init__.py (renamed from tools/xen/lib/xend/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/encode.py (renamed from tools/xen/lib/xend/encode.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvBase.py (renamed from tools/xen/lib/xend/server/SrvBase.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvConsole.py (renamed from tools/xen/lib/xend/server/SrvConsole.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvConsoleDir.py (renamed from tools/xen/lib/xend/server/SrvConsoleDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDaemon.py (renamed from tools/xen/lib/xend/server/SrvDaemon.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDeviceDir.py (renamed from tools/xen/lib/xend/server/SrvDeviceDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDir.py (renamed from tools/xen/lib/xend/server/SrvDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDomain.py (renamed from tools/xen/lib/xend/server/SrvDomain.py) | 2 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvDomainDir.py (renamed from tools/xen/lib/xend/server/SrvDomainDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvEventDir.py (renamed from tools/xen/lib/xend/server/SrvEventDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvNode.py (renamed from tools/xen/lib/xend/server/SrvNode.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvRoot.py (renamed from tools/xen/lib/xend/server/SrvRoot.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvServer.py (renamed from tools/xen/lib/xend/server/SrvServer.py) | 5 | ||||
-rw-r--r-- | tools/python/xen/xend/server/SrvVnetDir.py (renamed from tools/xen/lib/xend/server/SrvVnetDir.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/__init__.py (renamed from tools/xen/lib/xend/server/__init__.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/blkif.py (renamed from tools/xen/lib/xend/server/blkif.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/channel.py (renamed from tools/xen/lib/xend/server/channel.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/console.py (renamed from tools/xen/lib/xend/server/console.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/controller.py (renamed from tools/xen/lib/xend/server/controller.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/cstruct.py (renamed from tools/xen/lib/xend/server/cstruct.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/domain.py (renamed from tools/xen/lib/xend/server/domain.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/server/messages.py (renamed from tools/xen/lib/xend/server/messages.py) | 0 | ||||
-rwxr-xr-x | tools/python/xen/xend/server/netif.py (renamed from tools/xen/lib/xend/server/netif.py) | 30 | ||||
-rw-r--r-- | tools/python/xen/xend/server/params.py (renamed from tools/xen/lib/xend/server/params.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xend/sxp.py (renamed from tools/xen/lib/xend/sxp.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xm/__init__.py (renamed from tools/xu/lib/__init__.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xm/create.py (renamed from tools/xen/lib/xm/create.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xm/main.py (renamed from tools/xen/lib/xm/main.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xm/opts.py (renamed from tools/xen/lib/xm/opts.py) | 0 | ||||
-rw-r--r-- | tools/python/xen/xm/shutdown.py (renamed from tools/xen/lib/xm/shutdown.py) | 0 | ||||
-rw-r--r-- | tools/xc/Makefile | 12 | ||||
-rw-r--r-- | tools/xen/Makefile | 18 | ||||
-rw-r--r-- | tools/xen/setup.py | 17 | ||||
-rw-r--r-- | tools/xentrace/Makefile | 16 | ||||
-rw-r--r-- | tools/xentrace/xentrace.c | 2 | ||||
-rw-r--r-- | tools/xu/setup.py | 19 |
135 files changed, 440 insertions, 586 deletions
diff --git a/tools/Make.defs b/tools/Make.defs new file mode 100644 index 0000000000..051baef2fc --- /dev/null +++ b/tools/Make.defs @@ -0,0 +1,7 @@ +# -*- mode: Makefile; -*- +XEN_HYPERVISOR_IFS = $(XEN_ROOT)/xen/include/hypervisor-ifs +XEN_LINUX_INCLUDE = $(XEN_ROOT)/linux-xen-sparse/include +XEN_XU = $(XEN_ROOT)/tools/python/xen/ext/xu +XEN_XC = $(XEN_ROOT)/tools/python/xen/ext/xc +XEN_LIBXC = $(XEN_ROOT)/tools/libxc +XEN_LIBXUTIL = $(XEN_ROOT)/tools/libxutil diff --git a/tools/Makefile b/tools/Makefile index 908f49b682..b366034eb2 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,29 +1,29 @@ all: - $(MAKE) -C xc - $(MAKE) -C xu + $(MAKE) -C libxutil + $(MAKE) -C libxc $(MAKE) -C misc $(MAKE) -C examples $(MAKE) -C xentrace - $(MAKE) -C xen + $(MAKE) -C python install: all - $(MAKE) -C xc install - $(MAKE) -C xu install + $(MAKE) -C libxutil install + $(MAKE) -C libxc install $(MAKE) -C misc install $(MAKE) -C examples install $(MAKE) -C xentrace install - $(MAKE) -C xen install + $(MAKE) -C python install dist: $(TARGET) $(MAKE) prefix=`pwd`/../../install dist=yes install clean: - $(MAKE) -C xc clean - $(MAKE) -C xu clean + $(MAKE) -C libxutil clean + $(MAKE) -C libxc clean $(MAKE) -C misc clean $(MAKE) -C examples clean $(MAKE) -C xentrace clean - $(MAKE) -C xen clean + $(MAKE) -C python clean diff --git a/tools/examples/Makefile b/tools/examples/Makefile index 3f7075ed1d..794933d5d6 100644 --- a/tools/examples/Makefile +++ b/tools/examples/Makefile @@ -1,21 +1,40 @@ INSTALL = $(wildcard *.py) + ETC = defaults democd netbsd xmdefaults ETCDIR = /etc/xen + INITD = init.d/xendomains init.d/xend +XEND = vifctl +XEND_DIR = $(ETCDIR)/xend + all: -install: all +install: all install-bin install-initd install-etc install-xend + +install-bin: mkdir -p $(prefix)/usr/bin + install -m0755 $(INSTALL) $(prefix)/usr/bin + +install-initd: + mkdir -p $(prefix)/etc/init.d + install -m0755 $(INITD) $(prefix)/etc/init.d + +install-etc: mkdir -p $(prefix)$(ETCDIR) mkdir -p $(prefix)$(ETCDIR)/auto - mkdir -p $(prefix)/etc/init.d - install -m0755 $(INSTALL) $(prefix)/usr/bin for i in $(ETC); \ do [ -a $(prefix)/$(ETCDIR)/$$i ] || \ install -m0644 $$i $(prefix)$(ETCDIR); \ done - install -m0755 $(INITD) $(prefix)/etc/init.d + +install-xend: + mkdir -p $(prefix)$(XEND_DIR) + for i in $(XEND); \ + do [ -a $(prefix)/$(XEND_DIR)/$$i ] || \ + install -m0755 $$i $(prefix)$(XEND_DIR); \ + done + clean: diff --git a/tools/examples/vifctl b/tools/examples/vifctl new file mode 100644 index 0000000000..d71459ed70 --- /dev/null +++ b/tools/examples/vifctl @@ -0,0 +1,149 @@ +#!/usr/bin/python +# -*- mode: python; -*- +#============================================================================ +# Xen vif control script. Lives in /etc/xen/xend. +# +# vifctl init [bridge=<bridge>] [interface=<interface>] +# +# Called when xend starts up. Default behaviour is to create <bridge> +# and add <interface> to it, moving its IP address to <bridge> and adjusting routes. +# +# vifctl (up|down) vif=<vif> mac=<mac> [bridge=<bridge>] (ipaddr=<ipaddr>)* +# +# Called when a vif is brought up or down. Default behaviour is to add +# the vif to <bridge> on up and remove it from the bridge on down. +# If ipaddr is specified, iptables rules for the ip addresses are +# added on up and removed on down. The bridge a vif is added to can +# be set in the vm config. +# +# The default bridge is nbe-br. +# The default interface is eth0. +# +#============================================================================ + +import sys +import types + +from xen.util import Brctl + +from xen.xend import XendRoot +xroot = XendRoot.instance() + +class VifControl: + + prefix = 'vifctl_' + + DEFAULT_BRIDGE = 'nbe-br' + DEFAULT_INTERFACE = 'eth0' + + def __init__(self): + self.name = 'vifctl' + + def main(self, args): + #print self.name, args + if len(args) < 2: + usage(args) + self.name = args[0] + cmd = self.prefix + args[1] + meth = getattr(self, cmd, self.unknown) + meth(args[1:]) + + def usage(self, args, out=sys.stderr): + print >>out, 'Missing command, try \n%s help' % self.name + + def unknown(self, args, out=sys.stderr): + print >>out, 'Unknown command:', args[1] + self.help(out=out) + sys.exit(1) + + def help(self, out=sys.stdout): + print >>out, 'Commands are:', + for x in vars(self): + if x.startswith(prefix): + cmd = x[len(prefix):] + print >>out, cmd, + print >>out + + def getparams(self, d, args, req=[]): + """Parse args of the form 'key=val'. Valid keys are the ones + in the dict 'd' passed in. If entries in 'd' have list values the + values of the keys are appended. + + If 'req' is specified it is a list of required keys. + """ + for x in args: + (k, v) = x.split('=') + k = k.strip() + v = v.strip() + if k not in d: + print >>sys.stderr, 'Invalid parameter: ', k + sys.exit(1) + vold = d[k] + if isinstance(vold , types.ListType): + d[k] = vold + v + else: + d[k] = v + for x in req: + if not d[x]: + print >>sys.stderr, 'Missing parameter:', x + sys.exit(1) + return d + + def vifctl_help(self, args): + self.help() + + def default_bridge(self): + return xroot.get_config_value('bridge', self.DEFAULT_BRIDGE) + + def default_interface(self): + return xroot.get_config_value('interface', self.DEFAULT_INTERFACE) + + def vifctl_init(self, args): + """Entry point for 'vifctl init'. + """ + d = { 'bridge' : self.default_bridge(), + 'interface': self.default_interface() } + params = self.getparams(d, args[1:]) + interface = params['interface'] + bridge = params['bridge'] + # Create bridge 'bridge'. + Brctl.bridge_create(bridge) + # Reconfigure so that 'interface' is added to 'bridge', + # and 'bridge' has the IP address from 'interface'. + Brctl.reconfigure(interface, bridge) + + def vifparams(self, args): + d = { 'vif' : None, + 'mac' : None, + 'bridge': self.default_bridge(), + 'ipaddr': [] } + d = self.getparams(d, args, req=['vif', 'mac']) + return d + + def vifctl_up(self, args): + """Entry point for 'vifctl up'. + """ + params = self.vifparams(args[1:]) + # Add the vif to its bridge. + Brctl.vif_bridge_add(params) + if params['ipaddr']: + # Add iptables rules for the ip addresses. + vif = params['vif'] + for ipaddr in params['ipaddr']: + Brctl.vif_restrict_addr(vif, ipaddr) + + def vifctl_down(self, args): + """Entry point for 'vifctl down'. + """ + params = self.vifparams(args[1:]) + # Remove the vif from its bridge. + Brctl.vif_bridge_rem(params) + if params['ip']: + # Remove iptables rules for the ip addresses. + vif = params['vif'] + for ip in params['ip']: + Brctl.vif_restrict_addr(vif, ip, delete=1) + + +if __name__ == "__main__": + VifControl().main(sys.argv) diff --git a/tools/examples/xm_dom_create.py b/tools/examples/xm_dom_create.py deleted file mode 100755 index d84efb1c92..0000000000 --- a/tools/examples/xm_dom_create.py +++ /dev/null @@ -1,406 +0,0 @@ -#!/usr/bin/env python - -import string -import sys -import os -import os.path -import time -import socket -import getopt -import signal -import syslog -import xenctl.ip -import xenctl.utils -import xenctl.console_client - -from xenmgr import sxp -from xenmgr import PrettyPrint -from xenmgr.XendClient import server - -config_dir = '/etc/xc/' -config_file = xc_config_file = config_dir + 'defaults' - -def main_usage (): - print >>sys.stderr,""" -Usage: %s <args> - -This tool is used to create and start new domains. It reads defaults -from a file written in Python, having allowed variables to be set and -passed into the file. Further command line arguments allow the -defaults to be overridden. The defaults for each parameter are listed -in [] brackets. Arguments are as follows: - -Arguments to control the parsing of the defaults file: - -f config_file -- Use the specified defaults script. - Default: ['%s'] - -L state_file -- Load virtual machine memory state from state_file - -D foo=bar -- Set variable foo=bar before parsing config - E.g. '-D vmid=3;ip=1.2.3.4' - -h -- Print extended help message, including all arguments - -n -- Dry run only, don't actually create domain - Prints the config, suitable for -F. - -q -- Quiet - write output only to the system log - -F domain_config -- Build domain using the config in the file. - Suitable files can be made using '-n' to output a config. -""" % (sys.argv[0], xc_config_file) - -def extra_usage (): - print >>sys.stderr,""" -Arguments to override current config read from '%s': - -c -- Turn into console terminal after domain is created - -k image -- Path to kernel image ['%s'] - -r ramdisk -- Path to ramdisk (or empty) ['%s'] - -b builder_fn -- Function to use to build domain ['%s'] - -m mem_size -- Initial memory allocation in MB [%dMB] - -N domain_name -- Set textual name of domain ['%s'] - -a auto_restart -- Restart domain on exit, yes/no ['%d'] - -e vbd_expert -- Safety catch to avoid some disk accidents ['%s'] - -d udisk,dev,rw -- Add disk, partition, or virtual disk to domain. E.g. to - make partion sda4 available to the domain as hda1 with - read-write access: '-d phy:sda4,hda1,rw' To add - multiple disks use multiple -d flags or seperate with ';' - Default: ['%s'] - -i vfr_ipaddr -- Add IP address to the list which Xen will route to - the domain. Use multiple times to add more IP addrs. - Default: ['%s'] - -Args to override the kernel command line, which is concatenated from these: - -I cmdline_ip -- Override 'ip=ipaddr:nfsserv:gateway:netmask::eth0:off' - Default: ['%s'] - -R cmdline_root -- Override root device parameters. - Default: ['%s'] - -E cmdline_extra -- Override extra kernel args and rc script env vars. - Default: ['%s'] - -""" % (config_file, - image, ramdisk, builder_fn, mem_size, domain_name, auto_restart, - vbd_expert, - printvbds( vbd_list ), - reduce ( (lambda a,b: a+':'+b), vfr_ipaddr,'' )[1:], - cmdline_ip, cmdline_root, cmdline_extra) - -def config_usage (): pass - -def answer ( s ): - s = string.lower(s) - if s == 'yes' or s == 'true' or s == '1': return 1 - return 0 - -def printvbds ( v ): - s='' - for (a,b,c) in v: - s = s + '; %s,%s,%s' % (a,b,c) - return s[2:] - -def output(string): - global quiet - syslog.syslog(string) - if not quiet: - print string - return - -bail=False; dryrun=False; extrahelp=False; quiet = False -image=''; ramdisk=''; builder_fn='linux'; restore=0; state_file='' -mem_size=0; domain_name=''; vfr_ipaddr=[]; -vbd_expert='rr'; auto_restart=False; -vbd_list = []; cmdline_ip = ''; cmdline_root=''; cmdline_extra='' -pci_device_list = []; console_port = -1 -auto_console = False -config_from_file = False - -##### Determine location of defaults file -##### - -try: - opts, args = getopt.getopt(sys.argv[1:], "h?nqcf:F:D:k:r:b:m:N:a:e:d:i:I:R:E:L:" ) - - for opt in opts: - if opt[0] == '-f': config_file= opt[1] - if opt[0] == '-h' or opt[0] == '-?' : bail=True; extrahelp=True - if opt[0] == '-n': dryrun=True - if opt[0] == '-D': - for o in string.split( opt[1], ';' ): - (l,r) = string.split( o, '=' ) - exec "%s='%s'" % (l,r) - if opt[0] == '-q': quiet = True - if opt[0] == '-L': restore = True; state_file = opt[1] - if opt[0] == '-F': config_from_file = True; domain_config = opt[1] - - -except getopt.GetoptError: - bail=True - -if not config_from_file: - try: - os.stat( config_file ) - except: - try: - d = config_dir + config_file - os.stat( d ) - config_file = d - except: - print >> sys.stderr, "Unable to open config file '%s'" % config_file - bail = True - - -##### Parse the config file -##### - -if not config_from_file: - if not quiet: - print "Parsing config file '%s'" % config_file - - try: - execfile ( config_file ) - except (AssertionError,IOError): - print >>sys.stderr,"Exiting %s" % sys.argv[0] - bail = True - -##### Print out config if necessary -##### - -def bailout(): - global extrahelp - main_usage() - config_usage() - if extrahelp: extra_usage() - sys.exit(1) - -if bail: - bailout() - -##### Parse any command line overrides -##### - -x_vbd_list = [] -x_vfr_ipaddr = [] - -for opt in opts: - if opt[0] == '-k': image = opt[1] - if opt[0] == '-r': ramdisk = opt[1] - if opt[0] == '-b': builder_fn = opt[1] - if opt[0] == '-m': mem_size = int(opt[1]) - if opt[0] == '-C': cpu = int(opt[1]) - if opt[0] == '-N': domain_name = opt[1] - if opt[0] == '-a': auto_restart = answer(opt[1]) - if opt[0] == '-e': vbd_expert = opt[1] - if opt[0] == '-I': cmdline_ip = opt[1] - if opt[0] == '-R': cmdline_root = opt[1] - if opt[0] == '-E': cmdline_extra = opt[1] - if opt[0] == '-i': x_vfr_ipaddr.append(opt[1]) - if opt[0] == '-c': auto_console = True - if opt[0] == '-d': - try: - vv = string.split(opt[1],';') - for v in vv: - (udisk,dev,mode) = string.split(v,',') - x_vbd_list.append( (udisk,dev,mode) ) - except: - print >>sys.stderr, "Invalid block device specification : %s" % opt[1] - sys.exit(1) - -if x_vbd_list: vbd_list = x_vbd_list -if x_vfr_ipaddr: vfr_ipaddr = x_vfr_ipaddr - -syslog.openlog('xc_dom_create.py %s' % config_file, 0, syslog.LOG_DAEMON) - -def strip(pre, s): - if s.startswith(pre): - return s[len(pre):] - else: - return s - -def make_domain_config(): - global builder_fn, image, ramdisk, mem_size, domain_name - global cpu - global cmdline, cmdline_ip, cmdline_root - global vfr_ipaddr, vbd_list, vbd_expert - - config = ['config', - ['name', domain_name ], - ['memory', mem_size ], - ] - if cpu: - config.append(['cpu', cpu]) - - config_image = [ builder_fn ] - config_image.append([ 'kernel', os.path.abspath(image) ]) - if ramdisk: - config_image.append([ 'ramdisk', os.path.abspath(ramdisk) ]) - if cmdline_ip: - cmdline_ip = strip("ip=", cmdline_ip) - config_image.append(['ip', cmdline_ip]) - if cmdline_root: - cmdline_root = strip("root=", cmdline_root) - config_image.append(['root', cmdline_root]) - if cmdline_extra: - config_image.append(['args', cmdline_extra]) - config.append(['image', config_image ]) - - config_devs = [] - for (uname, dev, mode) in vbd_list: - config_vbd = ['vbd', - ['uname', uname], - ['dev', dev ], - ['mode', mode ] ] - if vbd_expert != 'rr': - config_vbd.append(['sharing', vbd_expert]) - config_devs.append(['device', config_vbd]) - - for (bus, dev, func) in pci_device_list: - config_pci = ['pci', - ['bus', bus ], - ['dev', dev ], - ['func', func] ] - config_devs.append(['device', config_pci]) - - # Add one vif with unspecified MAC. - config_devs.append(['device', ['vif']]) - - config += config_devs - - config_vfr = ['vfr'] - idx = 0 # No way of saying which IP is for which vif? - for ip in vfr_ipaddr: - config_vfr.append(['vif', ['id', idx], ['ip', ip]]) - - config.append(config_vfr) - return config - -def parse_config_file(domain_file): - config = None - fin = None - try: - fin = file(domain_file, "rb") - config = sxp.parse(fin) - if len(config) >= 1: - config = config[0] - else: - raise StandardError("Invalid configuration") - except StandardError, ex: - print >> sys.stderr, "Error :", ex - sys.exit(1) - #finally: - if fin: fin.close() - return config - -# This function creates, builds and starts a domain, using the values -# in the global variables, set above. It is used in the subsequent -# code for starting the new domain and rebooting it if appropriate. -def make_domain(config): - """Create, build and start a domain. - Returns: [int] the ID of the new domain. - """ - global restore - - if restore: - dominfo = server.xend_domain_restore(state_file, config) - else: - dominfo = server.xend_domain_create(config) - - dom = int(sxp.child_value(dominfo, 'id')) - console_info = sxp.child(dominfo, 'console') - if console_info: - console_port = int(sxp.child_value(console_info, 'port')) - else: - console_port = None - - if server.xend_domain_unpause(dom) < 0: - print "Error starting domain" - server.xend_domain_halt(dom) - sys.exit() - - return (dom, console_port) - -PID_DIR = '/var/run/xendomains/' - -def pidfile(dom): - return PID_DIR + '%d.pid' % dom - -def mkpidfile(): - global current_id - if not os.path.isdir(PID_DIR): - os.mkdir(PID_DIR) - - fd = open(pidfile(current_id), 'w') - print >> fd, str(os.getpid()) - fd.close() - return - -def rmpidfile(): - global current_id - os.unlink(pidfile(current_id)) - -def death_handler(dummy1,dummy2): - global current_id - os.unlink(pidfile(current_id)) - output('Auto-restart daemon: daemon PID = %d for domain %d is now exiting' - % (os.getpid(), current_id)) - sys.exit(0) - return - -#============================================================================ -# The starting / monitoring of the domain actually happens here... - -if config_from_file: - config = parse_config_file(domain_config) -else: - config = make_domain_config() - -if dryrun: - print "# %s" % ' '.join(sys.argv) - PrettyPrint.prettyprint(config) - sys.exit(0) -elif quiet: - pass -else: - PrettyPrint.prettyprint(config) - -# start the domain and record its ID number -(current_id, current_port) = make_domain(config) - -def start_msg(prefix, dom, port): - output(prefix + "VM started in domain %d" % dom) - if port: - output(prefix + "Console I/O available on TCP port %d." % port) - -start_msg('', current_id, current_port) - -if current_port and auto_console: - xenctl.console_client.connect('127.0.0.1', current_port) - -# if the auto_restart flag is set then keep polling to see if the domain is -# alive - restart if it is not by calling make_domain() again (it's necessary -# to update the id variable, since the new domain may have a new ID) - -#todo: Replace this - get xend to watch them. -if auto_restart: - ARD = "Auto-restart daemon: " - # turn ourselves into a background daemon - try: - pid = os.fork() - if pid > 0: - sys.exit(0) - os.setsid() - pid = os.fork() - if pid > 0: - output(ARD + 'PID = %d' % pid) - sys.exit(0) - signal.signal(signal.SIGTERM,death_handler) - except OSError: - print >> sys.stderr, ARD+'Startup failed' - sys.exit(1) - - mkpidfile() - - while True: - time.sleep(1) - # todo: use new interface - info = xc.domain_getinfo(current_id, 1) - if info == [] or info[0]['dom'] != current_id: - output(ARD + "Domain %d terminated, restarting VM in new domain" - % current_id) - rmpidfile() - (current_id, current_port) = make_domain() - mkpidfile() - start_msg(ARD, current_id, current_port) diff --git a/tools/examples/xmdefaults b/tools/examples/xmdefaults index efa56bdc20..f7b2f53c21 100644 --- a/tools/examples/xmdefaults +++ b/tools/examples/xmdefaults @@ -16,7 +16,7 @@ if vmid <= 0: #---------------------------------------------------------------------------- # Kernel image file. -kernel = "../../../install/boot/vmlinuz-2.4.26-xen" +kernel = "../../../install/boot/vmlinuz-2.4.26-xenU" # Optional ramdisk. #ramdisk = "/boot/initrd.gz" diff --git a/tools/xc/lib/Makefile b/tools/libxc/Makefile index e1fa8dd504..8db55c2028 100644 --- a/tools/xc/lib/Makefile +++ b/tools/libxc/Makefile @@ -5,19 +5,20 @@ SONAME = libxc.so.$(MAJOR) CC = gcc -XEN_ROOT = ../../.. +XEN_ROOT = ../.. +include $(XEN_ROOT)/tools/Make.defs -vpath %.h $(XEN_ROOT)/xen/include/hypervisor-ifs -INCLUDES += -I $(XEN_ROOT)/xen/include/hypervisor-ifs +vpath %.h $(XEN_HYPERVISOR_IFS) +INCLUDES += -I $(XEN_HYPERVISOR_IFS) -vpath %.h $(XEN_ROOT)/tools/xu/lib -INCLUDES += -I $(XEN_ROOT)/tools/xu/lib +vpath %h $(XEN_LINUX_INCLUDE) +INCLUDES += -I $(XEN_LINUX_INCLUDE) -vpath %h $(XEN_ROOT)/linux-xen-sparse/include -INCLUDES += -I $(XEN_ROOT)/linux-xen-sparse/include +vpath %.h $(XEN_XU) +INCLUDES += -I $(XEN_XU) -vpath %c $(XEN_ROOT)/tools/lib -INCLUDES += -I $(XEN_ROOT)/tools/lib +vpath %c $(XEN_LIBXUTIL) +INCLUDES += -I $(XEN_LIBXUTIL) LIB_SRCS := LIB_SRCS += allocate.c @@ -54,11 +55,7 @@ SRCS += xc_physdev.c SRCS += xc_private.c SRCS += xc_rrobin.c -SRCS += $(LIB_SRCS) - -#CFLAGS += -I../../../xen/include/hypervisor-ifs -#CFLAGS += -I../../xu/lib -#CFLAGS += -I../../../linux-xen-sparse/include +#SRCS += $(LIB_SRCS) CFLAGS += -Wall CFLAGS += -Werror @@ -109,7 +106,7 @@ libxc.so: libxc.so.$(MAJOR): ln -sf libxc.so.$(MAJOR).$(MINOR) $@ libxc.so.$(MAJOR).$(MINOR): $(OBJS) - $(CC) -Wl,-soname -Wl,$(SONAME) -shared -o $@ $^ -lz + $(CC) -Wl,-soname -Wl,$(SONAME) -shared -o $@ $^ ../libxutil/libxutil.a -lz %.o: %.c Makefile diff --git a/tools/xc/lib/rpm.spec b/tools/libxc/rpm.spec index 1b4c5fc85a..1b4c5fc85a 100644 --- a/tools/xc/lib/rpm.spec +++ b/tools/libxc/rpm.spec diff --git a/tools/xc/lib/xc.h b/tools/libxc/xc.h index f9692607bd..f9692607bd 100644 --- a/tools/xc/lib/xc.h +++ b/tools/libxc/xc.h diff --git a/tools/xc/lib/xc_atropos.c b/tools/libxc/xc_atropos.c index 13d07ca440..13d07ca440 100644 --- a/tools/xc/lib/xc_atropos.c +++ b/tools/libxc/xc_atropos.c diff --git a/tools/xc/lib/xc_bvtsched.c b/tools/libxc/xc_bvtsched.c index aeaddcfb04..aeaddcfb04 100644 --- a/tools/xc/lib/xc_bvtsched.c +++ b/tools/libxc/xc_bvtsched.c diff --git a/tools/xc/lib/xc_domain.c b/tools/libxc/xc_domain.c index ab83d0ce7b..ab83d0ce7b 100644 --- a/tools/xc/lib/xc_domain.c +++ b/tools/libxc/xc_domain.c diff --git a/tools/xc/lib/xc_elf.h b/tools/libxc/xc_elf.h index e0d0c26131..e0d0c26131 100644 --- a/tools/xc/lib/xc_elf.h +++ b/tools/libxc/xc_elf.h diff --git a/tools/xc/lib/xc_evtchn.c b/tools/libxc/xc_evtchn.c index 624f5b1c15..624f5b1c15 100644 --- a/tools/xc/lib/xc_evtchn.c +++ b/tools/libxc/xc_evtchn.c diff --git a/tools/xc/lib/xc_io.c b/tools/libxc/xc_io.c index 7d75ea245d..b7ce6342ab 100644 --- a/tools/xc/lib/xc_io.c +++ b/tools/libxc/xc_io.c @@ -4,15 +4,18 @@ void xcio_error(XcIOContext *ctxt, const char *msg, ...){ va_list args; va_start(args, msg); + vfprintf(stdout, msg, args); fprintf(stdout, "\n"); IOStream_vprint(ctxt->info, msg, args); + IOStream_print(ctxt->info, "\n"); va_end(args); } void xcio_info(XcIOContext *ctxt, const char *msg, ...){ va_list args; - if(!(ctxt->flags & XCFLAGS_VERBOSE)) return; + if(0 && !(ctxt->flags & XCFLAGS_VERBOSE)) return; va_start(args, msg); + vfprintf(stdout, msg, args); fprintf(stdout, "\n"); IOStream_vprint(ctxt->info, msg, args); va_end(args); } @@ -20,8 +23,9 @@ void xcio_info(XcIOContext *ctxt, const char *msg, ...){ void xcio_debug(XcIOContext *ctxt, const char *msg, ...){ va_list args; - if(!(ctxt->flags & XCFLAGS_DEBUG)) return; + if(0 && !(ctxt->flags & XCFLAGS_DEBUG)) return; va_start(args, msg); + vfprintf(stdout, msg, args); fprintf(stdout, "\n"); IOStream_vprint(ctxt->info, msg, args); va_end(args); } diff --git a/tools/xc/lib/xc_io.h b/tools/libxc/xc_io.h index 37febb52f1..37febb52f1 100644 --- a/tools/xc/lib/xc_io.h +++ b/tools/libxc/xc_io.h diff --git a/tools/xc/lib/xc_linux_build.c b/tools/libxc/xc_linux_build.c index ceace01b00..ceace01b00 100644 --- a/tools/xc/lib/xc_linux_build.c +++ b/tools/libxc/xc_linux_build.c diff --git a/tools/xc/lib/xc_linux_restore.c b/tools/libxc/xc_linux_restore.c index badba75162..badba75162 100644 --- a/tools/xc/lib/xc_linux_restore.c +++ b/tools/libxc/xc_linux_restore.c diff --git a/tools/xc/lib/xc_linux_save.c b/tools/libxc/xc_linux_save.c index 44ffb6bb5f..c74e209bdc 100644 --- a/tools/xc/lib/xc_linux_save.c +++ b/tools/libxc/xc_linux_save.c @@ -310,7 +310,7 @@ int xc_linux_save(int xc_handle, XcIOContext *ioctxt) if ( xc_domain_getfullinfo( xc_handle, domid, &op, &ctxt) ) { - PERROR("Could not get full domain info"); + xcio_error(ioctxt, "Could not get full domain info"); goto out; } memcpy(name, op.u.getdomaininfo.name, sizeof(name)); @@ -336,7 +336,7 @@ int xc_linux_save(int xc_handle, XcIOContext *ioctxt) /* cheesy sanity check */ if ( nr_pfns > 1024*1024 ){ - xcio_error(ioctxt, "Invalid state record -- pfn count out of range"); + xcio_error(ioctxt, "Invalid state record -- pfn count out of range: %lu", nr_pfns); goto out; } diff --git a/tools/xc/lib/xc_misc.c b/tools/libxc/xc_misc.c index 0019ffe96b..0019ffe96b 100644 --- a/tools/xc/lib/xc_misc.c +++ b/tools/libxc/xc_misc.c diff --git a/tools/xc/lib/xc_netbsd_build.c b/tools/libxc/xc_netbsd_build.c index 04a47b5068..04a47b5068 100644 --- a/tools/xc/lib/xc_netbsd_build.c +++ b/tools/libxc/xc_netbsd_build.c diff --git a/tools/xc/lib/xc_physdev.c b/tools/libxc/xc_physdev.c index ba5dd9ccdc..ba5dd9ccdc 100644 --- a/tools/xc/lib/xc_physdev.c +++ b/tools/libxc/xc_physdev.c diff --git a/tools/xc/lib/xc_private.c b/tools/libxc/xc_private.c index 344f48254d..344f48254d 100644 --- a/tools/xc/lib/xc_private.c +++ b/tools/libxc/xc_private.c diff --git a/tools/xc/lib/xc_private.h b/tools/libxc/xc_private.h index 742185161b..742185161b 100644 --- a/tools/xc/lib/xc_private.h +++ b/tools/libxc/xc_private.h diff --git a/tools/xc/lib/xc_rrobin.c b/tools/libxc/xc_rrobin.c index ad37962f3b..ad37962f3b 100644 --- a/tools/xc/lib/xc_rrobin.c +++ b/tools/libxc/xc_rrobin.c diff --git a/tools/libxutil/Makefile b/tools/libxutil/Makefile new file mode 100644 index 0000000000..0e92fa771f --- /dev/null +++ b/tools/libxutil/Makefile @@ -0,0 +1,80 @@ +XEN_ROOT = ../.. +include $(XEN_ROOT)/tools/Make.defs + +CC = gcc + +LIB_SRCS := +LIB_SRCS += allocate.c +#LIB_SRCS += enum.c +LIB_SRCS += file_stream.c +LIB_SRCS += gzip_stream.c +#LIB_SRCS += hash_table.c +LIB_SRCS += iostream.c +#LIB_SRCS += kernel_stream.c +#LIB_SRCS += lexis.c +#LIB_SRCS += lzi_stream.c +#LIB_SRCS += lzo_stream.c +#LIB_SRCS += marshal.c +#LIB_SRCS += socket_stream.c +#LIB_SRCS += string_stream.c +#LIB_SRCS += sxpr.c +#LIB_SRCS += sxpr_parser.c +LIB_SRCS += sys_net.c +LIB_SRCS += sys_string.c +#LIB_SRCS += xdr.c + +LIB_OBJS := $(LIB_SRCS:.c=.o) + +CFLAGS += -Wall +CFLAGS += -Werror +CFLAGS += -g +CFLAGS += -O3 +CFLAGS += -fno-strict-aliasing +#CFLAGS += $(INCLUDES) +# Get gcc to generate the dependencies for us. +CFLAGS += -Wp,-MD,.$(@F).d +DEPS = .*.d + +MAJOR = 1.3 +MINOR = 0 +LIB_NAME = libxutil +LIB_BASE = $(LIB_NAME).so +LIB_MAJOR= $(LIB_BASE).$(MAJOR) +LIB_MINOR= $(LIB_MAJOR).$(MINOR) +LIB = $(LIB_BASE) $(LIB_MAJOR) $(LIB_MINOR) $(LIB_NAME).a + +all: check-for-zlib $(LIB) + +$(LIB_BASE): + ln -sf $(LIB_MAJOR) $@ + +$(LIB_MAJOR): + ln -sf $(LIB_MINOR) $@ + +$(LIB_MINOR): $(LIB_OBJS) + $(CC) -Wl,-soname -Wl,$(LIB_MAJOR) -shared -o $@ $^ + +$(LIB_NAME).a: $(LIB_OBJS) + $(AR) rc $@ $^ + +check-for-zlib: + @if [ ! -e /usr/include/zlib.h ]; then \ + echo "***********************************************************"; \ + echo "ERROR: install zlib header files (http://www.gzip.org/zlib)"; \ + echo "***********************************************************"; \ + false; \ + fi + +install: all + mkdir -p $(prefix)/usr/lib + mkdir -p $(prefix)/usr/include + install -m0755 $(LIB) $(prefix)/usr/lib + +#install -m0644 xc.h $(prefix)/usr/include + +clean: + $(RM) *.a *.so *.o *.rpm $(LIB) + $(RM) *~ + $(RM) $(DEPS) + +-include $(DEPS) diff --git a/tools/lib/allocate.c b/tools/libxutil/allocate.c index 600ebabda6..600ebabda6 100644 --- a/tools/lib/allocate.c +++ b/tools/libxutil/allocate.c diff --git a/tools/lib/allocate.h b/tools/libxutil/allocate.h index 08bc67b910..08bc67b910 100644 --- a/tools/lib/allocate.h +++ b/tools/libxutil/allocate.h diff --git a/tools/lib/debug.h b/tools/libxutil/debug.h index 4f5228faa3..4f5228faa3 100644 --- a/tools/lib/debug.h +++ b/tools/libxutil/debug.h diff --git a/tools/lib/enum.c b/tools/libxutil/enum.c index 95f6e31a87..95f6e31a87 100644 --- a/tools/lib/enum.c +++ b/tools/libxutil/enum.c diff --git a/tools/lib/enum.h b/tools/libxutil/enum.h index db6e7b0058..db6e7b0058 100644 --- a/tools/lib/enum.h +++ b/tools/libxutil/enum.h diff --git a/tools/lib/file_stream.c b/tools/libxutil/file_stream.c index 40391f7fa6..40391f7fa6 100644 --- a/tools/lib/file_stream.c +++ b/tools/libxutil/file_stream.c diff --git a/tools/lib/file_stream.h b/tools/libxutil/file_stream.h index 36a0f928b2..36a0f928b2 100644 --- a/tools/lib/file_stream.h +++ b/tools/libxutil/file_stream.h diff --git a/tools/lib/gzip_stream.c b/tools/libxutil/gzip_stream.c index af46023f9d..af46023f9d 100644 --- a/tools/lib/gzip_stream.c +++ b/tools/libxutil/gzip_stream.c diff --git a/tools/lib/gzip_stream.h b/tools/libxutil/gzip_stream.h index cf76d25275..cf76d25275 100644 --- a/tools/lib/gzip_stream.h +++ b/tools/libxutil/gzip_stream.h diff --git a/tools/lib/hash_table.c b/tools/libxutil/hash_table.c index 13da946e77..13da946e77 100644 --- a/tools/lib/hash_table.c +++ b/tools/libxutil/hash_table.c diff --git a/tools/lib/hash_table.h b/tools/libxutil/hash_table.h index 6d7e76ff33..6d7e76ff33 100644 --- a/tools/lib/hash_table.h +++ b/tools/libxutil/hash_table.h diff --git a/tools/lib/iostream.c b/tools/libxutil/iostream.c index e9980838f7..e9980838f7 100644 --- a/tools/lib/iostream.c +++ b/tools/libxutil/iostream.c diff --git a/tools/lib/iostream.h b/tools/libxutil/iostream.h index 5dbe14a0b4..5dbe14a0b4 100644 --- a/tools/lib/iostream.h +++ b/tools/libxutil/iostream.h diff --git a/tools/lib/kernel_stream.c b/tools/libxutil/kernel_stream.c index 345b048015..345b048015 100644 --- a/tools/lib/kernel_stream.c +++ b/tools/libxutil/kernel_stream.c diff --git a/tools/lib/kernel_stream.h b/tools/libxutil/kernel_stream.h index be370f2a45..be370f2a45 100644 --- a/tools/lib/kernel_stream.h +++ b/tools/libxutil/kernel_stream.h diff --git a/tools/lib/lexis.c b/tools/libxutil/lexis.c index 26d2ec4d5b..26d2ec4d5b 100644 --- a/tools/lib/lexis.c +++ b/tools/libxutil/lexis.c diff --git a/tools/lib/lexis.h b/tools/libxutil/lexis.h index 7d8fe7bc63..7d8fe7bc63 100644 --- a/tools/lib/lexis.h +++ b/tools/libxutil/lexis.h diff --git a/tools/lib/lzi_stream.c b/tools/libxutil/lzi_stream.c index 0f09734201..0f09734201 100644 --- a/tools/lib/lzi_stream.c +++ b/tools/libxutil/lzi_stream.c diff --git a/tools/lib/lzi_stream.h b/tools/libxutil/lzi_stream.h index 0ad4f8db8e..0ad4f8db8e 100644 --- a/tools/lib/lzi_stream.h +++ b/tools/libxutil/lzi_stream.h diff --git a/tools/lib/lzo_stream.c b/tools/libxutil/lzo_stream.c index bf7c348471..bf7c348471 100644 --- a/tools/lib/lzo_stream.c +++ b/tools/libxutil/lzo_stream.c diff --git a/tools/lib/lzo_stream.h b/tools/libxutil/lzo_stream.h index 493da7b1ad..493da7b1ad 100644 --- a/tools/lib/lzo_stream.h +++ b/tools/libxutil/lzo_stream.h diff --git a/tools/lib/marshal.c b/tools/libxutil/marshal.c index 21691d4412..21691d4412 100644 --- a/tools/lib/marshal.c +++ b/tools/libxutil/marshal.c diff --git a/tools/lib/marshal.h b/tools/libxutil/marshal.h index 9a9d465b9b..9a9d465b9b 100644 --- a/tools/lib/marshal.h +++ b/tools/libxutil/marshal.h diff --git a/tools/lib/socket_stream.c b/tools/libxutil/socket_stream.c index cfa6e3abf0..cfa6e3abf0 100644 --- a/tools/lib/socket_stream.c +++ b/tools/libxutil/socket_stream.c diff --git a/tools/lib/socket_stream.h b/tools/libxutil/socket_stream.h index 5b8515f6b3..5b8515f6b3 100644 --- a/tools/lib/socket_stream.h +++ b/tools/libxutil/socket_stream.h diff --git a/tools/lib/string_stream.c b/tools/libxutil/string_stream.c index c3cf423d84..c3cf423d84 100644 --- a/tools/lib/string_stream.c +++ b/tools/libxutil/string_stream.c diff --git a/tools/lib/string_stream.h b/tools/libxutil/string_stream.h index 36d764b265..36d764b265 100644 --- a/tools/lib/string_stream.h +++ b/tools/libxutil/string_stream.h diff --git a/tools/lib/sxpr.c b/tools/libxutil/sxpr.c index adeffbe5eb..adeffbe5eb 100644 --- a/tools/lib/sxpr.c +++ b/tools/libxutil/sxpr.c diff --git a/tools/lib/sxpr.h b/tools/libxutil/sxpr.h index b90083139c..b90083139c 100644 --- a/tools/lib/sxpr.h +++ b/tools/libxutil/sxpr.h diff --git a/tools/lib/sxpr_parser.c b/tools/libxutil/sxpr_parser.c index 16fec56b67..16fec56b67 100644 --- a/tools/lib/sxpr_parser.c +++ b/tools/libxutil/sxpr_parser.c diff --git a/tools/lib/sxpr_parser.h b/tools/libxutil/sxpr_parser.h index 7296312e44..7296312e44 100644 --- a/tools/lib/sxpr_parser.h +++ b/tools/libxutil/sxpr_parser.h diff --git a/tools/lib/sys_ctype.h b/tools/libxutil/sys_ctype.h index 1dc6cf2fac..1dc6cf2fac 100644 --- a/tools/lib/sys_ctype.h +++ b/tools/libxutil/sys_ctype.h diff --git a/tools/lib/sys_net.c b/tools/libxutil/sys_net.c index 0e7ac5d638..0e7ac5d638 100644 --- a/tools/lib/sys_net.c +++ b/tools/libxutil/sys_net.c diff --git a/tools/lib/sys_net.h b/tools/libxutil/sys_net.h index da6c1e8fd5..da6c1e8fd5 100644 --- a/tools/lib/sys_net.h +++ b/tools/libxutil/sys_net.h diff --git a/tools/lib/sys_string.c b/tools/libxutil/sys_string.c index 13a90dfd7d..13a90dfd7d 100644 --- a/tools/lib/sys_string.c +++ b/tools/libxutil/sys_string.c diff --git a/tools/lib/sys_string.h b/tools/libxutil/sys_string.h index f39935f669..f39935f669 100644 --- a/tools/lib/sys_string.h +++ b/tools/libxutil/sys_string.h diff --git a/tools/lib/xdr.c b/tools/libxutil/xdr.c index dfb91f23c4..dfb91f23c4 100644 --- a/tools/lib/xdr.c +++ b/tools/libxutil/xdr.c diff --git a/tools/lib/xdr.h b/tools/libxutil/xdr.h index cb7d97df95..cb7d97df95 100644 --- a/tools/lib/xdr.h +++ b/tools/libxutil/xdr.h diff --git a/tools/misc/Makefile b/tools/misc/Makefile index 9df04d8ea2..9795997364 100644 --- a/tools/misc/Makefile +++ b/tools/misc/Makefile @@ -1,10 +1,18 @@ +XEN_ROOT=../.. +include $(XEN_ROOT)/tools/Make.defs + CC = gcc CFLAGS = -Wall -O3 -EXTRA_INC = -I../../xen/include/hypervisor-ifs -EXTRA_INC += -I../../linux-xen-sparse/include -I../xc/lib -EXTRA_INC += -I../xu/lib -EXTRA_INC += -I../lib + +INCLUDES += -I $(XEN_HYPERVISOR_IFS) +INCLUDES += -I $(XEN_LINUX_INCLUDE) +INCLUDES += -I $(XEN_XC) +INCLUDES += -I $(XEN_XU) +INCLUDES += -I $(XEN_LIBXC) +INCLUDES += -I $(XEN_LIBXUTIL) + +CFLAGS += $(INCLUDES) HDRS = $(wildcard *.h) SRCS = $(wildcard *.c) @@ -12,7 +20,8 @@ OBJS = $(patsubst %.c,%.o,$(SRCS)) TARGETS = xen_cpuperf -INSTALL = $(TARGETS) xencons +INSTALL_BIN = $(TARGETS) xencons +INSTALL_SBIN = netfix xm xend all: $(TARGETS) $(MAKE) -C miniterm @@ -20,8 +29,8 @@ all: $(TARGETS) install: all mkdir -p $(prefix)/usr/bin mkdir -p $(prefix)/usr/sbin - install -m0755 $(INSTALL) $(prefix)/usr/bin - install -m0755 netfix $(prefix)/usr/sbin + install -m0755 $(INSTALL_BIN) $(prefix)/usr/bin + install -m0755 $(INSTALL_SBIN) $(prefix)/usr/sbin $(MAKE) -C miniterm install clean: @@ -29,4 +38,4 @@ clean: $(MAKE) -C miniterm clean %: %.c $(HDRS) Makefile - $(CC) $(CFLAGS) $(EXTRA_INC) -o $@ $< + $(CC) $(CFLAGS) -o $@ $< diff --git a/tools/misc/netfix b/tools/misc/netfix index def4e28a6c..df38e438a1 100644 --- a/tools/misc/netfix +++ b/tools/misc/netfix @@ -1,5 +1,6 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- mode: python; -*- +#============================================================================ # Copyright (C) 2004 Mike Wray <mike.wray@hp.com> #============================================================================ # Move the IP address from eth0 onto the Xen bridge (nbe-br). @@ -7,7 +8,7 @@ #============================================================================ from getopt import getopt -from xen.xend.XendBridge import * +from xen.util.Brctl import * short_options = 'hvqni:b:c' long_options = ['help', 'verbose', 'quiet', diff --git a/tools/xen/xend b/tools/misc/xend index 1e13e1450f..06006490a4 100644 --- a/tools/xen/xend +++ b/tools/misc/xend @@ -1,6 +1,8 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- mode: python; -*- +#============================================================================ # Copyright (C) 2004 Mike Wray <mike.wray@hp.com> +#============================================================================ """Xen management daemon. Lives in /usr/sbin. Provides console server and HTTP management api. diff --git a/tools/xen/xm b/tools/misc/xm index 09d8036f0f..6ace888cda 100755 --- a/tools/xen/xm +++ b/tools/misc/xm @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- mode: python; -*- import sys from xen.xm import main diff --git a/tools/xc/py/Makefile b/tools/python/Makefile index 7dc74a1072..7dc74a1072 100644 --- a/tools/xc/py/Makefile +++ b/tools/python/Makefile diff --git a/tools/python/setup.py b/tools/python/setup.py new file mode 100644 index 0000000000..b0eb3f2ebd --- /dev/null +++ b/tools/python/setup.py @@ -0,0 +1,48 @@ + +from distutils.core import setup, Extension + +XEN_ROOT = "../.." + +extra_compile_args = ["-fno-strict-aliasing"] + + +include_dirs = [ XEN_ROOT + "/xen/include/hypervisor-ifs", + XEN_ROOT + "/linux-xen-sparse/include", + XEN_ROOT + "/tools/python/xen/ext/xu", + XEN_ROOT + "/tools/libxc", + XEN_ROOT + "/tools/libxutil", + ] + +library_dirs = [ XEN_ROOT + "/tools/libxc", + XEN_ROOT + "/tools/libxutil", + ] + +libraries = [ "xc", "xutil" ] + +xc = Extension("xc", + extra_compile_args = extra_compile_args, + include_dirs = include_dirs + [ "xen/ext/xc" ], + library_dirs = library_dirs, + libraries = libraries, + sources = [ "xen/ext/xc/xc.c" ]) + +xu = Extension("xu", + extra_compile_args = extra_compile_args, + include_dirs = include_dirs + [ "xen/ext/xu" ], + library_dirs = library_dirs, + libraries = libraries, + sources = [ "xen/ext/xu/xu.c" ]) + +setup(name = 'xen', + version = '2.0', + description = 'Xen', + packages = ['xen', + 'xen.ext', + 'xen.util', + 'xen.xend', + 'xen.xend.server', + 'xen.xm', + ], + ext_package = "xen.ext", + ext_modules = [ xc, xu ] + ) diff --git a/tools/xen/lib/__init__.py b/tools/python/xen/__init__.py index 8d1c8b69c3..8d1c8b69c3 100644 --- a/tools/xen/lib/__init__.py +++ b/tools/python/xen/__init__.py diff --git a/tools/xen/lib/ext/__init__.py b/tools/python/xen/ext/__init__.py index 8d1c8b69c3..8d1c8b69c3 100644 --- a/tools/xen/lib/ext/__init__.py +++ b/tools/python/xen/ext/__init__.py diff --git a/tools/xu/Makefile b/tools/python/xen/ext/xc/Makefile index 6b31fd1f8b..7dc74a1072 100644 --- a/tools/xu/Makefile +++ b/tools/python/xen/ext/xc/Makefile @@ -12,4 +12,4 @@ install: all fi clean: - rm -rf build *.pyc *.pyo *.a *.so *.o *~ *.rpm + rm -rf build *.pyc *.pyo *.o *.a *~ diff --git a/tools/xc/py/setup.py b/tools/python/xen/ext/xc/setup.py index 8efe5ca1a0..8efe5ca1a0 100644 --- a/tools/xc/py/setup.py +++ b/tools/python/xen/ext/xc/setup.py diff --git a/tools/xc/py/Xc.c b/tools/python/xen/ext/xc/xc.c index 2eb70cf2a0..2eb70cf2a0 100644 --- a/tools/xc/py/Xc.c +++ b/tools/python/xen/ext/xc/xc.c diff --git a/tools/xen/lib/xm/__init__.py b/tools/python/xen/ext/xu/__init__.py index e69de29bb2..e69de29bb2 100644 --- a/tools/xen/lib/xm/__init__.py +++ b/tools/python/xen/ext/xu/__init__.py diff --git a/tools/xu/lib/domain_controller.h b/tools/python/xen/ext/xu/domain_controller.h index 76dd164fcb..76dd164fcb 100644 --- a/tools/xu/lib/domain_controller.h +++ b/tools/python/xen/ext/xu/domain_controller.h diff --git a/tools/xu/lib/xu.c b/tools/python/xen/ext/xu/xu.c index 48c975912d..48c975912d 100644 --- a/tools/xu/lib/xu.c +++ b/tools/python/xen/ext/xu/xu.c diff --git a/tools/xen/lib/xend/XendBridge.py b/tools/python/xen/util/Brctl.py index f1584552de..9d3eba1e5f 100644 --- a/tools/xen/lib/xend/XendBridge.py +++ b/tools/python/xen/util/Brctl.py @@ -5,18 +5,12 @@ import os.path import re import sys -from xen.xend import XendRoot -xroot = XendRoot.instance() - os.defpath = os.defpath + ':/sbin:/usr/sbin:/usr/local/sbin' CMD_IFCONFIG = 'ifconfig' CMD_ROUTE = 'route' CMD_BRCTL = 'brctl' CMD_IPTABLES = "iptables" -DEFAULT_BRIDGE = 'nbe-br' -DEFAULT_INTERFACE = 'eth0' - opts = None class Opts: @@ -35,35 +29,18 @@ def cmd(p, s): if not opts.dryrun: os.system(c) -def default_bridge(): - return xroot.get_config_value('bridge', DEFAULT_BRIDGE) - -def default_interface(): - return xroot.get_config_value('interface', DEFAULT_INTERFACE) - -def vif_dev(dom, vif): - """Return the name of the network interface for vif on domain dom. - """ - return "vif%d.%d" % (dom, vif) - -def vif_bridge_add(dom, vif, bridge=None): +def vif_bridge_add(params): """Add the network interface for vif on dom to a bridge. """ - if not bridge: bridge = default_bridge() - d = { 'bridge': bridge, 'vif': vif_dev(dom, vif) } - cmd(CMD_BRCTL, 'addif %(bridge)s %(vif)s' % d) - return bridge + cmd(CMD_BRCTL, 'addif %(bridge)s %(vif)s' % params) -def vif_bridge_rem(dom, vif, bridge=None): +def vif_bridge_rem(params): """Remove the network interface for vif on dom from a bridge. """ - if not bridge: bridge = default_bridge() - print 'vif_bridge_rem>', dom, vif, bridge - d = { 'bridge': bridge, 'vif': vif_dev(dom, vif) } - cmd(CMD_BRCTL, 'delif %(bridge)s %(vif)s' % d) + cmd(CMD_BRCTL, 'delif %(bridge)s %(vif)s' % params) -def vif_restrict_addr(dom, vif, addr, delete=0): - d = { 'vif': vif_dev(dom, vif), 'addr': addr} +def vif_restrict_addr(vif, addr, delete=0): + d = { 'vif': vif, 'addr': addr} if delete: d['flag'] = '-D' else: @@ -72,11 +49,10 @@ def vif_restrict_addr(dom, vif, addr, delete=0): cmd(CMD_IPTABLES, '%(flag)s FORWARD -m physdev --physdev-in %(vif)s -s %(addr)s -j ACCEPT' % d) cmd(CMD_IPTABLES, '%(flag)s FORWARD -m physdev --physdev-out %(vif)s -d %(addr)s -j ACCEPT' % d) -def bridge_create(bridge=None, **kwd): +def bridge_create(bridge, **kwd): """Create a bridge. Defaults hello time to 0, forward delay to 0 and stp off. """ - if not bridge: bridge = default_bridge() cmd(CMD_BRCTL, 'addbr %s' % bridge) if kwd.get('hello', None) is None: kwd['hello'] = 0 @@ -96,10 +72,9 @@ def bridge_set(bridge, hello=None, fd=None, stp=None): if stp is not None: cmd(CMD_BRCTL, 'stp %s %s' % (bridge, stp)) -def bridge_del(bridge=None): +def bridge_del(bridge): """Delete a bridge. """ - if not bridge: bridge = default_bridge() cmd(CMD_BRCTL, 'delbr %s' % bridge) def routes(): @@ -137,25 +112,20 @@ def ifconfig(interface): break return info -def reconfigure(interface=None, bridge=None): +def reconfigure(interface, bridge): """Reconfigure an interface to be attached to a bridge, and give the bridge the IP address etc. from interface. Move the default route to the interface to the bridge. - If opts.create is true, creates the bridge. """ global opts - if not interface: interface = default_interface() - if not bridge: bridge = default_bridge() intf_info = ifconfig(interface) if not intf_info: - print 'Interface not found:', interface + print >>sys.stderr, 'Interface not found:', interface return - if opts.create: - bridge_create(bridge) #bridge_info = ifconfig(bridge) #if not bridge_info: - # print 'Bridge not found:', bridge + # print >>sys.stderr, 'Bridge not found:', bridge # return route_info = routes() intf_info['bridge'] = bridge @@ -166,7 +136,7 @@ def reconfigure(interface=None, bridge=None): r['interface'] == interface): intf_info['gateway'] = r['gateway'] if not intf_info['gateway']: - print 'Gateway not found: ', interface + print >>sys.stderr, 'Gateway not found: ', interface return cmd(CMD_IFCONFIG, '%(bridge)s %(address)s netmask %(mask)s broadcast %(broadcast)s up' @@ -178,11 +148,8 @@ def reconfigure(interface=None, bridge=None): cmd(CMD_IFCONFIG, '%(interface)s 0.0.0.0' % intf_info) defaults = { - 'interface': default_interface(), - 'bridge' : default_bridge(), 'verbose' : 1, 'dryrun' : 0, - 'create' : 0, } opts = Opts(defaults) diff --git a/tools/xen/lib/util/__init__.py b/tools/python/xen/util/__init__.py index 8d1c8b69c3..8d1c8b69c3 100644 --- a/tools/xen/lib/util/__init__.py +++ b/tools/python/xen/util/__init__.py diff --git a/tools/xen/lib/util/console_client.py b/tools/python/xen/util/console_client.py index 7ac63aeb75..7ac63aeb75 100644 --- a/tools/xen/lib/util/console_client.py +++ b/tools/python/xen/util/console_client.py diff --git a/tools/xen/lib/util/ip.py b/tools/python/xen/util/ip.py index 8396e0d014..8396e0d014 100644 --- a/tools/xen/lib/util/ip.py +++ b/tools/python/xen/util/ip.py diff --git a/tools/xen/lib/util/tempfile.py b/tools/python/xen/util/tempfile.py index 756d8c8727..756d8c8727 100644 --- a/tools/xen/lib/util/tempfile.py +++ b/tools/python/xen/util/tempfile.py diff --git a/tools/xen/lib/xend/Args.py b/tools/python/xen/xend/Args.py index 527e841d3d..527e841d3d 100644 --- a/tools/xen/lib/xend/Args.py +++ b/tools/python/xen/xend/Args.py diff --git a/tools/xen/lib/xend/EventServer.py b/tools/python/xen/xend/EventServer.py index 20c567ada7..20c567ada7 100644 --- a/tools/xen/lib/xend/EventServer.py +++ b/tools/python/xen/xend/EventServer.py diff --git a/tools/xen/lib/xend/EventTypes.py b/tools/python/xen/xend/EventTypes.py index 6350baa5dd..6350baa5dd 100644 --- a/tools/xen/lib/xend/EventTypes.py +++ b/tools/python/xen/xend/EventTypes.py diff --git a/tools/xen/lib/xend/PrettyPrint.py b/tools/python/xen/xend/PrettyPrint.py index 9e91b11448..9e91b11448 100644 --- a/tools/xen/lib/xend/PrettyPrint.py +++ b/tools/python/xen/xend/PrettyPrint.py diff --git a/tools/python/xen/xend/Vifctl.py b/tools/python/xen/xend/Vifctl.py new file mode 100644 index 0000000000..49df8f6bd0 --- /dev/null +++ b/tools/python/xen/xend/Vifctl.py @@ -0,0 +1,28 @@ +import os +import os.path +import sys + +VIFCTL = '/etc/xen/xend/vifctl' + +def init(): + os.system(VIFCTL + ' init ') + +def up(vif, mac=None, bridge=None, ipaddr=[]): + args = ['vif=%s' % vif] + if mac: + args.append('mac=%s' % mac) + if bridge: + args.append('bridge=%s' % bridge) + if ipaddr: + args.append('ipaddr=%s' % ','.join(ipaddr)) + os.system(VIFCTL + ' up ' + ' '.join(args)) + +def down(vif, mac=None, bridge=None, ipaddr=[]): + args = ['vif=%s' % vif] + if mac: + args.append('mac=%s' % mac) + if bridge: + args.append('bridge=%s' % bridge) + if ipaddr: + args.append('ipaddr=%s' % ','.join(ipaddr)) + os.system(VIFCTL + ' down ' + ' '.join(args)) diff --git a/tools/xen/lib/xend/XendClient.py b/tools/python/xen/xend/XendClient.py index 13dc3dbb1e..13dc3dbb1e 100644 --- a/tools/xen/lib/xend/XendClient.py +++ b/tools/python/xen/xend/XendClient.py diff --git a/tools/xen/lib/xend/XendConsole.py b/tools/python/xen/xend/XendConsole.py index 4420c388f2..4420c388f2 100644 --- a/tools/xen/lib/xend/XendConsole.py +++ b/tools/python/xen/xend/XendConsole.py diff --git a/tools/xen/lib/xend/XendDB.py b/tools/python/xen/xend/XendDB.py index 6a27e65b58..6a27e65b58 100644 --- a/tools/xen/lib/xend/XendDB.py +++ b/tools/python/xen/xend/XendDB.py diff --git a/tools/xen/lib/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index 3aaf080c36..3aaf080c36 100644 --- a/tools/xen/lib/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py diff --git a/tools/xen/lib/xend/XendDomainConfig.py b/tools/python/xen/xend/XendDomainConfig.py index 35db31ff51..35db31ff51 100644 --- a/tools/xen/lib/xend/XendDomainConfig.py +++ b/tools/python/xen/xend/XendDomainConfig.py diff --git a/tools/xen/lib/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index c17109c85a..a7e5aa3b2f 100644 --- a/tools/xen/lib/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -24,8 +24,6 @@ import sxp import XendConsole xendConsole = XendConsole.instance() -import XendBridge - import server.SrvDaemon xend = server.SrvDaemon.instance() @@ -628,7 +626,7 @@ class XendDomainInfo: """Set configuration flags if the vm is a backend for netif of blkif. """ for c in sxp.children(self.config, 'backend'): - name = sxp.name(c) + name = sxp.name(sxp.child0(c)) if name == 'blkif': self.blkif_backend = 1 elif name == 'netif': @@ -765,7 +763,7 @@ def vm_dev_vif(vm, val, index): if devid: dev.setprop('id', devid) bridge = sxp.child_value(val, "bridge") - dev.bridge_add(bridge) + dev.up(bridge) vm.add_device('vif', dev) print 'vm_dev_vif> created', dev return id diff --git a/tools/xen/lib/xend/XendMigrate.py b/tools/python/xen/xend/XendMigrate.py index 1580ba83ed..1580ba83ed 100644 --- a/tools/xen/lib/xend/XendMigrate.py +++ b/tools/python/xen/xend/XendMigrate.py diff --git a/tools/xen/lib/xend/XendNode.py b/tools/python/xen/xend/XendNode.py index 7221785aff..7221785aff 100644 --- a/tools/xen/lib/xend/XendNode.py +++ b/tools/python/xen/xend/XendNode.py diff --git a/tools/xen/lib/xend/XendRoot.py b/tools/python/xen/xend/XendRoot.py index 665f5df29e..665f5df29e 100644 --- a/tools/xen/lib/xend/XendRoot.py +++ b/tools/python/xen/xend/XendRoot.py diff --git a/tools/xen/lib/xend/XendVnet.py b/tools/python/xen/xend/XendVnet.py index 213408e111..213408e111 100644 --- a/tools/xen/lib/xend/XendVnet.py +++ b/tools/python/xen/xend/XendVnet.py diff --git a/tools/xen/lib/xend/__init__.py b/tools/python/xen/xend/__init__.py index 8d1c8b69c3..8d1c8b69c3 100644 --- a/tools/xen/lib/xend/__init__.py +++ b/tools/python/xen/xend/__init__.py diff --git a/tools/xen/lib/xend/encode.py b/tools/python/xen/xend/encode.py index 38c9351db7..38c9351db7 100644 --- a/tools/xen/lib/xend/encode.py +++ b/tools/python/xen/xend/encode.py diff --git a/tools/xen/lib/xend/server/SrvBase.py b/tools/python/xen/xend/server/SrvBase.py index bcff1bc3a0..bcff1bc3a0 100644 --- a/tools/xen/lib/xend/server/SrvBase.py +++ b/tools/python/xen/xend/server/SrvBase.py diff --git a/tools/xen/lib/xend/server/SrvConsole.py b/tools/python/xen/xend/server/SrvConsole.py index 59d0e5f11c..59d0e5f11c 100644 --- a/tools/xen/lib/xend/server/SrvConsole.py +++ b/tools/python/xen/xend/server/SrvConsole.py diff --git a/tools/xen/lib/xend/server/SrvConsoleDir.py b/tools/python/xen/xend/server/SrvConsoleDir.py index 814b448370..814b448370 100644 --- a/tools/xen/lib/xend/server/SrvConsoleDir.py +++ b/tools/python/xen/xend/server/SrvConsoleDir.py diff --git a/tools/xen/lib/xend/server/SrvDaemon.py b/tools/python/xen/xend/server/SrvDaemon.py index c8284dc485..c8284dc485 100644 --- a/tools/xen/lib/xend/server/SrvDaemon.py +++ b/tools/python/xen/xend/server/SrvDaemon.py diff --git a/tools/xen/lib/xend/server/SrvDeviceDir.py b/tools/python/xen/xend/server/SrvDeviceDir.py index 52f428540d..52f428540d 100644 --- a/tools/xen/lib/xend/server/SrvDeviceDir.py +++ b/tools/python/xen/xend/server/SrvDeviceDir.py diff --git a/tools/xen/lib/xend/server/SrvDir.py b/tools/python/xen/xend/server/SrvDir.py index c49c0b36ba..c49c0b36ba 100644 --- a/tools/xen/lib/xend/server/SrvDir.py +++ b/tools/python/xen/xend/server/SrvDir.py diff --git a/tools/xen/lib/xend/server/SrvDomain.py b/tools/python/xen/xend/server/SrvDomain.py index 7b9d3563a8..156198bd70 100644 --- a/tools/xen/lib/xend/server/SrvDomain.py +++ b/tools/python/xen/xend/server/SrvDomain.py @@ -55,7 +55,7 @@ class SrvDomain(SrvDir): return val def op_pincpu(self, op, req): - fn = FormFn(self.xd.domain_migrate, + fn = FormFn(self.xd.domain_pincpu, [['dom', 'int'], ['cpu', 'int']]) val = fn(req.args, {'dom': self.dom.id}) diff --git a/tools/xen/lib/xend/server/SrvDomainDir.py b/tools/python/xen/xend/server/SrvDomainDir.py index af4bc7a15c..af4bc7a15c 100644 --- a/tools/xen/lib/xend/server/SrvDomainDir.py +++ b/tools/python/xen/xend/server/SrvDomainDir.py diff --git a/tools/xen/lib/xend/server/SrvEventDir.py b/tools/python/xen/xend/server/SrvEventDir.py index 02871a426a..02871a426a 100644 --- a/tools/xen/lib/xend/server/SrvEventDir.py +++ b/tools/python/xen/xend/server/SrvEventDir.py diff --git a/tools/xen/lib/xend/server/SrvNode.py b/tools/python/xen/xend/server/SrvNode.py index 69747d80c1..69747d80c1 100644 --- a/tools/xen/lib/xend/server/SrvNode.py +++ b/tools/python/xen/xend/server/SrvNode.py diff --git a/tools/xen/lib/xend/server/SrvRoot.py b/tools/python/xen/xend/server/SrvRoot.py index 8d38937b72..8d38937b72 100644 --- a/tools/xen/lib/xend/server/SrvRoot.py +++ b/tools/python/xen/xend/server/SrvRoot.py diff --git a/tools/xen/lib/xend/server/SrvServer.py b/tools/python/xen/xend/server/SrvServer.py index 6535ad3f37..ac201dd10d 100644 --- a/tools/xen/lib/xend/server/SrvServer.py +++ b/tools/python/xen/xend/server/SrvServer.py @@ -32,7 +32,7 @@ from twisted.internet import reactor from xen.xend import XendRoot xroot = XendRoot.instance() -from xen.xend import XendBridge +from xen.xend import Vifctl from SrvRoot import SrvRoot @@ -48,8 +48,7 @@ def create(port=None, interface=None, bridge=0): reactor.listenTCP(port, site, interface=interface) def init_bridge(): - XendBridge.bridge_create() - XendBridge.reconfigure() + Vifctl.init() def main(port=None, interface=None): create(port, interface) diff --git a/tools/xen/lib/xend/server/SrvVnetDir.py b/tools/python/xen/xend/server/SrvVnetDir.py index a8a814192d..a8a814192d 100644 --- a/tools/xen/lib/xend/server/SrvVnetDir.py +++ b/tools/python/xen/xend/server/SrvVnetDir.py diff --git a/tools/xen/lib/xend/server/__init__.py b/tools/python/xen/xend/server/__init__.py index 8b13789179..8b13789179 100644 --- a/tools/xen/lib/xend/server/__init__.py +++ b/tools/python/xen/xend/server/__init__.py diff --git a/tools/xen/lib/xend/server/blkif.py b/tools/python/xen/xend/server/blkif.py index 4e2a49f7d8..4e2a49f7d8 100755 --- a/tools/xen/lib/xend/server/blkif.py +++ b/tools/python/xen/xend/server/blkif.py diff --git a/tools/xen/lib/xend/server/channel.py b/tools/python/xen/xend/server/channel.py index be98a37fd5..be98a37fd5 100755 --- a/tools/xen/lib/xend/server/channel.py +++ b/tools/python/xen/xend/server/channel.py diff --git a/tools/xen/lib/xend/server/console.py b/tools/python/xen/xend/server/console.py index ab8b22e41e..ab8b22e41e 100755 --- a/tools/xen/lib/xend/server/console.py +++ b/tools/python/xen/xend/server/console.py diff --git a/tools/xen/lib/xend/server/controller.py b/tools/python/xen/xend/server/controller.py index 900c2d55b0..900c2d55b0 100755 --- a/tools/xen/lib/xend/server/controller.py +++ b/tools/python/xen/xend/server/controller.py diff --git a/tools/xen/lib/xend/server/cstruct.py b/tools/python/xen/xend/server/cstruct.py index 880931b41f..880931b41f 100755 --- a/tools/xen/lib/xend/server/cstruct.py +++ b/tools/python/xen/xend/server/cstruct.py diff --git a/tools/xen/lib/xend/server/domain.py b/tools/python/xen/xend/server/domain.py index ab22234480..ab22234480 100644 --- a/tools/xen/lib/xend/server/domain.py +++ b/tools/python/xen/xend/server/domain.py diff --git a/tools/xen/lib/xend/server/messages.py b/tools/python/xen/xend/server/messages.py index e12d7b6e24..e12d7b6e24 100644 --- a/tools/xen/lib/xend/server/messages.py +++ b/tools/python/xen/xend/server/messages.py diff --git a/tools/xen/lib/xend/server/netif.py b/tools/python/xen/xend/server/netif.py index 01391f7b5f..2b01805be6 100755 --- a/tools/xen/lib/xend/server/netif.py +++ b/tools/python/xen/xend/server/netif.py @@ -4,7 +4,7 @@ from twisted.internet import defer from xen.xend import sxp from xen.xend import PrettyPrint -from xen.xend import XendBridge +from xen.xend import Vifctl import channel import controller @@ -115,10 +115,11 @@ class NetDev(controller.Dev): self.mac = mac self.evtchn = None self.bridge = None + self.ipaddr = [] def sxpr(self): vif = str(self.vif) - mac = ':'.join(map(lambda x: "%x" % x, self.mac)) + mac = self.get_mac() val = ['netdev', ['vif', vif], ['mac', mac]] if self.bridge: val.append(['bridge', self.bridge]) @@ -128,20 +129,31 @@ class NetDev(controller.Dev): self.evtchn['port2']]) return val - def bridge_add(self, bridge): - self.bridge = XendBridge.vif_bridge_add(self.controller.dom, self.vif, bridge) + def get_vifname(self): + return "vif%d.%d" % (self.controller.dom, self.vif) - def bridge_rem(self): - if not self.bridge: return - XendBridge.vif_bridge_rem(self.controller.dom, self.vif, self.bridge) - self.bridge = None + def get_mac(self): + return ':'.join(map(lambda x: "%x" % x, self.mac)) + + def vifctl_params(self): + return { 'mac' : self.get_mac(), + 'bridge': self.bridge, + 'ipaddr': self.ipaddr } + + def up(self, bridge=None, ipaddr=[]): + self.bridge = bridge + self.ipaddr = ipaddr + Vifctl.up(self.get_vifname(), **self.vifctl_params()) + + def down(self): + Vifctl.down(self.get_vifname(), **self.vifctl_params()) def destroy(self): def cb_destroy(val): self.controller.send_be_destroy(self.vif) print 'NetDev>destroy>', 'vif=', self.vif PrettyPrint.prettyprint(self.sxpr()) - self.bridge_rem() + self.down() d = self.controller.factory.addDeferred() d.addCallback(cb_destroy) self.controller.send_be_disconnect(self.vif) diff --git a/tools/xen/lib/xend/server/params.py b/tools/python/xen/xend/server/params.py index 7949f1431f..7949f1431f 100644 --- a/tools/xen/lib/xend/server/params.py +++ b/tools/python/xen/xend/server/params.py diff --git a/tools/xen/lib/xend/sxp.py b/tools/python/xen/xend/sxp.py index 01654a2377..01654a2377 100644 --- a/tools/xen/lib/xend/sxp.py +++ b/tools/python/xen/xend/sxp.py diff --git a/tools/xu/lib/__init__.py b/tools/python/xen/xm/__init__.py index e69de29bb2..e69de29bb2 100644 --- a/tools/xu/lib/__init__.py +++ b/tools/python/xen/xm/__init__.py diff --git a/tools/xen/lib/xm/create.py b/tools/python/xen/xm/create.py index 12e2e8010c..12e2e8010c 100644 --- a/tools/xen/lib/xm/create.py +++ b/tools/python/xen/xm/create.py diff --git a/tools/xen/lib/xm/main.py b/tools/python/xen/xm/main.py index 3ab5d23cf7..3ab5d23cf7 100644 --- a/tools/xen/lib/xm/main.py +++ b/tools/python/xen/xm/main.py diff --git a/tools/xen/lib/xm/opts.py b/tools/python/xen/xm/opts.py index eb07936f1e..eb07936f1e 100644 --- a/tools/xen/lib/xm/opts.py +++ b/tools/python/xen/xm/opts.py diff --git a/tools/xen/lib/xm/shutdown.py b/tools/python/xen/xm/shutdown.py index aaa354554a..aaa354554a 100644 --- a/tools/xen/lib/xm/shutdown.py +++ b/tools/python/xen/xm/shutdown.py diff --git a/tools/xc/Makefile b/tools/xc/Makefile deleted file mode 100644 index 04b0e35fe1..0000000000 --- a/tools/xc/Makefile +++ /dev/null @@ -1,12 +0,0 @@ - -all: - $(MAKE) -C lib - $(MAKE) -C py - -install: all - $(MAKE) -C lib install - $(MAKE) -C py install - -clean: - $(MAKE) -C lib clean - $(MAKE) -C py clean diff --git a/tools/xen/Makefile b/tools/xen/Makefile deleted file mode 100644 index 852d93dc5f..0000000000 --- a/tools/xen/Makefile +++ /dev/null @@ -1,18 +0,0 @@ - -all: - python setup.py build - -install: all - if [ "$(prefix)" = "" ]; then \ - python setup.py install; \ - elif [ "$(dist)" = "yes" ]; then \ - python setup.py install --home="$(prefix)"; \ - else \ - python setup.py install --root="$(prefix)"; \ - fi - mkdir -p $(prefix)/usr/sbin - install -m0755 xend $(prefix)/usr/sbin - install -m0755 xm $(prefix)/usr/sbin - -clean: - rm -rf build *.pyc *.pyo *.o *.a *~ diff --git a/tools/xen/setup.py b/tools/xen/setup.py deleted file mode 100644 index 1f0e959d08..0000000000 --- a/tools/xen/setup.py +++ /dev/null @@ -1,17 +0,0 @@ - -from distutils.core import setup, Extension - -setup(name = 'xen', - version = '1.0', - description = 'Xen', - author = 'Mike Wray', - author_email = 'mike.wray@hp.com', - packages = ['xen', - 'xen.ext', - 'xen.util', - 'xen.xend', - 'xen.xend.server', - 'xen.xm', - ], - package_dir = { 'xen': 'lib' }, - ) diff --git a/tools/xentrace/Makefile b/tools/xentrace/Makefile index f4319be6ed..fb90e2c125 100644 --- a/tools/xentrace/Makefile +++ b/tools/xentrace/Makefile @@ -1,10 +1,16 @@ +XEN_ROOT=../.. +include $(XEN_ROOT)/tools/Make.defs + CC = gcc CFLAGS = -Wall -O3 -Werror -CFLAGS += -I../../xen/include/hypervisor-ifs -CFLAGS += -I../../linux-xen-sparse/include -CFLAGS += -I../xu/lib -CFLAGS += -I../lib + +CFLAGS += -I $(XEN_HYPERVISOR_IFS) +CFLAGS += -I $(XEN_LINUX_INCLUDE) +CFLAGS += -I $(XEN_XC) +CFLAGS += -I $(XEN_XU) +CFLAGS += -I $(XEN_LIBXC) +CFLAGS += -I $(XEN_LIBXUTIL) HDRS = $(wildcard *.h) OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) @@ -28,4 +34,4 @@ clean: $(RM) *.a *.so *.o *.rpm $(BIN) %: %.c $(HDRS) Makefile - $(CC) $(CFLAGS) -o $@ $< -L../xc/lib -lxc + $(CC) $(CFLAGS) -o $@ $< -L$(XEN_LIBXC) -lxc diff --git a/tools/xentrace/xentrace.c b/tools/xentrace/xentrace.c index 3560745a42..9972422878 100644 --- a/tools/xentrace/xentrace.c +++ b/tools/xentrace/xentrace.c @@ -21,7 +21,7 @@ #include <argp.h> #include <signal.h> -#include "../xc/lib/xc_private.h" +#include "xc_private.h" /* from xen/include/hypervisor-ifs */ #include <trace.h> diff --git a/tools/xu/setup.py b/tools/xu/setup.py deleted file mode 100644 index e342c78a14..0000000000 --- a/tools/xu/setup.py +++ /dev/null @@ -1,19 +0,0 @@ - -from distutils.core import setup, Extension - -xu = Extension("xu", - extra_compile_args = ["-fno-strict-aliasing"], - include_dirs = ["../xc/lib", - "../../xen/include/hypervisor-ifs", - "../../linux-xen-sparse/include"], - library_dirs = ["../xc/lib"], - libraries = ["xc"], - sources = ["lib/xu.c"]) - -setup(name = "xu", - version = "1.0", - #packages = ["xend"], - #package_dir = { "xend" : "lib" }, - ext_package = "xen.ext", - ext_modules = [ xu ] - ) |