#ifdef CONFIG_NAN_USD
static const u8 nan_network_id[ETH_ALEN] =
{ 0x51, 0x6f, 0x9a, 0x01, 0x00, 0x00 };
+ static const u8 p2p_network_id[ETH_ALEN] =
+ { 0x51, 0x6f, 0x9a, 0x02, 0x00, 0x00 };
#endif /* CONFIG_NAN_USD */
if (len < 24)
if (!is_broadcast_ether_addr(mgmt->bssid) &&
#ifdef CONFIG_NAN_USD
!nan_de_is_nan_network_id(mgmt->bssid) &&
+ !nan_de_is_p2p_network_id(mgmt->bssid) &&
#endif /* CONFIG_NAN_USD */
#ifdef CONFIG_P2P
/* Invitation responses can be sent with the peer MAC as BSSID */
#endif /* CONFIG_IEEE80211BE */
#ifdef CONFIG_NAN_USD
!ether_addr_equal(mgmt->da, nan_network_id) &&
+ !ether_addr_equal(mgmt->da, p2p_network_id) &&
#endif /* CONFIG_NAN_USD */
!ether_addr_equal(mgmt->da, hapd->own_addr)) {
hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
NAN_DE_SUBSCRIBE,
};
+static const u8 p2p_network_id[ETH_ALEN] =
+{ 0x51, 0x6f, 0x9a, 0x02, 0x00, 0x00 };
+
struct nan_de_service {
int id;
enum nan_de_service_type type;
}
+bool nan_de_is_p2p_network_id(const u8 *addr)
+{
+ return ether_addr_equal(addr, p2p_network_id);
+}
+
+
struct nan_de * nan_de_init(const u8 *nmi, bool offload, bool ap,
unsigned int max_listen,
const struct nan_callbacks *cb)
{
enum nan_service_control_type type;
unsigned int wait_time = 100;
+ const u8 *network_id;
if (srv->type == NAN_DE_PUBLISH) {
int ms;
return;
}
- nan_de_tx_sdf(de, srv, wait_time, type, nan_network_id, nan_network_id,
+ if (srv->is_p2p)
+ network_id = p2p_network_id;
+ else
+ network_id = nan_network_id;
+
+ nan_de_tx_sdf(de, srv, wait_time, type, network_id, network_id,
req_instance_id, srv->ssi);
os_get_reltime(&srv->last_multicast);
}
size_t len = 0, sda_len, sdea_len;
u8 ctrl = 0;
u16 sdea_ctrl = 0;
+ const u8 *network_id;
/* Publish function processing of a receive Subscribe message */
wpabuf_put_buf(buf, srv->elems);
}
+ if (srv->is_p2p)
+ network_id = p2p_network_id;
+ else
+ network_id = nan_network_id;
+
if (srv->publish.solicited_multicast || !a3)
- a3 = nan_network_id;
+ a3 = network_id;
nan_de_tx(de, srv->freq, 100,
- srv->publish.solicited_multicast ? nan_network_id : peer_addr,
+ srv->publish.solicited_multicast ? network_id : peer_addr,
de->nmi, a3, buf);
wpabuf_free(buf);
{
struct nan_de_service *srv;
const u8 *a3;
+ const u8 *network_id;
if (handle < 1 || handle > NAN_DE_MAX_SERVICE)
return -1;
if (!srv)
return -1;
+ if (srv->is_p2p)
+ network_id = p2p_network_id;
+ else
+ network_id = nan_network_id;
+
if (srv->a3_set)
a3 = srv->a3;
else
- a3 = nan_network_id;
+ a3 = network_id;
nan_de_tx_sdf(de, srv, 100, NAN_SRV_CTRL_FOLLOW_UP,
peer_addr, a3, req_instance_id, ssi);