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