private void applyWiFiAccessPoint() throws KuraException {
try {
// 1
// List all used IPs
IP4Address wifiIpAddress = (IP4Address) IPAddress.parseHostAddress("192.168.1.1");
IP4Address rangeStart = (IP4Address) IPAddress.parseHostAddress("192.168.1.5");
IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress("192.168.1.20");
IP4Address subnetMask = (IP4Address) IPAddress.parseHostAddress("255.255.255.0");
IP4Address subnet = (IP4Address) IPAddress.parseHostAddress("192.168.1.0");
short prefix = 24;
// 2
// Configure static IP for wlan0 interface
NetConfigIP4 netConfig4 = new NetConfigIP4(NetInterfaceStatus.netIPv4StatusEnabledLAN, true);
netConfig4.setDhcp(false);
netConfig4.setAddress(wifiIpAddress);
netConfig4.setSubnetMask(subnetMask);
// 3
// Configure DHCP server
DhcpServerConfigIP4 dhcpWifiServerConfigIP4 = new DhcpServerConfigIP4("wlan0", true,
subnet,
wifiIpAddress,
subnetMask,
7200, 7200,
prefix,
rangeStart,
rangeEnd,
false,
null);
// 4
// Configure WiFi Card
// WifiConfig [mode: MASTER :: ssid: MyAP :: ignoreSSID: false :: driver: nl80211 :: channels: 1, :: security: SECURITY_NONE :: passkey: :: hwMode: n :: radioMode: RADIO_MODE_80211nHT20 :: broadcast: true :: ]
WifiConfig wifiConfig = new WifiConfig();
wifiConfig.setMode(WifiMode.MASTER); // Access Point mode
wifiConfig.setSSID("MyAP");
wifiConfig.setIgnoreSSID(false);
wifiConfig.setDriver("nl80211");
wifiConfig.setChannels(new int[] {1});
wifiConfig.setSecurity(WifiSecurity.SECURITY_NONE);
wifiConfig.setHardwareMode("n");
wifiConfig.setRadioMode(WifiRadioMode.RADIO_MODE_80211g);
wifiConfig.setBroadcast(true);
wifiConfig.setPingAccessPoint(false);
// 5
// Add this configuration too, it is required but not used
// WifiConfig [mode: INFRA :: ssid: :: ignoreSSID: false :: driver: nl80211 :: channels: 1,2,3,4,5,6,7,8910111213 :: security: SECURITY_NONE :: passkey: :: hwMode: :: broadcast: false :: bgscan: ]
WifiConfig clientWifiConfig = new WifiConfig();
clientWifiConfig.setMode(WifiMode.INFRA);
clientWifiConfig.setIgnoreSSID(false);
clientWifiConfig.setDriver("nl80211");
clientWifiConfig.setChannels(new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13});
clientWifiConfig.setSecurity(WifiSecurity.SECURITY_NONE);
clientWifiConfig.setBroadcast(false);
// 6
// Add all NetConfigs to a list to be passed to NAS.
List<NetConfig> netConfigs = new ArrayList<NetConfig>();
netConfigs.add(netConfig4);
netConfigs.add(dhcpWifiServerConfigIP4);
netConfigs.add(wifiConfig);
netConfigs.add(clientWifiConfig);
// 7
// Prepare the AccessPoint
// m_networkAdminService.manageDhcpServer("wlan0", true);
m_networkAdminService.updateWifiInterfaceConfig("wlan0", true, null, netConfigs);
} catch (UnknownHostException e) {
throw KuraException.internalError(e);
}
}
]]>