diff --git a/opensync-gateway-cloud-process/src/main/resources/launchers/OpenSyncProcess (local, KDC certs) cloud.launch b/opensync-gateway-cloud-process/src/main/resources/launchers/OpenSyncProcess (local, KDC certs) cloud.launch
index 65b0ffc..2029a41 100644
--- a/opensync-gateway-cloud-process/src/main/resources/launchers/OpenSyncProcess (local, KDC certs) cloud.launch
+++ b/opensync-gateway-cloud-process/src/main/resources/launchers/OpenSyncProcess (local, KDC certs) cloud.launch
@@ -20,5 +20,5 @@
-
+
diff --git a/opensync-gateway-static-docker/src/main/docker-opensync-gateway-and-mqtt/app/run.sh b/opensync-gateway-static-docker/src/main/docker-opensync-gateway-and-mqtt/app/run.sh
index 3cc97f2..1ed5095 100755
--- a/opensync-gateway-static-docker/src/main/docker-opensync-gateway-and-mqtt/app/run.sh
+++ b/opensync-gateway-static-docker/src/main/docker-opensync-gateway-and-mqtt/app/run.sh
@@ -35,7 +35,18 @@ OVSDB_EQUIPMENT_CONFIG_FILE="${OVSDB_EQUIPMENT_CONFIG_FILE:=/app/opensync/Equipm
OVSDB_APPROFILE_CONFIG_FILE="${OVSDB_AP_PROFILE_CONFIG_FILE:=/app/opensync/ProfileAPExample.json}"
OVSDB_SSIDPROFILE_CONFIG_FILE="${OVSDB_SSIDPROFILE_CONFIG_FILE:=/app/opensync/ProfileSsid.json}"
OVSDB_LOCATION_CONFIG_FILE="${OVSDB_LOCATION_CONFIG_FILE:=/app/opensync/LocationBuildingExample.json}"
-
+OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=home-ap-u50}"
+echo $OVSDB_IF_DEFAULT_RADIO_0
+OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=home-ap-24}"
+echo $OVSDB_IF_DEFAULT_RADIO_1
+OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=home-ap-l50}"
+echo $OVSDB_IF_DEFAULT_RADIO_2
+OVSDB_DEVICE_RADIO_0="${OVSDB_DEVICE_RADIO_0:=wifi2}"
+echo $OVSDB_DEVICE_RADIO_0
+OVSDB_DEVICE_RADIO_1="${OVSDB_DEVICE_RADIO_1:=wifi0}"
+echo $OVSDB_DEVICE_RADIO_1
+OVSDB_DEVICE_RADIO_2="${OVSDB_DEVICE_RADIO_2:=wifi1}"
+echo $OVSDB_DEVICE_RADIO_2
echo Reading AP configuration from $OVSDB_CONFIG_FILE
@@ -112,6 +123,15 @@ OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQU
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
+OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
+
+echo OVSDB_PROPS $OVSDB_PROPS
+
MQTT_PROPS=" "
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.address=$MQTT_BROKER_HOST"
diff --git a/opensync-gateway-static-docker/src/main/docker/app/run.sh b/opensync-gateway-static-docker/src/main/docker/app/run.sh
index 47c527a..edfc291 100755
--- a/opensync-gateway-static-docker/src/main/docker/app/run.sh
+++ b/opensync-gateway-static-docker/src/main/docker/app/run.sh
@@ -23,6 +23,14 @@ OVSDB_PROPS+=" -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONF
OVSDB_PROPS+=" -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
+OVSDB_PROPS+="-Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
+
+echo OVSDB_PROPS $OVSDB_PROPS
MQTT_PROPS=" "
MQTT_PROPS+=" -Dconnectus.mqttBroker.address=tip-wlan-opensync-mqtt-broker"
diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java
index eab0662..1ae5186 100644
--- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java
+++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java
@@ -52,7 +52,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
@org.springframework.beans.factory.annotation.Value("${connectus.manager.collectionIntervalSec.deviceStats:10}")
private long collectionIntervalSecDeviceStats;
-
+
@Autowired
private SslContext sslContext;
@@ -98,6 +98,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
String key = clientCn + "_" + connectNodeInfo.serialNumber;
ConnectusOvsdbClient.this.ovsdbSessionMapInterface.newSession(key, ovsdbClient);
extIntegrationInterface.apConnected(key, connectNodeInfo);
+ monitorOvsdbStateTables(ovsdbClient, key);
// push configuration to AP
connectNodeInfo = processConnectRequest(ovsdbClient, clientCn, connectNodeInfo);
@@ -106,7 +107,6 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
LOG.info("ovsdbClient connectedClients = {}",
ConnectusOvsdbClient.this.ovsdbSessionMapInterface.getNumSessions());
- monitorOvsdbStateTables(ovsdbClient, key);
} catch (Exception e) {
LOG.error("ovsdbClient error", e);
@@ -191,7 +191,12 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
}
- ovsdbDao.provisionBridgePortInterface(ovsdbClient);
+ try {
+ ovsdbDao.provisionBridgePortInterface(ovsdbClient);
+ } catch (Exception e) {
+ // TODO: for some AP configurations this 'may' not be necessary.
+ LOG.warn("Could not provision Bridge->Port->Interface mapping.", e);
+ }
ovsdbDao.removeAllSsids(ovsdbClient);
@@ -200,7 +205,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
}
- ovsdbDao.configureWifiInet(ovsdbClient);
+// ovsdbDao.configureWifiInet(ovsdbClient);
LOG.debug("Client connect Done");
return connectNodeInfo;
diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/OvsdbDao.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/OvsdbDao.java
index 6b6b498..d9175d8 100644
--- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/OvsdbDao.java
+++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/dao/OvsdbDao.java
@@ -13,8 +13,6 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.checkerframework.checker.units.qual.K;
-import org.elasticsearch.common.recycler.Recycler.V;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@@ -84,6 +82,20 @@ public class OvsdbDao {
@org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.timeoutSec:30}")
private int ovsdbTimeoutSec;
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio1:home-ap-24}")
+ public String ifName2pt4GHz;
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio2:home-ap-l50}")
+ public String ifName5GHzL;
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-iface.default_radio0:home-ap-u50}")
+ public String ifName5GHzU;
+
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-device.radio0:wifi2}")
+ public String radioName5GHzU;
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-device.radio2:wifi1}")
+ public String radioName5GHzL;
+ @org.springframework.beans.factory.annotation.Value("${connectus.ovsdb.wifi-device.radio1:wifi0}")
+ public String radioName2pt4GHz;
+
public static final String ovsdbName = "Open_vSwitch";
public static final String awlanNodeDbTable = "AWLAN_Node";
public static final String wifiStatsConfigDbTable = "Wifi_Stats_Config";
@@ -679,7 +691,7 @@ public class OvsdbDao {
wifiVifConfigInfo.ssid = row.getStringColumn("ssid");
wifiVifConfigInfo.ssidBroadcast = row.getStringColumn("ssid_broadcast");
wifiVifConfigInfo.uapsdEnable = row.getBooleanColumn("uapsd_enable");
- wifiVifConfigInfo.vifRadioIdx = row.getIntegerColumn("vif_radio_idx").intValue();
+// wifiVifConfigInfo.vifRadioIdx = row.getIntegerColumn("vif_radio_idx").intValue();
wifiVifConfigInfo.security = row.getMapColumn("security");
if (row.getColumns().get("vlan_id") != null && row.getColumns().get("vlan_id").getClass()
@@ -821,6 +833,8 @@ public class OvsdbDao {
Map provisionedBridges)
throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException {
+
+ LOG.debug("InterfaceName {} BridgeName {} InterfaceType {}", interfaceName, bridgeName, interfaceType);
if (!provisionedInterfaces.containsKey(interfaceName)) {
// Create this interface and link it to the port and the bridge
List operations = new ArrayList<>();
@@ -984,9 +998,9 @@ public class OvsdbDao {
}
}
- public static final String homeAp24 = "home-ap-24";
- public static final String homeApL50 = "home-ap-l50";
- public static final String homeApU50 = "home-ap-u50";
+// public static final String homeAp24 = "home-ap-24";
+// public static final String homeApL50 = "home-ap-l50";
+// public static final String homeApU50 = "home-ap-u50";
public static final String brHome = "br-home";
public static final String brWan = "br-wan";
@@ -1017,13 +1031,11 @@ public class OvsdbDao {
provisionSingleBridgePortInterface(ovsdbClient, patchW2h, brWan, "patch", patchW2hOptions,
provisionedInterfaces, provisionedPorts, provisionedBridges);
- provisionSingleBridgePortInterface(ovsdbClient, homeApU50, brHome, null, null, provisionedInterfaces,
+ provisionSingleBridgePortInterface(ovsdbClient, ifName5GHzU, brHome, "vif", null, provisionedInterfaces,
provisionedPorts, provisionedBridges);
-
- provisionSingleBridgePortInterface(ovsdbClient, homeApL50, brHome, null, null, provisionedInterfaces,
+ provisionSingleBridgePortInterface(ovsdbClient, ifName5GHzL, brHome, "vif", null, provisionedInterfaces,
provisionedPorts, provisionedBridges);
-
- provisionSingleBridgePortInterface(ovsdbClient, homeAp24, brHome, null, null, provisionedInterfaces,
+ provisionSingleBridgePortInterface(ovsdbClient, ifName2pt4GHz, brHome, "vif", null, provisionedInterfaces,
provisionedPorts, provisionedBridges);
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
@@ -1152,27 +1164,34 @@ public class OvsdbDao {
String configName = null;
switch (radioType) {
case is2dot4GHz:
- configName = "wifi0";
+ configName = radioName2pt4GHz;
break;
case is5GHz:
+ // 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
+ // Must not be disabled (by law)
+ // NA for 2.4GHz
hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1");
- configName = "wifi1";
+ configName = radioName5GHzU;
break;
-
case is5GHzL:
+ // 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
+ // Must not be disabled (by law)
+ // NA for 2.4GHz
hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1");
- configName = "wifi1";
+ configName = radioName5GHzL;
break;
-
case is5GHzU:
+ // 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
+ // Must not be disabled (by law)
+ // NA for 2.4GHz
hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1");
- configName = "wifi2";
+ configName = radioName5GHzU;
break;
default: // don't know this interface
continue;
@@ -1691,8 +1710,9 @@ public class OvsdbDao {
public void configureSingleSsid(OvsdbClient ovsdbClient, String bridge, String ifName, String ssid,
boolean ssidBroadcast, Map security,
Map provisionedWifiRadioConfigs, String radioIfName, int vlanId,
- int vifRadioIdx, boolean rrmEnabled, String minHwMode, boolean enabled, int keyRefresh,
- boolean uapsdEnabled, boolean apBridge, NetworkForwardMode networkForwardMode, String gateway, String inet, Map dns, String ipAssignScheme) {
+ boolean rrmEnabled, String minHwMode, boolean enabled, int keyRefresh, boolean uapsdEnabled,
+ boolean apBridge, NetworkForwardMode networkForwardMode, String gateway, String inet,
+ Map dns, String ipAssignScheme) {
List operations = new ArrayList<>();
Map updateColumns = new HashMap<>();
@@ -1708,7 +1728,7 @@ public class OvsdbDao {
updateColumns.put("ssid", new Atom<>(ssid));
updateColumns.put("ssid_broadcast", new Atom<>(ssidBroadcast ? "enabled" : "disabled"));
updateColumns.put("uapsd_enable", new Atom<>(true));
- updateColumns.put("vif_radio_idx", new Atom(vifRadioIdx));
+// updateColumns.put("vif_radio_idx", new Atom(vifRadioIdx));
updateColumns.put("min_hw_mode", new Atom<>(minHwMode));
updateColumns.put("vlan_id", new Atom(vlanId));
updateColumns.put("group_rekey", new Atom(keyRefresh));
@@ -1729,6 +1749,7 @@ public class OvsdbDao {
LOG.debug("Provisioned SSID {} on {}", ssid, ifName);
Uuid vifConfigUuid = null;
+ String vifIfName = null;
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
if (res instanceof InsertResult) {
@@ -1777,12 +1798,15 @@ public class OvsdbDao {
Map inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
if (inetConfigs.containsKey(ifName))
updateWifiInetConfig(ovsdbClient, vlanId, ifName, enabled,
- (networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns,ipAssignScheme);
+ (networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns, ipAssignScheme,
+ vifConfigUuid);
else
// do nothing for now
LOG.debug("No corresponding WifiInetConfig for this Interface");
// TODO: should wait for the default config to take place
- // insertWifiInetConfigForVif(ovsdbClient, vlanId, ifName, enabled);
+ insertWifiInetConfigForVif(ovsdbClient, vlanId, ifName, enabled,
+ (networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns, ipAssignScheme,
+ vifConfigUuid);
LOG.info("Provisioned SSID {} on interface {} / {}", ssid, ifName, radioIfName);
@@ -1825,14 +1849,16 @@ public class OvsdbDao {
// ignored
String gateway = null;
String inet = null;
- Map dns = null;
+ Map dns = null;
if (apElementConfig.getStaticIP() != null) {
ipAssignScheme = "static";
inet = apElementConfig.getStaticIP().getHostAddress();
gateway = apElementConfig.getStaticIpGw().getHostAddress();
- dns = new HashMap();
- dns.put(apElementConfig.getStaticDnsIp1().getHostName(), apElementConfig.getStaticDnsIp1().getHostAddress());
- dns.put(apElementConfig.getStaticDnsIp2().getHostName(), apElementConfig.getStaticDnsIp2().getHostAddress());
+ dns = new HashMap();
+ dns.put(apElementConfig.getStaticDnsIp1().getHostName(),
+ apElementConfig.getStaticDnsIp1().getHostAddress());
+ dns.put(apElementConfig.getStaticDnsIp2().getHostName(),
+ apElementConfig.getStaticDnsIp2().getHostAddress());
} else if (apElementConfig.getGettingIP().equals(GettingIP.dhcp)
|| apElementConfig.getGettingDNS().equals(GettingDNS.dhcp)) {
ipAssignScheme = "dhcp";
@@ -1867,33 +1893,33 @@ public class OvsdbDao {
String ifName = null;
String radioIfName = null;
- int vifRadioIdx = -1;
+// int vifRadioIdx = -1;
if (radioType == RadioType.is2dot4GHz) {
- ifName = homeAp24;
- radioIfName = "wifi0";
- vifRadioIdx = 1;
+ ifName = ifName2pt4GHz;
+ radioIfName = radioName2pt4GHz;
+// vifRadioIdx = 1;
} else if (radioType == RadioType.is5GHzL) {
- ifName = homeApL50;
- radioIfName = "wifi1";
- vifRadioIdx = 2;
+ ifName = ifName5GHzL;
+ radioIfName = radioName5GHzL;
+// vifRadioIdx = 2;
} else if (radioType == RadioType.is5GHzU) {
- ifName = homeApU50;
- radioIfName = "wifi2";
- vifRadioIdx = 3;
+ ifName = ifName5GHzU;
+ radioIfName = radioName5GHzU;
+// vifRadioIdx = 3;
}
- if (vifRadioIdx == -1) {
- LOG.debug("Cannot determine vif radio idx radioType {} skipping", radioType);
- continue;
- }
+// if (vifRadioIdx == -1) {
+// LOG.debug("Cannot determine vif radio idx radioType {} skipping", radioType);
+// continue;
+// }
if (!provisionedWifiVifConfigs.containsKey(ifName + "_" + ssidConfig.getSsid())) {
try {
configureSingleSsid(ovsdbClient, bridge, ifName, ssidConfig.getSsid(), ssidBroadcast, security,
- provisionedWifiRadioConfigs, radioIfName, ssidConfig.getVlanId(), vifRadioIdx,
- rrmEnabled, minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge,
- ssidConfig.getForwardMode(), gateway, inet, dns, ipAssignScheme);
+ provisionedWifiRadioConfigs, radioIfName, ssidConfig.getVlanId(), rrmEnabled, minHwMode,
+ enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), gateway, inet,
+ dns, ipAssignScheme);
} catch (IllegalStateException e) {
// could not provision this SSID, but still can go on
@@ -1906,26 +1932,53 @@ public class OvsdbDao {
}
- private void insertWifiInetConfigForVif(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled) {
+ private void updateWifiInetConfig(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled,
+ boolean isNAT, String ifType, String gateway, String inet, Map dns, String ipAssignScheme,
+ Uuid vifConfigUuid) {
List operations = new ArrayList<>();
Map updateColumns = new HashMap<>();
+ List conditions = new ArrayList<>();
+ conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(ifName)));
try {
/// usr/plume/tools/ovsh i Wifi_Inet_Config NAT:=false enabled:=true
/// if_name:=home-ap-24 if_type:=vif ip_assign_scheme:=none
/// network:=true
-
- updateColumns.put("NAT", new Atom<>(false));
- updateColumns.put("enabled", new Atom(enabled));
+// dhcpd
updateColumns.put("if_name", new Atom(ifName));
- updateColumns.put("if_type", new Atom<>("vif"));
- updateColumns.put("ip_assign_scheme", new Atom<>("none"));
+ updateColumns.put("if_type", new Atom(ifType));
+ updateColumns.put("if_uuid", new Atom(vifConfigUuid.toString()));
+ updateColumns.put("enabled", new Atom(enabled));
+ updateColumns.put("NAT", new Atom(isNAT));
+
+// mtu // specified in interface, should take that value when implemented
+ updateColumns.put("mtu", new Atom<>(1500));
updateColumns.put("network", new Atom<>(true));
- updateColumns.put("vlan_id", new Atom(vlanId));
+
+ updateColumns.put("ip_assign_scheme", new Atom<>(ipAssignScheme));
+
+ if (ipAssignScheme.equals("static")) {
+ updateColumns.put("dns", com.vmware.ovsdb.protocol.operation.notation.Map.of(dns));
+ updateColumns.put("inet_addr", new Atom(inet));
+ updateColumns.put("gateway", new Atom(gateway));
+// netmask
+// broadcast
+ }
+ if (ipAssignScheme.equals("dhcp")) {
+ updateColumns.put("dhcp_sniff", new Atom(true));
+ } else {
+ updateColumns.put("dhcp_sniff", new Atom(false));
+ }
+
+ if (ifType.equals("vlan")) {
+ updateColumns.put("vlan_id", new Atom(vlanId));
+ } else {
+ updateColumns.put("vlan_id", new com.vmware.ovsdb.protocol.operation.notation.Set());
+ }
Row row = new Row(updateColumns);
- operations.add(new Insert(wifiInetConfigDbTable, row));
+ operations.add(new Update(wifiInetConfigDbTable, conditions, row));
CompletableFuture fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
@@ -1943,27 +1996,28 @@ public class OvsdbDao {
}
- private void updateWifiInetConfig(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled,
- boolean isNAT, String ifType, String gateway, String inet, Map dns, String ipAssignScheme) {
+ private void insertWifiInetConfigForVif(OvsdbClient ovsdbClient, int vlanId, String ifName, boolean enabled,
+ boolean isNAT, String ifType, String gateway, String inet, Map dns, String ipAssignScheme,
+ Uuid vifConfigUuid) {
List operations = new ArrayList<>();
Map updateColumns = new HashMap<>();
- List conditions = new ArrayList<>();
- conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(ifName)));
try {
/// usr/plume/tools/ovsh i Wifi_Inet_Config NAT:=false enabled:=true
/// if_name:=home-ap-24 if_type:=vif ip_assign_scheme:=none
/// network:=true
// dhcpd
+ updateColumns.put("if_name", new Atom(ifName));
updateColumns.put("if_type", new Atom(ifType));
+ updateColumns.put("if_uuid", new Atom(vifConfigUuid.toString()));
updateColumns.put("enabled", new Atom(enabled));
updateColumns.put("NAT", new Atom(isNAT));
// mtu // specified in interface, should take that value when implemented
updateColumns.put("mtu", new Atom<>(1500));
updateColumns.put("network", new Atom<>(true));
-
+
updateColumns.put("ip_assign_scheme", new Atom<>(ipAssignScheme));
if (ipAssignScheme.equals("static")) {
@@ -1978,15 +2032,15 @@ public class OvsdbDao {
} else {
updateColumns.put("dhcp_sniff", new Atom(false));
}
-
+
if (ifType.equals("vlan")) {
- updateColumns.put("vlan_id",new Atom(vlanId));
+ updateColumns.put("vlan_id", new Atom(vlanId));
} else {
- updateColumns.put("vlan_id",new com.vmware.ovsdb.protocol.operation.notation.Set());
+ updateColumns.put("vlan_id", new com.vmware.ovsdb.protocol.operation.notation.Set());
}
Row row = new Row(updateColumns);
- operations.add(new Update(wifiInetConfigDbTable, conditions, row));
+ operations.add(new Insert(wifiInetConfigDbTable, row));
CompletableFuture fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
@@ -2075,17 +2129,17 @@ public class OvsdbDao {
Map provisionedWifiInetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
LOG.debug("Existing WifiInetConfigs: {}", provisionedWifiInetConfigs.keySet());
- String ifName = homeAp24;
+ String ifName = ifName2pt4GHz;
if (!provisionedWifiInetConfigs.containsKey(ifName)) {
configureWifiInet(ovsdbClient, provisionedWifiInetConfigs, ifName);
}
- ifName = homeApL50;
+ ifName = ifName5GHzL;
if (!provisionedWifiInetConfigs.containsKey(ifName)) {
configureWifiInet(ovsdbClient, provisionedWifiInetConfigs, ifName);
}
- ifName = homeApU50;
+ ifName = ifName5GHzU;
if (!provisionedWifiInetConfigs.containsKey(ifName)) {
configureWifiInet(ovsdbClient, provisionedWifiInetConfigs, ifName);
}
@@ -2098,8 +2152,6 @@ public class OvsdbDao {
public void configureStats(OvsdbClient ovsdbClient) {
- Map provisionedWifiStatsConfigs = getProvisionedWifiStatsConfigs(ovsdbClient);
-
try {
List operations = new ArrayList<>();
Map updateColumns = new HashMap<>();
@@ -2111,15 +2163,15 @@ public class OvsdbDao {
com.vmware.ovsdb.protocol.operation.notation.Map thresholds = com.vmware.ovsdb.protocol.operation.notation.Map
.of(thresholdMap);
- provisionWifiStatsConfigDevice(provisionedWifiStatsConfigs, operations, updateColumns);
+ provisionWifiStatsConfigDevice(getProvisionedWifiStatsConfigs(ovsdbClient), operations, updateColumns);
- provisionWifiStatsConfigSurvey(provisionedWifiStatsConfigs, operations, thresholds);
+ provisionWifiStatsConfigSurvey(getProvisionedWifiStatsConfigs(ovsdbClient), operations, thresholds);
- provisionWifiStatsConfigNeighbor(provisionedWifiStatsConfigs, operations);
+ provisionWifiStatsConfigNeighbor(getProvisionedWifiStatsConfigs(ovsdbClient), operations);
- provisionWifiStatsConfigClient(provisionedWifiStatsConfigs, operations);
+ provisionWifiStatsConfigClient(getProvisionedWifiStatsConfigs(ovsdbClient), operations);
- provisionWifiStatsRssi(provisionedWifiStatsConfigs, operations);
+ provisionWifiStatsRssi(getProvisionedWifiStatsConfigs(ovsdbClient), operations);
if (!operations.isEmpty()) {
CompletableFuture fResult = ovsdbClient.transact(ovsdbName, operations);