111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __LINUX_NETLINK_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __LINUX_NETLINK_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/socket.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/types.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_ROUTE 0
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_UNUSED 1
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_USERSOCK 2
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_FIREWALL 3
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_INET_DIAG 4
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_NFLOG 5
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_XFRM 6
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_SELINUX 7
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_ISCSI 8
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_AUDIT 9
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_FIB_LOOKUP 10
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_CONNECTOR 11
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_NETFILTER 12
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_IP6_FW 13
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_DNRTMSG 14
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_KOBJECT_UEVENT 15
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_GENERIC 16
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MAX_LINKS 32
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct sockaddr_nl
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sa_family_t nl_family;
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short nl_pad;
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nl_pid;
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nl_groups;
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nlmsghdr
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nlmsg_len;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 nlmsg_type;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 nlmsg_flags;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nlmsg_seq;
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nlmsg_pid;
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_REQUEST 1
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_MULTI 2
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_ACK 4
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_ECHO 8
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_ROOT 0x100
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_MATCH 0x200
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_ATOMIC 0x400
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_REPLACE 0x100
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_EXCL 0x200
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_CREATE 0x400
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLM_F_APPEND 0x800
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_ALIGNTO 4
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len),   (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len <= (len))
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_NOOP 0x1
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_ERROR 0x2
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_DONE 0x3
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_OVERRUN 0x4
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLMSG_MIN_TYPE 0x10
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nlmsgerr
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int error;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nlmsghdr msg;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_ADD_MEMBERSHIP 1
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_DROP_MEMBERSHIP 2
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETLINK_PKTINFO 3
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nl_pktinfo
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 group;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NET_MAJOR 36
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NETLINK_UNCONNECTED = 0,
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert NETLINK_CONNECTED,
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nlattr
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 nla_len;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 nla_type;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLA_ALIGNTO 4
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
120