INT Set_WfdLocalIp_Proc( IN PRTMP_ADAPTER pAd, IN PSTRING arg) { PRT_WFD_CONFIG pWFDCtrl = &pAd->StaCfg.WfdCfg; UINT32 ip_addr; rtinet_aton(arg, &ip_addr); printk("IP = %04x\n", ip_addr); pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[0] = WFD_LOCAL_IP_ADDR_VERSION_IPV4; RTMPMoveMemory(&pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[1], &ip_addr, sizeof(UINT32)); DBGPRINT(RT_DEBUG_TRACE, ("%s:: local IP Address = %d.%d.%d.%d\n", __FUNCTION__, pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[1], pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[2], pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[3], pWFDCtrl->wfd_serv_disc_query_info.wfd_local_ip_ie[4])); return TRUE; }
/* ======================================================================== Routine Description: In kernel mode read parameters from file Arguments: src the location of the file. dest put the parameters to the destination. Length size to read. Return Value: None Note: ======================================================================== */ void rtmp_read_wapi_parms_from_file( IN PRTMP_ADAPTER pAd, RTMP_STRING *tmpbuf, RTMP_STRING *buffer) { UINT32 ip_addr; #ifdef CONFIG_AP_SUPPORT INT apidx = 0; #endif /* CONFIG_AP_SUPPORT */ RTMP_STRING tok_str[32]; INT idx; PCOMMON_WAPI_INFO pInfo = &pAd->CommonCfg.comm_wapi_info; /* wapi interface name */ if (RTMPGetKeyParameter("Wapiifname", tmpbuf, 32, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->wapi_ifname, tmpbuf, strlen(tmpbuf)); pInfo->wapi_ifname_len = strlen(tmpbuf); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("Wapiifname=%s, len=%d\n", pInfo->wapi_ifname, pInfo->wapi_ifname_len)); } } /* WapiAsCertPath */ if (RTMPGetKeyParameter("WapiAsCertPath", tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->as_cert_path[0], tmpbuf, strlen(tmpbuf)); pInfo->as_cert_path_len[0] = strlen(tmpbuf); pInfo->as_cert_no = 1; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiAsCertPath=%s, len=%d\n", pInfo->as_cert_path[0], pInfo->as_cert_path_len[0])); } } /* WapiAsCertPath2 ~ WapiAsCertPath10 */ for (idx = 1; idx < MAX_ID_NO; idx++) { sprintf(tok_str, "WapiAsCertPath%d", idx + 1); if (RTMPGetKeyParameter(tok_str, tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->as_cert_path[idx], tmpbuf, strlen(tmpbuf)); pInfo->as_cert_path_len[idx] = strlen(tmpbuf); pInfo->as_cert_no++; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiAsCertPath%d=%s, len=%d\n", idx+1, pInfo->as_cert_path[idx], pInfo->as_cert_path_len[idx])); } } } /* WapiCaCertPath */ if (RTMPGetKeyParameter("WapiCaCertPath", tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->ca_cert_path, tmpbuf, strlen(tmpbuf)); pInfo->ca_cert_path_len = strlen(tmpbuf); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiCaCertPath=%s, len=%d\n", pInfo->ca_cert_path, pInfo->ca_cert_path_len)); } } /* WapiUserCertPath */ if (RTMPGetKeyParameter("WapiUserCertPath", tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->user_cert_path, tmpbuf, strlen(tmpbuf)); pInfo->user_cert_path_len = strlen(tmpbuf); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiUserCertPath=%s, len=%d\n", pInfo->user_cert_path, pInfo->user_cert_path_len)); } } /* WapiAsIpAddr */ if (RTMPGetKeyParameter("WapiAsIpAddr", tmpbuf, 32, buffer, TRUE)) { if (rtinet_aton(tmpbuf, &ip_addr)) { pInfo->wapi_as_ip = ip_addr; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiAsIpAddr=%s(%x)\n", tmpbuf, pInfo->wapi_as_ip)); } } /* WapiAsPort */ if (RTMPGetKeyParameter("WapiAsPort", tmpbuf, 32, buffer, TRUE)) { pInfo->wapi_as_port = simple_strtol(tmpbuf, 0, 10); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiAsPort=%d\n", pInfo->wapi_as_port)); } /* WapiUskRekeyMethod */ if (RTMPGetKeyParameter("WapiUskRekeyMethod", tmpbuf, 32, buffer, TRUE)) { if ((strcmp(tmpbuf, "TIME") == 0) || (strcmp(tmpbuf, "time") == 0)) pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_TIME; else if ((strcmp(tmpbuf, "PKT") == 0) || (strcmp(tmpbuf, "pkt") == 0)) pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_PKT; else pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_DISABLE; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiUskRekeyMethod=%d\n", pAd->CommonCfg.wapi_usk_rekey_method)); } /* WapiUskRekeyThreshold */ if (RTMPGetKeyParameter("WapiUskRekeyThreshold", tmpbuf, 32, buffer, TRUE)) { pAd->CommonCfg.wapi_usk_rekey_threshold = simple_strtol(tmpbuf, 0, 10); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiUskRekeyThreshold=%d\n", pAd->CommonCfg.wapi_usk_rekey_threshold)); } /* WapiMskRekeyMethod */ if (RTMPGetKeyParameter("WapiMskRekeyMethod", tmpbuf, 32, buffer, TRUE)) { if ((strcmp(tmpbuf, "TIME") == 0) || (strcmp(tmpbuf, "time") == 0)) pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_TIME; else if ((strcmp(tmpbuf, "PKT") == 0) || (strcmp(tmpbuf, "pkt") == 0)) pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_PKT; else pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_DISABLE; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiMskRekeyMethod=%d\n", pAd->CommonCfg.wapi_msk_rekey_method)); } /* WapiMskRekeyThreshold */ if (RTMPGetKeyParameter("WapiMskRekeyThreshold", tmpbuf, 32, buffer, TRUE)) { pAd->CommonCfg.wapi_msk_rekey_threshold = simple_strtol(tmpbuf, 0, 10); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("WapiMskRekeyThreshold=%d\n", pAd->CommonCfg.wapi_msk_rekey_threshold)); } #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { RTMP_STRING tok_str[16]; /* WapiPskX */ for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++) { snprintf(tok_str, sizeof(tok_str), "WapiPsk%d", apidx + 1); NdisZeroMemory(pAd->ApCfg.MBSSID[apidx].WAPIPassPhrase, 64); pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen = 0; if(RTMPGetKeyParameter(tok_str, tmpbuf, 65, buffer, FALSE)) { if (strlen(tmpbuf) >= 8 && strlen(tmpbuf) <= 64) { NdisMoveMemory(pAd->ApCfg.MBSSID[apidx].WAPIPassPhrase, tmpbuf, strlen(tmpbuf)); pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen = strlen(tmpbuf); MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("IF(ra%d) WapiPsk=(%s), len=%d\n", apidx, tmpbuf, strlen(tmpbuf))); } else { if (pAd->ApCfg.MBSSID[apidx].wdev.AuthMode == Ndis802_11AuthModeWAIPSK) { pAd->ApCfg.MBSSID[apidx].wdev.AuthMode = Ndis802_11AuthModeOpen; pAd->ApCfg.MBSSID[apidx].wdev.WepStatus = Ndis802_11EncryptionDisabled; } MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("IF(ra%d) The length of WAPI PSKPassPhrase is invalid(len=%d). \n", apidx, strlen(tmpbuf))); } } } } #endif /* CONFIG_AP_SUPPORT */ /* WapiPskType */ if (RTMPGetKeyParameter("WapiPskType", tmpbuf, 32, buffer, TRUE)) { INT err; #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { RTMP_STRING *macptr; for (apidx = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), apidx++) { err = 0; if (apidx >= pAd->ApCfg.BssidNum) break; /* HEX */ if(simple_strtol(macptr, 0, 10) == 0) { pAd->ApCfg.MBSSID[apidx].WapiPskType = HEX_MODE; if (pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen % 2 != 0) { err = 1; MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("I/F(ra%d) The WAPI-PSK key length MUST be even in Hex mode\n", apidx)); } } /* ASCII */ else { pAd->ApCfg.MBSSID[apidx].WapiPskType = ASCII_MODE; } if (err) { pAd->ApCfg.MBSSID[apidx].wdev.AuthMode = Ndis802_11AuthModeOpen; pAd->ApCfg.MBSSID[apidx].wdev.WepStatus = Ndis802_11EncryptionDisabled; } else MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("I/F(ra%d) WapiPskType=%s\n", apidx, (pAd->ApCfg.MBSSID[apidx].WapiPskType == HEX_MODE) ? "HEX" : "ASCII")); } } #endif /* CONFIG_AP_SUPPORT */ }
/* ======================================================================== Routine Description: In kernel mode read parameters from file Arguments: src the location of the file. dest put the parameters to the destination. Length size to read. Return Value: None Note: ======================================================================== */ void rtmp_read_wapi_parms_from_file( IN PRTMP_ADAPTER pAd, PSTRING tmpbuf, PSTRING buffer) { UINT32 ip_addr; #ifdef CONFIG_AP_SUPPORT INT apidx = 0; #endif // CONFIG_AP_SUPPORT // PCOMMON_WAPI_INFO pInfo = &pAd->CommonCfg.comm_wapi_info; // wapi interface name if (RTMPGetKeyParameter("Wapiifname", tmpbuf, 32, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->wapi_ifname, tmpbuf, strlen(tmpbuf)); pInfo->wapi_ifname_len = strlen(tmpbuf); DBGPRINT(RT_DEBUG_TRACE, ("Wapiifname=%s, len=%d\n", pInfo->wapi_ifname, pInfo->wapi_ifname_len)); } } // WapiAsCertPath if (RTMPGetKeyParameter("WapiAsCertPath", tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->as_cert_path, tmpbuf, strlen(tmpbuf)); pInfo->as_cert_path_len = strlen(tmpbuf); DBGPRINT(RT_DEBUG_TRACE, ("WapiAsCertPath=%s, len=%d\n", pInfo->as_cert_path, pInfo->as_cert_path_len)); } } // WapiUserCertPath if (RTMPGetKeyParameter("WapiUserCertPath", tmpbuf, 128, buffer, TRUE)) { if (strlen(tmpbuf) > 0) { NdisMoveMemory(pInfo->user_cert_path, tmpbuf, strlen(tmpbuf)); pInfo->user_cert_path_len = strlen(tmpbuf); DBGPRINT(RT_DEBUG_TRACE, ("WapiUserCertPath=%s, len=%d\n", pInfo->user_cert_path, pInfo->user_cert_path_len)); } } // WapiAsIpAddr if (RTMPGetKeyParameter("WapiAsIpAddr", tmpbuf, 32, buffer, TRUE)) { if (rtinet_aton(tmpbuf, &ip_addr)) { pInfo->wapi_as_ip = ip_addr; DBGPRINT(RT_DEBUG_TRACE, ("WapiAsIpAddr=%s(%x)\n", tmpbuf, pInfo->wapi_as_ip)); } } // WapiAsPort if (RTMPGetKeyParameter("WapiAsPort", tmpbuf, 32, buffer, TRUE)) { pInfo->wapi_as_port = simple_strtol(tmpbuf, 0, 10); DBGPRINT(RT_DEBUG_TRACE, ("WapiAsPort=%d\n", pInfo->wapi_as_port)); } // WapiUskRekeyMethod if (RTMPGetKeyParameter("WapiUskRekeyMethod", tmpbuf, 32, buffer, TRUE)) { if ((strcmp(tmpbuf, "TIME") == 0) || (strcmp(tmpbuf, "time") == 0)) pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_TIME; else if ((strcmp(tmpbuf, "PKT") == 0) || (strcmp(tmpbuf, "pkt") == 0)) pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_PKT; else pAd->CommonCfg.wapi_usk_rekey_method = REKEY_METHOD_DISABLE; DBGPRINT(RT_DEBUG_TRACE, ("WapiUskRekeyMethod=%d\n", pAd->CommonCfg.wapi_usk_rekey_method)); } // WapiUskRekeyThreshold if (RTMPGetKeyParameter("WapiUskRekeyThreshold", tmpbuf, 32, buffer, TRUE)) { pAd->CommonCfg.wapi_usk_rekey_threshold = simple_strtol(tmpbuf, 0, 10); DBGPRINT(RT_DEBUG_TRACE, ("WapiUskRekeyThreshold=%d\n", pAd->CommonCfg.wapi_usk_rekey_threshold)); } // WapiMskRekeyMethod if (RTMPGetKeyParameter("WapiMskRekeyMethod", tmpbuf, 32, buffer, TRUE)) { if ((strcmp(tmpbuf, "TIME") == 0) || (strcmp(tmpbuf, "time") == 0)) pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_TIME; else if ((strcmp(tmpbuf, "PKT") == 0) || (strcmp(tmpbuf, "pkt") == 0)) pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_PKT; else pAd->CommonCfg.wapi_msk_rekey_method = REKEY_METHOD_DISABLE; DBGPRINT(RT_DEBUG_TRACE, ("WapiMskRekeyMethod=%d\n", pAd->CommonCfg.wapi_msk_rekey_method)); } // WapiMskRekeyThreshold if (RTMPGetKeyParameter("WapiMskRekeyThreshold", tmpbuf, 32, buffer, TRUE)) { pAd->CommonCfg.wapi_msk_rekey_threshold = simple_strtol(tmpbuf, 0, 10); DBGPRINT(RT_DEBUG_TRACE, ("WapiMskRekeyThreshold=%d\n", pAd->CommonCfg.wapi_msk_rekey_threshold)); } #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { STRING tok_str[16]; // WapiPskX for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++) { sprintf(tok_str, "WapiPsk%d", apidx + 1); NdisZeroMemory(pAd->ApCfg.MBSSID[apidx].WAPIPassPhrase, 64); pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen = 0; if(RTMPGetKeyParameter(tok_str, tmpbuf, 65, buffer, FALSE)) { if (strlen(tmpbuf) >= 8 && strlen(tmpbuf) <= 64) { NdisMoveMemory(pAd->ApCfg.MBSSID[apidx].WAPIPassPhrase, tmpbuf, strlen(tmpbuf)); pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen = strlen(tmpbuf); DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) WapiPsk=(%s), len=%d\n", apidx, tmpbuf, strlen(tmpbuf))); } else { if (pAd->ApCfg.MBSSID[apidx].AuthMode == Ndis802_11AuthModeWAIPSK) { pAd->ApCfg.MBSSID[apidx].AuthMode = Ndis802_11AuthModeOpen; pAd->ApCfg.MBSSID[apidx].WepStatus = Ndis802_11EncryptionDisabled; } DBGPRINT(RT_DEBUG_ERROR, ("IF(ra%d) The length of WAPI PSKPassPhrase is invalid(len=%d). \n", apidx, strlen(tmpbuf))); } } } } #endif // CONFIG_AP_SUPPORT // // WapiPskType if (RTMPGetKeyParameter("WapiPskType", tmpbuf, 32, buffer, TRUE)) { INT err; #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { PSTRING macptr; for (apidx = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), apidx++) { err = 0; if (apidx >= pAd->ApCfg.BssidNum) break; // HEX if(simple_strtol(macptr, 0, 10) == 0) { pAd->ApCfg.MBSSID[apidx].WapiPskType = HEX_MODE; if (pAd->ApCfg.MBSSID[apidx].WAPIPassPhraseLen % 2 != 0) { err = 1; DBGPRINT(RT_DEBUG_ERROR, ("I/F(ra%d) The WAPI-PSK key length MUST be even in Hex mode\n", apidx)); } } // ASCII else { pAd->ApCfg.MBSSID[apidx].WapiPskType = ASCII_MODE; } if (err) { pAd->ApCfg.MBSSID[apidx].AuthMode = Ndis802_11AuthModeOpen; pAd->ApCfg.MBSSID[apidx].WepStatus = Ndis802_11EncryptionDisabled; } else DBGPRINT(RT_DEBUG_TRACE, ("I/F(ra%d) WapiPskType=%s\n", apidx, (pAd->ApCfg.MBSSID[apidx].WapiPskType == HEX_MODE) ? "HEX" : "ASCII")); } } #endif // CONFIG_AP_SUPPORT // }