/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _UAPI__LINUX_NETLINK_H
#define _UAPI__LINUX_NETLINK_H
#include <linux/const.h>
#include <linux/socket.h>
#include <linux/types.h>
#define NETLINK_ROUTE 0
#define NETLINK_UNUSED 1
#define NETLINK_USERSOCK 2
#define NETLINK_FIREWALL 3
#define NETLINK_SOCK_DIAG 4
#define NETLINK_NFLOG 5
#define NETLINK_XFRM 6
#define NETLINK_SELINUX 7
#define NETLINK_ISCSI 8
#define NETLINK_AUDIT 9
#define NETLINK_FIB_LOOKUP 10
#define NETLINK_CONNECTOR 11
#define NETLINK_NETFILTER 12
#define NETLINK_IP6_FW 13
#define NETLINK_DNRTMSG 14
#define NETLINK_KOBJECT_UEVENT 15
#define NETLINK_GENERIC 16
#define NETLINK_SCSITRANSPORT 18
#define NETLINK_ECRYPTFS 19
#define NETLINK_RDMA 20
#define NETLINK_CRYPTO 21
#define NETLINK_SMC 22
#define NETLINK_INET_DIAG NETLINK_SOCK_DIAG
#define MAX_LINKS 32
struct sockaddr_nl {
  __kernel_sa_family_t nl_family;
  unsigned short nl_pad;
  __u32 nl_pid;
  __u32 nl_groups;
};
struct nlmsghdr {
  __u32 nlmsg_len;
  __u16 nlmsg_type;
  __u16 nlmsg_flags;
  __u32 nlmsg_seq;
  __u32 nlmsg_pid;
};
#define NLM_F_REQUEST 0x01
#define NLM_F_MULTI 0x02
#define NLM_F_ACK 0x04
#define NLM_F_ECHO 0x08
#define NLM_F_DUMP_INTR 0x10
#define NLM_F_DUMP_FILTERED 0x20
#define NLM_F_ROOT 0x100
#define NLM_F_MATCH 0x200
#define NLM_F_ATOMIC 0x400
#define NLM_F_DUMP (NLM_F_ROOT | NLM_F_MATCH)
#define NLM_F_REPLACE 0x100
#define NLM_F_EXCL 0x200
#define NLM_F_CREATE 0x400
#define NLM_F_APPEND 0x800
#define NLM_F_NONREC 0x100
#define NLM_F_BULK 0x200
#define NLM_F_CAPPED 0x100
#define NLM_F_ACK_TLVS 0x200
#define NLMSG_ALIGNTO 4U
#define NLMSG_ALIGN(len) (((len) + NLMSG_ALIGNTO - 1) & ~(NLMSG_ALIGNTO - 1))
#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
#define NLMSG_DATA(nlh) ((void *) (((char *) nlh) + NLMSG_HDRLEN))
#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), (struct nlmsghdr *) (((char *) (nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
#define NLMSG_OK(nlh,len) ((len) >= (int) sizeof(struct nlmsghdr) && (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && (nlh)->nlmsg_len <= (len))
#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
#define NLMSG_NOOP 0x1
#define NLMSG_ERROR 0x2
#define NLMSG_DONE 0x3
#define NLMSG_OVERRUN 0x4
#define NLMSG_MIN_TYPE 0x10
struct nlmsgerr {
  int error;
  struct nlmsghdr msg;
};
enum nlmsgerr_attrs {
  NLMSGERR_ATTR_UNUSED,
  NLMSGERR_ATTR_MSG,
  NLMSGERR_ATTR_OFFS,
  NLMSGERR_ATTR_COOKIE,
  NLMSGERR_ATTR_POLICY,
  __NLMSGERR_ATTR_MAX,
  NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
};
#define NETLINK_ADD_MEMBERSHIP 1
#define NETLINK_DROP_MEMBERSHIP 2
#define NETLINK_PKTINFO 3
#define NETLINK_BROADCAST_ERROR 4
#define NETLINK_NO_ENOBUFS 5
#define NETLINK_RX_RING 6
#define NETLINK_TX_RING 7
#define NETLINK_LISTEN_ALL_NSID 8
#define NETLINK_LIST_MEMBERSHIPS 9
#define NETLINK_CAP_ACK 10
#define NETLINK_EXT_ACK 11
#define NETLINK_GET_STRICT_CHK 12
struct nl_pktinfo {
  __u32 group;
};
struct nl_mmap_req {
  unsigned int nm_block_size;
  unsigned int nm_block_nr;
  unsigned int nm_frame_size;
  unsigned int nm_frame_nr;
};
struct nl_mmap_hdr {
  unsigned int nm_status;
  unsigned int nm_len;
  __u32 nm_group;
  __u32 nm_pid;
  __u32 nm_uid;
  __u32 nm_gid;
};
enum nl_mmap_status {
  NL_MMAP_STATUS_UNUSED,
  NL_MMAP_STATUS_RESERVED,
  NL_MMAP_STATUS_VALID,
  NL_MMAP_STATUS_COPY,
  NL_MMAP_STATUS_SKIP,
};
#define NL_MMAP_MSG_ALIGNMENT NLMSG_ALIGNTO
#define NL_MMAP_MSG_ALIGN(sz) __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
#define NL_MMAP_HDRLEN NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
#define NET_MAJOR 36
enum {
  NETLINK_UNCONNECTED = 0,
  NETLINK_CONNECTED,
};
struct nlattr {
  __u16 nla_len;
  __u16 nla_type;
};
#define NLA_F_NESTED (1 << 15)
#define NLA_F_NET_BYTEORDER (1 << 14)
#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
#define NLA_ALIGNTO 4
#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
struct nla_bitfield32 {
  __u32 value;
  __u32 selector;
};
enum netlink_attribute_type {
  NL_ATTR_TYPE_INVALID,
  NL_ATTR_TYPE_FLAG,
  NL_ATTR_TYPE_U8,
  NL_ATTR_TYPE_U16,
  NL_ATTR_TYPE_U32,
  NL_ATTR_TYPE_U64,
  NL_ATTR_TYPE_S8,
  NL_ATTR_TYPE_S16,
  NL_ATTR_TYPE_S32,
  NL_ATTR_TYPE_S64,
  NL_ATTR_TYPE_BINARY,
  NL_ATTR_TYPE_STRING,
  NL_ATTR_TYPE_NUL_STRING,
  NL_ATTR_TYPE_NESTED,
  NL_ATTR_TYPE_NESTED_ARRAY,
  NL_ATTR_TYPE_BITFIELD32,
};
enum netlink_policy_type_attr {
  NL_POLICY_TYPE_ATTR_UNSPEC,
  NL_POLICY_TYPE_ATTR_TYPE,
  NL_POLICY_TYPE_ATTR_MIN_VALUE_S,
  NL_POLICY_TYPE_ATTR_MAX_VALUE_S,
  NL_POLICY_TYPE_ATTR_MIN_VALUE_U,
  NL_POLICY_TYPE_ATTR_MAX_VALUE_U,
  NL_POLICY_TYPE_ATTR_MIN_LENGTH,
  NL_POLICY_TYPE_ATTR_MAX_LENGTH,
  NL_POLICY_TYPE_ATTR_POLICY_IDX,
  NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE,
  NL_POLICY_TYPE_ATTR_BITFIELD32_MASK,
  NL_POLICY_TYPE_ATTR_PAD,
  NL_POLICY_TYPE_ATTR_MASK,
  __NL_POLICY_TYPE_ATTR_MAX,
  NL_POLICY_TYPE_ATTR_MAX = __NL_POLICY_TYPE_ATTR_MAX - 1
};
#endif
