libnetlink.h revision 6dc9f016347441fbf94cf851c054b0f45ba32c1c
1aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#ifndef __LIBNETLINK_H__
2aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#define __LIBNETLINK_H__ 1
3aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
4aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <asm/types.h>
5aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <linux/netlink.h>
6aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#include <linux/rtnetlink.h>
7aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
8aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerstruct rtnl_handle
9aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger{
10aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger	int			fd;
11aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger	struct sockaddr_nl	local;
12aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger	struct sockaddr_nl	peer;
13aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger	__u32			seq;
14aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger	__u32			dump;
15aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger};
16aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
17aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int rtnl_open(struct rtnl_handle *rth, unsigned subscriptions);
18c7699875bee00fbcd057fc62c30d6560b044e007net[shemminger]!shemmingerextern int rtnl_open_byproto(struct rtnl_handle *rth, unsigned subscriptions, int protocol);
19aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern void rtnl_close(struct rtnl_handle *rth);
20aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int rtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type);
21aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len);
226dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger
236dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingertypedef int (*rtnl_filter_t)(const struct sockaddr_nl *, const struct nlmsghdr *n, void *);
246dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int rtnl_dump_filter(struct rtnl_handle *rth, rtnl_filter_t filter,
25aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger			    void *arg1,
266dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger			    rtnl_filter_t junk,
27aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger			    void *arg2);
28aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
29aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger		     unsigned groups, struct nlmsghdr *answer,
306dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemminger		     rtnl_filter_t junk,
31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger		     void *jarg);
326dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int rtnl_send(struct rtnl_handle *rth, const char *buf, int);
33aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
34aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
35aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data);
366dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int addattr_l(struct nlmsghdr *n, int maxlen, int type, const void *data, int alen);
37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data);
386dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, const void *data, int alen);
39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
40aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerextern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len);
41c7699875bee00fbcd057fc62c30d6560b044e007net[shemminger]!shemmingerextern int parse_rtattr_byindex(struct rtattr *tb[], int max, struct rtattr *rta, int len);
42aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
436dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int rtnl_listen(struct rtnl_handle *, rtnl_filter_t handler,
44aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger		       void *jarg);
456dc9f016347441fbf94cf851c054b0f45ba32c1cosdl.net!shemmingerextern int rtnl_from_file(FILE *, rtnl_filter_t handler,
46aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger		       void *jarg);
47aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
48aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#endif /* __LIBNETLINK_H__ */
49aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger
50