mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-29 05:39:24 +01:00
wired: Subscribe to PAE group address for packet reception
This commit is contained in:
parent
70d6c9c692
commit
15a19330da
@ -347,12 +347,32 @@ static char *read_devtype_from_uevent(const char *ifname)
|
|||||||
return devtype;
|
return devtype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int modify_membership(struct ethdev *dev, int optname)
|
||||||
|
{
|
||||||
|
struct packet_mreq mreq;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
fd = l_io_get_fd(pae_io);
|
||||||
|
if (fd < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memset(&mreq, 0, sizeof(mreq));
|
||||||
|
mreq.mr_ifindex = dev->index;
|
||||||
|
mreq.mr_type = PACKET_MR_MULTICAST;
|
||||||
|
mreq.mr_alen = ETH_ALEN;
|
||||||
|
memcpy(mreq.mr_address, pae_group_addr, ETH_ALEN);
|
||||||
|
|
||||||
|
return setsockopt(fd, SOL_PACKET, optname, &mreq, sizeof(mreq));
|
||||||
|
}
|
||||||
|
|
||||||
static void ethdev_free(void *data)
|
static void ethdev_free(void *data)
|
||||||
{
|
{
|
||||||
struct ethdev *dev = data;
|
struct ethdev *dev = data;
|
||||||
|
|
||||||
l_debug("Freeing device %s", dev->ifname);
|
l_debug("Freeing device %s", dev->ifname);
|
||||||
|
|
||||||
|
modify_membership(dev, PACKET_DROP_MEMBERSHIP);
|
||||||
|
|
||||||
l_queue_destroy(dev->eapol_sessions, eapol_free);
|
l_queue_destroy(dev->eapol_sessions, eapol_free);
|
||||||
|
|
||||||
l_dbus_object_remove_interface(dbus_app_get(), dev->path,
|
l_dbus_object_remove_interface(dbus_app_get(), dev->path,
|
||||||
@ -468,6 +488,8 @@ static void newlink_notify(const struct ifinfomsg *ifi, int bytes)
|
|||||||
|
|
||||||
l_debug("Creating device %u", dev->index);
|
l_debug("Creating device %u", dev->index);
|
||||||
|
|
||||||
|
modify_membership(dev, PACKET_ADD_MEMBERSHIP);
|
||||||
|
|
||||||
l_dbus_object_add_interface(dbus_app_get(), dev->path,
|
l_dbus_object_add_interface(dbus_app_get(), dev->path,
|
||||||
ADAPTER_INTERFACE, dev);
|
ADAPTER_INTERFACE, dev);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user