hostapd/src/ap
Michael Braun 1889af2e0f VLAN: Separate station grouping and uplink configuration
Separate uplink configuration (IEEE 802.1q VID) and grouping of stations
into AP_VLAN interfaces.

The int vlan_id will continue to identify the AP_VLAN interface the
station should be assigned to. Each AP_VLAN interface corresponds to an
instance of struct hostapd_vlan that is uniquely identified by int
vlan_id within an BSS.

New: Each station and struct hostapd_vlan holds a struct
vlan_description vlan_desc member that describes the uplink
configuration requested. Currently this is just an int untagged IEEE
802.1q VID, but can be extended to tagged VLANs and other settings
easily.

When the station was about to be assigned its vlan_id, vlan_desc and
vlan_id will now be set simultaneously by ap_sta_set_vlan(). So
sta->vlan_id can still be tested for whether the station needs to be
moved to an AP_VLAN interface.

To ease addition of tagged VLAN support, a member notempty is added to
struct vlan_description. Is is set to 1 if an untagged or tagged VLAN
assignment is requested and needs to be validated. The inverted form
allows os_zalloc() to initialize an empty description.

Though not depended on by the code, vlan_id assignment ensures:
  * vlan_id = 0 will continue to mean no AP_VLAN interface
  * vlan_id < 4096 will continue to mean vlan_id = untagged vlan id
    with no per_sta_vif and no extra tagged vlan.
  * vlan_id > 4096 will be used for per_sta_vif and/or tagged vlans.

This way struct wpa_group and drivers API do not need to be changed in
order to implement tagged VLANs or per_sta_vif support.

DYNAMIC_VLAN_* will refer to (struct vlan_description).notempty only,
thus grouping of the stations for per_sta_vif can be used with
DYNAMIC_VLAN_DISABLED, but not with CONFIG_NO_VLAN, as struct
hostapd_vlan is still used to manage AP_VLAN interfaces.

MAX_VLAN_ID will be checked in hostapd_vlan_valid and during setup of
VLAN interfaces and refer to IEEE 802.1q VID. VLAN_ID_WILDCARD will
continue to refer to int vlan_id.

Renaming vlan_id to vlan_desc when type changed from int to struct
vlan_description was avoided when vlan_id was also used in a way that
did not depend on its type (for example, when passed to another
function).

Output of "VLAN ID %d" continues to refer to int vlan_id, while "VLAN
%d" will refer to untagged IEEE 802.1q VID.

Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
2016-02-17 11:46:11 +02:00
..
accounting.c RADIUS: Share a single function for generating session IDs 2016-02-06 17:19:35 +02:00
accounting.h RADIUS: Use more likely unique accounting Acct-{,Multi-}Session-Id 2016-02-06 17:10:19 +02:00
acs.c ACS: Remove unreachable case from a debug print 2016-01-07 16:50:53 +02:00
acs.h Move declaration of hostapd_acs_completed() into correct header file 2013-12-31 19:34:43 +02:00
ap_config.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ap_config.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ap_drv_ops.c driver: Make setting up AP optional when creating AP interface 2015-11-22 17:42:59 +02:00
ap_drv_ops.h nl80211: Specify CSA offsets in send_mlme() driver op 2015-10-03 21:07:35 +03:00
ap_list.c Move ap_list_timer() to use common AP periodic cleanup mechanism 2015-07-20 13:42:35 +03:00
ap_list.h Move ap_list_timer() to use common AP periodic cleanup mechanism 2015-07-20 13:42:35 +03:00
ap_mlme.c AP: Fix Deauth/Disassoc TX status timeout handling 2016-01-15 19:32:49 +02:00
ap_mlme.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
authsrv.c Server configuration for OCSP stapling with ocsp_multi (RFC 6961) 2015-12-22 19:42:07 +02:00
authsrv.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
beacon.c wpa_supplicant: Basic support for PBSS/PCP 2016-02-08 22:23:56 +02:00
beacon.h Add station tracking based on other management frame subtypes 2015-09-05 19:38:06 +03:00
bss_load.c AP: Add support for BSS load element (STA Count, Channel Utilization) 2014-10-21 23:25:48 +03:00
bss_load.h AP: Add support for BSS load element (STA Count, Channel Utilization) 2014-10-21 23:25:48 +03:00
ctrl_iface_ap.c FST: hostapd control interface 2015-07-16 18:26:15 +03:00
ctrl_iface_ap.h Add STOP_AP control interface command 2015-02-08 13:35:49 +02:00
dfs.c Move hostapd_csa_in_progress() to hostapd.c 2015-10-03 20:19:06 +03:00
dfs.h DFS offload: Add main DFS handler for offloaded case 2015-03-05 17:21:30 +02:00
dhcp_snoop.c dhcp_snoop: Make IPv4 addresses human readable in debug log 2015-01-30 18:55:22 +02:00
dhcp_snoop.h AP: Add support for Proxy ARP, DHCP snooping mechanism 2014-10-28 01:08:29 +02:00
drv_callbacks.c Remove a pointer check that can never be true 2016-01-07 16:47:17 +02:00
eap_user_db.c Improve error messages related to EAP DB 2015-03-28 13:16:26 +02:00
gas_serv.c GAS: Calculate response buffer length of ANQP elements 2016-02-06 01:19:32 +02:00
gas_serv.h Interworking: Add support for configuring arbitrary ANQP-elements 2015-10-07 17:07:21 +03:00
hostapd.c RADIUS: Use more likely unique accounting Acct-{,Multi-}Session-Id 2016-02-06 17:10:19 +02:00
hostapd.h mesh: Fix peer link counting when a mesh peer reconnects 2016-02-06 21:22:29 +02:00
hs20.c HS 2.0R2 AP: Add support for deauthentication request 2014-02-26 01:24:24 +02:00
hs20.h HS 2.0R2 AP: Add support for deauthentication request 2014-02-26 01:24:24 +02:00
hw_features.c Make fallback from HT40 to HT20 work 2016-02-05 17:52:47 +02:00
hw_features.h hostapd: Fix some compilation errors 2015-03-29 20:51:14 +03:00
iapp.c IAPP: Avoid warnings on unused write 2014-10-11 18:03:38 +03:00
iapp.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
ieee802_1x.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ieee802_1x.h HS 2.0: Postpone WNM-Notification sending by 100 ms 2015-12-31 21:46:08 +02:00
ieee802_11.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ieee802_11.h hostapd: Add Transmit Power Envelope IE when VHT is enabled 2015-11-26 20:40:24 +02:00
ieee802_11_auth.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ieee802_11_auth.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
ieee802_11_ht.c Fix CSA related IEs order 2015-10-03 21:01:47 +03:00
ieee802_11_shared.c Add support for eCSA 2015-10-03 20:00:50 +03:00
ieee802_11_vht.c VHT: Add an interoperability workaround for 80+80 and 160 MHz channels 2016-02-02 00:09:19 +02:00
Makefile tests: Add ap-mgmt-fuzzer 2015-04-22 11:44:19 +03:00
ndisc_snoop.c ndisc_snoop: Avoid misaligned read of IPv6 address 2015-07-07 16:25:06 +03:00
ndisc_snoop.h proxyarp: Use C library header files and CONFIG_IPV6 2014-11-25 16:58:21 +02:00
p2p_hostapd.c Use P2P_IE_VENDOR_TYPE more consistently 2014-03-05 23:36:54 +02:00
p2p_hostapd.h Remove the GPL notification from files contributed by Atheros 2012-02-11 19:39:36 +02:00
peerkey_auth.c PeerKey: Clean up EAPOL-Key Key Data processing on AP 2014-11-23 21:03:40 +02:00
pmksa_cache_auth.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
pmksa_cache_auth.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
preauth_auth.c Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
preauth_auth.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
sta_info.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
sta_info.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
tkip_countermeasures.c AP: Use monotonic time for MMIC failure/TKIP countermeasures 2013-12-24 07:13:34 +02:00
tkip_countermeasures.h hostapd: Fix a regression in TKIP countermeasures processing 2012-11-18 13:06:03 +02:00
utils.c FST: Do not prune STAs belonging to the same FST 2015-07-16 18:26:15 +03:00
vlan.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
vlan.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
vlan_init.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
vlan_init.h VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
vlan_util.c vlan: Print libnl error message on vlan_add / vlan_del 2015-05-07 20:54:26 +03:00
vlan_util.h Add option to use netlink to create and remove VLAN interfaces 2012-08-10 14:09:05 +03:00
wmm.c AP WMM: Fix integer underflow in WMM Action frame parser 2015-05-03 18:26:50 +03:00
wmm.h Remove obsolete license notifications 2013-12-24 22:59:52 +02:00
wnm_ap.c WNM: Fix possible memory leak by free buf 2015-01-20 02:14:19 +02:00
wnm_ap.h Add BSS_TM_REQ command to send BSS Transition Management Request 2014-11-22 16:34:34 +02:00
wpa_auth.c FT: Fix FTIE generation for EAPOL-Key msg 3/4 2015-12-10 00:14:36 +02:00
wpa_auth.h Fix Suite B 192-bit AKM to use proper PMK length 2015-10-14 18:43:26 +03:00
wpa_auth_ft.c FT: Fix sm->assoc_resp_ftie storing on the AP side 2015-12-10 00:14:35 +02:00
wpa_auth_glue.c hostapd: Fix WPA, IEEE 802.1X, and WPS deinit in cases where init fails 2015-10-14 18:42:07 +03:00
wpa_auth_glue.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
wpa_auth_i.h Fix Suite B 192-bit AKM to use proper PMK length 2015-10-14 18:43:26 +03:00
wpa_auth_ie.c VLAN: Separate station grouping and uplink configuration 2016-02-17 11:46:11 +02:00
wpa_auth_ie.h HS 2.0R2 AP: Add OSEN implementation 2014-02-26 01:24:24 +02:00
wps_hostapd.c WPS: Do not build Credential with unsupported encr combination on AP 2016-01-01 13:42:04 +02:00
wps_hostapd.h WPS NFC: Add AP mode connection handover report 2014-01-27 21:10:55 +02:00
x_snoop.c AP: Enable multicast snooping on bridge if ProxyARP IPv6 is in use 2015-04-13 14:00:32 +03:00
x_snoop.h AP: Add multicast-to-unicast conversion send for "x_snoop" 2014-11-19 16:25:13 +02:00