History

cfg80211/nl80211: add API for MAC address ACLs

Add API to enable drivers to implement MAC address based access control in AP/P2P GO mode. Capable drivers advertise this capability by setting the maximum number of MAC addresses in such a list in wiphy->max_acl_mac_addrs. An initial ACL may be given to the NL80211_CMD_START_AP command and/or changed later with NL80211_CMD_SET_MAC_ACL. Black- and whitelists are supported, but not simultaneously.

Vasanthakumar Thiagarajan committed 13 years ago

Commit 77765ea1 parent 6d45a746 files · +234 −2Browse files

Showing the changes to include/uapi/linux (1 of 6 files). Show all

Unified · Split

include/uapi/linux/nl80211.h+49−2
@@ -170,7 +170,8 @@ · 169 unmodified lines
170170 * %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE,
171171 * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS,
172172 * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY,
173− * %NL80211_ATTR_AUTH_TYPE and %NL80211_ATTR_INACTIVITY_TIMEOUT.
173+ * %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_INACTIVITY_TIMEOUT,
174+ * %NL80211_ATTR_ACL_POLICY and %NL80211_ATTR_MAC_ADDRS.
174175 * The channel to use can be set on the interface or be given using the
175176 * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel width.
176177 * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP
@@ -586,6 +587,16 @@ · 409 unmodified lines
586587 * @NL80211_CMD_SET_MCAST_RATE: Change the rate used to send multicast frames
587588 * for IBSS or MESH vif.
588589 *
590+ * @NL80211_CMD_SET_MAC_ACL: sets ACL for MAC address based access control.
591+ * This is to be used with the drivers advertising the support of MAC
592+ * address based access control. List of MAC addresses is passed in
593+ * %NL80211_ATTR_MAC_ADDRS and ACL policy is passed in
594+ * %NL80211_ATTR_ACL_POLICY. Driver will enable ACL with this list, if it
595+ * is not already done. The new list will replace any existing list. Driver
596+ * will clear its ACL when the list of MAC addresses passed is empty. This
597+ * command is used in AP/P2P GO mode. Driver has to make sure to clear its
598+ * ACL list during %NL80211_CMD_STOP_AP.
599+ *
589600 * @NL80211_CMD_MAX: highest used command number
590601 * @__NL80211_CMD_AFTER_LAST: internal use
591602 */
@@ -736,6 +747,8 @@ enum nl80211_commands { · 144 unmodified lines
736747
737748 NL80211_CMD_SET_MCAST_RATE,
738749
750+ NL80211_CMD_SET_MAC_ACL,
751+
739752 /* add new commands above here */
740753
741754 /* used to define NL80211_CMD_MAX below */
@@ -1313,6 +1326,16 @@ enum nl80211_commands { · 571 unmodified lines
13131326 * @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode
13141327 * defined in &enum nl80211_mesh_power_mode.
13151328 *
1329+ * @NL80211_ATTR_ACL_POLICY: ACL policy, see &enum nl80211_acl_policy,
1330+ * carried in a u32 attribute
1331+ *
1332+ * @NL80211_ATTR_MAC_ADDRS: Array of nested MAC addresses, used for
1333+ * MAC ACL.
1334+ *
1335+ * @NL80211_ATTR_MAC_ACL_MAX: u32 attribute to advertise the maximum
1336+ * number of MAC addresses that a device can support for MAC
1337+ * ACL.
1338+ *
13161339 * @NL80211_ATTR_MAX: highest attribute number currently defined
13171340 * @__NL80211_ATTR_AFTER_LAST: internal use
13181341 */
@@ -1585,6 +1608,12 @@ enum nl80211_attrs { · 266 unmodified lines
15851608
15861609 NL80211_ATTR_LOCAL_MESH_POWER_MODE,
15871610
1611+ NL80211_ATTR_ACL_POLICY,
1612+
1613+ NL80211_ATTR_MAC_ADDRS,
1614+
1615+ NL80211_ATTR_MAC_ACL_MAX,
1616+
15881617 /* add attributes here, update the policy in nl80211.c */
15891618
15901619 __NL80211_ATTR_AFTER_LAST,
@@ -3248,7 +3277,7 @@ enum nl80211_probe_resp_offload_support_attr { · 1657 unmodified lines
32483277 * enum nl80211_connect_failed_reason - connection request failed reasons
32493278 * @NL80211_CONN_FAIL_MAX_CLIENTS: Maximum number of clients that can be
32503279 * handled by the AP is reached.
3251− * @NL80211_CONN_FAIL_BLOCKED_CLIENT: Client's MAC is in the AP's blocklist.
3280+ * @NL80211_CONN_FAIL_BLOCKED_CLIENT: Connection request is rejected due to ACL.
32523281 */
32533282 enum nl80211_connect_failed_reason {
32543283 NL80211_CONN_FAIL_MAX_CLIENTS,
@@ -3276,4 +3305,22 @@ enum nl80211_scan_flags { · 21 unmodified lines
32763305 NL80211_SCAN_FLAG_AP = 1<<2,
32773306 };
32783307
3308+/**
3309+ * enum nl80211_acl_policy - access control policy
3310+ *
3311+ * Access control policy is applied on a MAC list set by
3312+ * %NL80211_CMD_START_AP and %NL80211_CMD_SET_MAC_ACL, to
3313+ * be used with %NL80211_ATTR_ACL_POLICY.
3314+ *
3315+ * @NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED: Deny stations which are
3316+ * listed in ACL, i.e. allow all the stations which are not listed
3317+ * in ACL to authenticate.
3318+ * @NL80211_ACL_POLICY_DENY_UNLESS_LISTED: Allow the stations which are listed
3319+ * in ACL, i.e. deny all the stations which are not listed in ACL.
3320+ */
3321+enum nl80211_acl_policy {
3322+ NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
3323+ NL80211_ACL_POLICY_DENY_UNLESS_LISTED,
3324+};
3325+
32793326 #endif /* __LINUX_NL80211_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t