projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ovsdb-idlc: Fix sizeof calculation in generated code.
[openvswitch]
/
xenserver
/
opt_xensource_libexec_InterfaceReconfigureVswitch.py
diff --git
a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
index 6b60cb073e81b8608cb9252fe1b17a5c55af495e..c31fa2dbf98eeffbb04bcbd6ef361298f14a3dba 100644
(file)
--- a/
xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
+++ b/
xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
@@
-90,7
+90,9
@@
For a non-VLAN, non-bond master PIF, the PIF is its own physical device PIF.
A VLAN PIF cannot be a datapath PIF.
"""
A VLAN PIF cannot be a datapath PIF.
"""
- if pif_is_vlan(pif):
+ if pif_is_tunnel(pif):
+ return []
+ elif pif_is_vlan(pif):
# Seems like overkill...
raise Error("get-physical-pifs should not get passed a VLAN")
elif pif_is_bond(pif):
# Seems like overkill...
raise Error("get-physical-pifs should not get passed a VLAN")
elif pif_is_bond(pif):
@@
-125,6
+127,9
@@
def vsctl_escape(s):
return r'\x%02x' % ord(c)
return '"' + re.sub(r'["\\\000-\037]', escape, s) + '"'
return r'\x%02x' % ord(c)
return '"' + re.sub(r'["\\\000-\037]', escape, s) + '"'
+def datapath_configure_tunnel(pif):
+ pass
+
def datapath_configure_bond(pif,slaves):
bridge = pif_bridge_name(pif)
pifrec = db().get_pif_record(pif)
def datapath_configure_bond(pif,slaves):
bridge = pif_bridge_name(pif)
pifrec = db().get_pif_record(pif)
@@
-292,10
+297,16
@@
def configure_datapath(pif):
vsctl_argv += ['# configure bond %s' % pif_netdev_name(pif)]
vsctl_argv += datapath_configure_bond(pif, physical_devices)
extra_up_ports += [pif_netdev_name(pif)]
vsctl_argv += ['# configure bond %s' % pif_netdev_name(pif)]
vsctl_argv += datapath_configure_bond(pif, physical_devices)
extra_up_ports += [pif_netdev_name(pif)]
- el
se
:
+ el
if len(physical_devices) == 1
:
iface = pif_netdev_name(physical_devices[0])
vsctl_argv += ['# add physical device %s' % iface]
vsctl_argv += ['--', '--may-exist', 'add-port', bridge, iface]
iface = pif_netdev_name(physical_devices[0])
vsctl_argv += ['# add physical device %s' % iface]
vsctl_argv += ['--', '--may-exist', 'add-port', bridge, iface]
+ elif pif_is_tunnel(pif):
+ datapath_configure_tunnel(pif)
+
+ vsctl_argv += ['# configure Bridge MAC']
+ vsctl_argv += ['--', 'set', 'Bridge', bridge,
+ 'other-config:hwaddr=%s' % vsctl_escape(db().get_pif_record(pif)['MAC'])]
vsctl_argv += set_br_external_ids(pif)
vsctl_argv += ['## done configuring datapath %s' % bridge]
vsctl_argv += set_br_external_ids(pif)
vsctl_argv += ['## done configuring datapath %s' % bridge]
@@
-337,10
+348,6
@@
def set_br_external_ids(pif):
vsctl_argv += ['--', 'br-set-external-id', pif_bridge_name(pif),
'network-uuids', ';'.join(xs_network_uuids)]
vsctl_argv += ['--', 'br-set-external-id', pif_bridge_name(pif),
'network-uuids', ';'.join(xs_network_uuids)]
- vsctl_argv += ['# configure MAC']
- vsctl_argv += ['--', 'set', 'Interface', pif_ipdev_name(pif),
- 'MAC=%s' % vsctl_escape(dprec['MAC'])]
-
return vsctl_argv
#
return vsctl_argv
#
@@
-358,6
+365,17
@@
class DatapathVswitch(Datapath):
log("Configured for Vswitch datapath")
log("Configured for Vswitch datapath")
+ @classmethod
+ def rewrite(cls):
+ vsctl_argv = []
+ for pif in db().get_all_pifs():
+ pifrec = db().get_pif_record(pif)
+ if not pif_is_vlan(pif) and pifrec['currently_attached']:
+ vsctl_argv += set_br_external_ids(pif)
+
+ if vsctl_argv != []:
+ datapath_modify_config(vsctl_argv)
+
def configure_ipdev(self, cfg):
cfg.write("TYPE=Ethernet\n")
def configure_ipdev(self, cfg):
cfg.write("TYPE=Ethernet\n")
@@
-374,6
+392,8
@@
class DatapathVswitch(Datapath):
vsctl_argv += c
extra_ports += e
vsctl_argv += c
extra_ports += e
+ 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.
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.
@@
-382,7
+402,7
@@
class DatapathVswitch(Datapath):
# configure_datapath() set up the underlying datapath bridge.
# Stack a VLAN bridge on top of it.
vsctl_argv += ['--', '--may-exist', 'add-br',
# configure_datapath() set up the underlying datapath bridge.
# Stack a VLAN bridge on top of it.
vsctl_argv += ['--', '--may-exist', 'add-br',
- bridge,
pif_bridge_name(self._dp)
, pifrec['VLAN']]
+ bridge,
dpname
, pifrec['VLAN']]
vsctl_argv += set_br_external_ids(self._pif)
vsctl_argv += set_br_external_ids(self._pif)
@@
-392,6
+412,11
@@
class DatapathVswitch(Datapath):
vsctl_argv += ["# reconfigure ipdev %s" % ipdev]
vsctl_argv += ['--', 'add-port', bridge, ipdev]
vsctl_argv += ["# reconfigure ipdev %s" % ipdev]
vsctl_argv += ['--', 'add-port', bridge, ipdev]
+ if ipdev != dpname:
+ vsctl_argv += ['# configure Interface MAC']
+ vsctl_argv += ['--', 'set', 'Interface', pif_ipdev_name(self._pif),
+ 'MAC=%s' % vsctl_escape(dprec['MAC'])]
+
self._vsctl_argv = vsctl_argv
self._extra_ports = extra_ports
self._vsctl_argv = vsctl_argv
self._extra_ports = extra_ports