[PATCH] AP: Add configuration option to specify the desired MLD address

Jouni Malinen j at w1.fi
Wed Jul 19 09:51:14 PDT 2023


On Sun, Jun 18, 2023 at 05:15:04PM +0300, Andrei Otcheretianski wrote:
> Add mld_addr configuration option to set MLD address.
> The already existing bssid configuration option can be used to
> control the MLD link addresses.

> diff --git a/hostapd/config_file.c b/hostapd/config_file.c
> @@ -4776,6 +4776,12 @@ static int hostapd_config_fill(struct hostapd_config *conf,
>  		bss->mld_ap = !!atoi(pos);
>  	} else if (os_strcmp(buf, "mld_id") == 0) {
>  		bss->mld_id = atoi(pos);
> +	} else if (os_strcmp(buf, "mld_addr") == 0) {
> +		if (hwaddr_aton(pos, bss->mld_addr)) {
> +			wpa_printf(MSG_ERROR,
> +				   "Line %d: invalid mld_addr", line);
> +			return 1;
> +		}
>  #endif /* CONFIG_IEEE80211BE */

It would be good to document new hostapd configuration parameters in
hostapd/hostapd.conf.

> diff --git a/hostapd/main.c b/hostapd/main.c
>  	/* Initialize the driver interface */
> -	if (!(b[0] | b[1] | b[2] | b[3] | b[4] | b[5]))
> +	if (is_zero_ether_addr(b))
>  		b = NULL;

How is this related to the other changes in the patch or the commit
message? This feels like something completely independent that should be
in its own commit.

> @@ -241,7 +241,13 @@ static int hostapd_driver_init(struct hostapd_iface *iface)
> +#ifndef CONFIG_IEEE80211BE
>  	params.bssid = b;
> +#else
> +	if (!is_zero_ether_addr(hapd->conf->mld_addr) &&
> +	    hapd->conf->mld_ap)
> +		params.bssid = hapd->conf->mld_addr;
> +#endif /* !CONFIG_IEEE80211BE */

Is this really correct for builds that define CONFIG_IEEE80211BE but do
not enable MLO? Why would params.bssid not be set in those cases?
Wouldn't this break capability of configuring the BSSID for non-MLO AP?
 
> @@ -278,6 +284,10 @@ static int hostapd_driver_init(struct hostapd_iface *iface)
>  		random_mac_addr_keep_oui(hapd->own_addr);
>  		hapd->mld_next_link_id = 0;
>  		hapd->mld_link_id = hapd->mld_next_link_id++;
> +		if (!b)
> +			random_mac_addr_keep_oui(hapd->own_addr);
> +		else
> +			os_memcpy(hapd->own_addr, b, ETH_ALEN);

What is this trying to do and how is this related to the other changes?
random_mac_addr_keep_oui() would be called twice if b == NULL and that
does not sound correct. Why would hostapd_driver_init() modify
hapd->own_addr?

-- 
Jouni Malinen                                            PGP id EFC895FA



More information about the Hostap mailing list