Ignore:
Timestamp:
2012-03-27T12:42:47+02:00 (5 years ago)
Author:
nbd
Message:

hostapd: update to 20120326

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/hostapd/patches/100-pending_work.patch

    r29876 r31080  
    11--- a/src/ap/ieee802_11.c 
    22+++ b/src/ap/ieee802_11.c 
    3 @@ -1471,13 +1471,6 @@ static void handle_assoc_cb(struct hosta 
     3@@ -1488,13 +1488,6 @@ static void handle_assoc_cb(struct hosta 
    44        int new_assoc = 1; 
    55        struct ieee80211_ht_capabilities ht_cap; 
     
    1515                                      sizeof(mgmt->u.assoc_resp))) { 
    1616                printf("handle_assoc_cb(reassoc=%d) - too short payload " 
    17 @@ -1485,11 +1478,6 @@ static void handle_assoc_cb(struct hosta 
     17@@ -1502,11 +1495,6 @@ static void handle_assoc_cb(struct hosta 
    1818                return; 
    1919        } 
     
    2727        if (!sta) { 
    2828                printf("handle_assoc_cb: STA " MACSTR " not found\n", 
    29 @@ -1497,6 +1485,19 @@ static void handle_assoc_cb(struct hosta 
     29@@ -1514,6 +1502,19 @@ static void handle_assoc_cb(struct hosta 
    3030                return; 
    3131        } 
     
    4747                goto fail; 
    4848  
     49@@ -1812,6 +1813,9 @@ void ieee802_11_rx_from_unknown(struct h 
     50  
     51        sta = ap_get_sta(hapd, src); 
     52        if (sta && (sta->flags & WLAN_STA_ASSOC)) { 
     53+               if (!hapd->conf->wds_sta) 
     54+                       return; 
     55+ 
     56                if (wds && !(sta->flags & WLAN_STA_WDS)) { 
     57                        wpa_printf(MSG_DEBUG, "Enable 4-address WDS mode for " 
     58                                   "STA " MACSTR " (aid %u)", 
    4959--- a/src/drivers/driver_nl80211.c 
    5060+++ b/src/drivers/driver_nl80211.c 
    51 @@ -181,6 +181,7 @@ struct i802_bss { 
    52         struct wpa_driver_nl80211_data *drv; 
    53         struct i802_bss *next; 
    54         int ifindex; 
    55 +       u8 addr[ETH_ALEN]; 
    56         char ifname[IFNAMSIZ + 1]; 
    57         char brname[IFNAMSIZ]; 
    58         unsigned int beacon_set:1; 
    59 @@ -191,7 +192,6 @@ struct i802_bss { 
    60  struct wpa_driver_nl80211_data { 
    61         struct nl80211_global *global; 
    62         struct dl_list list; 
    63 -       u8 addr[ETH_ALEN]; 
    64         char phyname[32]; 
    65         void *ctx; 
    66         int ifindex; 
    67 @@ -2482,7 +2482,7 @@ wpa_driver_nl80211_finish_drv_init(struc 
    68                 return -1; 
     61@@ -2588,10 +2588,10 @@ static int wpa_driver_nl80211_capa(struc 
     62        drv->data_tx_status = info.data_tx_status; 
    6963  
    70         if (linux_get_ifhwaddr(drv->global->ioctl_sock, bss->ifname, 
    71 -                              drv->addr)) 
    72 +                              bss->addr)) 
    73                 return -1; 
     64        /* 
     65-        * If poll command is supported mac80211 is new enough to 
     66-        * have everything we need to not need monitor interfaces. 
     67+        * If poll command and tx status are supported, mac80211 is new enough 
     68+        * to have everything we need to not need monitor interfaces. 
     69         */ 
     70-       drv->use_monitor = !info.poll_command_supported; 
     71+       drv->use_monitor = !info.poll_command_supported || !info.data_tx_status; 
    7472  
    75         if (nl80211_register_action_frames(drv) < 0) { 
    76 @@ -5176,8 +5176,8 @@ static int wpa_driver_nl80211_hapd_send_ 
     73        if (drv->device_ap_sme && drv->use_monitor) { 
     74                /* 
     75@@ -6267,8 +6267,8 @@ static int wpa_driver_nl80211_hapd_send_ 
    7776        pos = (u8 *) (hdr + 1); 
    7877  
     
    8584                pos += 2; 
    8685        } 
    87 @@ -6407,7 +6407,7 @@ static int i802_set_wds_sta(void *priv,  
    88                 if (!if_nametoindex(name)) { 
    89                         if (nl80211_create_iface(drv, name, 
    90                                                  NL80211_IFTYPE_AP_VLAN, 
    91 -                                                NULL, 1) < 0) 
    92 +                                                bss->addr, 1) < 0) 
    93                                 return -1; 
    94                         if (bridge_ifname && 
    95                             linux_br_add_if(drv->global->ioctl_sock, 
    96 @@ -6417,6 +6417,10 @@ static int i802_set_wds_sta(void *priv,  
     86@@ -7533,6 +7533,10 @@ static int i802_set_wds_sta(void *priv,  
    9787                linux_set_iface_flags(drv->global->ioctl_sock, name, 1); 
    9888                return i802_set_sta_vlan(priv, addr, name, 0); 
     
    10595                return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN, 
    10696                                                    name); 
    107 @@ -6625,7 +6629,7 @@ static int nl80211_addr_in_use(struct nl 
    108         struct wpa_driver_nl80211_data *drv; 
    109         dl_list_for_each(drv, &global->interfaces, 
    110                          struct wpa_driver_nl80211_data, list) { 
    111 -               if (os_memcmp(addr, drv->addr, ETH_ALEN) == 0) 
    112 +               if (os_memcmp(addr, drv->first_bss.addr, ETH_ALEN) == 0) 
    113                         return 1; 
    114         } 
    115         return 0; 
    116 @@ -6640,9 +6644,9 @@ static int nl80211_p2p_interface_addr(st 
    117         if (!drv->global) 
    118                 return -1; 
    119   
    120 -       os_memcpy(new_addr, drv->addr, ETH_ALEN); 
    121 +       os_memcpy(new_addr, drv->first_bss.addr, ETH_ALEN); 
    122         for (idx = 0; idx < 64; idx++) { 
    123 -               new_addr[0] = drv->addr[0] | 0x02; 
    124 +               new_addr[0] = drv->first_bss.addr[0] | 0x02; 
    125                 new_addr[0] ^= idx << 2; 
    126                 if (!nl80211_addr_in_use(drv->global, new_addr)) 
    127                         break; 
    128 @@ -6745,6 +6749,7 @@ static int wpa_driver_nl80211_if_add(voi 
    129                         os_free(new_bss); 
    130                         return -1; 
    131                 } 
    132 +               memcpy(new_bss->addr, addr ? addr : if_addr, ETH_ALEN); 
    133                 os_strlcpy(new_bss->ifname, ifname, IFNAMSIZ); 
    134                 new_bss->ifindex = ifidx; 
    135                 new_bss->drv = drv; 
    136 @@ -6775,7 +6780,12 @@ static int wpa_driver_nl80211_if_remove( 
     97@@ -7900,7 +7904,12 @@ static int wpa_driver_nl80211_if_remove( 
    13798        if (ifindex <= 0) 
    13899                return -1; 
     
    147108                if (linux_br_del_if(drv->global->ioctl_sock, bss->brname, 
    148109                                    bss->ifname) < 0) 
    149 @@ -6789,13 +6799,6 @@ static int wpa_driver_nl80211_if_remove( 
     110@@ -7914,13 +7923,6 @@ static int wpa_driver_nl80211_if_remove( 
    150111                                   "bridge %s: %s", 
    151112                                   bss->brname, strerror(errno)); 
     
    161122        if (bss != &drv->first_bss) { 
    162123                struct i802_bss *tbss; 
    163 --- a/src/ap/wpa_auth.c 
    164 +++ b/src/ap/wpa_auth.c 
    165 @@ -776,7 +776,14 @@ void wpa_receive(struct wpa_authenticato 
    166         } 
    167   
    168         if (sm->wpa == WPA_VERSION_WPA2) { 
    169 -               if (key->type != EAPOL_KEY_TYPE_RSN) { 
    170 +               if (key->type == EAPOL_KEY_TYPE_WPA) { 
    171 +                       /* 
    172 +                        * Some deployed station implementations seem to send 
    173 +                        * msg 4/4 with incorrect type value in WPA2 mode. 
    174 +                        */ 
    175 +                       wpa_printf(MSG_DEBUG, "Workaround: Allow EAPOL-Key " 
    176 +                                  "with unexpected WPA type in RSN mode"); 
    177 +               } else if (key->type != EAPOL_KEY_TYPE_RSN) { 
    178                         wpa_printf(MSG_DEBUG, "Ignore EAPOL-Key with " 
    179                                    "unexpected type %d in RSN mode", 
    180                                    key->type); 
Note: See TracChangeset for help on using the changeset viewer.