source: branches/backfire/package/hostapd/patches/360-wds_bridge.patch @ 21354

Last change on this file since 21354 was 21354, checked in by nbd, 7 years ago

[backfire] backport mac80211 and hostapd from trunk

File size: 2.6 KB
  • src/ap/ap_config.h

    a b struct hostapd_wmm_ac_params { 
    148148struct hostapd_bss_config { 
    149149        char iface[IFNAMSIZ + 1]; 
    150150        char bridge[IFNAMSIZ + 1]; 
     151        char wds_bridge[IFNAMSIZ + 1]; 
    151152 
    152153        enum hostapd_logger_level logger_syslog_level, logger_stdout_level; 
    153154 
  • hostapd/config_file.c

    a b struct hostapd_config * hostapd_config_r 
    11931193                                   sizeof(conf->bss[0].iface)); 
    11941194                } else if (os_strcmp(buf, "bridge") == 0) { 
    11951195                        os_strlcpy(bss->bridge, pos, sizeof(bss->bridge)); 
     1196                } else if (os_strcmp(buf, "wds_bridge") == 0) { 
     1197                        os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge)); 
    11961198                } else if (os_strcmp(buf, "driver") == 0) { 
    11971199                        int j; 
    11981200                        /* clear to get error below if setting is invalid */ 
  • src/drivers/driver_nl80211.c

    a b static int i802_set_sta_vlan(void *priv, 
    45664566} 
    45674567 
    45684568 
    4569 static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val) 
     4569static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val, 
     4570                            const char *bridge_ifname) 
    45704571{ 
    45714572        struct i802_bss *bss = priv; 
    45724573        struct wpa_driver_nl80211_data *drv = bss->drv; 
    static int i802_set_wds_sta(void *priv,  
    45804581                        if (nl80211_create_iface(drv, name, NL80211_IFTYPE_AP_VLAN, 
    45814582                                         NULL, 1) < 0) 
    45824583                                return -1; 
     4584                        if (bridge_ifname) { 
     4585                                if (linux_br_add_if(drv->ioctl_sock, bridge_ifname, name) < 0) 
     4586                                        return -1; 
     4587                        } 
    45834588                } 
    45844589                linux_set_iface_flags(drv->ioctl_sock, name, 1); 
    45854590                return i802_set_sta_vlan(priv, addr, name, 0); 
  • src/ap/ap_drv_ops.c

    a b static int hostapd_vlan_if_remove(struct 
    265265static int hostapd_set_wds_sta(struct hostapd_data *hapd, const u8 *addr, 
    266266                               int aid, int val) 
    267267{ 
     268        const char *bridge = NULL; 
     269 
    268270        if (hapd->driver == NULL || hapd->driver->set_wds_sta == NULL) 
    269271                return 0; 
    270         return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val); 
     272        if (hapd->conf->wds_bridge[0]) 
     273                bridge = hapd->conf->wds_bridge; 
     274        else if (hapd->conf->bridge[0]) 
     275                bridge = hapd->conf->bridge; 
     276        return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val, bridge); 
    271277} 
    272278 
    273279 
  • src/drivers/driver.h

    a b struct wpa_driver_ops { 
    16221622         * @val: 1 = bind to 4-address WDS; 0 = unbind 
    16231623         * Returns: 0 on success, -1 on failure 
    16241624         */ 
    1625         int (*set_wds_sta)(void *priv, const u8 *addr, int aid, int val); 
     1625        int (*set_wds_sta)(void *priv, const u8 *addr, int aid, int val, 
     1626                           const char *bridge_ifname); 
    16261627 
    16271628        /** 
    16281629         * send_action - Transmit an Action frame 
Note: See TracBrowser for help on using the repository browser.