]>
Commit | Line | Data |
---|---|---|
a032b68d | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
60f067b4 JS |
2 | #pragma once |
3 | ||
086111aa LB |
4 | #include <errno.h> |
5 | ||
ea0999c9 | 6 | #include "sd-netlink.h" |
db2df898 | 7 | |
086111aa LB |
8 | typedef enum NLAType { |
9 | NETLINK_TYPE_UNSPEC, /* NLA_UNSPEC */ | |
10 | NETLINK_TYPE_BINARY, /* NLA_BINARY */ | |
11 | NETLINK_TYPE_FLAG, /* NLA_FLAG */ | |
fb183854 MP |
12 | NETLINK_TYPE_U8, /* NLA_U8 */ |
13 | NETLINK_TYPE_U16, /* NLA_U16 */ | |
14 | NETLINK_TYPE_U32, /* NLA_U32 */ | |
15 | NETLINK_TYPE_U64, /* NLA_U64 */ | |
a10f5d05 MB |
16 | NETLINK_TYPE_S8, /* NLA_S8 */ |
17 | NETLINK_TYPE_S16, /* NLA_S16 */ | |
18 | NETLINK_TYPE_S32, /* NLA_S32 */ | |
19 | NETLINK_TYPE_S64, /* NLA_S64 */ | |
fb183854 | 20 | NETLINK_TYPE_STRING, /* NLA_STRING */ |
086111aa LB |
21 | NETLINK_TYPE_BITFIELD32, /* NLA_BITFIELD32 */ |
22 | NETLINK_TYPE_REJECT, /* NLA_REJECT */ | |
fb183854 MP |
23 | NETLINK_TYPE_IN_ADDR, |
24 | NETLINK_TYPE_ETHER_ADDR, | |
25 | NETLINK_TYPE_CACHE_INFO, | |
7c20daf6 | 26 | NETLINK_TYPE_SOCKADDR, |
086111aa LB |
27 | NETLINK_TYPE_NESTED, /* NLA_NESTED */ |
28 | NETLINK_TYPE_NESTED_UNION_BY_STRING, | |
29 | NETLINK_TYPE_NESTED_UNION_BY_FAMILY, | |
30 | _NETLINK_TYPE_MAX, | |
31 | _NETLINK_TYPE_INVALID = -EINVAL, | |
32 | } NLAType; | |
33 | ||
34 | typedef struct NLAPolicy NLAPolicy; | |
35 | typedef struct NLAPolicySet NLAPolicySet; | |
36 | typedef struct NLAPolicySetUnion NLAPolicySetUnion; | |
37 | ||
38 | const NLAPolicy *rtnl_get_policy(uint16_t nlmsg_type); | |
39 | const NLAPolicy *nfnl_get_policy(uint16_t nlmsg_type); | |
40 | const NLAPolicySet *genl_get_policy_set_by_name(const char *name); | |
41 | int genl_get_policy_set_and_header_size( | |
ea0999c9 MB |
42 | sd_netlink *nl, |
43 | uint16_t id, | |
086111aa | 44 | const NLAPolicySet **ret_policy_set, |
ea0999c9 | 45 | size_t *ret_header_size); |
60f067b4 | 46 | |
086111aa LB |
47 | NLAType policy_get_type(const NLAPolicy *policy); |
48 | size_t policy_get_size(const NLAPolicy *policy); | |
49 | const NLAPolicySet *policy_get_policy_set(const NLAPolicy *policy); | |
50 | const NLAPolicySetUnion *policy_get_policy_set_union(const NLAPolicy *policy); | |
3a6ce677 | 51 | |
086111aa | 52 | int netlink_get_policy_set_and_header_size( |
ea0999c9 MB |
53 | sd_netlink *nl, |
54 | uint16_t type, | |
086111aa | 55 | const NLAPolicySet **ret_policy_set, |
ea0999c9 | 56 | size_t *ret_header_size); |
3a6ce677 | 57 | |
086111aa LB |
58 | const NLAPolicy *policy_set_get_policy(const NLAPolicySet *policy_set, uint16_t attr_type); |
59 | const NLAPolicySet *policy_set_get_policy_set(const NLAPolicySet *type_system, uint16_t attr_type); | |
60 | const NLAPolicySetUnion *policy_set_get_policy_set_union(const NLAPolicySet *type_system, uint16_t attr_type); | |
61 | uint16_t policy_set_union_get_match_attribute(const NLAPolicySetUnion *policy_set_union); | |
62 | const NLAPolicySet *policy_set_union_get_policy_set_by_string(const NLAPolicySetUnion *type_system_union, const char *string); | |
63 | const NLAPolicySet *policy_set_union_get_policy_set_by_family(const NLAPolicySetUnion *type_system_union, int family); |