| @@ -616,26 +616,29 @@ bsd_get_seqnum(const char *ifname, void | | | @@ -616,26 +616,29 @@ bsd_get_seqnum(const char *ifname, void |
616 | memset(&wk, 0, sizeof(wk)); | | 616 | memset(&wk, 0, sizeof(wk)); |
617 | if (addr == NULL) | | 617 | if (addr == NULL) |
618 | memset(wk.ik_macaddr, 0xff, IEEE80211_ADDR_LEN); | | 618 | memset(wk.ik_macaddr, 0xff, IEEE80211_ADDR_LEN); |
619 | else | | 619 | else |
620 | memcpy(wk.ik_macaddr, addr, IEEE80211_ADDR_LEN); | | 620 | memcpy(wk.ik_macaddr, addr, IEEE80211_ADDR_LEN); |
621 | wk.ik_keyix = idx; | | 621 | wk.ik_keyix = idx; |
622 | | | 622 | |
623 | if (get80211var(priv, IEEE80211_IOC_WPAKEY, &wk, sizeof(wk)) < 0) { | | 623 | if (get80211var(priv, IEEE80211_IOC_WPAKEY, &wk, sizeof(wk)) < 0) { |
624 | printf("Failed to get encryption.\n"); | | 624 | printf("Failed to get encryption.\n"); |
625 | return -1; | | 625 | return -1; |
626 | } | | 626 | } |
627 | | | 627 | |
628 | #ifdef WORDS_BIGENDIAN | | 628 | #ifdef WORDS_BIGENDIAN |
| | | 629 | #ifndef WPA_KEY_RSC_LEN |
| | | 630 | #define WPA_KEY_RSC_LEN 8 |
| | | 631 | #endif |
629 | { | | 632 | { |
630 | /* | | 633 | /* |
631 | * wk.ik_keytsc is in host byte order (big endian), need to | | 634 | * wk.ik_keytsc is in host byte order (big endian), need to |
632 | * swap it to match with the byte order used in WPA. | | 635 | * swap it to match with the byte order used in WPA. |
633 | */ | | 636 | */ |
634 | int i; | | 637 | int i; |
635 | u8 tmp[WPA_KEY_RSC_LEN]; | | 638 | u8 tmp[WPA_KEY_RSC_LEN]; |
636 | memcpy(tmp, &wk.ik_keytsc, sizeof(wk.ik_keytsc)); | | 639 | memcpy(tmp, &wk.ik_keytsc, sizeof(wk.ik_keytsc)); |
637 | for (i = 0; i < WPA_KEY_RSC_LEN; i++) { | | 640 | for (i = 0; i < WPA_KEY_RSC_LEN; i++) { |
638 | seq[i] = tmp[WPA_KEY_RSC_LEN - i - 1]; | | 641 | seq[i] = tmp[WPA_KEY_RSC_LEN - i - 1]; |
639 | } | | 642 | } |
640 | } | | 643 | } |
641 | #else /* WORDS_BIGENDIAN */ | | 644 | #else /* WORDS_BIGENDIAN */ |