VLAN assignment based on used WPA/WPA2 passphrase/PSK
Extend wpa_psk_file to allow an optional VLAN ID to be specified with "vlanid=<VLAN ID>" prefix on the line. If VLAN ID is specified and the particular wpa_psk_file entry is used for a station, that station is bound to the specified VLAN. This can be used to operate a single WPA2-Personal BSS with multiple VLANs based on the used passphrase/PSK. This is similar to the WPA2-Enterprise case where the RADIUS server can assign stations to different VLANs. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
dd2aedeb55
commit
dbfa691df4
10 changed files with 111 additions and 15 deletions
|
@ -260,12 +260,14 @@ static void auth_logger(void *ctx, const u8 *addr, logger_level level,
|
|||
|
||||
static const u8 * auth_get_psk(void *ctx, const u8 *addr,
|
||||
const u8 *p2p_dev_addr, const u8 *prev_psk,
|
||||
size_t *psk_len)
|
||||
size_t *psk_len, int *vlan_id)
|
||||
{
|
||||
struct ibss_rsn *ibss_rsn = ctx;
|
||||
|
||||
if (psk_len)
|
||||
*psk_len = PMK_LEN;
|
||||
if (vlan_id)
|
||||
*vlan_id = 0;
|
||||
wpa_printf(MSG_DEBUG, "AUTH: %s (addr=" MACSTR " prev_psk=%p)",
|
||||
__func__, MAC2STR(addr), prev_psk);
|
||||
if (prev_psk)
|
||||
|
|
|
@ -76,7 +76,7 @@ static void auth_logger(void *ctx, const u8 *addr, logger_level level,
|
|||
|
||||
static const u8 *auth_get_psk(void *ctx, const u8 *addr,
|
||||
const u8 *p2p_dev_addr, const u8 *prev_psk,
|
||||
size_t *psk_len)
|
||||
size_t *psk_len, int *vlan_id)
|
||||
{
|
||||
struct mesh_rsn *mesh_rsn = ctx;
|
||||
struct hostapd_data *hapd = mesh_rsn->wpa_s->ifmsh->bss[0];
|
||||
|
@ -84,6 +84,8 @@ static const u8 *auth_get_psk(void *ctx, const u8 *addr,
|
|||
|
||||
if (psk_len)
|
||||
*psk_len = PMK_LEN;
|
||||
if (vlan_id)
|
||||
*vlan_id = 0;
|
||||
wpa_printf(MSG_DEBUG, "AUTH: %s (addr=" MACSTR " prev_psk=%p)",
|
||||
__func__, MAC2STR(addr), prev_psk);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue