xref: /aosp_15_r20/external/ethtool/netlink/bitset.h (revision 1b481fc3bb1b45d4cf28d1ec12969dc1055f555d)
1*1b481fc3SMaciej Żenczykowski /*
2*1b481fc3SMaciej Żenczykowski  * bitset.h - netlink bitset helpers
3*1b481fc3SMaciej Żenczykowski  *
4*1b481fc3SMaciej Żenczykowski  * Declarations of helpers for handling ethtool netlink bitsets.
5*1b481fc3SMaciej Żenczykowski  */
6*1b481fc3SMaciej Żenczykowski 
7*1b481fc3SMaciej Żenczykowski #ifndef ETHTOOL_NETLINK_BITSET_H__
8*1b481fc3SMaciej Żenczykowski #define ETHTOOL_NETLINK_BITSET_H__
9*1b481fc3SMaciej Żenczykowski 
10*1b481fc3SMaciej Żenczykowski #include <libmnl/libmnl.h>
11*1b481fc3SMaciej Żenczykowski #include <linux/netlink.h>
12*1b481fc3SMaciej Żenczykowski #include <linux/genetlink.h>
13*1b481fc3SMaciej Żenczykowski #include <linux/ethtool_netlink.h>
14*1b481fc3SMaciej Żenczykowski #include "strset.h"
15*1b481fc3SMaciej Żenczykowski 
16*1b481fc3SMaciej Żenczykowski typedef void (*bitset_walk_callback)(unsigned int, const char *, bool, void *);
17*1b481fc3SMaciej Żenczykowski 
18*1b481fc3SMaciej Żenczykowski uint32_t bitset_get_count(const struct nlattr *bitset, int *retptr);
19*1b481fc3SMaciej Żenczykowski bool bitset_get_bit(const struct nlattr *bitset, bool mask, unsigned int idx,
20*1b481fc3SMaciej Żenczykowski 		    int *retptr);
21*1b481fc3SMaciej Żenczykowski bool bitset_is_compact(const struct nlattr *bitset);
22*1b481fc3SMaciej Żenczykowski bool bitset_is_empty(const struct nlattr *bitset, bool mask, int *retptr);
23*1b481fc3SMaciej Żenczykowski uint32_t *get_compact_bitset_value(const struct nlattr *bitset);
24*1b481fc3SMaciej Żenczykowski uint32_t *get_compact_bitset_mask(const struct nlattr *bitset);
25*1b481fc3SMaciej Żenczykowski int walk_bitset(const struct nlattr *bitset, const struct stringset *labels,
26*1b481fc3SMaciej Żenczykowski 		bitset_walk_callback cb, void *data);
27*1b481fc3SMaciej Żenczykowski 
28*1b481fc3SMaciej Żenczykowski #endif /* ETHTOOL_NETLINK_BITSET_H__ */
29