mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-26 18:59:22 +01:00
netdev: Add IFTYPE_ADHOC interface type
netdev_set_iftype and get_iftype were also changed to account for all three interface types.
This commit is contained in:
parent
efecce772f
commit
54cd428c94
32
src/netdev.c
32
src/netdev.c
@ -269,8 +269,18 @@ uint32_t netdev_get_ifindex(struct netdev *netdev)
|
|||||||
|
|
||||||
enum netdev_iftype netdev_get_iftype(struct netdev *netdev)
|
enum netdev_iftype netdev_get_iftype(struct netdev *netdev)
|
||||||
{
|
{
|
||||||
return netdev->type == NL80211_IFTYPE_AP ?
|
switch (netdev->type) {
|
||||||
NETDEV_IFTYPE_AP : NETDEV_IFTYPE_STATION;
|
case NL80211_IFTYPE_STATION:
|
||||||
|
return NETDEV_IFTYPE_STATION;
|
||||||
|
case NL80211_IFTYPE_AP:
|
||||||
|
return NETDEV_IFTYPE_AP;
|
||||||
|
case NL80211_IFTYPE_ADHOC:
|
||||||
|
return NETDEV_IFTYPE_ADHOC;
|
||||||
|
default:
|
||||||
|
/* cant really do much here */
|
||||||
|
l_error("invalid iftype %u", netdev->type);
|
||||||
|
return NETDEV_IFTYPE_STATION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *netdev_get_name(struct netdev *netdev)
|
const char *netdev_get_name(struct netdev *netdev)
|
||||||
@ -3465,8 +3475,22 @@ static int netdev_cqm_rssi_update(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)
|
||||||
{
|
{
|
||||||
struct l_genl_msg *msg;
|
struct l_genl_msg *msg;
|
||||||
uint32_t iftype = (type == NETDEV_IFTYPE_AP) ?
|
uint32_t iftype;
|
||||||
NL80211_IFTYPE_AP : NL80211_IFTYPE_STATION;
|
|
||||||
|
switch (type) {
|
||||||
|
case NETDEV_IFTYPE_AP:
|
||||||
|
iftype = NL80211_IFTYPE_AP;
|
||||||
|
break;
|
||||||
|
case NETDEV_IFTYPE_ADHOC:
|
||||||
|
iftype = NL80211_IFTYPE_ADHOC;
|
||||||
|
break;
|
||||||
|
case NETDEV_IFTYPE_STATION:
|
||||||
|
iftype = NL80211_IFTYPE_STATION;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
l_error("unsupported iftype %u", type);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
msg = l_genl_msg_new_sized(NL80211_CMD_SET_INTERFACE, 32);
|
msg = l_genl_msg_new_sized(NL80211_CMD_SET_INTERFACE, 32);
|
||||||
l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index);
|
l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index);
|
||||||
|
@ -58,6 +58,7 @@ enum netdev_watch_event {
|
|||||||
enum netdev_iftype {
|
enum netdev_iftype {
|
||||||
NETDEV_IFTYPE_STATION,
|
NETDEV_IFTYPE_STATION,
|
||||||
NETDEV_IFTYPE_AP,
|
NETDEV_IFTYPE_AP,
|
||||||
|
NETDEV_IFTYPE_ADHOC
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*netdev_command_func_t) (bool result, void *user_data);
|
typedef void (*netdev_command_func_t) (bool result, void *user_data);
|
||||||
|
Loading…
Reference in New Issue
Block a user