X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xenserver%2Fopt_xensource_libexec_InterfaceReconfigureVswitch.py;h=6c9e3fa8c494d8cb628350ff93ea38a5a7109d48;hb=e7009c364026d69381cdda23941f99ff040d4948;hp=33beb76c2d922d25b8a3d7ed59081386b5aaae85;hpb=2776e4086038071f25e67579fc4215ef95ea26a6;p=openvswitch diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py index 33beb76c..6c9e3fa8 100644 --- a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py +++ b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py @@ -1,5 +1,5 @@ # Copyright (c) 2008,2009 Citrix Systems, Inc. -# Copyright (c) 2009,2010 Nicira Networks. +# Copyright (c) 2009,2010,2011 Nicira Networks. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published @@ -351,6 +351,7 @@ def configure_datapath(pif): pool = db().get_pool_record() network = db().get_network_by_bridge(bridge) + network_rec = None fail_mode = None valid_fail_modes = ['standalone', 'secure'] @@ -366,6 +367,15 @@ def configure_datapath(pif): vsctl_argv += ['--', 'set', 'Bridge', bridge, 'fail_mode=%s' % fail_mode] + if network_rec: + dib = network_rec['other_config'].get('vswitch-disable-in-band') + if not dib: + vsctl_argv += ['--', 'remove', 'Bridge', bridge, 'other_config', 'disable-in-band'] + elif dib in ['true', 'false']: + vsctl_argv += ['--', 'set', 'Bridge', bridge, 'other_config:disable-in-band=' + dib] + else: + log('"' + dib + '"' "isn't a valid setting for other_config:disable-in-band on " + bridge) + vsctl_argv += set_br_external_ids(pif) vsctl_argv += ['## done configuring datapath %s' % bridge] @@ -465,8 +475,8 @@ class DatapathVswitch(Datapath): dpname = pif_bridge_name(self._dp) if pif_is_vlan(self._pif): - # XXX this is only needed on XS5.5, because XAPI misguidedly - # creates the fake bridge (via bridge ioctl) before it calls us. + # In some cases XAPI may misguidedly leave an instance of + # 'bridge' which should be deleted. vsctl_argv += ['--', '--if-exists', 'del-br', bridge] # configure_datapath() set up the underlying datapath bridge. @@ -529,7 +539,7 @@ class DatapathVswitch(Datapath): netdev_up(dev, mtu) - settings, offload = ethtool_settings(oc) + settings, offload = ethtool_settings(oc, PIF_OTHERCONFIG_DEFAULTS) if len(settings): run_command(['/sbin/ethtool', '-s', dev] + settings) if len(offload): @@ -550,11 +560,6 @@ class DatapathVswitch(Datapath): bridge = pif_bridge_name(dp) - #nw = db().get_pif_record(self._pif)['network'] - #nwrec = db().get_network_record(nw) - #vsctl_argv += ['# deconfigure network-uuids'] - #vsctl_argv += ['--del-entry=bridge.%s.network-uuids=%s' % (bridge,nwrec['uuid'])] - log("deconfigure ipdev %s on %s" % (ipdev,bridge)) vsctl_argv += ["# deconfigure ipdev %s" % ipdev] vsctl_argv += datapath_deconfigure_ipdev(ipdev)