]>
Commit | Line | Data |
---|---|---|
ad02a0eb SH |
1 | #ifndef __LIBNETLINK_H__ |
2 | #define __LIBNETLINK_H__ 1 | |
3 | ||
4 | #include <asm/types.h> | |
5 | #include <linux/netlink.h> | |
6 | #include <linux/rtnetlink.h> | |
7 | ||
8 | struct rtnl_handle | |
9 | { | |
10 | int fd; | |
11 | struct sockaddr_nl local; | |
12 | struct sockaddr_nl peer; | |
13 | __u32 seq; | |
14 | __u32 dump; | |
15 | }; | |
16 | ||
17 | extern int rtnl_open(struct rtnl_handle *rth, unsigned subscriptions); | |
18 | extern int rtnl_open_byproto(struct rtnl_handle *rth, unsigned subscriptions, int protocol); | |
19 | extern void rtnl_close(struct rtnl_handle *rth); | |
20 | extern int rtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type); | |
21 | extern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len); | |
22 | ||
23 | typedef int (*rtnl_filter_t)(const struct sockaddr_nl *, | |
24 | struct nlmsghdr *n, void *); | |
25 | extern int rtnl_dump_filter(struct rtnl_handle *rth, rtnl_filter_t filter, | |
26 | void *arg1, | |
27 | rtnl_filter_t junk, | |
28 | void *arg2); | |
29 | extern int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer, | |
30 | unsigned groups, struct nlmsghdr *answer, | |
31 | rtnl_filter_t junk, | |
32 | void *jarg); | |
33 | extern int rtnl_send(struct rtnl_handle *rth, const char *buf, int); | |
34 | ||
35 | ||
36 | extern int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data); | |
37 | extern int addattr_l(struct nlmsghdr *n, int maxlen, int type, const void *data, int alen); | |
38 | extern int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len); | |
39 | extern int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data); | |
40 | extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, const void *data, int alen); | |
41 | ||
42 | extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len); | |
43 | extern int parse_rtattr_byindex(struct rtattr *tb[], int max, struct rtattr *rta, int len); | |
44 | ||
45 | #define parse_rtattr_nested(tb, max, rta) \ | |
46 | (parse_rtattr((tb), (max), RTA_DATA(rta), RTA_PAYLOAD(rta))) | |
47 | ||
48 | extern int rtnl_listen(struct rtnl_handle *, rtnl_filter_t handler, | |
49 | void *jarg); | |
50 | extern int rtnl_from_file(FILE *, rtnl_filter_t handler, | |
51 | void *jarg); | |
52 | ||
53 | #define NLMSG_TAIL(nmsg) \ | |
54 | ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len))) | |
55 | ||
56 | #endif /* __LIBNETLINK_H__ */ | |
57 |