mention /usr/bin/python when invoking setup.py, because otherwise on
[pyplnet.git] / plnet.py
index 8ce9428..b46d720 100755 (executable)
--- a/plnet.py
+++ b/plnet.py
@@ -110,8 +110,12 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
 
             for setting in settings:
                 settingname = setting[name_key].upper()
-                if settingname in ('IFNAME','ALIAS','CFGOPTIONS','DRIVER'):
+                if settingname in ('IFNAME','ALIAS','CFGOPTIONS','DRIVER','VLAN'):
                     details[settingname]=setting['value']
+                # IPv6 support on IPv4 interface
+                elif settingname in ('IPV6ADDR','IPV6_DEFAULTGW','IPV6ADDR_SECONDARIES'):
+                    details[settingname]=setting['value']
+                    details['IPV6INIT']='yes'
                 # wireless settings
                 elif settingname in \
                         [  "MODE", "ESSID", "NW", "FREQ", "CHANNEL", "SENS", "RATE",
@@ -122,6 +126,10 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
                 # Bridge setting
                 elif settingname in [ 'BRIDGE' ]:
                     details['BRIDGE'] = setting['value']
+                elif settingname in [ 'OVS_BRIDGE' ]:
+                    details['OVS_BRIDGE'] = setting['value']
+                    details['TYPE'] = "OVSPort"
+                    details['DEVICETYPE'] = "ovs"
                 else:
                     logger.log("net:InitInterfaces WARNING: ignored setting named %s"%setting[name_key])
 
@@ -155,18 +163,30 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa
             else:
                 logger.log("net:InitInterfaces WARNING: interface alias (%s) not matched to an interface"% details['ALIAS'])
             device_id -= 1
-        elif 'BRIDGE' in details and 'IFNAME' in details:
+        elif ('BRIDGE' in details or 'OVS_BRIDGE' in details) and 'IFNAME' in details:
             # The bridge inherits the mac of the first attached interface.
             ifname = details['IFNAME']
             device_id -= 1
-            logger.log('net:InitInterfaces: Bridge detected. Adding %s to devices_map' % ifname)
+            if 'BRIDGE' in details:
+                bridgeName = details['BRIDGE']
+                bridgeType = 'Bridge'
+            else:
+                bridgeName = details['OVS_BRIDGE']
+                bridgeType = 'OVSBridge'
+
+            logger.log('net:InitInterfaces: %s detected. Adding %s to devices_map' % (bridgeType, ifname))
             devices_map[ifname] = removeBridgedIfaceDetails(details)
-            bridgeName = details['BRIDGE']
 
-            logger.log('net:InitInterfaces: Adding bridge %s' % bridgeName)
+            logger.log('net:InitInterfaces: Adding %s %s' % (bridgeType, bridgeName))
             bridgeDetails = prepDetails(interface)
             bridgeDevices.append(bridgeName)
-            bridgeDetails['TYPE']   = 'Bridge'
+            bridgeDetails['TYPE'] = bridgeType
+            if bridgeType == 'OVSBridge':
+                bridgeDetails['DEVICETYPE'] = 'ovs'
+                if bridgeDetails['BOOTPROTO'] == 'dhcp':
+                    del bridgeDetails['BOOTPROTO']
+                    bridgeDetails['OVSBOOTPROTO'] = 'dhcp'
+                    bridgeDetails['OVSDHCPINTERFACES'] = ifname
             devices_map[bridgeName] = bridgeDetails
         else:
             if 'IFNAME' in details: