aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/Make.defs7
-rw-r--r--tools/Makefile18
-rw-r--r--tools/examples/Makefile27
-rw-r--r--tools/examples/vifctl149
-rwxr-xr-xtools/examples/xm_dom_create.py406
-rw-r--r--tools/examples/xmdefaults2
-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/Makefile80
-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/Makefile25
-rw-r--r--tools/misc/netfix5
-rw-r--r--tools/misc/xend (renamed from tools/xen/xend)4
-rwxr-xr-xtools/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.py48
-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.py28
-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-xtools/python/xen/xend/server/blkif.py (renamed from tools/xen/lib/xend/server/blkif.py)0
-rwxr-xr-xtools/python/xen/xend/server/channel.py (renamed from tools/xen/lib/xend/server/channel.py)0
-rwxr-xr-xtools/python/xen/xend/server/console.py (renamed from tools/xen/lib/xend/server/console.py)0
-rwxr-xr-xtools/python/xen/xend/server/controller.py (renamed from tools/xen/lib/xend/server/controller.py)0
-rwxr-xr-xtools/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-xtools/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/Makefile12
-rw-r--r--tools/xen/Makefile18
-rw-r--r--tools/xen/setup.py17
-rw-r--r--tools/xentrace/Makefile16
-rw-r--r--tools/xentrace/xentrace.c2
-rw-r--r--tools/xu/setup.py19
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 ]
- )