[BugFix][API-1448]get ip from neigh list null than get ip from dnsmasq ap0.lease
Affected branch:MR3.0-xx && GSW3.0
Affected module:wifi
Is it addected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No
Change-Id: I7091798568a803a7a14363d1f44f0516945c050d
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 0a5a4e3..e99ff0d 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -1756,6 +1756,37 @@
return ret;
}
+/*
+ *add func to get conencted STA device ip from dnsmasq ap0.lease
+ *return 0 means get ip success
+ */
+static int inner_get_ip_by_mac_lease(const char * mac, char * ip,int ip_len)
+{
+ char * p;
+ int ret;
+ char cmd[256]={0};
+ if (NULL == mac || NULL == ip)
+ return -1;
+ memset(ip, 0, ip_len);
+ sprintf(cmd, "cat /run/wg870/ap0.lease | grep \"%s\" | awk '{print $3}'", mac);
+ ret = exec_cmd(cmd, ip, ip_len);
+ if( ret == 0 )
+ {
+ p = strchr(ip, '\n');
+ if (NULL != p)
+ {
+ *p = '\0';
+ RLOGD("inner_get_ip_by_mac_lease %s function return is:%d", ip,ret);
+ return ret;
+ }else
+ {
+ ret = -1;
+ }
+ }
+ RLOGD("%s %d function return is:%d",__func__,__LINE__,ret);
+ return ret;
+
+}
static int inner_get_ip_by_mac(const char * mac, char * ip, int ip_len)
{
@@ -1771,6 +1802,9 @@
if (NULL != p)
{
*p = '\0';
+ }else
+ {
+ ret = inner_get_ip_by_mac_lease(mac,ip,ip_len);
}
RLOGD("inner_get_ip_by_mac %s\n", ip);
return ret;
@@ -2213,7 +2247,7 @@
char lynq_wifi_frequency_cmd[128]={0};
char lynq_cmd_mode[128]={0};
char lynq_cmd_slect[128]={0};
- RLOGD("enter lynq_wifi_ap_frequency_set and input frequency is:%d", lynq_wifi_frequency);
+ RLOGD("enter %s %d input frequency:%d",__func__,__LINE__,lynq_wifi_frequency);
//@do check input frequency
check = lynq_check_set_frequency(lynq_wifi_frequency);
if(check != 0)
@@ -2247,6 +2281,7 @@
DO_OK_FAIL_REQUEST(lynq_cmd_mode);
DO_OK_FAIL_REQUEST(cmd_save_config);
//@ tmp do down/up to fix 5G AP turn to 2.4G cannot be conenct
+
system("wl down");
system("wl up");
RLOGD("[%s] -- run cmd down/up --%d",__func__,__LINE__);
@@ -2678,13 +2713,10 @@
int lynq_wifi_ap_start(lynq_wifi_index_e idx)
{
- RLOGD("[lynq_wifi]----enter lynq_wifi_ap_start");
+ RLOGD("enter %s %d",__func__,__LINE__);
char LYNQ_WIFI_CMD[128]={0};
- //const char *lynq_remove_all_cmd = "REMOVE_NETWORK all";
- //const char *lynq_reconfig_cmd = "RECONFIGURE /data/wifi/wg870/wpa_supplicant.conf";
- RLOGD("enter lynq_wifi_ap_channel_get");
- CHECK_IDX(idx, CTRL_AP);
+ CHECK_IDX(idx, CTRL_AP);
CHECK_WPA_CTRL(CTRL_AP);
if (inner_get_ap_interface_name() == NULL)
@@ -2693,8 +2725,6 @@
return -1;
}
- //DO_OK_FAIL_REQUEST(lynq_remove_all_cmd);
- //DO_OK_FAIL_REQUEST(lynq_reconfig_cmd);
sprintf(LYNQ_WIFI_CMD,"SELECT_NETWORK %d",AP_NETWORK_0);
DO_OK_FAIL_REQUEST(LYNQ_WIFI_CMD);
@@ -2722,8 +2752,8 @@
}
RLOGD("[lynq_wifi_ap_start] creat APTmpWatcherThreadProc ok");
}
- RLOGD("[lynq_wifi]----end lynq_wifi_ap_start");
+ RLOGD("end %s %d",__func__,__LINE__);
return 0;
}
@@ -2734,6 +2764,7 @@
int lynq_wifi_ap_stop(lynq_wifi_index_e idx)
{
+ RLOGD("enter %s %d",__func__,__LINE__);
char LYNQ_WIFI_CMD[128]={0};
CHECK_IDX(idx, CTRL_AP);
@@ -2744,7 +2775,6 @@
DO_OK_FAIL_REQUEST(LYNQ_WIFI_CMD);
-// system("connmanctl tether wifi off");
ret = system_call_v("%s %s", start_stop_ap_script, "stop");
if (ret != 0)
@@ -2757,6 +2787,7 @@
pthread_join(g_ap_tmp_watcher_pid, NULL);
g_ap_tmp_watcher_pid = 0;
+ RLOGD("end %s %d",__func__,__LINE__);
return 0;
}
@@ -3118,10 +3149,8 @@
{
if (memcmp(ssid + 1, ap->ap_ssid, strlen(ap->ap_ssid)) == 0 && ssid[strlen(ap->ap_ssid) + 1] == '\"')
{
- RLOGD("-----curr_get ssid form config is %s",ssid);
break;
}
- RLOGD("-----countine to find dest ssid %s ---curr_get ssid from config is %s",ap->ap_ssid,ssid);
}
else
{
@@ -3135,7 +3164,6 @@
}
if (memcmp(tmp_ssid, ap->ap_ssid, ssid_len) == 0)
{
- RLOGD("curr_ssid is(from config) ---- %s ap_info ssid --->",tmp_ssid,ap->ap_ssid);
break;
}
}
@@ -3157,7 +3185,6 @@
for( index=0; index < count; index++ )
{
p = strstr(split_lines[index], "key_mgmt=");
- RLOGD("current p str ------- %s",p);
if(p != NULL)
{
p += 9;
@@ -3176,7 +3203,6 @@
}else{
curr_auth = 1;
}
- RLOGD("************curret_get_auth is %d ssid is %s",curr_auth,ap->ap_ssid);
if( curr_auth < 1 || curr_auth > 6)
{
ret = -1;
@@ -3224,7 +3250,6 @@
if (*password == '\"')
{
*password = '\0';
- RLOGD("---------password------- p:: %s",p);
ret = 0;
break;
}
@@ -3882,17 +3907,13 @@
int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
{
-// char lynq_disable_network_cmd[MAX_CMD];
-// curr_status_info curr_state;
-// ap_info_s ap_info;
+ RLOGD("enter %s %d",__func__,__LINE__);
int i=0;
char state[MAX_CMD];
-// const char * lynq_disable_sta_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 disable_net all";
CHECK_IDX(idx, CTRL_STA);
CHECK_WPA_CTRL(CTRL_STA);
-// system(lynq_disable_sta_cmd);
DO_OK_FAIL_REQUEST(cmd_disconnect);
DO_OK_FAIL_REQUEST(cmd_save_config);
@@ -3920,6 +3941,7 @@
pthread_mutex_lock(&s_global_check_mutex);
g_history_disconnect_valid_num = 0; //clean history_disconenct_list info
pthread_mutex_unlock(&s_global_check_mutex);
+ RLOGD("end %s %d",__func__,__LINE__);
return 0;
// return system("connmanctl disable wifi");
}
@@ -4290,15 +4312,18 @@
}
int lynq_unreg_ap_event_callback(void * priv) {
+ RLOGD("enter %s %d",__func__,__LINE__);
pthread_mutex_lock(&s_ap_callback_mutex);
if (g_ap_callback_priv == priv)
{
g_ap_callback_func = NULL;
g_ap_callback_priv = NULL;
pthread_mutex_unlock(&s_ap_callback_mutex);
+ RLOGD("unreg ap callback pass %s %d",__func__,__LINE__);
return 0;
}
pthread_mutex_unlock(&s_ap_callback_mutex);
+ RLOGE("unreg ap callback fail %s %d",__func__,__LINE__);
return -1;
}
@@ -4331,15 +4356,18 @@
}
int lynq_unreg_sta_event_callback(void * priv) {
+ RLOGD("enter %s %d",__func__,__LINE__);
pthread_mutex_lock(&s_sta_callback_mutex);
if (g_sta_callback_priv == priv)
{
g_sta_callback_func = NULL;
g_sta_callback_priv = NULL;
pthread_mutex_unlock(&s_sta_callback_mutex);
+ RLOGD("unreg sta callback pass %s %d",__func__,__LINE__);
return 0;
}
pthread_mutex_unlock(&s_sta_callback_mutex);
+ RLOGE("unreg sta callback fail %s %d",__func__,__LINE__);
return -1;
}