Take allowed_channels list from Wifi_Radio_State, Retrieval additional attributes from base AP configs, add customer service support and default customer id

This commit is contained in:
Mike Hansen
2020-06-01 17:40:50 -04:00
parent 9b0dcd73f5
commit e01b880e59
9 changed files with 112 additions and 38 deletions

View File

@@ -33,6 +33,7 @@ import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.equipment.SecurityType;
import com.telecominfraproject.wlan.customer.models.Customer;
import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
@@ -245,6 +246,15 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
ce = equipmentServiceInterface.update(ce);
}
Customer customer = customerServiceInterface.getOrNull(ce.getCustomerId());
if (customer == null) {
customer = new Customer();
customer.setId(autoProvisionedCustomerId);
customerServiceInterface.create(customer);
ce.setCustomerId(customer.getId());
equipmentServiceInterface.update(ce);
}
updateApStatus(ce, connectNodeInfo);
// register equipment routing record
@@ -541,10 +551,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
LOG.debug("Config content : Equipment {}", ret.getCustomerEquipment().toPrettyString());
LOG.debug("Config content : APProfile {}", ret.getApProfile().toPrettyString());
ret.getSsidProfile().stream().forEach(ssid -> LOG.debug("Config content : SSIDProfile {}", ssid.toPrettyString()));
LOG.debug("Config content : Location {}", ret.getEquipmentLocation().toPrettyString());
ret.getSsidProfile().stream()
.forEach(ssid -> LOG.debug("Config content : SSIDProfile {}", ssid.toPrettyString()));
LOG.debug("Config content : Location {}", ret.getEquipmentLocation().toPrettyString());
return ret;
}
@@ -868,7 +878,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
// we'll report each device as having a single (very long)
// session
cMetrics.setSessionId(smr.getClientMac());
// populate Rx stats
if (cl.getStats().hasRxBytes()) {
cMetrics.setRxBytes(cl.getStats().getRxBytes());
@@ -1437,7 +1447,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
if (radioStateTables == null || radioStateTables.isEmpty() || apId == null)
return;
// add to RadioStates States Map
OpensyncNode osNode = null;
synchronized (opensyncNodeMap) {
@@ -1447,6 +1457,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
for (OpensyncAPRadioState radioState : radioStateTables) {
if (radioState.isEnabled())
osNode.updateRadioState(radioState);
LOG.debug("RadioState {}", radioState.toPrettyString());
}
opensyncNodeMap.put(apId, osNode);
} else {
@@ -1454,6 +1465,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
for (OpensyncAPRadioState radioState : radioStateTables) {
if (radioState.isEnabled())
osNode.updateRadioState(radioState);
LOG.debug("RadioState {}", radioState.toPrettyString());
}
opensyncNodeMap.put(apId, osNode);

View File

@@ -22,6 +22,11 @@
<artifactId>tip-wlan-opensync-protobuf</artifactId>
<version>${tip-wlan-cloud.release.version}</version>
</dependency>
<dependency>
<artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
</dependency>
<dependency>
<artifactId>equipment-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>

View File

@@ -3,9 +3,8 @@
*/
package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.Set;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
@@ -25,7 +24,7 @@ public class OpensyncAPRadioState extends BaseJsonModel {
public String mac;
public int bcnInt;
public int thermalTxChainmask;
public int[] allowedChannels;
public Set<Integer> allowedChannels;
public int thermalShutdown;
public int channelSync;
public int hwType;
@@ -104,11 +103,11 @@ public class OpensyncAPRadioState extends BaseJsonModel {
this.thermalTxChainmask = thermalTxChainmask;
}
public int[] getAllowedChannels() {
public Set<Integer> getAllowedChannels() {
return allowedChannels;
}
public void setAllowedChannels(int[] allowedChannels) {
public void setAllowedChannels(Set<Integer> allowedChannels) {
this.allowedChannels = allowedChannels;
}

View File

@@ -20,5 +20,5 @@
<listAttribute key="org.eclipse.jdt.launching.MODULEPATH"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="opensync-gateway-cloud-process"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED&#10;&#10;-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties&#10;-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json&#10;&#10;-Djavax.net.ssl.keyStore=${connectus_certs}/client_keystore.jks&#10;-Djavax.net.ssl.keyStorePassword=mypassword&#10;-Djavax.net.ssl.trustStore=${connectus_certs}/truststore.jks&#10;-Djavax.net.ssl.trustStorePassword=mypassword&#10;&#10;-Dconnectus.ovsdb.managerAddr=${local_server_address}&#10;-Dconnectus.ovsdb.listenPort=6640&#10;-Dconnectus.ovsdb.redirector.listenPort=6643&#10;-Dconnectus.ovsdb.timeoutSec=30&#10;-Dconnectus.ovsdb.trustStore=${connectus_certs}/truststore.jks&#10;-Dconnectus.ovsdb.keyStore=${connectus_certs}/server.pkcs12&#10;&#10;-Dconnectus.mqttBroker.address=${local_server_address}&#10;-Dconnectus.mqttBroker.listenPort=1883&#10;-Dtip.wlan.introspectTokenApi.host=localhost:9096&#10;-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder&#10;-Dtip.wlan.serviceUser=user&#10;-Dtip.wlan.servicePassword=password&#10;&#10;-Dconnectus.ovsdb.wifi-iface.default_radio1=home-ap-24&#10;-Dconnectus.ovsdb.wifi-iface.default_radio2=home-ap-l50&#10;-Dconnectus.ovsdb.wifi-iface.default_radio0=default_radio0&#9;&#10;-Dconnectus.ovsdb.wifi-device.radio0=wifi2&#10;-Dconnectus.ovsdb.wifi-device.radio1=wifi0&#10;-Dconnectus.ovsdb.wifi-device.radio2=wifi1&#10;&#10;-Dspring.main.show-banner=false&#10;-Dserver.port=9096&#10;&#10;-Dtip.wlan.secondaryPort=9097&#10;&#10;-Dtip.wlan.csrf-enabled=false&#10;-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED&#10;&#10;-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties&#10;-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json&#10;&#10;-Djavax.net.ssl.keyStore=${connectus_certs}/client_keystore.jks&#10;-Djavax.net.ssl.keyStorePassword=mypassword&#10;-Djavax.net.ssl.trustStore=${connectus_certs}/truststore.jks&#10;-Djavax.net.ssl.trustStorePassword=mypassword&#10;&#10;-Dconnectus.ovsdb.managerAddr=${local_server_address}&#10;-Dconnectus.ovsdb.listenPort=6640&#10;-Dconnectus.ovsdb.redirector.listenPort=6643&#10;-Dconnectus.ovsdb.timeoutSec=30&#10;-Dconnectus.ovsdb.trustStore=${connectus_certs}/truststore.jks&#10;-Dconnectus.ovsdb.keyStore=${connectus_certs}/server.pkcs12&#10;&#10;-Dconnectus.mqttBroker.address=${local_server_address}&#10;-Dconnectus.mqttBroker.listenPort=1883&#10;-Dtip.wlan.introspectTokenApi.host=localhost:9096&#10;-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder&#10;-Dtip.wlan.serviceUser=user&#10;-Dtip.wlan.servicePassword=password&#10;-Dconnectus.ovsdb.autoProvisionedCustomerId=2&#10;-Dconnectus.ovsdb.autoProvisionedSsid=Connectus-cloud&#10;-Dconnectus.ovsdb.wifi-iface.default_radio1=home-ap-24&#10;-Dconnectus.ovsdb.wifi-iface.default_radio2=home-ap-l50&#10;-Dconnectus.ovsdb.wifi-iface.default_radio0=home-ap-u50&#9;&#10;-Dconnectus.ovsdb.wifi-device.radio0=wifi2&#10;-Dconnectus.ovsdb.wifi-device.radio1=wifi0&#10;-Dconnectus.ovsdb.wifi-device.radio2=wifi1&#10;&#10;-Dspring.main.show-banner=false&#10;-Dserver.port=9096&#10;&#10;-Dtip.wlan.secondaryPort=9097&#10;&#10;-Dtip.wlan.csrf-enabled=false&#10;-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
</launchConfiguration>

View File

@@ -256,7 +256,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
CompletableFuture<TableUpdates> rsCf = ovsdbClient
.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiRadioStateDbTable + "_" + key,
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable,
new MonitorRequest(new MonitorSelect(true, true, false, true)))),
new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorCallback() {
@Override
@@ -273,7 +273,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
CompletableFuture<TableUpdates> isCf = ovsdbClient
.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key,
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable,
new MonitorRequest(new MonitorSelect(true, true, false, true)))),
new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorCallback() {
@Override
@@ -383,7 +383,7 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
CompletableFuture<TableUpdates> awCf = ovsdbClient
.monitor(OvsdbDao.ovsdbName, OvsdbDao.awlanNodeDbTable + "_" + key,
new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable,
new MonitorRequest(new MonitorSelect(true, false, false, true)))),
new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorCallback() {
@Override

View File

@@ -424,6 +424,13 @@ public class OvsdbDao {
}
public <T> Set<T> getSet(Row row, String columnName) {
Set<T> set = (row != null) ? row.getSetColumn(columnName) : null;
return set;
}
public <T> T getSingleValueFromSet(Row row, String columnName) {
Set<T> set = (row != null) ? row.getSetColumn(columnName) : null;
@@ -588,7 +595,7 @@ public class OvsdbDao {
columns.add("_uuid");
columns.add("if_name");
columns.add("bcn_int");
columns.add("channel");
columns.add("channel_mode");
columns.add("country");
@@ -598,6 +605,7 @@ public class OvsdbDao {
columns.add("vif_configs");
columns.add("freq_band");
columns.add("hw_config");
columns.add("hw_type");
try {
LOG.debug("Retrieving WifiRadioConfig:");
@@ -615,6 +623,10 @@ public class OvsdbDao {
WifiRadioConfigInfo wifiRadioConfigInfo = new WifiRadioConfigInfo();
wifiRadioConfigInfo.uuid = row.getUuidColumn("_uuid");
wifiRadioConfigInfo.ifName = row.getStringColumn("if_name");
Long beaconTmp = getSingleValueFromSet(row, "bcn_int");
if (beaconTmp == null)
beaconTmp = 0L;
wifiRadioConfigInfo.beaconInterval = beaconTmp.intValue();
Long channelTmp = getSingleValueFromSet(row, "channel");
if (channelTmp == null) {
channelTmp = -1L;
@@ -629,7 +641,7 @@ public class OvsdbDao {
wifiRadioConfigInfo.vifConfigUuids = row.getSetColumn("vif_configs");
wifiRadioConfigInfo.freqBand = row.getStringColumn("freq_band");
wifiRadioConfigInfo.hwConfig = row.getMapColumn("hw_config");
wifiRadioConfigInfo.hwType = row.getStringColumn("hw_type");
ret.put(wifiRadioConfigInfo.ifName, wifiRadioConfigInfo);
}
@@ -650,12 +662,14 @@ public class OvsdbDao {
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
columns.add("bridge");
columns.add("ap_bridge");
columns.add("_uuid");
columns.add("btm");
columns.add("enabled");
columns.add("ft_psk");
columns.add("group_rekey");
columns.add("if_name");
columns.add("min_hw_mode");
columns.add("mode");
columns.add("rrm");
columns.add("ssid");
@@ -680,18 +694,23 @@ public class OvsdbDao {
WifiVifConfigInfo wifiVifConfigInfo = new WifiVifConfigInfo();
wifiVifConfigInfo.bridge = row.getStringColumn("bridge");
wifiVifConfigInfo.apBridge = row.getBooleanColumn("ap_bridge");
wifiVifConfigInfo.uuid = row.getUuidColumn("_uuid");
wifiVifConfigInfo.btm = row.getIntegerColumn("btm").intValue();
wifiVifConfigInfo.enabled = row.getBooleanColumn("enabled");
wifiVifConfigInfo.ftPsk = row.getIntegerColumn("ft_psk").intValue();
wifiVifConfigInfo.groupRekey = row.getIntegerColumn("group_rekey").intValue();
wifiVifConfigInfo.minHwMode = row.getStringColumn("min_hw_mode");
wifiVifConfigInfo.ifName = row.getStringColumn("if_name");
wifiVifConfigInfo.mode = row.getStringColumn("mode");
wifiVifConfigInfo.rrm = row.getIntegerColumn("rrm").intValue();
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();
Long radioIdxTmp = getSingleValueFromSet(row, "vif_radio_idx");
if (radioIdxTmp == null)
radioIdxTmp = 0L;
wifiVifConfigInfo.vifRadioIdx = radioIdxTmp.intValue();
wifiVifConfigInfo.security = row.getMapColumn("security");
if (row.getColumns().get("vlan_id") != null && row.getColumns().get("vlan_id").getClass()
@@ -719,11 +738,15 @@ public class OvsdbDao {
List<String> columns = new ArrayList<>();
columns.add("NAT");
columns.add("_uuid");
columns.add("broadcast");
columns.add("enabled");
columns.add("if_name");
columns.add("if_type");
columns.add("ip_assign_scheme");
columns.add("network");
columns.add("inet_addr");
columns.add("mtu");
columns.add("netmask");
columns.add("vlan_id");
try {
@@ -744,11 +767,27 @@ public class OvsdbDao {
wifiInetConfigInfo.nat = natTmp != null ? natTmp : false;
wifiInetConfigInfo.uuid = row.getUuidColumn("_uuid");
if (row.getColumns().get("broadcast") != null && row.getColumns().get("broadcast").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
wifiInetConfigInfo.broadcast = row.getStringColumn("broadcast");
}
wifiInetConfigInfo.enabled = row.getBooleanColumn("enabled");
wifiInetConfigInfo.ifName = row.getStringColumn("if_name");
wifiInetConfigInfo.ifType = row.getStringColumn("if_type");
wifiInetConfigInfo.ipAssignScheme = row.getStringColumn("ip_assign_scheme");
wifiInetConfigInfo.network = row.getBooleanColumn("network");
if (row.getColumns().get("inet_addr") != null && row.getColumns().get("inet_addr").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
wifiInetConfigInfo.inetAddr = (row.getStringColumn("inet_addr"));
}
if (row.getColumns().get("mtu") != null && row.getColumns().get("mtu").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
wifiInetConfigInfo.mtu = (row.getIntegerColumn("mtu").intValue());
}
if (row.getColumns().get("netmask") != null && row.getColumns().get("netmask").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
wifiInetConfigInfo.netmask = (row.getStringColumn("netmask"));
}
if (row.getColumns().get("vlan_id") != null && row.getColumns().get("vlan_id").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
wifiInetConfigInfo.vlanId = (row.getIntegerColumn("vlan_id").intValue());
@@ -833,7 +872,6 @@ public class OvsdbDao {
Map<String, BridgeInfo> 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
@@ -1167,8 +1205,9 @@ public class OvsdbDao {
configName = radioName2pt4GHz;
break;
case is5GHz:
// 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
// Must not be disabled (by law)
// 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");
@@ -1176,8 +1215,9 @@ public class OvsdbDao {
configName = radioName5GHzU;
break;
case is5GHzL:
// 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
// Must not be disabled (by law)
// 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");
@@ -1185,8 +1225,9 @@ public class OvsdbDao {
configName = radioName5GHzL;
break;
case is5GHzU:
// 802.11h dfs (Dynamic Frequency Selection) aka military and weather radar avoidance protocol
// Must not be disabled (by law)
// 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");
@@ -1290,6 +1331,16 @@ public class OvsdbDao {
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
tableState.setVersion(row.getUuidColumn("_uuid"));
}
if (map.get("allowed_channels") != null) {
Set<Long> allowedChannels = getSet(row, "allowed_channels");
Set<Integer> allowed = new HashSet<Integer>();
for (Long channel : allowedChannels) {
allowed.add(channel.intValue());
}
tableState.setAllowedChannels(allowed);
}
ret.add(tableState);
}
@@ -1749,7 +1800,6 @@ 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) {
@@ -1796,17 +1846,16 @@ public class OvsdbDao {
}
}
Map<String, WifiInetConfigInfo> inetConfigs = getProvisionedWifiInetConfigs(ovsdbClient);
if (inetConfigs.containsKey(ifName))
if (inetConfigs.containsKey(ifName)) {
updateWifiInetConfig(ovsdbClient, vlanId, ifName, enabled,
(networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns, ipAssignScheme,
vifConfigUuid);
else
// do nothing for now
} else {
LOG.debug("No corresponding WifiInetConfig for this Interface");
// TODO: should wait for the default config to take place
insertWifiInetConfigForVif(ovsdbClient, vlanId, ifName, enabled,
(networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns, ipAssignScheme,
vifConfigUuid);
insertWifiInetConfigForVif(ovsdbClient, vlanId, ifName, enabled,
(networkForwardMode == NetworkForwardMode.NAT), "vif", gateway, inet, dns, ipAssignScheme,
vifConfigUuid);
}
LOG.info("Provisioned SSID {} on interface {} / {}", ssid, ifName, radioIfName);

View File

@@ -13,6 +13,10 @@ public class WifiInetConfigInfo implements Cloneable{
public Uuid uuid;
public int vlanId;
public String broadcast;
public String inetAddr;
public int mtu;
public String netmask;
@Override
public WifiInetConfigInfo clone() {
@@ -27,8 +31,8 @@ public class WifiInetConfigInfo implements Cloneable{
@Override
public String toString() {
return String.format(
"WifiInetConfigInfo [nat=%s, enabled=%s, ifName=%s, ifType=%s, ipAssignScheme=%s, network=%s, uuid=%s, vlanId=%s]",
nat, enabled, ifName, ifType, ipAssignScheme, network, uuid, vlanId);
"WifiInetConfigInfo [nat=%s, broadcast=%s, enabled=%s, ifName=%s, ifType=%s, ipAssignScheme=%s, network=%s, uuid=%s, inetAddr=%s, mtu=%s, netmask=%s, vlanId=%s]",
nat, broadcast, enabled, ifName, ifType, ipAssignScheme, network, uuid,inetAddr, mtu, netmask, vlanId);
}
}

View File

@@ -24,6 +24,8 @@ public class WifiRadioConfigInfo implements Cloneable {
public String ifName;
public Uuid uuid;
public String hwType;
@Override
public WifiRadioConfigInfo clone() {
try {
@@ -44,8 +46,8 @@ public class WifiRadioConfigInfo implements Cloneable {
@Override
public String toString() {
return String.format(
"WifiRadioConfigInfo [vifConfigUuids=%s, freqBand=%s, channel=%s, txPower=%s, channelMode=%s, enabled=%s, htMode=%s, hwConfig=%s, country=%s, bcn_int=%s, ifName=%s, uuid=%s]",
vifConfigUuids, freqBand, channel, txPower, channelMode, enabled, htMode, hwConfig, country,
"WifiRadioConfigInfo [vifConfigUuids=%s, freqBand=%s, channel=%s, txPower=%s, channelMode=%s, enabled=%s, htMode=%s, hwConfig=%s, hwType=%s, country=%s, bcn_int=%s, ifName=%s, uuid=%s]",
vifConfigUuids, freqBand, channel, txPower, channelMode, enabled, htMode, hwConfig, hwType,country,
beaconInterval, ifName, uuid);
}

View File

@@ -23,6 +23,8 @@ public class WifiVifConfigInfo implements Cloneable{
public Uuid uuid;
public int vlanId;
public Boolean apBridge;
public String minHwMode;
@Override
public WifiVifConfigInfo clone() {
@@ -41,8 +43,8 @@ public class WifiVifConfigInfo implements Cloneable{
@Override
public String toString() {
return String.format(
"WifiVifConfigInfo [bridge=%s, btm=%s, enabled=%s, ftPsk=%s, groupRekey=%s, ifName=%s, mode=%s, rrm=%s, ssid=%s, ssidBroadcast=%s, uapsdEnable=%s, vifRadioIdx=%s, security=%s, uuid=%s, vlanId=%s]",
bridge, btm, enabled, ftPsk, groupRekey, ifName, mode, rrm, ssid, ssidBroadcast, uapsdEnable,
"WifiVifConfigInfo [bridge=%s, ap_bridge=%s, btm=%s, enabled=%s, ftPsk=%s, groupRekey=%s, ifName=%s, minHwMode=%s, mode=%s, rrm=%s, ssid=%s, ssidBroadcast=%s, uapsdEnable=%s, vifRadioIdx=%s, security=%s, uuid=%s, vlanId=%s]",
bridge, apBridge, btm, enabled, ftPsk, groupRekey, ifName, minHwMode, mode, rrm, ssid, ssidBroadcast, uapsdEnable,
vifRadioIdx, security, uuid,vlanId);
}