libnl
3.2.24-rc1
Main Page
Related Pages
Modules
Data Structures
msg.h
1
/*
2
* netlink/msg.c Netlink Messages Interface
3
*
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation version 2.1
7
* of the License.
8
*
9
* Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
10
*/
11
12
#ifndef NETLINK_MSG_H_
13
#define NETLINK_MSG_H_
14
15
#include <netlink/netlink.h>
16
#include <netlink/object.h>
17
#include <netlink/attr.h>
18
19
#ifdef __cplusplus
20
extern
"C"
{
21
#endif
22
23
#define NL_DONTPAD 0
24
25
/**
26
* @ingroup msg
27
* @brief
28
* Will cause the netlink port to be set to the port assigned to
29
* the netlink icoket ust before sending the message off.
30
*
31
* @note Requires the use of nl_send_auto()!
32
*/
33
#define NL_AUTO_PORT 0
34
#define NL_AUTO_PID NL_AUTO_PORT
35
36
/**
37
* @ingroup msg
38
* @brief
39
* May be used to refer to a sequence number which should be
40
* automatically set just before sending the message off.
41
*
42
* @note Requires the use of nl_send_auto()!
43
*/
44
#define NL_AUTO_SEQ 0
45
46
struct
nl_msg;
47
struct
nl_tree;
48
struct
ucred;
49
50
extern
int
nlmsg_size
(
int
);
51
extern
int
nlmsg_total_size
(
int
);
52
extern
int
nlmsg_padlen
(
int
);
53
54
extern
void
*
nlmsg_data
(
const
struct
nlmsghdr *);
55
extern
int
nlmsg_datalen
(
const
struct
nlmsghdr *);
56
extern
void
* nlmsg_tail(
const
struct
nlmsghdr *);
57
58
/* attribute access */
59
extern
struct
nlattr *
nlmsg_attrdata
(
const
struct
nlmsghdr *,
int
);
60
extern
int
nlmsg_attrlen
(
const
struct
nlmsghdr *,
int
);
61
62
/* message parsing */
63
extern
int
nlmsg_valid_hdr(
const
struct
nlmsghdr *,
int
);
64
extern
int
nlmsg_ok
(
const
struct
nlmsghdr *,
int
);
65
extern
struct
nlmsghdr *
nlmsg_next
(
struct
nlmsghdr *,
int
*);
66
extern
int
nlmsg_parse
(
struct
nlmsghdr *,
int
,
struct
nlattr **,
67
int
,
struct
nla_policy
*);
68
extern
struct
nlattr *
nlmsg_find_attr
(
struct
nlmsghdr *,
int
,
int
);
69
extern
int
nlmsg_validate
(
struct
nlmsghdr *,
int
,
int
,
70
struct
nla_policy
*);
71
72
extern
struct
nl_msg *
nlmsg_alloc
(
void
);
73
extern
struct
nl_msg *
nlmsg_alloc_size
(
size_t
);
74
extern
struct
nl_msg *
nlmsg_alloc_simple
(
int
,
int
);
75
extern
void
nlmsg_set_default_size
(
size_t
);
76
extern
struct
nl_msg *
nlmsg_inherit
(
struct
nlmsghdr *);
77
extern
struct
nl_msg *
nlmsg_convert
(
struct
nlmsghdr *);
78
extern
void
*
nlmsg_reserve
(
struct
nl_msg *,
size_t
,
int
);
79
extern
int
nlmsg_append
(
struct
nl_msg *,
void
*,
size_t
,
int
);
80
extern
int
nlmsg_expand
(
struct
nl_msg *,
size_t
);
81
82
extern
struct
nlmsghdr *
nlmsg_put
(
struct
nl_msg *, uint32_t, uint32_t,
83
int
,
int
,
int
);
84
extern
struct
nlmsghdr *
nlmsg_hdr
(
struct
nl_msg *);
85
extern
void
nlmsg_get
(
struct
nl_msg *);
86
extern
void
nlmsg_free
(
struct
nl_msg *);
87
88
/* attribute modification */
89
extern
void
nlmsg_set_proto(
struct
nl_msg *,
int
);
90
extern
int
nlmsg_get_proto(
struct
nl_msg *);
91
extern
size_t
nlmsg_get_max_size(
struct
nl_msg *);
92
extern
void
nlmsg_set_src(
struct
nl_msg *,
struct
sockaddr_nl *);
93
extern
struct
sockaddr_nl *nlmsg_get_src(
struct
nl_msg *);
94
extern
void
nlmsg_set_dst(
struct
nl_msg *,
struct
sockaddr_nl *);
95
extern
struct
sockaddr_nl *nlmsg_get_dst(
struct
nl_msg *);
96
extern
void
nlmsg_set_creds(
struct
nl_msg *,
struct
ucred *);
97
extern
struct
ucred * nlmsg_get_creds(
struct
nl_msg *);
98
99
extern
char
* nl_nlmsgtype2str(
int
,
char
*,
size_t
);
100
extern
int
nl_str2nlmsgtype(
const
char
*);
101
102
extern
char
* nl_nlmsg_flags2str(
int
,
char
*,
size_t
);
103
104
extern
int
nl_msg_parse(
struct
nl_msg *,
105
void
(*cb)(
struct
nl_object *,
void
*),
106
void
*);
107
108
extern
void
nl_msg_dump
(
struct
nl_msg *, FILE *);
109
110
/**
111
* @name Iterators
112
* @{
113
*/
114
115
/**
116
* @ingroup msg
117
* Iterate over a stream of attributes in a message
118
* @arg pos loop counter, set to current attribute
119
* @arg nlh netlink message header
120
* @arg hdrlen length of family header
121
* @arg rem initialized to len, holds bytes currently remaining in stream
122
*/
123
#define nlmsg_for_each_attr(pos, nlh, hdrlen, rem) \
124
nla_for_each_attr(pos, nlmsg_attrdata(nlh, hdrlen), \
125
nlmsg_attrlen(nlh, hdrlen), rem)
126
127
/**
128
* Iterate over a stream of messages
129
* @arg pos loop counter, set to current message
130
* @arg head head of message stream
131
* @arg len length of message stream
132
*/
133
#define nlmsg_for_each(pos, head, len) \
134
for (int rem = len, pos = head; \
135
nlmsg_ok(pos, rem); \
136
pos = nlmsg_next(pos, &rem))
137
138
#define nlmsg_for_each_msg(pos, head, len, rem) \
139
nlmsg_for_each(pos, head, len)
140
141
/** @} */
142
143
#ifdef __cplusplus
144
}
145
#endif
146
147
#endif
include
netlink
msg.h
Generated on Tue Jan 21 2014 20:35:45 for libnl by
1.8.3.1