WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config

This commit is contained in:
Mike Hansen
2020-12-01 10:36:28 -05:00
parent d79917d20f
commit 124b6054b5
2 changed files with 4563 additions and 4546 deletions

View File

@@ -193,40 +193,34 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
LOG.debug("Client {} connect for AP {}", clientCn, apId); LOG.debug("Client {} connect for AP {}", clientCn, apId);
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
ovsdbDao.removeAllSsids(ovsdbClient); // always
ovsdbDao.removeAllInetConfigs(ovsdbClient);
ovsdbDao.removeWifiRrm(ovsdbClient);
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId); OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
ovsdbDao.configureInterfaces(ovsdbClient);
if (opensyncAPConfig != null) { if (opensyncAPConfig != null) {
// cleanup existing
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
ovsdbDao.removeWifiRrm(ovsdbClient);
ovsdbDao.removeAllInetConfigs(ovsdbClient);
ovsdbDao.removeAllSsids(ovsdbClient); // always
// reconfigure
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureInterfaces(ovsdbClient);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
if (opensyncAPConfig.getHotspotConfig() != null) { if (opensyncAPConfig.getHotspotConfig() != null) {
ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig); ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
} }
ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig); ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
if (((ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails()).getSyntheticClientEnabled()) {
ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
}
} else {
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
ovsdbDao.removeWifiRrm(ovsdbClient);
ovsdbDao.removeAllInetConfigs(ovsdbClient);
ovsdbDao.removeAllSsids(ovsdbClient); // always
}
if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) { if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats); ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
} }
} else {
LOG.info("No Configuration available for {}", apId);
}
LOG.debug("Client connect Done"); LOG.debug("Client connect Done");
return connectNodeInfo; return connectNodeInfo;
@@ -270,17 +264,20 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
LOG.warn("AP with id " + apId + " does not have a config to apply."); LOG.warn("AP with id " + apId + " does not have a config to apply.");
return; return;
} }
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
ovsdbDao.removeAllPasspointConfigs(ovsdbClient); ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
ovsdbDao.removeWifiRrm(ovsdbClient);
ovsdbDao.removeAllInetConfigs(ovsdbClient);
ovsdbDao.removeAllSsids(ovsdbClient); // always ovsdbDao.removeAllSsids(ovsdbClient); // always
ovsdbDao.removeAllInetConfigs(ovsdbClient);
ovsdbDao.removeWifiRrm(ovsdbClient);
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureInterfaces(ovsdbClient); ovsdbDao.configureInterfaces(ovsdbClient);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig); ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
if (opensyncAPConfig.getHotspotConfig() != null) { if (opensyncAPConfig.getHotspotConfig() != null) {
ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig); ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
} }

View File

@@ -613,8 +613,9 @@ public class OvsdbDao {
/** /**
* @param ovsdbClient * @param ovsdbClient
* @return value of reporting_interval column for the stats_type=device from the * @return value of reporting_interval column for the stats_type=device from
* Wifi_Stats_Config table. If value is not provisioned then return -1. * the Wifi_Stats_Config table. If value is not provisioned then
* return -1.
*/ */
public long getDeviceStatsReportingInterval(OvsdbClient ovsdbClient) { public long getDeviceStatsReportingInterval(OvsdbClient ovsdbClient) {
long ret = -1; long ret = -1;
@@ -658,9 +659,10 @@ public class OvsdbDao {
/** /**
* @param ovsdbClient * @param ovsdbClient
* @param value of reporting_interval column for the stats_type=device * @param value
* from the Wifi_Stats_Config table. If value is not * of reporting_interval column for the stats_type=device from
* provisioned then return -1. * the Wifi_Stats_Config table. If value is not provisioned then
* return -1.
*/ */
public void updateDeviceStatsReportingInterval(OvsdbClient ovsdbClient, long newValue) { public void updateDeviceStatsReportingInterval(OvsdbClient ovsdbClient, long newValue) {
try { try {
@@ -1770,14 +1772,15 @@ public class OvsdbDao {
public void removeAllInetConfigs(OvsdbClient ovsdbClient) { public void removeAllInetConfigs(OvsdbClient ovsdbClient) {
try { try {
Collection<WifiInetConfigInfo> provisionedWifiInetConfigs = getProvisionedWifiInetConfigs(ovsdbClient).values(); Collection<WifiInetConfigInfo> provisionedWifiInetConfigs = getProvisionedWifiInetConfigs(ovsdbClient)
.values();
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
for (WifiInetConfigInfo wifiInetConfigInfo : provisionedWifiInetConfigs) { for (WifiInetConfigInfo wifiInetConfigInfo : provisionedWifiInetConfigs) {
if (wifiInetConfigInfo.vlanId > 1 || wifiInetConfigInfo.ifType.equals("vif") || wifiInetConfigInfo.ifType.equals("gre")) { if (wifiInetConfigInfo.vlanId > 1 || wifiInetConfigInfo.ifType.equals("vif")
|| wifiInetConfigInfo.ifType.equals("gre")) {
conditions = new ArrayList<>(); conditions = new ArrayList<>();
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(wifiInetConfigInfo.ifName))); conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(wifiInetConfigInfo.ifName)));
operations.add(new Delete(wifiInetConfigDbTable, conditions)); operations.add(new Delete(wifiInetConfigDbTable, conditions));
@@ -1829,37 +1832,6 @@ public class OvsdbDao {
} }
void removeInvalidInterfaceConfigurations(OvsdbClient ovsdbClient, List<String> invalidInterfaces) {
try {
List<Operation> operations = new ArrayList<>();
operations = new ArrayList<>();
for (String invalidInterface : invalidInterfaces) {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(invalidInterface)));
operations.add(new Delete(wifiInetConfigDbTable, conditions));
operations.add(new Delete(wifiVifConfigDbTable, conditions));
}
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Removed all existing vif interfaces configs from {}:", wifiInetConfigDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Error removing invalid interfaces", e);
throw new RuntimeException(e);
}
}
public void removeAllPasspointConfigs(OvsdbClient ovsdbClient) { public void removeAllPasspointConfigs(OvsdbClient ovsdbClient) {
removeAllHotspot20Config(ovsdbClient); removeAllHotspot20Config(ovsdbClient);
removeAllHotspot20OsuProviders(ovsdbClient); removeAllHotspot20OsuProviders(ovsdbClient);
@@ -2580,7 +2552,7 @@ public class OvsdbDao {
} }
} }
private void configureSingleSsid(OvsdbClient ovsdbClient, String vifInterfaceName, String ssid, private Uuid configureSingleSsid(OvsdbClient ovsdbClient, String vifInterfaceName, String ssid,
boolean ssidBroadcast, Map<String, String> security, String radioFreqBand, int vlanId, boolean rrmEnabled, boolean ssidBroadcast, Map<String, String> security, String radioFreqBand, int vlanId, boolean rrmEnabled,
boolean enable80211r, int mobilityDomain, boolean enable80211v, boolean enable80211k, String minHwMode, boolean enable80211r, int mobilityDomain, boolean enable80211v, boolean enable80211k, String minHwMode,
boolean enabled, int keyRefresh, boolean uapsdEnabled, boolean apBridge, boolean enabled, int keyRefresh, boolean uapsdEnabled, boolean apBridge,
@@ -2602,7 +2574,7 @@ public class OvsdbDao {
} }
if (vlanId > 1) { if (vlanId > 1) {
createVlanNetworkInterfaces(ovsdbClient, vlanId); // createVlanNetworkInterfaces(ovsdbClient, vlanId);
updateColumns.put("vlan_id", new Atom<>(vlanId)); updateColumns.put("vlan_id", new Atom<>(vlanId));
} else { } else {
updateColumns.put("vlan_id", new Atom<>(1)); updateColumns.put("vlan_id", new Atom<>(1));
@@ -2694,10 +2666,8 @@ public class OvsdbDao {
updateBlockList(updateColumns, macBlockList); updateBlockList(updateColumns, macBlockList);
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
operations.add(new Insert(wifiVifConfigDbTable, row)); operations.add(new Insert(wifiVifConfigDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
@@ -2713,13 +2683,45 @@ public class OvsdbDao {
if (vifConfigUuid == null) { if (vifConfigUuid == null) {
throw new IllegalStateException("Wifi_VIF_Config entry was not created successfully"); throw new IllegalStateException("Wifi_VIF_Config entry was not created successfully");
} }
updateColumns.clear();
operations.clear(); confirmVifConfigRow(ovsdbClient, vifConfigUuid);
updateVifConfigsSetForRadio(ovsdbClient, ssid, radioFreqBand, operations, updateColumns, vifConfigUuid);
LOG.info("configureSingleSsid:Provisioned SSID {} on interface {} / {}", ssid, vifInterfaceName, LOG.info("configureSingleSsid:Provisioned SSID {} on interface {} / {}", ssid, vifInterfaceName,
radioFreqBand); radioFreqBand);
return vifConfigUuid;
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
LOG.error("Error in configureSingleSsid", e);
throw new RuntimeException(e);
}
}
private void confirmVifConfigRow(OvsdbClient ovsdbClient, Uuid vifConfigUuid) {
try {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("_uuid", Function.EQUALS, new Atom<>(vifConfigUuid)));
List<Operation> operations = new ArrayList<>();
operations.add(new Select(wifiVifConfigDbTable, conditions));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof SelectResult) {
LOG.info("Select Result for confirmVifConfigRow with Uuid {} {}", vifConfigUuid,
((SelectResult) res).getRows());
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Unable to confirm creation of VifConfig row for Uuid {}", vifConfigUuid, e);
throw new RuntimeException(e);
}
}
private void configureInetVifInterface(OvsdbClient ovsdbClient, String vifInterfaceName, boolean enabled,
NetworkForwardMode networkForwardMode) {
Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient); Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
if (inetConfigs.containsKey(vifInterfaceName)) { if (inetConfigs.containsKey(vifInterfaceName)) {
@@ -2729,12 +2731,6 @@ public class OvsdbDao {
configureInetInterface(ovsdbClient, vifInterfaceName, enabled, "vif", false, configureInetInterface(ovsdbClient, vifInterfaceName, enabled, "vif", false,
(networkForwardMode == NetworkForwardMode.NAT)); (networkForwardMode == NetworkForwardMode.NAT));
} }
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
LOG.error("Error in configureSingleSsid", e);
throw new RuntimeException(e);
}
} }
private void updateBlockList(Map<String, Value> updateColumns, List<MacAddress> macBlockList) { private void updateBlockList(Map<String, Value> updateColumns, List<MacAddress> macBlockList) {
@@ -2786,9 +2782,9 @@ public class OvsdbDao {
} }
private void updateVifConfigsSetForRadio(OvsdbClient ovsdbClient, String ssid, String radioFreqBand, private void updateVifConfigsSetForRadio(OvsdbClient ovsdbClient, String ssid, String radioFreqBand,
List<Operation> operations, Map<String, Value> updateColumns, Uuid vifConfigUuid) Uuid vifConfigUuid)
throws OvsdbClientException, InterruptedException, ExecutionException, TimeoutException { throws OvsdbClientException, InterruptedException, ExecutionException, TimeoutException {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(radioFreqBand))); conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(radioFreqBand)));
@@ -3000,54 +2996,8 @@ public class OvsdbDao {
String ssidSecurityMode = ssidConfig.getSecureMode().name(); String ssidSecurityMode = ssidConfig.getSecureMode().name();
String opensyncSecurityMode = "OPEN"; String opensyncSecurityMode = "OPEN";
if (ssidSecurityMode.equals("wpaPSK") || ssidSecurityMode.equals("wpa2PSK") opensyncSecurityMode = getOpensyncSecurityMode(ssidSecurityMode, opensyncSecurityMode);
|| ssidSecurityMode.equals("wpa2OnlyPSK")) { populateSecurityMap(opensyncApConfig, ssidConfig, security, ssidSecurityMode, opensyncSecurityMode);
opensyncSecurityMode = "WPA-PSK";
} else if (ssidSecurityMode.equals("wep")) {
opensyncSecurityMode = "WEP";
} else if (ssidSecurityMode.equals("wpaEAP") || ssidSecurityMode.equals("wpa2EAP")
|| ssidSecurityMode.equals("wpa2OnlyEAP")) {
opensyncSecurityMode = "WPA-EAP";
} else if (ssidSecurityMode.equals("wpaRadius") || ssidSecurityMode.equals("wpa2OnlyRadius")
|| ssidSecurityMode.equals("wpa2Radius")) {
opensyncSecurityMode = "WPA-EAP";
}
security.put("encryption", opensyncSecurityMode);
// key and mode is N/A for OPEN security
if (!opensyncSecurityMode.equals("OPEN")) {
if (ssidSecurityMode.equals("wpa2PSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "mixed");
} else if (ssidSecurityMode.equals("wpa2OnlyPSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "2");
} else if (ssidSecurityMode.equals("wpaPSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "1");
} else if (ssidSecurityMode.equals("wpa2OnlyEAP") || ssidSecurityMode.equals("wpa2OnlyRadius")) {
security.put("mode", "2");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wpa2EAP") || ssidSecurityMode.equals("wpa2Radius")) {
security.put("mode", "mixed");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wpaEAP") || ssidSecurityMode.equals("wpaRadius")) {
security.put("mode", "1");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wep")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "1");
}
}
// TODO put into AP captive parameter // TODO put into AP captive parameter
Map<String, String> captiveMap = new HashMap<>(); Map<String, String> captiveMap = new HashMap<>();
@@ -3085,19 +3035,24 @@ public class OvsdbDao {
} else { } else {
// take the first available interface for this band // take the first available interface for this band
ifName = interfaces.get(0); ifName = interfaces.get(0);
LOG.info("Configuring new Wifi_VIF_Config for ssid {} with if_name {}", LOG.info("Configuring new Wifi_VIF_Config for ssid {} with if_name {}", ssidConfig.getSsid(),
ssidConfig.getSsid(), ifName); ifName);
} }
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, freqBand, Uuid vifConfigUuid = configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast,
ssidConfig.getVlanId() != null ? ssidConfig.getVlanId() : 1, rrmEnabled, enable80211r, security, freqBand, ssidConfig.getVlanId() != null ? ssidConfig.getVlanId() : 1, rrmEnabled,
mobilityDomain, enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled, enable80211r, mobilityDomain, enable80211v, enable80211k, minHwMode, enabled, keyRefresh,
apBridge, ssidConfig.getForwardMode(), gateway, inet, dns, ipAssignScheme, macBlockList, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), gateway, inet, dns, ipAssignScheme,
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, macBlockList, rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit,
fragThresholdBytes, dtimPeriod, captiveMap, walledGardenAllowlist, bonjourServiceMap rtsCtsThreshold, fragThresholdBytes, dtimPeriod, captiveMap, walledGardenAllowlist,
); bonjourServiceMap);
} catch (IllegalStateException e) { updateVifConfigsSetForRadio(ovsdbClient, ssidConfig.getSsid(), freqBand, vifConfigUuid);
configureInetVifInterface(ovsdbClient, ifName, enabled, ssidConfig.getForwardMode());
} catch (IllegalStateException | OvsdbClientException | InterruptedException | ExecutionException
| TimeoutException e) {
// could not provision this SSID, but still can go on // could not provision this SSID, but still can go on
LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), freqBand); LOG.warn("could not provision SSID {} on {}", ssidConfig.getSsid(), freqBand);
} }
@@ -3108,6 +3063,61 @@ public class OvsdbDao {
} }
private void populateSecurityMap(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
Map<String, String> security, String ssidSecurityMode, String opensyncSecurityMode) {
security.put("encryption", opensyncSecurityMode);
// key and mode is N/A for OPEN security
if (!opensyncSecurityMode.equals("OPEN")) {
if (ssidSecurityMode.equals("wpa2PSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "mixed");
} else if (ssidSecurityMode.equals("wpa2OnlyPSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "2");
} else if (ssidSecurityMode.equals("wpaPSK")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "1");
} else if (ssidSecurityMode.equals("wpa2OnlyEAP") || ssidSecurityMode.equals("wpa2OnlyRadius")) {
security.put("mode", "2");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wpa2EAP") || ssidSecurityMode.equals("wpa2Radius")) {
security.put("mode", "mixed");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wpaEAP") || ssidSecurityMode.equals("wpaRadius")) {
security.put("mode", "1");
getRadiusConfiguration(opensyncApConfig, ssidConfig, security);
if (ssidConfig.getRadiusAccountingServiceName() != null) {
getRadiusAccountingConfiguration(opensyncApConfig, ssidConfig, security);
}
} else if (ssidSecurityMode.equals("wep")) {
security.put("key", ssidConfig.getKeyStr());
security.put("mode", "1");
}
}
}
private String getOpensyncSecurityMode(String ssidSecurityMode, String opensyncSecurityMode) {
if (ssidSecurityMode.equals("wpaPSK") || ssidSecurityMode.equals("wpa2PSK")
|| ssidSecurityMode.equals("wpa2OnlyPSK")) {
opensyncSecurityMode = "WPA-PSK";
} else if (ssidSecurityMode.equals("wep")) {
opensyncSecurityMode = "WEP";
} else if (ssidSecurityMode.equals("wpaEAP") || ssidSecurityMode.equals("wpa2EAP")
|| ssidSecurityMode.equals("wpa2OnlyEAP")) {
opensyncSecurityMode = "WPA-EAP";
} else if (ssidSecurityMode.equals("wpaRadius") || ssidSecurityMode.equals("wpa2OnlyRadius")
|| ssidSecurityMode.equals("wpa2Radius")) {
opensyncSecurityMode = "WPA-EAP";
}
return opensyncSecurityMode;
}
public void configureHotspots(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) { public void configureHotspots(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
provisionHotspot2IconConfig(ovsdbClient, opensyncApConfig); provisionHotspot2IconConfig(ovsdbClient, opensyncApConfig);
@@ -3187,6 +3197,19 @@ public class OvsdbDao {
} }
public void createVlanNetworkInterfaces(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
Set<Integer> vlans = new HashSet<>();
for (Profile ssidProfile : opensyncApConfig.getSsidProfile()) {
Integer vlanId = ((SsidConfiguration) ssidProfile.getDetails()).getVlanId();
if (vlanId != null && vlanId > 1) {
vlans.add(vlanId);
}
}
for (Integer vlanId : vlans) {
createVlanNetworkInterfaces(ovsdbClient, vlanId);
}
}
private void createVlanNetworkInterfaces(OvsdbClient ovsdbClient, int vlanId) { private void createVlanNetworkInterfaces(OvsdbClient ovsdbClient, int vlanId) {
try { try {
@@ -4956,19 +4979,16 @@ public class OvsdbDao {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) { LOG.info("Removed rrm from {}:", wifiRrmConfigDbTable);
LOG.debug("Removed rrm from {}:", wifiRrmConfigDbTable);
for (OperationResult res : result) { for (OperationResult res : result) {
LOG.debug("Op Result {}", res); if (res instanceof UpdateResult) {
LOG.info("Delete Result {}", (UpdateResult) res);
} }
} }
LOG.info("Removed Wifi_RRM_Config"); } catch (ExecutionException | OvsdbClientException | TimeoutException | InterruptedException e) {
} catch (ExecutionException e) {
LOG.error("Error in removeRrm", e);
} catch (OvsdbClientException | TimeoutException | InterruptedException e) {
LOG.error("Error in removeRrm", e); LOG.error("Error in removeRrm", e);
throw new RuntimeException(e); throw new RuntimeException(e);
} }