<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                SET_NETWORK對應的命令處理函數為wpa_supplicant_ctrl_iface_set_network,其代碼如 下所示。 **ctrl_iface.c::wpa_supplicant_ctrl_iface_set_network** ~~~ static int wpa_supplicant_ctrl_iface_set_network( struct wpa_supplicant *wpa_s, char *cmd) { int id; struct wpa_ssid *ssid; char *name, *value; // SET_NETWORK的參數是: "<network id> <variable name> <value>" name = os_strchr(cmd, ' '); *name++ = '\0'; // 獲取name value = os_strchr(name, ' '); *value++ = '\0'; // 獲取value id = atoi(cmd); // 獲取id ...... // 從wpa_config中的無線網絡配置列表中找到對應編號的無線網絡配置項 ssid = wpa_config_get_network(wpa_s->conf, id); ...... /* 為該網絡設置對應的配置值。wpa_config_set函數的具體實現與4.3.4節"wpa_supplicant_ init_iface分析之一"介紹的wpa_config_process_global函數類似,其內部也是通過定義 一些宏和數組來完成配置項的設置,不討論其細節。就本例而言,當三個SET_NETWORK命令處理 完畢時,wpa_ssid的 ssid="Test"、key_mgmt=WPA_KEY_MGMT_PSK、passphrase="12345Test"。 注意:雖然在命令行中設置的是psk="12345Test",但實際上密碼值將保存在passphrase變量中。 */ if (wpa_config_set(ssid, name, value, 0) < 0) {......} // 清空對應的PMKSA緩存信息。wpa_s->wpa指向一個wpa_sm對象 wpa_sm_pmksa_cache_flush(wpa_s->wpa, ssid); if (wpa_s->current_ssid == ssid || wpa_s->current_ssid == NULL) eapol_sm_invalidate_cached_session(wpa_s->eapol); if ((os_strcmp(name, "psk") == 0 && value[0] == '"' && ssid->ssid_len) || (os_strcmp(name, "ssid") == 0 && ssid->passphrase)) wpa_config_update_psk(ssid);// 將字符串形式的passphrase轉成key,見下文介紹 else if (os_strcmp(name, "priority") == 0) wpa_config_update_prio_list(wpa_s->conf); return 0; } ~~~ 我們在3.3.7節的開頭部分曾介紹過Key和Passphrase的區別。一般而言,Passphrase(也叫Password)表現為human-readable的字符串,而Key則一般是二進制或十六進制的數據。STA和AP交互的是Key,而用戶設置的是Passphrase。所以上述代碼中需要將Passphrase轉換成Key, 這是通過wpa_config_update_psk函數來完成的。其代碼如下所示。 **config.c::wpa_config_update_psk** ~~~ void wpa_config_update_psk(struct wpa_ssid *ssid) { #ifndef CONFIG_NO_PBKDF2 // 本例支持該宏,如果沒有它的話,用戶只能輸入十六進制的Key // 對用戶設置的psk和ssid進行hash計算,最終的結果作為真正的Pre-Shared Key pbkdf2_sha1(ssid->passphrase,(char *) ssid->ssid, ssid->ssid_len,4096,ssid->psk, PMK_LEN); ssid->psk_set = 1; #endif /* CONFIG_NO_PBKDF2 */ } ~~~ SET_NETWORK命令處理的介紹到此為止。下面來看最后一個關鍵命令ENABLE_NETWORK的處理流程。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看