summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdk-stage1/wireless.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/mdk-stage1/wireless.c b/mdk-stage1/wireless.c
index 1785dbfa7..c241bd662 100644
--- a/mdk-stage1/wireless.c
+++ b/mdk-stage1/wireless.c
@@ -96,7 +96,7 @@ static int wireless_set_restricted_key(int socket, const char *ifname, const cha
unsigned int tmp;
while (sscanf(key + 2*key_len, "%2X", &tmp) == 1)
- real_key[key_len++] = (unsigned char) tmp;
+ real_key[key_len++] = (char) tmp;
wrq.u.data.flags = IW_ENCODE_RESTRICTED;
wrq.u.data.pointer = (char *) real_key;
@@ -119,7 +119,9 @@ enum return_type configure_wireless(const char *ifname)
return RETURN_OK;
}
- results = ask_from_entries_auto("Please enter your wireless settings.",
+ results = ask_from_entries_auto("Please enter your wireless settings. "
+ "The ESSID is your wireless network identifier. "
+ "The WEP key must be entered in hexadecimal, without any separator.",
questions, &answers, 32, questions_auto, NULL);
if (results != RETURN_OK) {
wireless_close_socket(wsock);
@@ -132,12 +134,6 @@ enum return_type configure_wireless(const char *ifname)
return RETURN_ERROR;
}
- log_message("setting ESSID \"%s\" on device \"%s\"", answers[0], ifname);
- if (!wireless_set_essid(wsock, ifname, answers[0])) {
- stg1_error_message("unable to set ESSID \"%s\" on device \"%s\": %s", answers[0], ifname, strerror(errno));
- return RETURN_ERROR;
- }
-
if (answers[1] && !streq(answers[1], "")) {
log_message("setting WEP key \"%s\" on device \"%s\"", answers[1], ifname);
if (!wireless_set_restricted_key(wsock, ifname, answers[1])) {
@@ -152,6 +148,13 @@ enum return_type configure_wireless(const char *ifname)
}
}
+ /* most devices perform discovery when ESSID is set, it needs to be last */
+ log_message("setting ESSID \"%s\" on device \"%s\"", answers[0], ifname);
+ if (!wireless_set_essid(wsock, ifname, answers[0])) {
+ stg1_error_message("unable to set ESSID \"%s\" on device \"%s\": %s", answers[0], ifname, strerror(errno));
+ return RETURN_ERROR;
+ }
+
wireless_close_socket(wsock);
return RETURN_OK;
}