qsap: Run clang-format

Change-Id: I8c22ae2c1b71a0a68247f75b2052e6dcdf6ac621
This commit is contained in:
Nolen Johnson
2025-06-27 00:48:11 -04:00
parent cee2ce1bd2
commit ff4dfd9cb4
3 changed files with 353 additions and 385 deletions

View File

@@ -6,28 +6,27 @@
#include <string.h>
#include <sys/socket.h>
#include <linux/wireless.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include "qsap_api.h"
extern struct Command qsap_str[];
s32 is_softap_enabled(void)
{
s32 is_softap_enabled(void) {
s32 mode = 0;
int ret;
ret = qsap_get_mode(&mode);
if (eSUCCESS != ret) {
ALOGD("Failed to get the mode of operation\n");
return eERR_UNKNOWN;
ALOGD("Failed to get the mode of operation\n");
return eERR_UNKNOWN;
}
if (mode == IW_MODE_MASTER) {
ALOGD("HOSTAPD Enabled\n");
return ENABLE;
ALOGD("HOSTAPD Enabled\n");
return ENABLE;
}
ALOGD("HOSTAPD Disabled\n");
@@ -35,17 +34,17 @@ s32 is_softap_enabled(void)
return DISABLE;
}
s32 wifi_qsap_set_tx_power(s32 tx_power)
{
#define QCSAP_IOCTL_SET_MAX_TX_POWER (SIOCIWFIRSTPRIV + 22)
s32 wifi_qsap_set_tx_power(s32 tx_power) {
#define QCSAP_IOCTL_SET_MAX_TX_POWER (SIOCIWFIRSTPRIV + 22)
s32 sock;
s32 ret = eERR_SET_TX_POWER;
s8 interface[128];
s8 *iface;
s8 interface[128];
s8* iface;
s32 len = 128;
struct iwreq wrq;
if(NULL == (iface = qsap_get_config_value(CONFIG_FILE, &qsap_str[STR_INTERFACE], interface, (u32*)&len))) {
if (NULL == (iface = qsap_get_config_value(CONFIG_FILE, &qsap_str[STR_INTERFACE], interface,
(u32*)&len))) {
ALOGE("%s :interface error \n", __func__);
return ret;
}

View File

@@ -4,164 +4,164 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <linux/wireless.h>
#include <net/if.h>
#include <netlink/genl/ctrl.h>
#include <netlink/genl/genl.h>
#include <netlink/msg.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <net/if.h>
#include <netlink/msg.h>
#include <netlink/genl/genl.h>
#include <netlink/genl/ctrl.h>
#include "nl80211_copy.h"
#include "qsap_api.h"
#define QCSAP_IOCTL_GET_CHANNEL (SIOCIWFIRSTPRIV+9)
#define QCSAP_IOCTL_GET_CHANNEL (SIOCIWFIRSTPRIV + 9)
/*
* WARNING: On updating the cmd_list, the enum esap_cmd in file
* qsap_api.h must be updates to reflect the changes
*/
static struct Command cmd_list[eCMD_LAST] = {
{ "ssid", "QualcommSoftAP" },
{ "ignore_broadcast_ssid", "0" },
{ "channel", "1" },
{ "beacon_int", "100" },
{ "dtim_period", "2" },
{ "hw_mode", "n" },
{ "auth_algs", "3" },
{ "security_mode", "0" },
{ "wep_key0", NULL },
{ "wep_key1", NULL },
{ "wep_key2", NULL },
{ "wep_key3", NULL },
{ "wep_default_key", NULL },
{ "wpa_passphrase", NULL },
{ "wpa_pairwise", NULL },
{ "rsn_pairwise", NULL },
{ "mac_address", "00deadbeef04" },
{ "reset_ap", NULL },
{ "macaddr_acl", "0" },
{ "add_to_allow_list", NULL },
{ "add_to_deny_list", NULL },
{ "remove_from_allow_list", NULL },
{ "remove_from_deny_list", NULL },
{ "allow_list", "" },
{ "deny_list", "" },
{ "commit", NULL },
{ "enable_softap", NULL },
{ "disassoc_sta", NULL },
{ "reset_to_default", NULL },
{ "protection_flag", "1" },
{ "data_rate", "0" },
{ "sta_mac_list", NULL },
{ "tx_power", "27" },
{ "sdk_version", "0.0.1.0" },
{ "wmm_enabled", "0" },
{"ssid", "QualcommSoftAP"},
{"ignore_broadcast_ssid", "0"},
{"channel", "1"},
{"beacon_int", "100"},
{"dtim_period", "2"},
{"hw_mode", "n"},
{"auth_algs", "3"},
{"security_mode", "0"},
{"wep_key0", NULL},
{"wep_key1", NULL},
{"wep_key2", NULL},
{"wep_key3", NULL},
{"wep_default_key", NULL},
{"wpa_passphrase", NULL},
{"wpa_pairwise", NULL},
{"rsn_pairwise", NULL},
{"mac_address", "00deadbeef04"},
{"reset_ap", NULL},
{"macaddr_acl", "0"},
{"add_to_allow_list", NULL},
{"add_to_deny_list", NULL},
{"remove_from_allow_list", NULL},
{"remove_from_deny_list", NULL},
{"allow_list", ""},
{"deny_list", ""},
{"commit", NULL},
{"enable_softap", NULL},
{"disassoc_sta", NULL},
{"reset_to_default", NULL},
{"protection_flag", "1"},
{"data_rate", "0"},
{"sta_mac_list", NULL},
{"tx_power", "27"},
{"sdk_version", "0.0.1.0"},
{"wmm_enabled", "0"},
/** Warning: Do not change the order of the WPS commands */
{ "wps_state", "0" },
{ "config_methods", NULL },
{ "uuid", NULL },
{ "device_name", NULL },
{ "manufacturer", NULL },
{ "model_name", NULL },
{ "model_number", NULL },
{ "serial_number", NULL },
{ "device_type", NULL },
{ "os_version", NULL },
{ "friendly_name", NULL },
{ "manufacturer_url", NULL },
{ "model_description", NULL },
{ "model_url", NULL },
{ "upc", NULL },
/************ WPS commands end *********/
/** Warning: Do not change the order of the WPS commands */
{"wps_state", "0"},
{"config_methods", NULL},
{"uuid", NULL},
{"device_name", NULL},
{"manufacturer", NULL},
{"model_name", NULL},
{"model_number", NULL},
{"serial_number", NULL},
{"device_type", NULL},
{"os_version", NULL},
{"friendly_name", NULL},
{"manufacturer_url", NULL},
{"model_description", NULL},
{"model_url", NULL},
{"upc", NULL},
/************ WPS commands end *********/
{ "fragm_threshold", NULL },
{ "rts_threshold", NULL },
{ "wpa_group_rekey", NULL },
{ "country_code", NULL },
{ "ap_isolate", NULL },
{ "ieee80211d", NULL },
{ "apstat", NULL },
{ "auto_shut_off_time", NULL },
{ "energy_detect_threshold", "128" },
{ "basic_rates", NULL },
{ "require_ht", NULL },
{ "ieee80211n", "1" },
{ "setchannelrange", NULL },
{ "autochannel", NULL },
{ "ieee80211w", NULL },
{ "wpa_key_mgmt", NULL },
{ "max_num_sta", "8" },
{ "ieee80211ac", NULL },
{ "vht_oper_chwidth", NULL },
{ "chanlist", NULL },
{ "ht_capab", NULL },
{ "ieee80211h", NULL },
{ "enable_wigig_softap", NULL },
{ "interface", NULL },
{ "ssid2", NULL },
{ "bridge", NULL },
{ "ctrl_interface", NULL },
{ "vendor_elements", NULL },
{ "assocresp_elements", NULL },
{ "acs_exclude_dfs", NULL },
{ "wowlan_triggers", "any" },
{ "accept_mac_file", NULL },
{ "deny_mac_file", NULL },
{ "owe_transition_ifname", NULL },
{ "sae_require_mfp", NULL },
{ "ieee80211ax", NULL },
{ "enable_edmg", NULL },
{ "edmg_channel", NULL },
{"fragm_threshold", NULL},
{"rts_threshold", NULL},
{"wpa_group_rekey", NULL},
{"country_code", NULL},
{"ap_isolate", NULL},
{"ieee80211d", NULL},
{"apstat", NULL},
{"auto_shut_off_time", NULL},
{"energy_detect_threshold", "128"},
{"basic_rates", NULL},
{"require_ht", NULL},
{"ieee80211n", "1"},
{"setchannelrange", NULL},
{"autochannel", NULL},
{"ieee80211w", NULL},
{"wpa_key_mgmt", NULL},
{"max_num_sta", "8"},
{"ieee80211ac", NULL},
{"vht_oper_chwidth", NULL},
{"chanlist", NULL},
{"ht_capab", NULL},
{"ieee80211h", NULL},
{"enable_wigig_softap", NULL},
{"interface", NULL},
{"ssid2", NULL},
{"bridge", NULL},
{"ctrl_interface", NULL},
{"vendor_elements", NULL},
{"assocresp_elements", NULL},
{"acs_exclude_dfs", NULL},
{"wowlan_triggers", "any"},
{"accept_mac_file", NULL},
{"deny_mac_file", NULL},
{"owe_transition_ifname", NULL},
{"sae_require_mfp", NULL},
{"ieee80211ax", NULL},
{"enable_edmg", NULL},
{"edmg_channel", NULL},
};
struct Command qsap_str[eSTR_LAST] = {
{ "wpa", NULL },
{ "accept_mac_file", NULL },
{ "deny_mac_file", NULL },
{ "gAPMacAddr", "00deadbeef04" },/** AP MAC address */
{ "gEnableApProt", "1" },/** protection flag in ini file */
{ "gFixedRate", "0" },/** Fixed rate in ini */
{ "gTxPowerCap", "27" },/** Tx power in ini */
{ "gFragmentationThreshold", "2346" },/** Fragmentation threshold in ini */
{ "RTSThreshold", "2347" },/** RTS threshold in ini */
{ "gAPCntryCode", "USI" },/** Country code in ini */
{ "gDisableIntraBssFwd", "0" },/** Intra-bss forward in ini */
{ "WmmIsEnabled", "0" },/** WMM */
{ "g11dSupportEnabled", "1" },/** 802.11d support */
{ "ieee80211n", NULL },
{ "ctrl_interface", NULL },
{ "interface", NULL },
{ "eap_server", NULL },
{ "gAPAutoShutOff", "0" },
{ "gEnablePhyAgcListenMode", "128" },
{"wpa", NULL},
{"accept_mac_file", NULL},
{"deny_mac_file", NULL},
{"gAPMacAddr", "00deadbeef04"}, /** AP MAC address */
{"gEnableApProt", "1"}, /** protection flag in ini file */
{"gFixedRate", "0"}, /** Fixed rate in ini */
{"gTxPowerCap", "27"}, /** Tx power in ini */
{"gFragmentationThreshold", "2346"}, /** Fragmentation threshold in ini */
{"RTSThreshold", "2347"}, /** RTS threshold in ini */
{"gAPCntryCode", "USI"}, /** Country code in ini */
{"gDisableIntraBssFwd", "0"}, /** Intra-bss forward in ini */
{"WmmIsEnabled", "0"}, /** WMM */
{"g11dSupportEnabled", "1"}, /** 802.11d support */
{"ieee80211n", NULL},
{"ctrl_interface", NULL},
{"interface", NULL},
{"eap_server", NULL},
{"gAPAutoShutOff", "0"},
{"gEnablePhyAgcListenMode", "128"},
};
/** configuration file path */
char *pconffile = CONFIG_FILE;
char* pconffile = CONFIG_FILE;
/**
* Get the channel being used in the soft AP.
*/
int qsap_get_operating_channel(s32 *pchan)
{
int qsap_get_operating_channel(s32* pchan) {
int sock;
struct iwreq wrq;
s8 interface[MAX_CONF_LINE_LEN];
u32 len = MAX_CONF_LINE_LEN;
s8 *pif;
s8* pif;
int ret;
if(ENABLE != is_softap_enabled()) {
if (ENABLE != is_softap_enabled()) {
goto error;
}
if(NULL == (pif = qsap_get_config_value(pconffile, &qsap_str[STR_INTERFACE], interface, &len))) {
if (NULL ==
(pif = qsap_get_config_value(pconffile, &qsap_str[STR_INTERFACE], interface, &len))) {
ALOGE("%s :interface error \n", __func__);
goto error;
}
@@ -169,7 +169,7 @@ int qsap_get_operating_channel(s32 *pchan)
interface[len] = '\0';
sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock < 0) {
if (sock < 0) {
ALOGE("%s :socket error \n", __func__);
goto error;
}
@@ -182,14 +182,14 @@ int qsap_get_operating_channel(s32 *pchan)
wrq.u.data.flags = 0;
ret = ioctl(sock, QCSAP_IOCTL_GET_CHANNEL, &wrq);
if(ret < 0) {
ALOGE("%s: ioctl failure \n",__func__);
if (ret < 0) {
ALOGE("%s: ioctl failure \n", __func__);
close(sock);
goto error;
}
ALOGE("Recv len :%d \n", wrq.u.data.length);
*pchan = *(int *)(&wrq.u.name[0]);
*pchan = *(int*)(&wrq.u.name[0]);
ALOGE("Operating channel :%d \n", *pchan);
close(sock);
return eSUCCESS;
@@ -200,20 +200,17 @@ error:
return eERR_CHAN_READ;
}
static int iftypeCallback(struct nl_msg* msg, void* arg)
{
static int iftypeCallback(struct nl_msg* msg, void* arg) {
struct nlmsghdr* ret_hdr = nlmsg_hdr(msg);
struct nlattr *tb_msg[NL80211_ATTR_MAX + 1];
struct nlattr* tb_msg[NL80211_ATTR_MAX + 1];
int* type = arg;
struct genlmsghdr *gnlh = (struct genlmsghdr*) nlmsg_data(ret_hdr);
struct genlmsghdr* gnlh = (struct genlmsghdr*)nlmsg_data(ret_hdr);
nla_parse(tb_msg, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
genlmsg_attrlen(gnlh, 0), NULL);
nla_parse(tb_msg, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL);
if (tb_msg[NL80211_ATTR_IFTYPE]) {
*type = nla_get_u32(tb_msg[NL80211_ATTR_IFTYPE]);
}
return NL_SKIP;
}
@@ -221,93 +218,87 @@ static int iftypeCallback(struct nl_msg* msg, void* arg)
/**
* Get the mode of operation.
*/
int qsap_get_mode(s32 *pmode)
{
int qsap_get_mode(s32* pmode) {
int ret = eERR_UNKNOWN;
struct nl_sock* sk = NULL;
int nl80211_id = -1;
int if_type = -1;
s8 interface[MAX_CONF_LINE_LEN];
u32 len = MAX_CONF_LINE_LEN;
s8 *pif;
s8* pif;
struct nl_msg* msg = NULL;
//get interface name
if(NULL == (pif = qsap_get_config_value(pconffile,
&qsap_str[STR_INTERFACE], interface, &len))) {
// get interface name
if (NULL ==
(pif = qsap_get_config_value(pconffile, &qsap_str[STR_INTERFACE], interface, &len))) {
ALOGD("%s :interface error \n", __func__);
goto nla_put_failure;
}
interface[len] = '\0';
//allocate socket
// allocate socket
sk = nl_socket_alloc();
//return if socket allocation fails
if(sk == NULL){
ALOGE( "socket allocation failure");
return ret;
// return if socket allocation fails
if (sk == NULL) {
ALOGE("socket allocation failure");
return ret;
}
//connect to generic netlink
// connect to generic netlink
if (genl_connect(sk)) {
ALOGE( "Netlink socket Connection failure");
ALOGE("Netlink socket Connection failure");
ret = eERR_UNKNOWN;
goto nla_put_failure;
}
//find the nl80211 driver ID
// find the nl80211 driver ID
nl80211_id = genl_ctrl_resolve(sk, "nl80211");
//attach a callback
nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM,
iftypeCallback, &if_type);
// attach a callback
nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, iftypeCallback, &if_type);
//allocate a message
// allocate a message
msg = nlmsg_alloc();
//return if message allocation fails
if(msg == NULL){
ALOGE( "message allocation failure");
goto nla_put_failure;
// return if message allocation fails
if (msg == NULL) {
ALOGE("message allocation failure");
goto nla_put_failure;
}
// setup the message
genlmsg_put(msg, 0, 0, nl80211_id, 0, 0, NL80211_CMD_GET_INTERFACE, 0);
//add message attributes
// add message attributes
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, if_nametoindex(pif));
// Send the message
ret = nl_send_auto_complete(sk, msg);
if (ret < 0 ) {
ALOGE( "nl_send_auto_complete failure");
if (ret < 0) {
ALOGE("nl_send_auto_complete failure");
ret = eERR_UNKNOWN;
goto nla_put_failure;
}
//block for message to return
// block for message to return
nl_recvmsgs_default(sk);
*pmode = if_type;
ALOGI("%s: (%s) NL80211 Get Mode = %d \n",__func__, pif, (int)*pmode);
ALOGI("%s: (%s) NL80211 Get Mode = %d \n", __func__, pif, (int)*pmode);
ret = eSUCCESS;
nla_put_failure:
if (sk)
nl_socket_free(sk);
if (msg)
nlmsg_free(msg);
if (sk) nl_socket_free(sk);
if (msg) nlmsg_free(msg);
return ret;
}
static int qsap_scnprintf(char *str, size_t size, const char *format, ...)
{
static int qsap_scnprintf(char* str, size_t size, const char* format, ...) {
va_list arg_ptr;
int ret = 0;
if (size < 1)
return 0;
if (size < 1) return 0;
va_start(arg_ptr, format);
ret = vsnprintf(str, size, format, arg_ptr);
va_end(arg_ptr);
@@ -325,18 +316,18 @@ static int qsap_scnprintf(char *str, size_t size, const char *format, ...)
* in the 'presp', is provided as the output
* @param ignore_comment [IN] if set, read the commented value also
* @return void
*/
static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen, s8 *var, s32 ignore_comment)
{
FILE *fcfg;
s8 buf[MAX_CONF_LINE_LEN];
u16 len;
s8 *val;
*/
static s32 qsap_read_cfg(s8* pfile, struct Command* pcmd, s8* presp, u32* plen, s8* var,
s32 ignore_comment) {
FILE* fcfg;
s8 buf[MAX_CONF_LINE_LEN];
u16 len;
s8* val;
/** Open the configuration file */
fcfg = fopen(pfile, "r");
if(NULL == fcfg) {
if (NULL == fcfg) {
ALOGE("%s : unable to open file \n", __func__);
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
return eERR_FILE_OPEN;
@@ -344,37 +335,34 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
/** Read the line from the configuration file */
len = strlen(pcmd->name);
while(NULL != fgets(buf, MAX_CONF_LINE_LEN, fcfg)) {
s8 *pline = buf;
while (NULL != fgets(buf, MAX_CONF_LINE_LEN, fcfg)) {
s8* pline = buf;
if (strlen(buf) == 0)
continue;
if (strlen(buf) == 0) continue;
/** Skip the commented lines */
if(buf[0] == '#') {
if (buf[0] == '#') {
if (ignore_comment) {
pline++;
}
else continue;
} else
continue;
}
/** Identify the configuration parameter in the configuration file */
if(!strncmp(pline, pcmd->name, len) && (pline[len] == '=')) {
if (!strncmp(pline, pcmd->name, len) && (pline[len] == '=')) {
int tmp_indx;
/* Delate all \r \n combinations infront of the config string */
tmp_indx = strlen(buf)-1;
while( (buf[tmp_indx] == '\r') || (buf[tmp_indx] == '\n') ) tmp_indx--;
/* Delate all \r \n combinations infront of the config string */
tmp_indx = strlen(buf) - 1;
while ((buf[tmp_indx] == '\r') || (buf[tmp_indx] == '\n')) tmp_indx--;
buf[tmp_indx+1] = '\0';
buf[tmp_indx + 1] = '\0';
if ( NULL != var ) {
if (NULL != var) {
val = strchr(pline, '=');
if(NULL == val)
break;
if (NULL == val) break;
*plen = qsap_scnprintf(presp, *plen, "%s %s%s", SUCCESS, var, val);
}
else {
} else {
*plen = qsap_scnprintf(presp, *plen, "%s %s", SUCCESS, pline);
}
fclose(fcfg);
@@ -383,12 +371,12 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
}
/** Send the default value, if we are reading from ini file */
if ( pcmd->default_value ) {
*plen = qsap_scnprintf(presp, *plen, "%s %s=%s", SUCCESS, var?var:pcmd->name, pcmd->default_value);
if (pcmd->default_value) {
*plen = qsap_scnprintf(presp, *plen, "%s %s=%s", SUCCESS, var ? var : pcmd->name,
pcmd->default_value);
fclose(fcfg);
return eSUCCESS;
}
else {
} else {
/** Configuration parameter is absent in the file */
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_FEATURE_NOT_ENABLED);
}
@@ -398,16 +386,14 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
return eERR_CONFIG_PARAM_MISSING;
}
s8 *qsap_get_config_value(s8 *pfile, struct Command *pcmd, s8 *pbuf, u32 *plen)
{
s8 *ptr = NULL;
s8* qsap_get_config_value(s8* pfile, struct Command* pcmd, s8* pbuf, u32* plen) {
s8* ptr = NULL;
if(eSUCCESS == qsap_read_cfg(pfile, pcmd, pbuf, (u32 *)plen, NULL, GET_ENABLED_ONLY)) {
if (eSUCCESS == qsap_read_cfg(pfile, pcmd, pbuf, (u32*)plen, NULL, GET_ENABLED_ONLY)) {
ptr = strchr(pbuf, '=');
if(NULL != ptr){
if (NULL != ptr) {
ptr++;
}
else {
} else {
ALOGE("Invalid entry, %s\n", pcmd->name);
}
}
@@ -415,15 +401,14 @@ s8 *qsap_get_config_value(s8 *pfile, struct Command *pcmd, s8 *pbuf, u32 *plen)
return ptr;
}
s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
{
s16 wifi_qsap_reset_to_default(s8* pcfgfile, s8* pdefault) {
FILE *fcfg, *ftmp;
char buf[MAX_CONF_LINE_LEN];
int status = eSUCCESS;
fcfg = fopen(pdefault, "r");
if(NULL == fcfg) {
if (NULL == fcfg) {
ALOGE("%s : unable to open file \n", __func__);
return eERR_FILE_OPEN;
}
@@ -431,13 +416,13 @@ s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
qsap_scnprintf(buf, sizeof(buf), "%s~", pcfgfile);
ftmp = fopen(buf, "w+");
if(NULL == ftmp) {
if (NULL == ftmp) {
ALOGE("%s : unable to open file \n", __func__);
fclose(fcfg);
return eERR_FILE_OPEN;
}
while(NULL != fgets(buf, MAX_CONF_LINE_LEN, fcfg)) {
while (NULL != fgets(buf, MAX_CONF_LINE_LEN, fcfg)) {
fprintf(ftmp, "%s", buf);
}
@@ -446,8 +431,7 @@ s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
qsap_scnprintf(buf, sizeof(buf), "%s~", pcfgfile);
if(eERR_UNKNOWN == rename(buf, pcfgfile))
status = eERR_CONF_FILE;
if (eERR_UNKNOWN == rename(buf, pcfgfile)) status = eERR_CONF_FILE;
/** Remove the temporary file. Dont care the return value */
unlink(buf);
@@ -455,32 +439,27 @@ s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
return status;
}
static int check_for_config_file_size(FILE *fp)
{
int length = 0;
static int check_for_config_file_size(FILE* fp) {
int length = 0;
if( NULL != fp )
{
fseek(fp, 0L, SEEK_END);
length = ftell(fp);
}
if (NULL != fp) {
fseek(fp, 0L, SEEK_END);
length = ftell(fp);
}
return length;
return length;
}
void check_for_configuration_files(void)
{
FILE * fp;
char *pfile;
void check_for_configuration_files(void) {
FILE* fp;
char* pfile;
/* Check if configuration files are present, if not create the default files */
/* If configuration file does not exist copy the default file */
if ( NULL == (fp = fopen(pconffile, "r")) ) {
if (NULL == (fp = fopen(pconffile, "r"))) {
wifi_qsap_reset_to_default(pconffile, DEFAULT_CONFIG_FILE_PATH);
}
else {
} else {
/* The configuration file could be of 0 byte size, replace with default */
if (check_for_config_file_size(fp) <= 0)
wifi_qsap_reset_to_default(pconffile, DEFAULT_CONFIG_FILE_PATH);
@@ -489,11 +468,9 @@ void check_for_configuration_files(void)
}
/* If Accept MAC list file does not exist, copy the default file */
if ( NULL == (fp = fopen(ACCEPT_LIST_FILE, "r")) ) {
if (NULL == (fp = fopen(ACCEPT_LIST_FILE, "r"))) {
wifi_qsap_reset_to_default(ACCEPT_LIST_FILE, DEFAULT_ACCEPT_LIST_FILE_PATH);
}
else {
} else {
/* The configuration file could be of 0 byte size, replace with default */
if (check_for_config_file_size(fp) <= 0)
wifi_qsap_reset_to_default(ACCEPT_LIST_FILE, DEFAULT_ACCEPT_LIST_FILE_PATH);
@@ -504,15 +481,12 @@ void check_for_configuration_files(void)
/* Provide read and write permissions to the owner */
pfile = ACCEPT_LIST_FILE;
if (chmod(pfile, 0660) < 0) {
ALOGE("Error changing permissions of %s to 0660: %s",
pfile, strerror(errno));
ALOGE("Error changing permissions of %s to 0660: %s", pfile, strerror(errno));
}
/* If deny MAC list file does not exist, copy the default file */
if ( NULL == (fp = fopen(DENY_LIST_FILE, "r")) ) {
if (NULL == (fp = fopen(DENY_LIST_FILE, "r"))) {
wifi_qsap_reset_to_default(DENY_LIST_FILE, DEFAULT_DENY_LIST_FILE_PATH);
}
else {
} else {
/* The configuration file could be of 0 byte size, replace with default */
if (check_for_config_file_size(fp) <= 0)
wifi_qsap_reset_to_default(DENY_LIST_FILE, DEFAULT_DENY_LIST_FILE_PATH);
@@ -523,8 +497,7 @@ void check_for_configuration_files(void)
/* Provide read and write permissions to the owner */
pfile = DENY_LIST_FILE;
if (chmod(pfile, 0660) < 0) {
ALOGE("Error changing permissions of %s to 0660: %s",
pfile, strerror(errno));
ALOGE("Error changing permissions of %s to 0660: %s", pfile, strerror(errno));
}
return;
}

View File

@@ -10,17 +10,17 @@
#define LOG_TAG "QCSDK"
#include <log/log.h>
typedef unsigned char u8;
typedef char s8;
typedef unsigned char u8;
typedef char s8;
typedef unsigned short int u16;
typedef signed short int s16;
typedef unsigned int u32;
typedef signed int s32;
typedef signed short int s16;
typedef unsigned int u32;
typedef signed int s32;
/** Success and error messages */
#define SUCCESS "success"
#define ERR_FEATURE_NOT_ENABLED "failure feature not enabled"
#define ERR_RES_UNAVAILABLE "failure resource unavailable"
#define SUCCESS "success"
#define ERR_FEATURE_NOT_ENABLED "failure feature not enabled"
#define ERR_RES_UNAVAILABLE "failure resource unavailable"
/** Error numbers used with the SDK */
enum error_val {
@@ -67,158 +67,154 @@ enum error_val {
#define DENY_LIST_FILE "/data/vendor/wifi/hostapd/hostapd.deny"
/** Maximum length of the line in the configuration file */
#define MAX_CONF_LINE_LEN (156)
#define MAX_CONF_LINE_LEN (156)
/** parameters for read config */
#define GET_ENABLED_ONLY 0
#define GET_ENABLED_ONLY 0
/**
* Command numbers, these numbers form the index into the array of
* command names stored in the 'cmd_list'.
*
* Warning: An addtion of an entry in 'esap_cmd', should be followed
* by an addition of a command name string in the 'cmd_list' array
*/
* Command numbers, these numbers form the index into the array of
* command names stored in the 'cmd_list'.
*
* Warning: An addtion of an entry in 'esap_cmd', should be followed
* by an addition of a command name string in the 'cmd_list' array
*/
typedef enum esap_cmd {
eCMD_INVALID = -1,
eCMD_SSID = 0,
eCMD_BSSID = 1,
eCMD_CHAN = 2,
eCMD_BCN_INTERVAL = 3,
eCMD_DTIM_PERIOD = 4,
eCMD_HW_MODE = 5,
eCMD_AUTH_ALGS = 6,
eCMD_SEC_MODE = 7,
eCMD_WEP_KEY0 = 8,
eCMD_WEP_KEY1 = 9,
eCMD_WEP_KEY2 = 10,
eCMD_WEP_KEY3 = 11,
eCMD_DEFAULT_KEY = 12,
eCMD_PASSPHRASE = 13,
eCMD_WPA_PAIRWISE = 14,
eCMD_RSN_PAIRWISE = 15,
eCMD_MAC_ADDR = 16,
eCMD_RESET_AP = 17,
eCMD_MAC_ACL = 18,
eCMD_ADD_TO_ALLOW = 19,
eCMD_ADD_TO_DENY = 20,
eCMD_REMOVE_FROM_ALLOW = 21,
eCMD_REMOVE_FROM_DENY = 22,
eCMD_ALLOW_LIST = 23,
eCMD_DENY_LIST = 24,
eCMD_COMMIT = 25,
eCMD_ENABLE_SOFTAP = 26,
eCMD_DISASSOC_STA = 27,
eCMD_RESET_TO_DEFAULT = 28,
eCMD_PROTECTION_FLAG = 29,
eCMD_DATA_RATES = 30,
eCMD_ASSOC_STA_MACS = 31,
eCMD_TX_POWER = 32,
eCMD_SDK_VERSION = 33,
eCMD_WMM_STATE = 34,
eCMD_INVALID = -1,
eCMD_SSID = 0,
eCMD_BSSID = 1,
eCMD_CHAN = 2,
eCMD_BCN_INTERVAL = 3,
eCMD_DTIM_PERIOD = 4,
eCMD_HW_MODE = 5,
eCMD_AUTH_ALGS = 6,
eCMD_SEC_MODE = 7,
eCMD_WEP_KEY0 = 8,
eCMD_WEP_KEY1 = 9,
eCMD_WEP_KEY2 = 10,
eCMD_WEP_KEY3 = 11,
eCMD_DEFAULT_KEY = 12,
eCMD_PASSPHRASE = 13,
eCMD_WPA_PAIRWISE = 14,
eCMD_RSN_PAIRWISE = 15,
eCMD_MAC_ADDR = 16,
eCMD_RESET_AP = 17,
eCMD_MAC_ACL = 18,
eCMD_ADD_TO_ALLOW = 19,
eCMD_ADD_TO_DENY = 20,
eCMD_REMOVE_FROM_ALLOW = 21,
eCMD_REMOVE_FROM_DENY = 22,
eCMD_ALLOW_LIST = 23,
eCMD_DENY_LIST = 24,
eCMD_COMMIT = 25,
eCMD_ENABLE_SOFTAP = 26,
eCMD_DISASSOC_STA = 27,
eCMD_RESET_TO_DEFAULT = 28,
eCMD_PROTECTION_FLAG = 29,
eCMD_DATA_RATES = 30,
eCMD_ASSOC_STA_MACS = 31,
eCMD_TX_POWER = 32,
eCMD_SDK_VERSION = 33,
eCMD_WMM_STATE = 34,
/** WARNING: The order of WPS commands should not be altered.
New commands SHOULD be added above or below this */
eCMD_WPS_STATE = 35,
eCMD_WPS_CONFIG_METHOD = 36,
eCMD_UUID = 37,
eCMD_DEVICE_NAME = 38,
eCMD_MANUFACTURER = 39,
eCMD_MODEL_NAME = 40,
eCMD_MODEL_NUMBER = 41,
eCMD_SERIAL_NUMBER = 42,
eCMD_DEVICE_TYPE = 43,
eCMD_OS_VERSION = 44,
eCMD_FRIENDLY_NAME = 45,
eCMD_MANUFACTURER_URL = 46,
eCMD_MODEL_DESC = 47,
eCMD_MODEL_URL = 48,
eCMD_UPC = 49,
eCMD_WPS_STATE = 35,
eCMD_WPS_CONFIG_METHOD = 36,
eCMD_UUID = 37,
eCMD_DEVICE_NAME = 38,
eCMD_MANUFACTURER = 39,
eCMD_MODEL_NAME = 40,
eCMD_MODEL_NUMBER = 41,
eCMD_SERIAL_NUMBER = 42,
eCMD_DEVICE_TYPE = 43,
eCMD_OS_VERSION = 44,
eCMD_FRIENDLY_NAME = 45,
eCMD_MANUFACTURER_URL = 46,
eCMD_MODEL_DESC = 47,
eCMD_MODEL_URL = 48,
eCMD_UPC = 49,
/******************************************************/
eCMD_FRAG_THRESHOLD = 50,
eCMD_RTS_THRESHOLD = 51,
eCMD_GTK_TIMEOUT = 52,
eCMD_COUNTRY_CODE = 53,
eCMD_INTRA_BSS_FORWARD = 54,
eCMD_REGULATORY_DOMAIN = 55,
eCMD_AP_STATISTICS = 56,
eCMD_AP_AUTOSHUTOFF = 57,
eCMD_FRAG_THRESHOLD = 50,
eCMD_RTS_THRESHOLD = 51,
eCMD_GTK_TIMEOUT = 52,
eCMD_COUNTRY_CODE = 53,
eCMD_INTRA_BSS_FORWARD = 54,
eCMD_REGULATORY_DOMAIN = 55,
eCMD_AP_STATISTICS = 56,
eCMD_AP_AUTOSHUTOFF = 57,
eCMD_AP_ENERGY_DETECT_TH = 58,
eCMD_BASIC_RATES = 59,
eCMD_REQUIRE_HT = 60,
eCMD_IEEE80211N = 61,
eCMD_SET_CHANNEL_RANGE = 62,
eCMD_GET_AUTO_CHANNEL = 63,
eCMD_IEEE80211W = 64,
eCMD_WPA_KEY_MGMT = 65,
eCMD_SET_MAX_CLIENTS = 66,
eCMD_IEEE80211AC = 67,
eCMD_VHT_OPER_CH_WIDTH = 68,
eCMD_ACS_CHAN_LIST = 69,
eCMD_HT_CAPAB = 70,
eCMD_IEEE80211H = 71,
eCMD_BASIC_RATES = 59,
eCMD_REQUIRE_HT = 60,
eCMD_IEEE80211N = 61,
eCMD_SET_CHANNEL_RANGE = 62,
eCMD_GET_AUTO_CHANNEL = 63,
eCMD_IEEE80211W = 64,
eCMD_WPA_KEY_MGMT = 65,
eCMD_SET_MAX_CLIENTS = 66,
eCMD_IEEE80211AC = 67,
eCMD_VHT_OPER_CH_WIDTH = 68,
eCMD_ACS_CHAN_LIST = 69,
eCMD_HT_CAPAB = 70,
eCMD_IEEE80211H = 71,
eCMD_ENABLE_WIGIG_SOFTAP = 72,
eCMD_INTERFACE = 73,
eCMD_SSID2 = 74,
eCMD_BRIDGE = 75,
eCMD_CTRL_INTERFACE = 76,
eCMD_VENDOR_ELEMENT = 77,
eCMD_ASSOCRESP_ELEMENT = 78,
eCMD_ACS_EXCLUDE_DFS = 79,
eCMD_WOWLAN_TRIGGERS = 80,
eCMD_ACCEPT_MAC_FILE = 81,
eCMD_DENY_MAC_FILE = 82,
eCMD_OWE_TRANS_IFNAME = 83,
eCMD_SAE_REQUIRE_MPF = 84,
eCMD_INTERFACE = 73,
eCMD_SSID2 = 74,
eCMD_BRIDGE = 75,
eCMD_CTRL_INTERFACE = 76,
eCMD_VENDOR_ELEMENT = 77,
eCMD_ASSOCRESP_ELEMENT = 78,
eCMD_ACS_EXCLUDE_DFS = 79,
eCMD_WOWLAN_TRIGGERS = 80,
eCMD_ACCEPT_MAC_FILE = 81,
eCMD_DENY_MAC_FILE = 82,
eCMD_OWE_TRANS_IFNAME = 83,
eCMD_SAE_REQUIRE_MPF = 84,
eCMD_IEEE80211AX = 85,
eCMD_IEEE80211AX = 85,
eCMD_ENABLE_EDMG = 86,
eCMD_EDMG_CHANNEL = 87,
eCMD_ENABLE_EDMG = 86,
eCMD_EDMG_CHANNEL = 87,
eCMD_LAST /** New command numbers should be added above this */
eCMD_LAST /** New command numbers should be added above this */
} esap_cmd_t;
/** non-commands */
typedef enum esap_str {
STR_WPA = 0,
STR_ACCEPT_MAC_FILE = 1,
STR_DENY_MAC_FILE = 2,
STR_MAC_IN_INI = 3,
STR_PROT_FLAG_IN_INI = 4,
STR_DATA_RATE_IN_INI = 5,
STR_TX_POWER_IN_INI = 6,
STR_FRAG_THRESHOLD_IN_INI = 7,
STR_RTS_THRESHOLD_IN_INI = 8,
STR_COUNTRY_CODE_IN_INI = 9,
STR_WPA = 0,
STR_ACCEPT_MAC_FILE = 1,
STR_DENY_MAC_FILE = 2,
STR_MAC_IN_INI = 3,
STR_PROT_FLAG_IN_INI = 4,
STR_DATA_RATE_IN_INI = 5,
STR_TX_POWER_IN_INI = 6,
STR_FRAG_THRESHOLD_IN_INI = 7,
STR_RTS_THRESHOLD_IN_INI = 8,
STR_COUNTRY_CODE_IN_INI = 9,
STR_INTRA_BSS_FORWARD_IN_INI = 10,
STR_WMM_IN_INI = 11,
STR_802DOT11D_IN_INI = 12,
STR_HT_80211N = 13,
STR_CTRL_INTERFACE = 14,
STR_INTERFACE = 15,
STR_EAP_SERVER = 16,
STR_AP_AUTOSHUTOFF = 17,
STR_AP_ENERGY_DETECT_TH = 18,
STR_WMM_IN_INI = 11,
STR_802DOT11D_IN_INI = 12,
STR_HT_80211N = 13,
STR_CTRL_INTERFACE = 14,
STR_INTERFACE = 15,
STR_EAP_SERVER = 16,
STR_AP_AUTOSHUTOFF = 17,
STR_AP_ENERGY_DETECT_TH = 18,
eSTR_LAST
} esap_str_t;
enum {
DISABLE = 0,
ENABLE = 1
};
enum { DISABLE = 0, ENABLE = 1 };
struct Command
{
s8 * name;
s8 * default_value;
struct Command {
s8* name;
s8* default_value;
};
/** Function declartion */
s32 is_softap_enabled(void);
s8 *qsap_get_config_value(s8 *pfile, struct Command *pcmd, s8 *pbuf, u32 *plen);
int qsap_get_mode(s32 *pmode);
s8* qsap_get_config_value(s8* pfile, struct Command* pcmd, s8* pbuf, u32* plen);
int qsap_get_mode(s32* pmode);
#endif