]> git.proxmox.com Git - systemd.git/blame - src/libsystemd/sd-netlink/netlink-types.h
bump version to 252.11-pve1
[systemd.git] / src / libsystemd / sd-netlink / netlink-types.h
CommitLineData
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
8typedef 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
34typedef struct NLAPolicy NLAPolicy;
35typedef struct NLAPolicySet NLAPolicySet;
36typedef struct NLAPolicySetUnion NLAPolicySetUnion;
37
38const NLAPolicy *rtnl_get_policy(uint16_t nlmsg_type);
39const NLAPolicy *nfnl_get_policy(uint16_t nlmsg_type);
40const NLAPolicySet *genl_get_policy_set_by_name(const char *name);
41int 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
47NLAType policy_get_type(const NLAPolicy *policy);
48size_t policy_get_size(const NLAPolicy *policy);
49const NLAPolicySet *policy_get_policy_set(const NLAPolicy *policy);
50const NLAPolicySetUnion *policy_get_policy_set_union(const NLAPolicy *policy);
3a6ce677 51
086111aa 52int 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
58const NLAPolicy *policy_set_get_policy(const NLAPolicySet *policy_set, uint16_t attr_type);
59const NLAPolicySet *policy_set_get_policy_set(const NLAPolicySet *type_system, uint16_t attr_type);
60const NLAPolicySetUnion *policy_set_get_policy_set_union(const NLAPolicySet *type_system, uint16_t attr_type);
61uint16_t policy_set_union_get_match_attribute(const NLAPolicySetUnion *policy_set_union);
62const NLAPolicySet *policy_set_union_get_policy_set_by_string(const NLAPolicySetUnion *type_system_union, const char *string);
63const NLAPolicySet *policy_set_union_get_policy_set_by_family(const NLAPolicySetUnion *type_system_union, int family);