Ticket #1940: 4address_sta.diff

File 4address_sta.diff, 1.1 kB (added by anonymous, 3 months ago)
  • net80211/ieee80211_input.c

    old new  
    210210        int hdrspace; 
    211211        u_int8_t dir, type = -1, subtype; 
    212212        u_int8_t *bssid; 
     213        u_int8_t *receiver; 
    213214        u_int16_t rxseq; 
    214215 
    215216        if ((vap->iv_dev->flags & (IFF_RUNNING | IFF_UP)) != 
     
    449450                                vap->iv_stats.is_rx_wrongdir++; 
    450451                                goto out; 
    451452                        } 
    452  
     453                        if ((vap->iv_flags_ext & IEEE80211_FEXT_WDS) && 
     454                            (dir == IEEE80211_FC1_DIR_DSTODS)) { 
     455                                receiver = wh->i_addr1; 
     456                                if (!IEEE80211_ADDR_EQ(receiver, vap->iv_myaddr)) { 
     457                                    /* WDS, but not for us to forward */ 
     458                                    IEEE80211_DISCARD_MAC(vap,  
     459                                                          IEEE80211_MSG_INPUT, 
     460                                                          receiver, NULL, "%s",  
     461                                                          "WDS but not to us"); 
     462                                    vap->iv_stats.is_rx_wrongbss++; 
     463                                    goto out; 
     464                                } 
     465                        } 
     466                         
    453467                        if (IEEE80211_IS_MULTICAST(wh->i_addr1)) { 
    454468                                /* Discard multicast if IFF_MULTICAST not set */ 
    455469                                if ((0 != memcmp(wh->i_addr3, dev->broadcast, ETH_ALEN)) &&