mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-02-01 22:34:07 +01:00
netdev: Add netdev_get_wdev_id
This commit is contained in:
parent
bc45f98f36
commit
8cada9d1fc
22
src/netdev.c
22
src/netdev.c
@ -83,6 +83,7 @@ struct netdev_handshake_state {
|
|||||||
|
|
||||||
struct netdev {
|
struct netdev {
|
||||||
uint32_t index;
|
uint32_t index;
|
||||||
|
uint64_t wdev_id;
|
||||||
char name[IFNAMSIZ];
|
char name[IFNAMSIZ];
|
||||||
uint32_t type;
|
uint32_t type;
|
||||||
uint8_t addr[ETH_ALEN];
|
uint8_t addr[ETH_ALEN];
|
||||||
@ -259,6 +260,11 @@ uint32_t netdev_get_ifindex(struct netdev *netdev)
|
|||||||
return netdev->index;
|
return netdev->index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t netdev_get_wdev_id(struct netdev *netdev)
|
||||||
|
{
|
||||||
|
return netdev->wdev_id;
|
||||||
|
}
|
||||||
|
|
||||||
enum netdev_iftype netdev_get_iftype(struct netdev *netdev)
|
enum netdev_iftype netdev_get_iftype(struct netdev *netdev)
|
||||||
{
|
{
|
||||||
switch (netdev->type) {
|
switch (netdev->type) {
|
||||||
@ -4385,6 +4391,7 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, bool random_mac)
|
|||||||
uint16_t ifname_len = 0;
|
uint16_t ifname_len = 0;
|
||||||
const uint8_t *ifaddr = NULL;
|
const uint8_t *ifaddr = NULL;
|
||||||
const uint32_t *ifindex = NULL, *iftype = NULL;
|
const uint32_t *ifindex = NULL, *iftype = NULL;
|
||||||
|
const uint64_t *wdev = NULL;
|
||||||
struct netdev *netdev;
|
struct netdev *netdev;
|
||||||
struct wiphy *wiphy = NULL;
|
struct wiphy *wiphy = NULL;
|
||||||
struct ifinfomsg *rtmmsg;
|
struct ifinfomsg *rtmmsg;
|
||||||
@ -4411,6 +4418,15 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, bool random_mac)
|
|||||||
ifindex = data;
|
ifindex = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NL80211_ATTR_WDEV:
|
||||||
|
if (len != sizeof(uint64_t)) {
|
||||||
|
l_warn("Invalid wdev attribute");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
wdev = data;
|
||||||
|
break;
|
||||||
|
|
||||||
case NL80211_ATTR_IFNAME:
|
case NL80211_ATTR_IFNAME:
|
||||||
if (len > IFNAMSIZ) {
|
if (len > IFNAMSIZ) {
|
||||||
l_warn("Invalid interface name attribute");
|
l_warn("Invalid interface name attribute");
|
||||||
@ -4455,7 +4471,7 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, bool random_mac)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wiphy || !ifindex || !ifaddr || !ifname) {
|
if (!wiphy || !ifindex || !wdev || !ifaddr || !ifname) {
|
||||||
l_warn("Unable to parse interface information");
|
l_warn("Unable to parse interface information");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -4489,6 +4505,7 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, bool random_mac)
|
|||||||
|
|
||||||
netdev = l_new(struct netdev, 1);
|
netdev = l_new(struct netdev, 1);
|
||||||
netdev->index = *ifindex;
|
netdev->index = *ifindex;
|
||||||
|
netdev->wdev_id = *wdev;
|
||||||
netdev->type = *iftype;
|
netdev->type = *iftype;
|
||||||
netdev->rekey_offload_support = true;
|
netdev->rekey_offload_support = true;
|
||||||
memcpy(netdev->addr, ifaddr, sizeof(netdev->addr));
|
memcpy(netdev->addr, ifaddr, sizeof(netdev->addr));
|
||||||
@ -4508,7 +4525,8 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, bool random_mac)
|
|||||||
|
|
||||||
l_queue_push_tail(netdev_list, netdev);
|
l_queue_push_tail(netdev_list, netdev);
|
||||||
|
|
||||||
l_debug("Created interface %s[%d]", netdev->name, netdev->index);
|
l_debug("Created interface %s[%d %" PRIx64 "]", netdev->name,
|
||||||
|
netdev->index, netdev->wdev_id);
|
||||||
|
|
||||||
/* Query interface flags */
|
/* Query interface flags */
|
||||||
bufsize = NLMSG_ALIGN(sizeof(struct ifinfomsg));
|
bufsize = NLMSG_ALIGN(sizeof(struct ifinfomsg));
|
||||||
|
@ -127,6 +127,7 @@ typedef void (*netdev_station_watch_func_t)(struct netdev *netdev,
|
|||||||
struct wiphy *netdev_get_wiphy(struct netdev *netdev);
|
struct wiphy *netdev_get_wiphy(struct netdev *netdev);
|
||||||
const uint8_t *netdev_get_address(struct netdev *netdev);
|
const uint8_t *netdev_get_address(struct netdev *netdev);
|
||||||
uint32_t netdev_get_ifindex(struct netdev *netdev);
|
uint32_t netdev_get_ifindex(struct netdev *netdev);
|
||||||
|
uint64_t netdev_get_wdev_id(struct netdev *netdev);
|
||||||
enum netdev_iftype netdev_get_iftype(struct netdev *netdev);
|
enum netdev_iftype netdev_get_iftype(struct netdev *netdev);
|
||||||
int netdev_set_iftype(struct netdev *netdev, enum netdev_iftype type,
|
int netdev_set_iftype(struct netdev *netdev, enum netdev_iftype type,
|
||||||
netdev_command_cb_t cb, void *user_data,
|
netdev_command_cb_t cb, void *user_data,
|
||||||
|
Loading…
Reference in New Issue
Block a user