[PATCH 2/2] wpa_supplicant: EAPOL MAC address customisation with eapol_dest_addr.
Jouni Malinen
j at w1.fi
Thu Dec 26 13:43:09 PST 2024
On Wed, Oct 23, 2024 at 05:35:03PM +0100, Tim Small wrote:
> wpa_supplicant previously hard-coded the destination MAC address for
> EAPOL packets to 01:80:c2:00:00:03 (the "PAE Group Address"). The PAE
> Group Address continues to be the default value for the newly introduced
> wpa_supplicant per-network eapol_dest_addr configuration setting, but
> alternative multicast addresses (e.g. 01:80:c2:00:00:1f - the "EDE-CC
> PEP Address") can now be specified so that outgoing packets can reach
> the desired destination station(s) in a wider variety of operating
> environments.
>
> For example third party ISP switches providing layer 2 forwarding
> services to a customer should filter or terminate packets which use the
> PAE Group Address according to 802.1D ("Ethernet MAC bridges"). This
> will effectively prevent a customer creating their own secure 802.1X +
> MACsec links atop the ISP-provided layer 2 network. The same ISP
> switches should instead forward packets which use the ECE-CC PEP Address
> (or a variety of other multicast addresses which may be better suited to
> the particular usage scenario).
> ---
This needs a Signed-off-by: line (similarly to the one that was included
in patch 1/2).
> src/ap/ap_config.h | 1 +
> src/ap/wpa_auth_kay.c | 1 +
> src/common/ieee802_1x_defs.h | 8 ++++++
> src/pae/ieee802_1x_kay.c | 12 ++++-----
> src/pae/ieee802_1x_kay.h | 5 +++-
> wpa_supplicant/config.c | 51 ++++++++++++++++++++++++++++++++++++
> wpa_supplicant/config_ssid.h | 11 ++++++++
> wpa_supplicant/wpas_kay.c | 1 +
> 8 files changed, 83 insertions(+), 7 deletions(-)
This misses hostapd/config_file.c and hostapd/hostapd.conf changes to
match this change in src/ap/ap_config.h:
> diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
> @@ -301,6 +301,7 @@ struct hostapd_bss_config {
> + u8 eapol_dest_addr[ETH_ALEN];
I.e., this new configuration parameter needs to be actually filled in
based on hostapd configuration.
> diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
> @@ -2549,6 +2598,7 @@ static const struct parse_data ssid_fields[] = {
> + { FUNC(eapol_dest_addr) },
This covers parsing of the new wpa_supplicant network profile parameter,
but writing it to a configuration file on update needs to be covered in
wpa_supplicant/config_file.c, wpa_config_write_network().
> diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h
> @@ -418,6 +418,17 @@ struct wpa_ssid {
> */
> unsigned int eap_workaround;
>
> + /**
> + * eapol_dest_addr - mac addr for EAPOL packets (802.11AE-2018+ etc.)
> + * EAPOL packets may have their destination MAC address set to any
> + * non-individual (i.g. multi-cast) address, including the ethernet
> + * broadcast address (ff:ff:ff:ff:ff:ff). Choice of destination
> + * address is dictated by which types of entity (should) filter them
> + * out vs. act on their contents vs. relay them.
> + * See 802.11X-2020 Table 11-1
> + */
> + u8 eapol_dest_addr[ETH_ALEN];
> +
> #endif /* IEEE8021X_EAPOL */
It would probably make more sense to add this configuration parameter in
the same CONFIG_MACSEC block as all the other MACsec/MKA parameters
instead of IEEE8021X_EAPOL which is shared with Wi-Fi use cases.
--
Jouni Malinen PGP id EFC895FA
More information about the Hostap
mailing list