align mapping of tip.wlan.ovsdb.wifi-device.radio with tip.wlan.ovsdb.wifi-iface.default_radio

This commit is contained in:
Mike Hansen
2020-07-27 17:38:18 -04:00
parent 39fddcd912
commit 7cbfd6f163
3 changed files with 84 additions and 60 deletions

View File

@@ -39,14 +39,12 @@ OVSDB_RADIUSPROFILE_CONFIG_FILE="${OVSDB_RADIUSPROFILE_CONFIG_FILE:=/app/opensyn
OVSDB_IF_DEFAULT_BRIDGE="${OVSDB_IF_DEFAULT_BRIDGE:=br-home}"
echo $OVSDB_IF_DEFAULT_BRIDGE
OVSDB_IF_DEFAULT_RADIO_5G="${OVSDB_IF_DEFAULT_RADIO_5G:=home-ap-50}"
echo $OVSDB_IF_DEFAULT_RADIO_5G
OVSDB_IF_DEFAULT_RADIO_5GU="${OVSDB_IF_DEFAULT_RADIO_5GU:=home-ap-u50}"
echo $OVSDB_IF_DEFAULT_RADIO_5GU
OVSDB_IF_DEFAULT_RADIO_2G="${OVSDB_IF_DEFAULT_RADIO_2G:=home-ap-24}"
echo $OVSDB_IF_DEFAULT_RADIO_2G
OVSDB_IF_DEFAULT_RADIO_5GL="${OVSDB_IF_DEFAULT_RADIO_5GL:=home-ap-l50}"
echo $OVSDB_IF_DEFAULT_RADIO_5GL
OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=home-ap-24}"
echo $OVSDB_IF_DEFAULT_RADIO_0
OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=home-ap-l50}"
echo $OVSDB_IF_DEFAULT_RADIO_1
OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=home-ap-u50}"
echo $OVSDB_IF_DEFAULT_RADIO_2
OVSDB_DEVICE_DEFAULT_WAN_TYPE="${OVSDB_DEVICE_DEFAULT_WAN_NAME:=eth}"
echo $OVSDB_DEVICE_DEFAULT_WAN
OVSDB_DEVICE_DEFAULT_LAN_TYPE="${OVSDB_DEVICE_DEFAULT_LAN_TYPE:=br-lan}"
@@ -134,10 +132,9 @@ OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_D
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio5g=$OVSDB_IF_DEFAULT_RADIO_5G"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio5gu=$OVSDB_IF_DEFAULT_RADIO_5GU"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio2g=$OVSDB_IF_DEFAULT_RADIO_2G"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio5gl=$OVSDB_IF_DEFAULT_RADIO_5GL"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
echo OVSDB_PROPS $OVSDB_PROPS

View File

@@ -28,10 +28,9 @@ OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRID
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio5g=$OVSDB_IF_DEFAULT_RADIO_5G"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio5gu=$OVSDB_IF_DEFAULT_RADIO_5GU"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio2g=$OVSDB_IF_DEFAULT_RADIO_2G"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio5gl=$OVSDB_IF_DEFAULT_RADIO_5GL"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
echo OVSDB_PROPS $OVSDB_PROPS

View File

@@ -108,14 +108,20 @@ public class OvsdbDao {
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_type:eth}")
public String defaultWanInterfaceType;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio2g:home-ap-24}")
public String ifPfx2pt4GHz;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio5gl:home-ap-l50}")
public String ifPfx5GHzL;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio5gu:home-ap-u50}")
public String ifPfx5GHzU;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio5g:home-ap-50}")
public String ifPfx5GHz;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio0:home-ap-24}")
public String defaultRadio0;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio1:home-ap-l50}")
public String defaultRadio1;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio2:home-ap-u50}")
public String defaultRadio2;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio0:wifi0}")
public String radio0;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio1:wifi1}")
public String radio1;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio2:wifi2}")
public String radio2;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.max:8}")
public int maxInterfacesPerRadio;
@@ -1538,13 +1544,11 @@ public class OvsdbDao {
provisionedInterfaces, provisionedPorts, provisionedBridges);
provisionSingleBridgePortInterface(ovsdbClient, patchW2h, defaultWanInterfaceType, "patch", patchW2hOptions,
provisionedInterfaces, provisionedPorts, provisionedBridges);
provisionSingleBridgePortInterface(ovsdbClient, ifPfx5GHz, bridgeNameVifInterfaces, "vif", null,
provisionSingleBridgePortInterface(ovsdbClient, defaultRadio0, bridgeNameVifInterfaces, "vif", null,
provisionedInterfaces, provisionedPorts, provisionedBridges);
provisionSingleBridgePortInterface(ovsdbClient, ifPfx5GHzU, bridgeNameVifInterfaces, "vif", null,
provisionSingleBridgePortInterface(ovsdbClient, defaultRadio1, bridgeNameVifInterfaces, "vif", null,
provisionedInterfaces, provisionedPorts, provisionedBridges);
provisionSingleBridgePortInterface(ovsdbClient, ifPfx5GHzL, bridgeNameVifInterfaces, "vif", null,
provisionedInterfaces, provisionedPorts, provisionedBridges);
provisionSingleBridgePortInterface(ovsdbClient, ifPfx2pt4GHz, bridgeNameVifInterfaces, "vif", null,
provisionSingleBridgePortInterface(ovsdbClient, defaultRadio2, bridgeNameVifInterfaces, "vif", null,
provisionedInterfaces, provisionedPorts, provisionedBridges);
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
@@ -2430,12 +2434,50 @@ public class OvsdbDao {
// radioType);
// continue;
// }
Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = getProvisionedWifiRadioConfigs(ovsdbClient);
String freqBand = null;
String ifName = null;
String radioName = null;
for (Entry<String, WifiRadioConfigInfo> entry : provisionedRadioConfigs.entrySet()) {
if (radioType == RadioType.is2dot4GHz && entry.getValue().freqBand.equals("2.4G")) {
freqBand = "2.4G";
radioName = entry.getKey();
break;
} else if (radioType == RadioType.is5GHzL && entry.getValue().freqBand.equals("5GL")) {
freqBand = "5GL";
radioName = entry.getKey();
break;
} else if (radioType == RadioType.is5GHzU && entry.getValue().freqBand.equals("5GU")) {
freqBand = "5GU";
radioName = entry.getKey();
break;
} else if (radioType == RadioType.is5GHz && entry.getValue().freqBand.equals("5G")) {
freqBand = "5G";
radioName = entry.getKey();
break;
}
}
if (radioName == null || freqBand == null) {
LOG.debug("Cannot provision SSID with radio if_name {} and freqBand {}", radioName, freqBand);
continue;
}
if (radioName.equals(radio0)) {
ifName = defaultRadio0;
} else if (radioName.equals(radio1)) {
ifName = defaultRadio1;
} else if (radioName.equals(radio2)) {
ifName = defaultRadio2;
}
if (ifName == null) {
LOG.debug("Cannot provision SSID for radio {} freqBand {} with VIF if_name {}", radioName, freqBand,
ifName);
continue;
}
int keyRefresh = ssidConfig.getKeyRefresh();
boolean ssidBroadcast = ssidConfig.getBroadcastSsid() == StateSetting.enabled;
Map<String, String> security = new HashMap<>();
String ssidSecurityMode = ssidConfig.getSecureMode().name();
String opensyncSecurityMode = "OPEN";
String ipAssignScheme = "none";
// the following 5 attributes only applicable to static config,
@@ -2462,7 +2504,17 @@ public class OvsdbDao {
if (radioConfiguration == null) {
continue; // don't have a radio of this kind in the map
}
RadioMode radioMode = radioConfiguration.getRadioMode();
String minHwMode = "11n"; // min_hw_mode is 11ac, wifi 5, we can
// also take ++ (11ax) but 2.4GHz only
// Wifi4 --
if (!radioType.equals(RadioType.is2dot4GHz)) {
minHwMode = "11ac";
}
if (!radioType.equals(RadioType.is2dot4GHz) && radioMode.equals(RadioMode.modeX)) {
minHwMode = "11x";
}
boolean uapsdEnabled = radioConfiguration.getUapsdState() == StateSetting.enabled;
@@ -2484,15 +2536,9 @@ public class OvsdbDao {
}
}
String minHwMode = "11n"; // min_hw_mode is 11ac, wifi 5, we can
// also take ++ (11ax) but 2.4GHz only
// Wifi4 --
if (!radioType.equals(RadioType.is2dot4GHz)) {
minHwMode = "11ac";
}
if (!radioType.equals(RadioType.is2dot4GHz) && radioMode.equals(RadioMode.modeX)) {
minHwMode = "11x";
}
Map<String, String> security = new HashMap<>();
String ssidSecurityMode = ssidConfig.getSecureMode().name();
String opensyncSecurityMode = "OPEN";
if (ssidSecurityMode.equals("wpaPSK") || ssidSecurityMode.equals("wpa2PSK")
|| ssidSecurityMode.equals("wpa2OnlyPSK")) {
@@ -2502,7 +2548,6 @@ public class OvsdbDao {
} else if (ssidSecurityMode.equals("wpaEAP") || ssidSecurityMode.equals("wpa2EAP")
|| ssidSecurityMode.equals("wpa2OnlyEAP")) {
opensyncSecurityMode = "WPA-EAP";
}
security.put("encryption", opensyncSecurityMode);
@@ -2534,23 +2579,6 @@ public class OvsdbDao {
boolean enabled = ssidConfig.getSsidAdminState().equals(StateSetting.enabled);
String ifName = null;
String freqBand = null;
if (radioType == RadioType.is2dot4GHz) {
ifName = ifPfx2pt4GHz;
freqBand = "2.4G";
} else if (radioType == RadioType.is5GHzL) {
ifName = ifPfx5GHzL;
freqBand = "5GL";
} else if (radioType == RadioType.is5GHzU) {
ifName = ifPfx5GHzU;
freqBand = "5GU";
} else if (radioType == RadioType.is5GHz) {
ifName = ifPfx5GHz;
freqBand = "5G";
}
int numberOfInterfaces = 0;
for (String key : getProvisionedWifiVifConfigs(ovsdbClient).keySet()) {
if (key.startsWith(ifName)) {
@@ -3016,7 +3044,7 @@ public class OvsdbDao {
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.join();
for (OperationResult r : result) {
LOG.debug("Op Result {}", r);