// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build ignore

/*
Input to cgo -godefs.  See README.md
*/

// +godefs map struct_in_addr [4]byte /* in_addr */
// +godefs map struct_in6_addr [16]byte /* in6_addr */

package unix

/*
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#define _GNU_SOURCE

#include <dirent.h>
#include <poll.h>
#include <sched.h>
#include <signal.h>
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <utime.h>

#include <netinet/in.h>
#include <netinet/tcp.h>

#include <sys/epoll.h>
#include <sys/inotify.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/mount.h>
#include <sys/param.h>
#include <sys/ptrace.h>
#include <sys/resource.h>
#include <sys/select.h>
#include <sys/signal.h>
#include <sys/signalfd.h>
#include <sys/statfs.h>
#include <sys/statvfs.h>
#include <sys/sysinfo.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/timex.h>
#include <sys/un.h>
#include <sys/user.h>
#include <sys/utsname.h>
#include <sys/wait.h>

#if defined(__sparc__)
// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the
// definition in glibc. Duplicate the kernel version here.
#if defined(__arch64__)
typedef unsigned int tcflag_t;
#else
typedef unsigned long tcflag_t;
#endif

struct termios2 {
	tcflag_t c_iflag;
	tcflag_t c_oflag;
	tcflag_t c_cflag;
	tcflag_t c_lflag;
	unsigned char c_line;
	unsigned char c_cc[19];
	unsigned int c_ispeed;
	unsigned int c_ospeed;
};
#else
#include <asm/termbits.h>
#endif
#include <asm/ptrace.h>

#include <linux/blkpg.h>
#include <linux/bpf.h>
#include <linux/can.h>
#include <linux/capability.h>
#include <linux/cgroupstats.h>
#include <linux/cryptouser.h>
#include <linux/devlink.h>
#include <linux/errqueue.h>
#include <linux/fanotify.h>
#include <linux/filter.h>
#include <linux/fs.h>
#include <linux/genetlink.h>
#include <linux/hdreg.h>
#include <linux/icmpv6.h>
#include <linux/if_alg.h>
#include <linux/if_bridge.h>
#include <linux/if_packet.h>
#include <linux/if_pppox.h>
#include <linux/if_xdp.h>
#include <linux/keyctl.h>
#include <linux/loop.h>
#include <linux/ncsi.h>
#include <linux/net_namespace.h>
#include <linux/net_tstamp.h>
#include <linux/netfilter/nf_tables.h>
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter.h>
#include <linux/netlink.h>
#include <linux/perf_event.h>
#include <linux/random.h>
#include <linux/rtc.h>
#include <linux/rtnetlink.h>
#include <linux/socket.h>
#include <linux/stat.h>
#include <linux/taskstats.h>
#include <linux/tipc.h>
#include <linux/vm_sockets.h>

// abi/abi.h generated by mkall.go.
#include "abi/abi.h"

// On mips64, the glibc stat and kernel stat do not agree
#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)

// Use the stat defined by the kernel with a few modifications. These are:
//	* The time fields (like st_atime and st_atimensec) use the timespec
//	  struct (like st_atim) for consistency with the glibc fields.
//	* The padding fields get different names to not break compatibility.
//	* st_blocks is signed, again for compatibility.
struct stat {
	unsigned int		st_dev;
	unsigned int		st_pad1[3]; // Reserved for st_dev expansion

	unsigned long		st_ino;

	mode_t			st_mode;
	__u32			st_nlink;

	uid_t			st_uid;
	gid_t			st_gid;

	unsigned int		st_rdev;
	unsigned int		st_pad2[3]; // Reserved for st_rdev expansion

	off_t			st_size;

	// These are declared as separate fields in the kernel. Here we use
	// the timespec struct for consistency with the other stat structs.
	struct timespec		st_atim;
	struct timespec		st_mtim;
	struct timespec		st_ctim;

	unsigned int		st_blksize;
	unsigned int		st_pad4;

	long			st_blocks;
};

// These are needed because we do not include fcntl.h or sys/types.h
#include <linux/fcntl.h>
#include <linux/fadvise.h>

#else

// Use the stat defined by glibc
#include <fcntl.h>
#include <sys/types.h>

#endif

// These are defined in linux/fcntl.h, but including it globally causes
// conflicts with fcntl.h
#ifndef AT_STATX_SYNC_TYPE
# define AT_STATX_SYNC_TYPE	0x6000	// Type of synchronisation required from statx()
#endif
#ifndef AT_STATX_SYNC_AS_STAT
# define AT_STATX_SYNC_AS_STAT	0x0000	// - Do whatever stat() does
#endif
#ifndef AT_STATX_FORCE_SYNC
# define AT_STATX_FORCE_SYNC	0x2000	// - Force the attributes to be sync'd with the server
#endif
#ifndef AT_STATX_DONT_SYNC
# define AT_STATX_DONT_SYNC	0x4000	// - Don't sync attributes with the server
#endif

#ifndef AT_EACCESS
# define AT_EACCESS		0x200	// Test access permitted for effective IDs, not real IDs.
#endif

#ifdef TCSETS2
// On systems that have "struct termios2" use this as type Termios.
typedef struct termios2 termios_t;
#else
typedef struct termios termios_t;
#endif

enum {
	sizeofPtr = sizeof(void*),
};

union sockaddr_all {
	struct sockaddr s1;	// this one gets used for fields
	struct sockaddr_in s2;	// these pad it out
	struct sockaddr_in6 s3;
	struct sockaddr_un s4;
	struct sockaddr_ll s5;
	struct sockaddr_nl s6;
	struct sockaddr_pppox s7;
	struct sockaddr_l2tpip s8;
	struct sockaddr_l2tpip6 s9;
};

struct sockaddr_any {
	struct sockaddr addr;
	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
};

// copied from /usr/include/bluetooth/hci.h
struct sockaddr_hci {
        sa_family_t     hci_family;
        unsigned short  hci_dev;
        unsigned short  hci_channel;
};

// copied from /usr/include/bluetooth/bluetooth.h
#define BDADDR_BREDR           0x00
#define BDADDR_LE_PUBLIC       0x01
#define BDADDR_LE_RANDOM       0x02

// copied from /usr/include/bluetooth/l2cap.h
struct sockaddr_l2 {
	sa_family_t	l2_family;
	unsigned short	l2_psm;
	uint8_t		l2_bdaddr[6];
	unsigned short	l2_cid;
	uint8_t		l2_bdaddr_type;
};

// copied from /usr/include/net/bluetooth/rfcomm.h
struct sockaddr_rc {
	sa_family_t rc_family;
	uint8_t     rc_bdaddr[6];
	uint8_t     rc_channel;
};

// copied from /usr/include/linux/un.h
struct my_sockaddr_un {
	sa_family_t sun_family;
#if defined(__ARM_EABI__) || defined(__powerpc64__) || defined(__riscv)
	// on some platforms char is unsigned by default
	signed char sun_path[108];
#else
	char sun_path[108];
#endif
};

#ifdef __ARM_EABI__
typedef struct user_regs PtraceRegs;
#elif defined(__aarch64__)
typedef struct user_pt_regs PtraceRegs;
#elif defined(__mips__) || defined(__powerpc64__)
typedef struct pt_regs PtraceRegs;
#elif defined(__s390x__)
typedef struct _user_regs_struct PtraceRegs;
#elif defined(__sparc__)
#include <asm/ptrace.h>
typedef struct pt_regs PtraceRegs;
#else
typedef struct user_regs_struct PtraceRegs;
#endif

#if defined(__s390x__)
typedef struct _user_psw_struct ptracePsw;
typedef struct _user_fpregs_struct ptraceFpregs;
typedef struct _user_per_struct ptracePer;
#else
typedef struct {} ptracePsw;
typedef struct {} ptraceFpregs;
typedef struct {} ptracePer;
#endif

// The real epoll_event is a union, and godefs doesn't handle it well.
struct my_epoll_event {
	uint32_t events;
#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
	// padding is not specified in linux/eventpoll.h but added to conform to the
	// alignment requirements of EABI
	int32_t padFd;
#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) || defined(__riscv) \
		|| (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
	int32_t _padFd;
#endif
	int32_t fd;
	int32_t pad;
};

// Copied from <linux/perf_event.h> with the following modifications:
// 1) bit field after read_format redeclared as '__u64 bits' to make it
//    accessible from Go
// 2) collapsed the unions, to avoid confusing godoc for the generated output
//    (e.g. having to use BpAddr as an extension of Config)
struct perf_event_attr_go {
	__u32 type;

	__u32 size;
	__u64 config;

	// union {
	//   __u64 sample_period;
	//   __u64 sample_freq;
	// };
	__u64 sample;

	__u64 sample_type;
	__u64 read_format;

	// Replaces the bit field. Flags are defined as constants.
	__u64 bits;

	// union {
	//   __u32 wakeup_events;
	//   __u32 wakeup_watermark;
	// };
	__u32 wakeup;

	__u32 bp_type;

	// union {
	//   __u64 bp_addr;
	//   __u64 config1;
	// };
	__u64 ext1;

	// union {
	//   __u64 bp_len;
	//   __u64 config2;
	// };
	__u64 ext2;

	__u64 branch_sample_type;

	__u64 sample_regs_user;

	__u32 sample_stack_user;

	__s32 clockid;
	__u64 sample_regs_intr;
	__u32 aux_watermark;
	__u16 sample_max_stack;
	__u16 __reserved_2;
};

// ustat is deprecated and glibc 2.28 removed ustat.h. Provide the type here for
// backwards compatibility. Copied from /usr/include/bits/ustat.h
struct ustat {
	__daddr_t f_tfree;
	__ino_t f_tinode;
	char f_fname[6];
	char f_fpack[6];
};

// my_blkpg_partition is blkpg_partition with unsigned devname & volname.
struct my_blkpg_partition {
	long long start;
	long long length;
	int pno;
	unsigned char devname[BLKPG_DEVNAMELTH];
	unsigned char volname[BLKPG_VOLNAMELTH];
};

// tipc_service_name is a copied and slightly modified form of the "name"
// variant in sockaddr_tipc's union in tipc.h, so it can be exported as part of
// SockaddrTIPC's API.
struct tipc_service_name {
	// From tipc_service_addr.
	__u32 type;
	__u32 instance;
	// From the union.
	__u32 domain;
};
*/
import "C"

// Machine characteristics

const (
	SizeofPtr      = C.sizeofPtr
	SizeofShort    = C.sizeof_short
	SizeofInt      = C.sizeof_int
	SizeofLong     = C.sizeof_long
	SizeofLongLong = C.sizeof_longlong
	PathMax        = C.PATH_MAX
)

// Basic types

type (
	_C_short     C.short
	_C_int       C.int
	_C_long      C.long
	_C_long_long C.longlong
)

// Time

type Timespec C.struct_timespec

type Timeval C.struct_timeval

type Timex C.struct_timex

const (
	TIME_OK    = C.TIME_OK
	TIME_INS   = C.TIME_INS
	TIME_DEL   = C.TIME_DEL
	TIME_OOP   = C.TIME_OOP
	TIME_WAIT  = C.TIME_WAIT
	TIME_ERROR = C.TIME_ERROR
	TIME_BAD   = C.TIME_BAD
)

type Time_t C.time_t

type Tms C.struct_tms

type Utimbuf C.struct_utimbuf

// Processes

type Rusage C.struct_rusage

type Rlimit C.struct_rlimit

type _Gid_t C.gid_t

// Files

type Stat_t C.struct_stat

type StatxTimestamp C.struct_statx_timestamp

type Statx_t C.struct_statx

type Dirent C.struct_dirent

type Fsid C.fsid_t

type Flock_t C.struct_flock

// Filesystem Encryption

type FscryptPolicy C.struct_fscrypt_policy

type FscryptKey C.struct_fscrypt_key

type FscryptPolicyV1 C.struct_fscrypt_policy_v1

type FscryptPolicyV2 C.struct_fscrypt_policy_v2

type FscryptGetPolicyExArg C.struct_fscrypt_get_policy_ex_arg

type FscryptKeySpecifier C.struct_fscrypt_key_specifier

type FscryptAddKeyArg C.struct_fscrypt_add_key_arg

type FscryptRemoveKeyArg C.struct_fscrypt_remove_key_arg

type FscryptGetKeyStatusArg C.struct_fscrypt_get_key_status_arg

// Structure for Keyctl

type KeyctlDHParams C.struct_keyctl_dh_params

// Advice to Fadvise

const (
	FADV_NORMAL     = C.POSIX_FADV_NORMAL
	FADV_RANDOM     = C.POSIX_FADV_RANDOM
	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
)

// Sockets

type RawSockaddrInet4 C.struct_sockaddr_in

type RawSockaddrInet6 C.struct_sockaddr_in6

type RawSockaddrUnix C.struct_my_sockaddr_un

type RawSockaddrLinklayer C.struct_sockaddr_ll

type RawSockaddrNetlink C.struct_sockaddr_nl

type RawSockaddrHCI C.struct_sockaddr_hci

type RawSockaddrL2 C.struct_sockaddr_l2

type RawSockaddrRFCOMM C.struct_sockaddr_rc

type RawSockaddrCAN C.struct_sockaddr_can

type RawSockaddrALG C.struct_sockaddr_alg

type RawSockaddrVM C.struct_sockaddr_vm

type RawSockaddrXDP C.struct_sockaddr_xdp

type RawSockaddrPPPoX [C.sizeof_struct_sockaddr_pppox]byte

type RawSockaddrTIPC C.struct_sockaddr_tipc

type RawSockaddrL2TPIP C.struct_sockaddr_l2tpip

type RawSockaddrL2TPIP6 C.struct_sockaddr_l2tpip6

type RawSockaddr C.struct_sockaddr

type RawSockaddrAny C.struct_sockaddr_any

type _Socklen C.socklen_t

type Linger C.struct_linger

type Iovec C.struct_iovec

type IPMreq C.struct_ip_mreq

type IPMreqn C.struct_ip_mreqn

type IPv6Mreq C.struct_ipv6_mreq

type PacketMreq C.struct_packet_mreq

type Msghdr C.struct_msghdr

type Cmsghdr C.struct_cmsghdr

type Inet4Pktinfo C.struct_in_pktinfo

type Inet6Pktinfo C.struct_in6_pktinfo

type IPv6MTUInfo C.struct_ip6_mtuinfo

type ICMPv6Filter C.struct_icmp6_filter

type Ucred C.struct_ucred

type TCPInfo C.struct_tcp_info

type CanFilter C.struct_can_filter

const (
	SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
	SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
	SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
	SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
	SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
	SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
	SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
	SizeofSockaddrL2        = C.sizeof_struct_sockaddr_l2
	SizeofSockaddrRFCOMM    = C.sizeof_struct_sockaddr_rc
	SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
	SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
	SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
	SizeofSockaddrXDP       = C.sizeof_struct_sockaddr_xdp
	SizeofSockaddrPPPoX     = C.sizeof_struct_sockaddr_pppox
	SizeofSockaddrTIPC      = C.sizeof_struct_sockaddr_tipc
	SizeofSockaddrL2TPIP    = C.sizeof_struct_sockaddr_l2tpip
	SizeofSockaddrL2TPIP6   = C.sizeof_struct_sockaddr_l2tpip6
	SizeofLinger            = C.sizeof_struct_linger
	SizeofIovec             = C.sizeof_struct_iovec
	SizeofIPMreq            = C.sizeof_struct_ip_mreq
	SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
	SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
	SizeofPacketMreq        = C.sizeof_struct_packet_mreq
	SizeofMsghdr            = C.sizeof_struct_msghdr
	SizeofCmsghdr           = C.sizeof_struct_cmsghdr
	SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
	SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
	SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
	SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
	SizeofUcred             = C.sizeof_struct_ucred
	SizeofTCPInfo           = C.sizeof_struct_tcp_info
	SizeofCanFilter         = C.sizeof_struct_can_filter
)

// Netlink routing and interface messages

const (
	NDA_UNSPEC              = C.NDA_UNSPEC
	NDA_DST                 = C.NDA_DST
	NDA_LLADDR              = C.NDA_LLADDR
	NDA_CACHEINFO           = C.NDA_CACHEINFO
	NDA_PROBES              = C.NDA_PROBES
	NDA_VLAN                = C.NDA_VLAN
	NDA_PORT                = C.NDA_PORT
	NDA_VNI                 = C.NDA_VNI
	NDA_IFINDEX             = C.NDA_IFINDEX
	NDA_MASTER              = C.NDA_MASTER
	NDA_LINK_NETNSID        = C.NDA_LINK_NETNSID
	NDA_SRC_VNI             = C.NDA_SRC_VNI
	NTF_USE                 = C.NTF_USE
	NTF_SELF                = C.NTF_SELF
	NTF_MASTER              = C.NTF_MASTER
	NTF_PROXY               = C.NTF_PROXY
	NTF_EXT_LEARNED         = C.NTF_EXT_LEARNED
	NTF_OFFLOADED           = C.NTF_OFFLOADED
	NTF_ROUTER              = C.NTF_ROUTER
	NUD_INCOMPLETE          = C.NUD_INCOMPLETE
	NUD_REACHABLE           = C.NUD_REACHABLE
	NUD_STALE               = C.NUD_STALE
	NUD_DELAY               = C.NUD_DELAY
	NUD_PROBE               = C.NUD_PROBE
	NUD_FAILED              = C.NUD_FAILED
	NUD_NOARP               = C.NUD_NOARP
	NUD_PERMANENT           = C.NUD_PERMANENT
	NUD_NONE                = C.NUD_NONE
	IFA_UNSPEC              = C.IFA_UNSPEC
	IFA_ADDRESS             = C.IFA_ADDRESS
	IFA_LOCAL               = C.IFA_LOCAL
	IFA_LABEL               = C.IFA_LABEL
	IFA_BROADCAST           = C.IFA_BROADCAST
	IFA_ANYCAST             = C.IFA_ANYCAST
	IFA_CACHEINFO           = C.IFA_CACHEINFO
	IFA_MULTICAST           = C.IFA_MULTICAST
	IFA_FLAGS               = C.IFA_FLAGS
	IFA_RT_PRIORITY         = C.IFA_RT_PRIORITY
	IFA_TARGET_NETNSID      = C.IFA_TARGET_NETNSID
	IFLA_UNSPEC             = C.IFLA_UNSPEC
	IFLA_ADDRESS            = C.IFLA_ADDRESS
	IFLA_BROADCAST          = C.IFLA_BROADCAST
	IFLA_IFNAME             = C.IFLA_IFNAME
	IFLA_MTU                = C.IFLA_MTU
	IFLA_LINK               = C.IFLA_LINK
	IFLA_QDISC              = C.IFLA_QDISC
	IFLA_STATS              = C.IFLA_STATS
	IFLA_COST               = C.IFLA_COST
	IFLA_PRIORITY           = C.IFLA_PRIORITY
	IFLA_MASTER             = C.IFLA_MASTER
	IFLA_WIRELESS           = C.IFLA_WIRELESS
	IFLA_PROTINFO           = C.IFLA_PROTINFO
	IFLA_TXQLEN             = C.IFLA_TXQLEN
	IFLA_MAP                = C.IFLA_MAP
	IFLA_WEIGHT             = C.IFLA_WEIGHT
	IFLA_OPERSTATE          = C.IFLA_OPERSTATE
	IFLA_LINKMODE           = C.IFLA_LINKMODE
	IFLA_LINKINFO           = C.IFLA_LINKINFO
	IFLA_NET_NS_PID         = C.IFLA_NET_NS_PID
	IFLA_IFALIAS            = C.IFLA_IFALIAS
	IFLA_NUM_VF             = C.IFLA_NUM_VF
	IFLA_VFINFO_LIST        = C.IFLA_VFINFO_LIST
	IFLA_STATS64            = C.IFLA_STATS64
	IFLA_VF_PORTS           = C.IFLA_VF_PORTS
	IFLA_PORT_SELF          = C.IFLA_PORT_SELF
	IFLA_AF_SPEC            = C.IFLA_AF_SPEC
	IFLA_GROUP              = C.IFLA_GROUP
	IFLA_NET_NS_FD          = C.IFLA_NET_NS_FD
	IFLA_EXT_MASK           = C.IFLA_EXT_MASK
	IFLA_PROMISCUITY        = C.IFLA_PROMISCUITY
	IFLA_NUM_TX_QUEUES      = C.IFLA_NUM_TX_QUEUES
	IFLA_NUM_RX_QUEUES      = C.IFLA_NUM_RX_QUEUES
	IFLA_CARRIER            = C.IFLA_CARRIER
	IFLA_PHYS_PORT_ID       = C.IFLA_PHYS_PORT_ID
	IFLA_CARRIER_CHANGES    = C.IFLA_CARRIER_CHANGES
	IFLA_PHYS_SWITCH_ID     = C.IFLA_PHYS_SWITCH_ID
	IFLA_LINK_NETNSID       = C.IFLA_LINK_NETNSID
	IFLA_PHYS_PORT_NAME     = C.IFLA_PHYS_PORT_NAME
	IFLA_PROTO_DOWN         = C.IFLA_PROTO_DOWN
	IFLA_GSO_MAX_SEGS       = C.IFLA_GSO_MAX_SEGS
	IFLA_GSO_MAX_SIZE       = C.IFLA_GSO_MAX_SIZE
	IFLA_PAD                = C.IFLA_PAD
	IFLA_XDP                = C.IFLA_XDP
	IFLA_EVENT              = C.IFLA_EVENT
	IFLA_NEW_NETNSID        = C.IFLA_NEW_NETNSID
	IFLA_IF_NETNSID         = C.IFLA_IF_NETNSID
	IFLA_TARGET_NETNSID     = C.IFLA_TARGET_NETNSID
	IFLA_CARRIER_UP_COUNT   = C.IFLA_CARRIER_UP_COUNT
	IFLA_CARRIER_DOWN_COUNT = C.IFLA_CARRIER_DOWN_COUNT
	IFLA_NEW_IFINDEX        = C.IFLA_NEW_IFINDEX
	IFLA_MIN_MTU            = C.IFLA_MIN_MTU
	IFLA_MAX_MTU            = C.IFLA_MAX_MTU
	IFLA_MAX                = C.IFLA_MAX
	IFLA_INFO_KIND          = C.IFLA_INFO_KIND
	IFLA_INFO_DATA          = C.IFLA_INFO_DATA
	IFLA_INFO_XSTATS        = C.IFLA_INFO_XSTATS
	IFLA_INFO_SLAVE_KIND    = C.IFLA_INFO_SLAVE_KIND
	IFLA_INFO_SLAVE_DATA    = C.IFLA_INFO_SLAVE_DATA
	RT_SCOPE_UNIVERSE       = C.RT_SCOPE_UNIVERSE
	RT_SCOPE_SITE           = C.RT_SCOPE_SITE
	RT_SCOPE_LINK           = C.RT_SCOPE_LINK
	RT_SCOPE_HOST           = C.RT_SCOPE_HOST
	RT_SCOPE_NOWHERE        = C.RT_SCOPE_NOWHERE
	RT_TABLE_UNSPEC         = C.RT_TABLE_UNSPEC
	RT_TABLE_COMPAT         = C.RT_TABLE_COMPAT
	RT_TABLE_DEFAULT        = C.RT_TABLE_DEFAULT
	RT_TABLE_MAIN           = C.RT_TABLE_MAIN
	RT_TABLE_LOCAL          = C.RT_TABLE_LOCAL
	RT_TABLE_MAX            = C.RT_TABLE_MAX
	RTA_UNSPEC              = C.RTA_UNSPEC
	RTA_DST                 = C.RTA_DST
	RTA_SRC                 = C.RTA_SRC
	RTA_IIF                 = C.RTA_IIF
	RTA_OIF                 = C.RTA_OIF
	RTA_GATEWAY             = C.RTA_GATEWAY
	RTA_PRIORITY            = C.RTA_PRIORITY
	RTA_PREFSRC             = C.RTA_PREFSRC
	RTA_METRICS             = C.RTA_METRICS
	RTA_MULTIPATH           = C.RTA_MULTIPATH
	RTA_FLOW                = C.RTA_FLOW
	RTA_CACHEINFO           = C.RTA_CACHEINFO
	RTA_TABLE               = C.RTA_TABLE
	RTA_MARK                = C.RTA_MARK
	RTA_MFC_STATS           = C.RTA_MFC_STATS
	RTA_VIA                 = C.RTA_VIA
	RTA_NEWDST              = C.RTA_NEWDST
	RTA_PREF                = C.RTA_PREF
	RTA_ENCAP_TYPE          = C.RTA_ENCAP_TYPE
	RTA_ENCAP               = C.RTA_ENCAP
	RTA_EXPIRES             = C.RTA_EXPIRES
	RTA_PAD                 = C.RTA_PAD
	RTA_UID                 = C.RTA_UID
	RTA_TTL_PROPAGATE       = C.RTA_TTL_PROPAGATE
	RTA_IP_PROTO            = C.RTA_IP_PROTO
	RTA_SPORT               = C.RTA_SPORT
	RTA_DPORT               = C.RTA_DPORT
	RTN_UNSPEC              = C.RTN_UNSPEC
	RTN_UNICAST             = C.RTN_UNICAST
	RTN_LOCAL               = C.RTN_LOCAL
	RTN_BROADCAST           = C.RTN_BROADCAST
	RTN_ANYCAST             = C.RTN_ANYCAST
	RTN_MULTICAST           = C.RTN_MULTICAST
	RTN_BLACKHOLE           = C.RTN_BLACKHOLE
	RTN_UNREACHABLE         = C.RTN_UNREACHABLE
	RTN_PROHIBIT            = C.RTN_PROHIBIT
	RTN_THROW               = C.RTN_THROW
	RTN_NAT                 = C.RTN_NAT
	RTN_XRESOLVE            = C.RTN_XRESOLVE
	SizeofNlMsghdr          = C.sizeof_struct_nlmsghdr
	SizeofNlMsgerr          = C.sizeof_struct_nlmsgerr
	SizeofRtGenmsg          = C.sizeof_struct_rtgenmsg
	SizeofNlAttr            = C.sizeof_struct_nlattr
	SizeofRtAttr            = C.sizeof_struct_rtattr
	SizeofIfInfomsg         = C.sizeof_struct_ifinfomsg
	SizeofIfAddrmsg         = C.sizeof_struct_ifaddrmsg
	SizeofIfaCacheinfo      = C.sizeof_struct_ifa_cacheinfo
	SizeofRtMsg             = C.sizeof_struct_rtmsg
	SizeofRtNexthop         = C.sizeof_struct_rtnexthop
	SizeofNdUseroptmsg      = C.sizeof_struct_nduseroptmsg
	SizeofNdMsg             = C.sizeof_struct_ndmsg
)

type NlMsghdr C.struct_nlmsghdr

type NlMsgerr C.struct_nlmsgerr

type RtGenmsg C.struct_rtgenmsg

type NlAttr C.struct_nlattr

type RtAttr C.struct_rtattr

type IfInfomsg C.struct_ifinfomsg

type IfAddrmsg C.struct_ifaddrmsg

type IfaCacheinfo C.struct_ifa_cacheinfo

type RtMsg C.struct_rtmsg

type RtNexthop C.struct_rtnexthop

type NdUseroptmsg C.struct_nduseroptmsg

type NdMsg C.struct_ndmsg

// Linux socket filter

const (
	SizeofSockFilter = C.sizeof_struct_sock_filter
	SizeofSockFprog  = C.sizeof_struct_sock_fprog
)

type SockFilter C.struct_sock_filter

type SockFprog C.struct_sock_fprog

// Inotify

type InotifyEvent C.struct_inotify_event

const SizeofInotifyEvent = C.sizeof_struct_inotify_event

// Ptrace

// Register structures
type PtraceRegs C.PtraceRegs

// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
type PtracePsw C.ptracePsw

type PtraceFpregs C.ptraceFpregs

type PtracePer C.ptracePer

// Misc

type FdSet C.fd_set

type Sysinfo_t C.struct_sysinfo

type Utsname C.struct_utsname

type Ustat_t C.struct_ustat

type EpollEvent C.struct_my_epoll_event

const (
	AT_EMPTY_PATH   = C.AT_EMPTY_PATH
	AT_FDCWD        = C.AT_FDCWD
	AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT
	AT_REMOVEDIR    = C.AT_REMOVEDIR

	AT_STATX_SYNC_AS_STAT = C.AT_STATX_SYNC_AS_STAT
	AT_STATX_FORCE_SYNC   = C.AT_STATX_FORCE_SYNC
	AT_STATX_DONT_SYNC    = C.AT_STATX_DONT_SYNC

	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW

	AT_EACCESS = C.AT_EACCESS
)

type PollFd C.struct_pollfd

const (
	POLLIN    = C.POLLIN
	POLLPRI   = C.POLLPRI
	POLLOUT   = C.POLLOUT
	POLLRDHUP = C.POLLRDHUP
	POLLERR   = C.POLLERR
	POLLHUP   = C.POLLHUP
	POLLNVAL  = C.POLLNVAL
)

type Sigset_t C.sigset_t

const _C__NSIG = C._NSIG

type SignalfdSiginfo C.struct_signalfd_siginfo

const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP

// Terminal handling

type Termios C.termios_t

type Winsize C.struct_winsize

// Taskstats and cgroup stats.

type Taskstats C.struct_taskstats

const (
	TASKSTATS_CMD_UNSPEC                  = C.TASKSTATS_CMD_UNSPEC
	TASKSTATS_CMD_GET                     = C.TASKSTATS_CMD_GET
	TASKSTATS_CMD_NEW                     = C.TASKSTATS_CMD_NEW
	TASKSTATS_TYPE_UNSPEC                 = C.TASKSTATS_TYPE_UNSPEC
	TASKSTATS_TYPE_PID                    = C.TASKSTATS_TYPE_PID
	TASKSTATS_TYPE_TGID                   = C.TASKSTATS_TYPE_TGID
	TASKSTATS_TYPE_STATS                  = C.TASKSTATS_TYPE_STATS
	TASKSTATS_TYPE_AGGR_PID               = C.TASKSTATS_TYPE_AGGR_PID
	TASKSTATS_TYPE_AGGR_TGID              = C.TASKSTATS_TYPE_AGGR_TGID
	TASKSTATS_TYPE_NULL                   = C.TASKSTATS_TYPE_NULL
	TASKSTATS_CMD_ATTR_UNSPEC             = C.TASKSTATS_CMD_ATTR_UNSPEC
	TASKSTATS_CMD_ATTR_PID                = C.TASKSTATS_CMD_ATTR_PID
	TASKSTATS_CMD_ATTR_TGID               = C.TASKSTATS_CMD_ATTR_TGID
	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK
	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK
)

type CGroupStats C.struct_cgroupstats

const (
	CGROUPSTATS_CMD_UNSPEC        = C.__TASKSTATS_CMD_MAX
	CGROUPSTATS_CMD_GET           = C.CGROUPSTATS_CMD_GET
	CGROUPSTATS_CMD_NEW           = C.CGROUPSTATS_CMD_NEW
	CGROUPSTATS_TYPE_UNSPEC       = C.CGROUPSTATS_TYPE_UNSPEC
	CGROUPSTATS_TYPE_CGROUP_STATS = C.CGROUPSTATS_TYPE_CGROUP_STATS
	CGROUPSTATS_CMD_ATTR_UNSPEC   = C.CGROUPSTATS_CMD_ATTR_UNSPEC
	CGROUPSTATS_CMD_ATTR_FD       = C.CGROUPSTATS_CMD_ATTR_FD
)

// Generic netlink

type Genlmsghdr C.struct_genlmsghdr

const (
	CTRL_CMD_UNSPEC            = C.CTRL_CMD_UNSPEC
	CTRL_CMD_NEWFAMILY         = C.CTRL_CMD_NEWFAMILY
	CTRL_CMD_DELFAMILY         = C.CTRL_CMD_DELFAMILY
	CTRL_CMD_GETFAMILY         = C.CTRL_CMD_GETFAMILY
	CTRL_CMD_NEWOPS            = C.CTRL_CMD_NEWOPS
	CTRL_CMD_DELOPS            = C.CTRL_CMD_DELOPS
	CTRL_CMD_GETOPS            = C.CTRL_CMD_GETOPS
	CTRL_CMD_NEWMCAST_GRP      = C.CTRL_CMD_NEWMCAST_GRP
	CTRL_CMD_DELMCAST_GRP      = C.CTRL_CMD_DELMCAST_GRP
	CTRL_CMD_GETMCAST_GRP      = C.CTRL_CMD_GETMCAST_GRP
	CTRL_ATTR_UNSPEC           = C.CTRL_ATTR_UNSPEC
	CTRL_ATTR_FAMILY_ID        = C.CTRL_ATTR_FAMILY_ID
	CTRL_ATTR_FAMILY_NAME      = C.CTRL_ATTR_FAMILY_NAME
	CTRL_ATTR_VERSION          = C.CTRL_ATTR_VERSION
	CTRL_ATTR_HDRSIZE          = C.CTRL_ATTR_HDRSIZE
	CTRL_ATTR_MAXATTR          = C.CTRL_ATTR_MAXATTR
	CTRL_ATTR_OPS              = C.CTRL_ATTR_OPS
	CTRL_ATTR_MCAST_GROUPS     = C.CTRL_ATTR_MCAST_GROUPS
	CTRL_ATTR_OP_UNSPEC        = C.CTRL_ATTR_OP_UNSPEC
	CTRL_ATTR_OP_ID            = C.CTRL_ATTR_OP_ID
	CTRL_ATTR_OP_FLAGS         = C.CTRL_ATTR_OP_FLAGS
	CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC
	CTRL_ATTR_MCAST_GRP_NAME   = C.CTRL_ATTR_MCAST_GRP_NAME
	CTRL_ATTR_MCAST_GRP_ID     = C.CTRL_ATTR_MCAST_GRP_ID
)

// CPU affinity

type cpuMask C.__cpu_mask

const (
	_CPU_SETSIZE = C.__CPU_SETSIZE
	_NCPUBITS    = C.__NCPUBITS
)

// Bluetooth

const (
	BDADDR_BREDR     = C.BDADDR_BREDR
	BDADDR_LE_PUBLIC = C.BDADDR_LE_PUBLIC
	BDADDR_LE_RANDOM = C.BDADDR_LE_RANDOM
)

// Perf subsystem

type PerfEventAttr C.struct_perf_event_attr_go

type PerfEventMmapPage C.struct_perf_event_mmap_page

// Bit field in struct perf_event_attr expanded as flags.
// Set these on PerfEventAttr.Bits by ORing them together.
const (
	PerfBitDisabled               uint64 = CBitFieldMaskBit0
	PerfBitInherit                       = CBitFieldMaskBit1
	PerfBitPinned                        = CBitFieldMaskBit2
	PerfBitExclusive                     = CBitFieldMaskBit3
	PerfBitExcludeUser                   = CBitFieldMaskBit4
	PerfBitExcludeKernel                 = CBitFieldMaskBit5
	PerfBitExcludeHv                     = CBitFieldMaskBit6
	PerfBitExcludeIdle                   = CBitFieldMaskBit7
	PerfBitMmap                          = CBitFieldMaskBit8
	PerfBitComm                          = CBitFieldMaskBit9
	PerfBitFreq                          = CBitFieldMaskBit10
	PerfBitInheritStat                   = CBitFieldMaskBit11
	PerfBitEnableOnExec                  = CBitFieldMaskBit12
	PerfBitTask                          = CBitFieldMaskBit13
	PerfBitWatermark                     = CBitFieldMaskBit14
	PerfBitPreciseIPBit1                 = CBitFieldMaskBit15
	PerfBitPreciseIPBit2                 = CBitFieldMaskBit16
	PerfBitMmapData                      = CBitFieldMaskBit17
	PerfBitSampleIDAll                   = CBitFieldMaskBit18
	PerfBitExcludeHost                   = CBitFieldMaskBit19
	PerfBitExcludeGuest                  = CBitFieldMaskBit20
	PerfBitExcludeCallchainKernel        = CBitFieldMaskBit21
	PerfBitExcludeCallchainUser          = CBitFieldMaskBit22
	PerfBitMmap2                         = CBitFieldMaskBit23
	PerfBitCommExec                      = CBitFieldMaskBit24
	PerfBitUseClockID                    = CBitFieldMaskBit25
	PerfBitContextSwitch                 = CBitFieldMaskBit26
)

const (
	PERF_TYPE_HARDWARE   = C.PERF_TYPE_HARDWARE
	PERF_TYPE_SOFTWARE   = C.PERF_TYPE_SOFTWARE
	PERF_TYPE_TRACEPOINT = C.PERF_TYPE_TRACEPOINT
	PERF_TYPE_HW_CACHE   = C.PERF_TYPE_HW_CACHE
	PERF_TYPE_RAW        = C.PERF_TYPE_RAW
	PERF_TYPE_BREAKPOINT = C.PERF_TYPE_BREAKPOINT

	PERF_COUNT_HW_CPU_CYCLES              = C.PERF_COUNT_HW_CPU_CYCLES
	PERF_COUNT_HW_INSTRUCTIONS            = C.PERF_COUNT_HW_INSTRUCTIONS
	PERF_COUNT_HW_CACHE_REFERENCES        = C.PERF_COUNT_HW_CACHE_REFERENCES
	PERF_COUNT_HW_CACHE_MISSES            = C.PERF_COUNT_HW_CACHE_MISSES
	PERF_COUNT_HW_BRANCH_INSTRUCTIONS     = C.PERF_COUNT_HW_BRANCH_INSTRUCTIONS
	PERF_COUNT_HW_BRANCH_MISSES           = C.PERF_COUNT_HW_BRANCH_MISSES
	PERF_COUNT_HW_BUS_CYCLES              = C.PERF_COUNT_HW_BUS_CYCLES
	PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = C.PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
	PERF_COUNT_HW_STALLED_CYCLES_BACKEND  = C.PERF_COUNT_HW_STALLED_CYCLES_BACKEND
	PERF_COUNT_HW_REF_CPU_CYCLES          = C.PERF_COUNT_HW_REF_CPU_CYCLES

	PERF_COUNT_HW_CACHE_L1D  = C.PERF_COUNT_HW_CACHE_L1D
	PERF_COUNT_HW_CACHE_L1I  = C.PERF_COUNT_HW_CACHE_L1I
	PERF_COUNT_HW_CACHE_LL   = C.PERF_COUNT_HW_CACHE_LL
	PERF_COUNT_HW_CACHE_DTLB = C.PERF_COUNT_HW_CACHE_DTLB
	PERF_COUNT_HW_CACHE_ITLB = C.PERF_COUNT_HW_CACHE_ITLB
	PERF_COUNT_HW_CACHE_BPU  = C.PERF_COUNT_HW_CACHE_BPU
	PERF_COUNT_HW_CACHE_NODE = C.PERF_COUNT_HW_CACHE_NODE

	PERF_COUNT_HW_CACHE_OP_READ     = C.PERF_COUNT_HW_CACHE_OP_READ
	PERF_COUNT_HW_CACHE_OP_WRITE    = C.PERF_COUNT_HW_CACHE_OP_WRITE
	PERF_COUNT_HW_CACHE_OP_PREFETCH = C.PERF_COUNT_HW_CACHE_OP_PREFETCH

	PERF_COUNT_HW_CACHE_RESULT_ACCESS = C.PERF_COUNT_HW_CACHE_RESULT_ACCESS
	PERF_COUNT_HW_CACHE_RESULT_MISS   = C.PERF_COUNT_HW_CACHE_RESULT_MISS

	PERF_COUNT_SW_CPU_CLOCK        = C.PERF_COUNT_SW_CPU_CLOCK
	PERF_COUNT_SW_TASK_CLOCK       = C.PERF_COUNT_SW_TASK_CLOCK
	PERF_COUNT_SW_PAGE_FAULTS      = C.PERF_COUNT_SW_PAGE_FAULTS
	PERF_COUNT_SW_CONTEXT_SWITCHES = C.PERF_COUNT_SW_CONTEXT_SWITCHES
	PERF_COUNT_SW_CPU_MIGRATIONS   = C.PERF_COUNT_SW_CPU_MIGRATIONS
	PERF_COUNT_SW_PAGE_FAULTS_MIN  = C.PERF_COUNT_SW_PAGE_FAULTS_MIN
	PERF_COUNT_SW_PAGE_FAULTS_MAJ  = C.PERF_COUNT_SW_PAGE_FAULTS_MAJ
	PERF_COUNT_SW_ALIGNMENT_FAULTS = C.PERF_COUNT_SW_ALIGNMENT_FAULTS
	PERF_COUNT_SW_EMULATION_FAULTS = C.PERF_COUNT_SW_EMULATION_FAULTS
	PERF_COUNT_SW_DUMMY            = C.PERF_COUNT_SW_DUMMY
	PERF_COUNT_SW_BPF_OUTPUT       = C.PERF_COUNT_SW_BPF_OUTPUT

	PERF_SAMPLE_IP           = C.PERF_SAMPLE_IP
	PERF_SAMPLE_TID          = C.PERF_SAMPLE_TID
	PERF_SAMPLE_TIME         = C.PERF_SAMPLE_TIME
	PERF_SAMPLE_ADDR         = C.PERF_SAMPLE_ADDR
	PERF_SAMPLE_READ         = C.PERF_SAMPLE_READ
	PERF_SAMPLE_CALLCHAIN    = C.PERF_SAMPLE_CALLCHAIN
	PERF_SAMPLE_ID           = C.PERF_SAMPLE_ID
	PERF_SAMPLE_CPU          = C.PERF_SAMPLE_CPU
	PERF_SAMPLE_PERIOD       = C.PERF_SAMPLE_PERIOD
	PERF_SAMPLE_STREAM_ID    = C.PERF_SAMPLE_STREAM_ID
	PERF_SAMPLE_RAW          = C.PERF_SAMPLE_RAW
	PERF_SAMPLE_BRANCH_STACK = C.PERF_SAMPLE_BRANCH_STACK

	PERF_SAMPLE_BRANCH_USER       = C.PERF_SAMPLE_BRANCH_USER
	PERF_SAMPLE_BRANCH_KERNEL     = C.PERF_SAMPLE_BRANCH_KERNEL
	PERF_SAMPLE_BRANCH_HV         = C.PERF_SAMPLE_BRANCH_HV
	PERF_SAMPLE_BRANCH_ANY        = C.PERF_SAMPLE_BRANCH_ANY
	PERF_SAMPLE_BRANCH_ANY_CALL   = C.PERF_SAMPLE_BRANCH_ANY_CALL
	PERF_SAMPLE_BRANCH_ANY_RETURN = C.PERF_SAMPLE_BRANCH_ANY_RETURN
	PERF_SAMPLE_BRANCH_IND_CALL   = C.PERF_SAMPLE_BRANCH_IND_CALL
	PERF_SAMPLE_BRANCH_ABORT_TX   = C.PERF_SAMPLE_BRANCH_ABORT_TX
	PERF_SAMPLE_BRANCH_IN_TX      = C.PERF_SAMPLE_BRANCH_IN_TX
	PERF_SAMPLE_BRANCH_NO_TX      = C.PERF_SAMPLE_BRANCH_NO_TX
	PERF_SAMPLE_BRANCH_COND       = C.PERF_SAMPLE_BRANCH_COND
	PERF_SAMPLE_BRANCH_CALL_STACK = C.PERF_SAMPLE_BRANCH_CALL_STACK
	PERF_SAMPLE_BRANCH_IND_JUMP   = C.PERF_SAMPLE_BRANCH_IND_JUMP
	PERF_SAMPLE_BRANCH_CALL       = C.PERF_SAMPLE_BRANCH_CALL
	PERF_SAMPLE_BRANCH_NO_FLAGS   = C.PERF_SAMPLE_BRANCH_NO_FLAGS
	PERF_SAMPLE_BRANCH_NO_CYCLES  = C.PERF_SAMPLE_BRANCH_NO_CYCLES
	PERF_SAMPLE_BRANCH_TYPE_SAVE  = C.PERF_SAMPLE_BRANCH_TYPE_SAVE

	PERF_FORMAT_TOTAL_TIME_ENABLED = C.PERF_FORMAT_TOTAL_TIME_ENABLED
	PERF_FORMAT_TOTAL_TIME_RUNNING = C.PERF_FORMAT_TOTAL_TIME_RUNNING
	PERF_FORMAT_ID                 = C.PERF_FORMAT_ID
	PERF_FORMAT_GROUP              = C.PERF_FORMAT_GROUP

	PERF_RECORD_MMAP            = C.PERF_RECORD_MMAP
	PERF_RECORD_LOST            = C.PERF_RECORD_LOST
	PERF_RECORD_COMM            = C.PERF_RECORD_COMM
	PERF_RECORD_EXIT            = C.PERF_RECORD_EXIT
	PERF_RECORD_THROTTLE        = C.PERF_RECORD_THROTTLE
	PERF_RECORD_UNTHROTTLE      = C.PERF_RECORD_UNTHROTTLE
	PERF_RECORD_FORK            = C.PERF_RECORD_FORK
	PERF_RECORD_READ            = C.PERF_RECORD_READ
	PERF_RECORD_SAMPLE          = C.PERF_RECORD_SAMPLE
	PERF_RECORD_MMAP2           = C.PERF_RECORD_MMAP2
	PERF_RECORD_AUX             = C.PERF_RECORD_AUX
	PERF_RECORD_ITRACE_START    = C.PERF_RECORD_ITRACE_START
	PERF_RECORD_LOST_SAMPLES    = C.PERF_RECORD_LOST_SAMPLES
	PERF_RECORD_SWITCH          = C.PERF_RECORD_SWITCH
	PERF_RECORD_SWITCH_CPU_WIDE = C.PERF_RECORD_SWITCH_CPU_WIDE
	PERF_RECORD_NAMESPACES      = C.PERF_RECORD_NAMESPACES

	PERF_CONTEXT_HV     = C.PERF_CONTEXT_HV
	PERF_CONTEXT_KERNEL = C.PERF_CONTEXT_KERNEL
	PERF_CONTEXT_USER   = C.PERF_CONTEXT_USER

	PERF_CONTEXT_GUEST        = C.PERF_CONTEXT_GUEST
	PERF_CONTEXT_GUEST_KERNEL = C.PERF_CONTEXT_GUEST_KERNEL
	PERF_CONTEXT_GUEST_USER   = C.PERF_CONTEXT_GUEST_USER

	PERF_FLAG_FD_NO_GROUP = C.PERF_FLAG_FD_NO_GROUP
	PERF_FLAG_FD_OUTPUT   = C.PERF_FLAG_FD_OUTPUT
	PERF_FLAG_PID_CGROUP  = C.PERF_FLAG_PID_CGROUP
	PERF_FLAG_FD_CLOEXEC  = C.PERF_FLAG_FD_CLOEXEC
)

// Platform ABI and calling convention

// Bit field masks for interoperability with C code that uses bit fields.
// Each mask corresponds to a single bit set - bit field behavior can be replicated by combining
// the masks with bitwise OR.
const (
	CBitFieldMaskBit0  = C.BITFIELD_MASK_0
	CBitFieldMaskBit1  = C.BITFIELD_MASK_1
	CBitFieldMaskBit2  = C.BITFIELD_MASK_2
	CBitFieldMaskBit3  = C.BITFIELD_MASK_3
	CBitFieldMaskBit4  = C.BITFIELD_MASK_4
	CBitFieldMaskBit5  = C.BITFIELD_MASK_5
	CBitFieldMaskBit6  = C.BITFIELD_MASK_6
	CBitFieldMaskBit7  = C.BITFIELD_MASK_7
	CBitFieldMaskBit8  = C.BITFIELD_MASK_8
	CBitFieldMaskBit9  = C.BITFIELD_MASK_9
	CBitFieldMaskBit10 = C.BITFIELD_MASK_10
	CBitFieldMaskBit11 = C.BITFIELD_MASK_11
	CBitFieldMaskBit12 = C.BITFIELD_MASK_12
	CBitFieldMaskBit13 = C.BITFIELD_MASK_13
	CBitFieldMaskBit14 = C.BITFIELD_MASK_14
	CBitFieldMaskBit15 = C.BITFIELD_MASK_15
	CBitFieldMaskBit16 = C.BITFIELD_MASK_16
	CBitFieldMaskBit17 = C.BITFIELD_MASK_17
	CBitFieldMaskBit18 = C.BITFIELD_MASK_18
	CBitFieldMaskBit19 = C.BITFIELD_MASK_19
	CBitFieldMaskBit20 = C.BITFIELD_MASK_20
	CBitFieldMaskBit21 = C.BITFIELD_MASK_21
	CBitFieldMaskBit22 = C.BITFIELD_MASK_22
	CBitFieldMaskBit23 = C.BITFIELD_MASK_23
	CBitFieldMaskBit24 = C.BITFIELD_MASK_24
	CBitFieldMaskBit25 = C.BITFIELD_MASK_25
	CBitFieldMaskBit26 = C.BITFIELD_MASK_26
	CBitFieldMaskBit27 = C.BITFIELD_MASK_27
	CBitFieldMaskBit28 = C.BITFIELD_MASK_28
	CBitFieldMaskBit29 = C.BITFIELD_MASK_29
	CBitFieldMaskBit30 = C.BITFIELD_MASK_30
	CBitFieldMaskBit31 = C.BITFIELD_MASK_31
	CBitFieldMaskBit32 = C.BITFIELD_MASK_32
	CBitFieldMaskBit33 = C.BITFIELD_MASK_33
	CBitFieldMaskBit34 = C.BITFIELD_MASK_34
	CBitFieldMaskBit35 = C.BITFIELD_MASK_35
	CBitFieldMaskBit36 = C.BITFIELD_MASK_36
	CBitFieldMaskBit37 = C.BITFIELD_MASK_37
	CBitFieldMaskBit38 = C.BITFIELD_MASK_38
	CBitFieldMaskBit39 = C.BITFIELD_MASK_39
	CBitFieldMaskBit40 = C.BITFIELD_MASK_40
	CBitFieldMaskBit41 = C.BITFIELD_MASK_41
	CBitFieldMaskBit42 = C.BITFIELD_MASK_42
	CBitFieldMaskBit43 = C.BITFIELD_MASK_43
	CBitFieldMaskBit44 = C.BITFIELD_MASK_44
	CBitFieldMaskBit45 = C.BITFIELD_MASK_45
	CBitFieldMaskBit46 = C.BITFIELD_MASK_46
	CBitFieldMaskBit47 = C.BITFIELD_MASK_47
	CBitFieldMaskBit48 = C.BITFIELD_MASK_48
	CBitFieldMaskBit49 = C.BITFIELD_MASK_49
	CBitFieldMaskBit50 = C.BITFIELD_MASK_50
	CBitFieldMaskBit51 = C.BITFIELD_MASK_51
	CBitFieldMaskBit52 = C.BITFIELD_MASK_52
	CBitFieldMaskBit53 = C.BITFIELD_MASK_53
	CBitFieldMaskBit54 = C.BITFIELD_MASK_54
	CBitFieldMaskBit55 = C.BITFIELD_MASK_55
	CBitFieldMaskBit56 = C.BITFIELD_MASK_56
	CBitFieldMaskBit57 = C.BITFIELD_MASK_57
	CBitFieldMaskBit58 = C.BITFIELD_MASK_58
	CBitFieldMaskBit59 = C.BITFIELD_MASK_59
	CBitFieldMaskBit60 = C.BITFIELD_MASK_60
	CBitFieldMaskBit61 = C.BITFIELD_MASK_61
	CBitFieldMaskBit62 = C.BITFIELD_MASK_62
	CBitFieldMaskBit63 = C.BITFIELD_MASK_63
)

// TCP-MD5 signature.

type SockaddrStorage C.struct_sockaddr_storage

type TCPMD5Sig C.struct_tcp_md5sig

// Disk drive operations.

type HDDriveCmdHdr C.struct_hd_drive_cmd_hdr

type HDGeometry C.struct_hd_geometry

type HDDriveID C.struct_hd_driveid

// Statfs

type Statfs_t C.struct_statfs

const (
	ST_MANDLOCK    = C.ST_MANDLOCK
	ST_NOATIME     = C.ST_NOATIME
	ST_NODEV       = C.ST_NODEV
	ST_NODIRATIME  = C.ST_NODIRATIME
	ST_NOEXEC      = C.ST_NOEXEC
	ST_NOSUID      = C.ST_NOSUID
	ST_RDONLY      = C.ST_RDONLY
	ST_RELATIME    = C.ST_RELATIME
	ST_SYNCHRONOUS = C.ST_SYNCHRONOUS
)

// TPacket

type TpacketHdr C.struct_tpacket_hdr

type Tpacket2Hdr C.struct_tpacket2_hdr

type Tpacket3Hdr C.struct_tpacket3_hdr

type TpacketHdrVariant1 C.struct_tpacket_hdr_variant1

type TpacketBlockDesc C.struct_tpacket_block_desc

type TpacketBDTS C.struct_tpacket_bd_ts

type TpacketHdrV1 C.struct_tpacket_hdr_v1

type TpacketReq C.struct_tpacket_req

type TpacketReq3 C.struct_tpacket_req3

type TpacketStats C.struct_tpacket_stats

type TpacketStatsV3 C.struct_tpacket_stats_v3

type TpacketAuxdata C.struct_tpacket_auxdata

const (
	TPACKET_V1 = C.TPACKET_V1
	TPACKET_V2 = C.TPACKET_V2
	TPACKET_V3 = C.TPACKET_V3
)

const (
	SizeofTpacketHdr  = C.sizeof_struct_tpacket_hdr
	SizeofTpacket2Hdr = C.sizeof_struct_tpacket2_hdr
	SizeofTpacket3Hdr = C.sizeof_struct_tpacket3_hdr

	SizeofTpacketStats   = C.sizeof_struct_tpacket_stats
	SizeofTpacketStatsV3 = C.sizeof_struct_tpacket_stats_v3
)

// netfilter
// generated using:
// perl -nlE '/^\s*(NF\w+)/ && say "$1 = C.$1"' /usr/include/linux/netfilter.h
const (
	NF_INET_PRE_ROUTING  = C.NF_INET_PRE_ROUTING
	NF_INET_LOCAL_IN     = C.NF_INET_LOCAL_IN
	NF_INET_FORWARD      = C.NF_INET_FORWARD
	NF_INET_LOCAL_OUT    = C.NF_INET_LOCAL_OUT
	NF_INET_POST_ROUTING = C.NF_INET_POST_ROUTING
	NF_INET_NUMHOOKS     = C.NF_INET_NUMHOOKS
)

const (
	NF_NETDEV_INGRESS  = C.NF_NETDEV_INGRESS
	NF_NETDEV_NUMHOOKS = C.NF_NETDEV_NUMHOOKS
)

const (
	NFPROTO_UNSPEC   = C.NFPROTO_UNSPEC
	NFPROTO_INET     = C.NFPROTO_INET
	NFPROTO_IPV4     = C.NFPROTO_IPV4
	NFPROTO_ARP      = C.NFPROTO_ARP
	NFPROTO_NETDEV   = C.NFPROTO_NETDEV
	NFPROTO_BRIDGE   = C.NFPROTO_BRIDGE
	NFPROTO_IPV6     = C.NFPROTO_IPV6
	NFPROTO_DECNET   = C.NFPROTO_DECNET
	NFPROTO_NUMPROTO = C.NFPROTO_NUMPROTO
)

// netfilter nfnetlink
type Nfgenmsg C.struct_nfgenmsg

const (
	NFNL_BATCH_UNSPEC = C.NFNL_BATCH_UNSPEC
	NFNL_BATCH_GENID  = C.NFNL_BATCH_GENID
)

// netfilter nf_tables
// generated using:
// perl -nlE '/^\s*(NFT\w+)/ && say "$1 = C.$1"' /usr/include/linux/netfilter/nf_tables.h
const (
	NFT_REG_VERDICT                   = C.NFT_REG_VERDICT
	NFT_REG_1                         = C.NFT_REG_1
	NFT_REG_2                         = C.NFT_REG_2
	NFT_REG_3                         = C.NFT_REG_3
	NFT_REG_4                         = C.NFT_REG_4
	NFT_REG32_00                      = C.NFT_REG32_00
	NFT_REG32_01                      = C.NFT_REG32_01
	NFT_REG32_02                      = C.NFT_REG32_02
	NFT_REG32_03                      = C.NFT_REG32_03
	NFT_REG32_04                      = C.NFT_REG32_04
	NFT_REG32_05                      = C.NFT_REG32_05
	NFT_REG32_06                      = C.NFT_REG32_06
	NFT_REG32_07                      = C.NFT_REG32_07
	NFT_REG32_08                      = C.NFT_REG32_08
	NFT_REG32_09                      = C.NFT_REG32_09
	NFT_REG32_10                      = C.NFT_REG32_10
	NFT_REG32_11                      = C.NFT_REG32_11
	NFT_REG32_12                      = C.NFT_REG32_12
	NFT_REG32_13                      = C.NFT_REG32_13
	NFT_REG32_14                      = C.NFT_REG32_14
	NFT_REG32_15                      = C.NFT_REG32_15
	NFT_CONTINUE                      = C.NFT_CONTINUE
	NFT_BREAK                         = C.NFT_BREAK
	NFT_JUMP                          = C.NFT_JUMP
	NFT_GOTO                          = C.NFT_GOTO
	NFT_RETURN                        = C.NFT_RETURN
	NFT_MSG_NEWTABLE                  = C.NFT_MSG_NEWTABLE
	NFT_MSG_GETTABLE                  = C.NFT_MSG_GETTABLE
	NFT_MSG_DELTABLE                  = C.NFT_MSG_DELTABLE
	NFT_MSG_NEWCHAIN                  = C.NFT_MSG_NEWCHAIN
	NFT_MSG_GETCHAIN                  = C.NFT_MSG_GETCHAIN
	NFT_MSG_DELCHAIN                  = C.NFT_MSG_DELCHAIN
	NFT_MSG_NEWRULE                   = C.NFT_MSG_NEWRULE
	NFT_MSG_GETRULE                   = C.NFT_MSG_GETRULE
	NFT_MSG_DELRULE                   = C.NFT_MSG_DELRULE
	NFT_MSG_NEWSET                    = C.NFT_MSG_NEWSET
	NFT_MSG_GETSET                    = C.NFT_MSG_GETSET
	NFT_MSG_DELSET                    = C.NFT_MSG_DELSET
	NFT_MSG_NEWSETELEM                = C.NFT_MSG_NEWSETELEM
	NFT_MSG_GETSETELEM                = C.NFT_MSG_GETSETELEM
	NFT_MSG_DELSETELEM                = C.NFT_MSG_DELSETELEM
	NFT_MSG_NEWGEN                    = C.NFT_MSG_NEWGEN
	NFT_MSG_GETGEN                    = C.NFT_MSG_GETGEN
	NFT_MSG_TRACE                     = C.NFT_MSG_TRACE
	NFT_MSG_NEWOBJ                    = C.NFT_MSG_NEWOBJ
	NFT_MSG_GETOBJ                    = C.NFT_MSG_GETOBJ
	NFT_MSG_DELOBJ                    = C.NFT_MSG_DELOBJ
	NFT_MSG_GETOBJ_RESET              = C.NFT_MSG_GETOBJ_RESET
	NFT_MSG_MAX                       = C.NFT_MSG_MAX
	NFTA_LIST_UNPEC                   = C.NFTA_LIST_UNPEC
	NFTA_LIST_ELEM                    = C.NFTA_LIST_ELEM
	NFTA_HOOK_UNSPEC                  = C.NFTA_HOOK_UNSPEC
	NFTA_HOOK_HOOKNUM                 = C.NFTA_HOOK_HOOKNUM
	NFTA_HOOK_PRIORITY                = C.NFTA_HOOK_PRIORITY
	NFTA_HOOK_DEV                     = C.NFTA_HOOK_DEV
	NFT_TABLE_F_DORMANT               = C.NFT_TABLE_F_DORMANT
	NFTA_TABLE_UNSPEC                 = C.NFTA_TABLE_UNSPEC
	NFTA_TABLE_NAME                   = C.NFTA_TABLE_NAME
	NFTA_TABLE_FLAGS                  = C.NFTA_TABLE_FLAGS
	NFTA_TABLE_USE                    = C.NFTA_TABLE_USE
	NFTA_CHAIN_UNSPEC                 = C.NFTA_CHAIN_UNSPEC
	NFTA_CHAIN_TABLE                  = C.NFTA_CHAIN_TABLE
	NFTA_CHAIN_HANDLE                 = C.NFTA_CHAIN_HANDLE
	NFTA_CHAIN_NAME                   = C.NFTA_CHAIN_NAME
	NFTA_CHAIN_HOOK                   = C.NFTA_CHAIN_HOOK
	NFTA_CHAIN_POLICY                 = C.NFTA_CHAIN_POLICY
	NFTA_CHAIN_USE                    = C.NFTA_CHAIN_USE
	NFTA_CHAIN_TYPE                   = C.NFTA_CHAIN_TYPE
	NFTA_CHAIN_COUNTERS               = C.NFTA_CHAIN_COUNTERS
	NFTA_CHAIN_PAD                    = C.NFTA_CHAIN_PAD
	NFTA_RULE_UNSPEC                  = C.NFTA_RULE_UNSPEC
	NFTA_RULE_TABLE                   = C.NFTA_RULE_TABLE
	NFTA_RULE_CHAIN                   = C.NFTA_RULE_CHAIN
	NFTA_RULE_HANDLE                  = C.NFTA_RULE_HANDLE
	NFTA_RULE_EXPRESSIONS             = C.NFTA_RULE_EXPRESSIONS
	NFTA_RULE_COMPAT                  = C.NFTA_RULE_COMPAT
	NFTA_RULE_POSITION                = C.NFTA_RULE_POSITION
	NFTA_RULE_USERDATA                = C.NFTA_RULE_USERDATA
	NFTA_RULE_PAD                     = C.NFTA_RULE_PAD
	NFTA_RULE_ID                      = C.NFTA_RULE_ID
	NFT_RULE_COMPAT_F_INV             = C.NFT_RULE_COMPAT_F_INV
	NFT_RULE_COMPAT_F_MASK            = C.NFT_RULE_COMPAT_F_MASK
	NFTA_RULE_COMPAT_UNSPEC           = C.NFTA_RULE_COMPAT_UNSPEC
	NFTA_RULE_COMPAT_PROTO            = C.NFTA_RULE_COMPAT_PROTO
	NFTA_RULE_COMPAT_FLAGS            = C.NFTA_RULE_COMPAT_FLAGS
	NFT_SET_ANONYMOUS                 = C.NFT_SET_ANONYMOUS
	NFT_SET_CONSTANT                  = C.NFT_SET_CONSTANT
	NFT_SET_INTERVAL                  = C.NFT_SET_INTERVAL
	NFT_SET_MAP                       = C.NFT_SET_MAP
	NFT_SET_TIMEOUT                   = C.NFT_SET_TIMEOUT
	NFT_SET_EVAL                      = C.NFT_SET_EVAL
	NFT_SET_OBJECT                    = C.NFT_SET_OBJECT
	NFT_SET_POL_PERFORMANCE           = C.NFT_SET_POL_PERFORMANCE
	NFT_SET_POL_MEMORY                = C.NFT_SET_POL_MEMORY
	NFTA_SET_DESC_UNSPEC              = C.NFTA_SET_DESC_UNSPEC
	NFTA_SET_DESC_SIZE                = C.NFTA_SET_DESC_SIZE
	NFTA_SET_UNSPEC                   = C.NFTA_SET_UNSPEC
	NFTA_SET_TABLE                    = C.NFTA_SET_TABLE
	NFTA_SET_NAME                     = C.NFTA_SET_NAME
	NFTA_SET_FLAGS                    = C.NFTA_SET_FLAGS
	NFTA_SET_KEY_TYPE                 = C.NFTA_SET_KEY_TYPE
	NFTA_SET_KEY_LEN                  = C.NFTA_SET_KEY_LEN
	NFTA_SET_DATA_TYPE                = C.NFTA_SET_DATA_TYPE
	NFTA_SET_DATA_LEN                 = C.NFTA_SET_DATA_LEN
	NFTA_SET_POLICY                   = C.NFTA_SET_POLICY
	NFTA_SET_DESC                     = C.NFTA_SET_DESC
	NFTA_SET_ID                       = C.NFTA_SET_ID
	NFTA_SET_TIMEOUT                  = C.NFTA_SET_TIMEOUT
	NFTA_SET_GC_INTERVAL              = C.NFTA_SET_GC_INTERVAL
	NFTA_SET_USERDATA                 = C.NFTA_SET_USERDATA
	NFTA_SET_PAD                      = C.NFTA_SET_PAD
	NFTA_SET_OBJ_TYPE                 = C.NFTA_SET_OBJ_TYPE
	NFT_SET_ELEM_INTERVAL_END         = C.NFT_SET_ELEM_INTERVAL_END
	NFTA_SET_ELEM_UNSPEC              = C.NFTA_SET_ELEM_UNSPEC
	NFTA_SET_ELEM_KEY                 = C.NFTA_SET_ELEM_KEY
	NFTA_SET_ELEM_DATA                = C.NFTA_SET_ELEM_DATA
	NFTA_SET_ELEM_FLAGS               = C.NFTA_SET_ELEM_FLAGS
	NFTA_SET_ELEM_TIMEOUT             = C.NFTA_SET_ELEM_TIMEOUT
	NFTA_SET_ELEM_EXPIRATION          = C.NFTA_SET_ELEM_EXPIRATION
	NFTA_SET_ELEM_USERDATA            = C.NFTA_SET_ELEM_USERDATA
	NFTA_SET_ELEM_EXPR                = C.NFTA_SET_ELEM_EXPR
	NFTA_SET_ELEM_PAD                 = C.NFTA_SET_ELEM_PAD
	NFTA_SET_ELEM_OBJREF              = C.NFTA_SET_ELEM_OBJREF
	NFTA_SET_ELEM_LIST_UNSPEC         = C.NFTA_SET_ELEM_LIST_UNSPEC
	NFTA_SET_ELEM_LIST_TABLE          = C.NFTA_SET_ELEM_LIST_TABLE
	NFTA_SET_ELEM_LIST_SET            = C.NFTA_SET_ELEM_LIST_SET
	NFTA_SET_ELEM_LIST_ELEMENTS       = C.NFTA_SET_ELEM_LIST_ELEMENTS
	NFTA_SET_ELEM_LIST_SET_ID         = C.NFTA_SET_ELEM_LIST_SET_ID
	NFT_DATA_VALUE                    = C.NFT_DATA_VALUE
	NFT_DATA_VERDICT                  = C.NFT_DATA_VERDICT
	NFTA_DATA_UNSPEC                  = C.NFTA_DATA_UNSPEC
	NFTA_DATA_VALUE                   = C.NFTA_DATA_VALUE
	NFTA_DATA_VERDICT                 = C.NFTA_DATA_VERDICT
	NFTA_VERDICT_UNSPEC               = C.NFTA_VERDICT_UNSPEC
	NFTA_VERDICT_CODE                 = C.NFTA_VERDICT_CODE
	NFTA_VERDICT_CHAIN                = C.NFTA_VERDICT_CHAIN
	NFTA_EXPR_UNSPEC                  = C.NFTA_EXPR_UNSPEC
	NFTA_EXPR_NAME                    = C.NFTA_EXPR_NAME
	NFTA_EXPR_DATA                    = C.NFTA_EXPR_DATA
	NFTA_IMMEDIATE_UNSPEC             = C.NFTA_IMMEDIATE_UNSPEC
	NFTA_IMMEDIATE_DREG               = C.NFTA_IMMEDIATE_DREG
	NFTA_IMMEDIATE_DATA               = C.NFTA_IMMEDIATE_DATA
	NFTA_BITWISE_UNSPEC               = C.NFTA_BITWISE_UNSPEC
	NFTA_BITWISE_SREG                 = C.NFTA_BITWISE_SREG
	NFTA_BITWISE_DREG                 = C.NFTA_BITWISE_DREG
	NFTA_BITWISE_LEN                  = C.NFTA_BITWISE_LEN
	NFTA_BITWISE_MASK                 = C.NFTA_BITWISE_MASK
	NFTA_BITWISE_XOR                  = C.NFTA_BITWISE_XOR
	NFT_BYTEORDER_NTOH                = C.NFT_BYTEORDER_NTOH
	NFT_BYTEORDER_HTON                = C.NFT_BYTEORDER_HTON
	NFTA_BYTEORDER_UNSPEC             = C.NFTA_BYTEORDER_UNSPEC
	NFTA_BYTEORDER_SREG               = C.NFTA_BYTEORDER_SREG
	NFTA_BYTEORDER_DREG               = C.NFTA_BYTEORDER_DREG
	NFTA_BYTEORDER_OP                 = C.NFTA_BYTEORDER_OP
	NFTA_BYTEORDER_LEN                = C.NFTA_BYTEORDER_LEN
	NFTA_BYTEORDER_SIZE               = C.NFTA_BYTEORDER_SIZE
	NFT_CMP_EQ                        = C.NFT_CMP_EQ
	NFT_CMP_NEQ                       = C.NFT_CMP_NEQ
	NFT_CMP_LT                        = C.NFT_CMP_LT
	NFT_CMP_LTE                       = C.NFT_CMP_LTE
	NFT_CMP_GT                        = C.NFT_CMP_GT
	NFT_CMP_GTE                       = C.NFT_CMP_GTE
	NFTA_CMP_UNSPEC                   = C.NFTA_CMP_UNSPEC
	NFTA_CMP_SREG                     = C.NFTA_CMP_SREG
	NFTA_CMP_OP                       = C.NFTA_CMP_OP
	NFTA_CMP_DATA                     = C.NFTA_CMP_DATA
	NFT_RANGE_EQ                      = C.NFT_RANGE_EQ
	NFT_RANGE_NEQ                     = C.NFT_RANGE_NEQ
	NFTA_RANGE_UNSPEC                 = C.NFTA_RANGE_UNSPEC
	NFTA_RANGE_SREG                   = C.NFTA_RANGE_SREG
	NFTA_RANGE_OP                     = C.NFTA_RANGE_OP
	NFTA_RANGE_FROM_DATA              = C.NFTA_RANGE_FROM_DATA
	NFTA_RANGE_TO_DATA                = C.NFTA_RANGE_TO_DATA
	NFT_LOOKUP_F_INV                  = C.NFT_LOOKUP_F_INV
	NFTA_LOOKUP_UNSPEC                = C.NFTA_LOOKUP_UNSPEC
	NFTA_LOOKUP_SET                   = C.NFTA_LOOKUP_SET
	NFTA_LOOKUP_SREG                  = C.NFTA_LOOKUP_SREG
	NFTA_LOOKUP_DREG                  = C.NFTA_LOOKUP_DREG
	NFTA_LOOKUP_SET_ID                = C.NFTA_LOOKUP_SET_ID
	NFTA_LOOKUP_FLAGS                 = C.NFTA_LOOKUP_FLAGS
	NFT_DYNSET_OP_ADD                 = C.NFT_DYNSET_OP_ADD
	NFT_DYNSET_OP_UPDATE              = C.NFT_DYNSET_OP_UPDATE
	NFT_DYNSET_F_INV                  = C.NFT_DYNSET_F_INV
	NFTA_DYNSET_UNSPEC                = C.NFTA_DYNSET_UNSPEC
	NFTA_DYNSET_SET_NAME              = C.NFTA_DYNSET_SET_NAME
	NFTA_DYNSET_SET_ID                = C.NFTA_DYNSET_SET_ID
	NFTA_DYNSET_OP                    = C.NFTA_DYNSET_OP
	NFTA_DYNSET_SREG_KEY              = C.NFTA_DYNSET_SREG_KEY
	NFTA_DYNSET_SREG_DATA             = C.NFTA_DYNSET_SREG_DATA
	NFTA_DYNSET_TIMEOUT               = C.NFTA_DYNSET_TIMEOUT
	NFTA_DYNSET_EXPR                  = C.NFTA_DYNSET_EXPR
	NFTA_DYNSET_PAD                   = C.NFTA_DYNSET_PAD
	NFTA_DYNSET_FLAGS                 = C.NFTA_DYNSET_FLAGS
	NFT_PAYLOAD_LL_HEADER             = C.NFT_PAYLOAD_LL_HEADER
	NFT_PAYLOAD_NETWORK_HEADER        = C.NFT_PAYLOAD_NETWORK_HEADER
	NFT_PAYLOAD_TRANSPORT_HEADER      = C.NFT_PAYLOAD_TRANSPORT_HEADER
	NFT_PAYLOAD_CSUM_NONE             = C.NFT_PAYLOAD_CSUM_NONE
	NFT_PAYLOAD_CSUM_INET             = C.NFT_PAYLOAD_CSUM_INET
	NFT_PAYLOAD_L4CSUM_PSEUDOHDR      = C.NFT_PAYLOAD_L4CSUM_PSEUDOHDR
	NFTA_PAYLOAD_UNSPEC               = C.NFTA_PAYLOAD_UNSPEC
	NFTA_PAYLOAD_DREG                 = C.NFTA_PAYLOAD_DREG
	NFTA_PAYLOAD_BASE                 = C.NFTA_PAYLOAD_BASE
	NFTA_PAYLOAD_OFFSET               = C.NFTA_PAYLOAD_OFFSET
	NFTA_PAYLOAD_LEN                  = C.NFTA_PAYLOAD_LEN
	NFTA_PAYLOAD_SREG                 = C.NFTA_PAYLOAD_SREG
	NFTA_PAYLOAD_CSUM_TYPE            = C.NFTA_PAYLOAD_CSUM_TYPE
	NFTA_PAYLOAD_CSUM_OFFSET          = C.NFTA_PAYLOAD_CSUM_OFFSET
	NFTA_PAYLOAD_CSUM_FLAGS           = C.NFTA_PAYLOAD_CSUM_FLAGS
	NFT_EXTHDR_F_PRESENT              = C.NFT_EXTHDR_F_PRESENT
	NFT_EXTHDR_OP_IPV6                = C.NFT_EXTHDR_OP_IPV6
	NFT_EXTHDR_OP_TCPOPT              = C.NFT_EXTHDR_OP_TCPOPT
	NFTA_EXTHDR_UNSPEC                = C.NFTA_EXTHDR_UNSPEC
	NFTA_EXTHDR_DREG                  = C.NFTA_EXTHDR_DREG
	NFTA_EXTHDR_TYPE                  = C.NFTA_EXTHDR_TYPE
	NFTA_EXTHDR_OFFSET                = C.NFTA_EXTHDR_OFFSET
	NFTA_EXTHDR_LEN                   = C.NFTA_EXTHDR_LEN
	NFTA_EXTHDR_FLAGS                 = C.NFTA_EXTHDR_FLAGS
	NFTA_EXTHDR_OP                    = C.NFTA_EXTHDR_OP
	NFTA_EXTHDR_SREG                  = C.NFTA_EXTHDR_SREG
	NFT_META_LEN                      = C.NFT_META_LEN
	NFT_META_PROTOCOL                 = C.NFT_META_PROTOCOL
	NFT_META_PRIORITY                 = C.NFT_META_PRIORITY
	NFT_META_MARK                     = C.NFT_META_MARK
	NFT_META_IIF                      = C.NFT_META_IIF
	NFT_META_OIF                      = C.NFT_META_OIF
	NFT_META_IIFNAME                  = C.NFT_META_IIFNAME
	NFT_META_OIFNAME                  = C.NFT_META_OIFNAME
	NFT_META_IIFTYPE                  = C.NFT_META_IIFTYPE
	NFT_META_OIFTYPE                  = C.NFT_META_OIFTYPE
	NFT_META_SKUID                    = C.NFT_META_SKUID
	NFT_META_SKGID                    = C.NFT_META_SKGID
	NFT_META_NFTRACE                  = C.NFT_META_NFTRACE
	NFT_META_RTCLASSID                = C.NFT_META_RTCLASSID
	NFT_META_SECMARK                  = C.NFT_META_SECMARK
	NFT_META_NFPROTO                  = C.NFT_META_NFPROTO
	NFT_META_L4PROTO                  = C.NFT_META_L4PROTO
	NFT_META_BRI_IIFNAME              = C.NFT_META_BRI_IIFNAME
	NFT_META_BRI_OIFNAME              = C.NFT_META_BRI_OIFNAME
	NFT_META_PKTTYPE                  = C.NFT_META_PKTTYPE
	NFT_META_CPU                      = C.NFT_META_CPU
	NFT_META_IIFGROUP                 = C.NFT_META_IIFGROUP
	NFT_META_OIFGROUP                 = C.NFT_META_OIFGROUP
	NFT_META_CGROUP                   = C.NFT_META_CGROUP
	NFT_META_PRANDOM                  = C.NFT_META_PRANDOM
	NFT_RT_CLASSID                    = C.NFT_RT_CLASSID
	NFT_RT_NEXTHOP4                   = C.NFT_RT_NEXTHOP4
	NFT_RT_NEXTHOP6                   = C.NFT_RT_NEXTHOP6
	NFT_RT_TCPMSS                     = C.NFT_RT_TCPMSS
	NFT_HASH_JENKINS                  = C.NFT_HASH_JENKINS
	NFT_HASH_SYM                      = C.NFT_HASH_SYM
	NFTA_HASH_UNSPEC                  = C.NFTA_HASH_UNSPEC
	NFTA_HASH_SREG                    = C.NFTA_HASH_SREG
	NFTA_HASH_DREG                    = C.NFTA_HASH_DREG
	NFTA_HASH_LEN                     = C.NFTA_HASH_LEN
	NFTA_HASH_MODULUS                 = C.NFTA_HASH_MODULUS
	NFTA_HASH_SEED                    = C.NFTA_HASH_SEED
	NFTA_HASH_OFFSET                  = C.NFTA_HASH_OFFSET
	NFTA_HASH_TYPE                    = C.NFTA_HASH_TYPE
	NFTA_META_UNSPEC                  = C.NFTA_META_UNSPEC
	NFTA_META_DREG                    = C.NFTA_META_DREG
	NFTA_META_KEY                     = C.NFTA_META_KEY
	NFTA_META_SREG                    = C.NFTA_META_SREG
	NFTA_RT_UNSPEC                    = C.NFTA_RT_UNSPEC
	NFTA_RT_DREG                      = C.NFTA_RT_DREG
	NFTA_RT_KEY                       = C.NFTA_RT_KEY
	NFT_CT_STATE                      = C.NFT_CT_STATE
	NFT_CT_DIRECTION                  = C.NFT_CT_DIRECTION
	NFT_CT_STATUS                     = C.NFT_CT_STATUS
	NFT_CT_MARK                       = C.NFT_CT_MARK
	NFT_CT_SECMARK                    = C.NFT_CT_SECMARK
	NFT_CT_EXPIRATION                 = C.NFT_CT_EXPIRATION
	NFT_CT_HELPER                     = C.NFT_CT_HELPER
	NFT_CT_L3PROTOCOL                 = C.NFT_CT_L3PROTOCOL
	NFT_CT_SRC                        = C.NFT_CT_SRC
	NFT_CT_DST                        = C.NFT_CT_DST
	NFT_CT_PROTOCOL                   = C.NFT_CT_PROTOCOL
	NFT_CT_PROTO_SRC                  = C.NFT_CT_PROTO_SRC
	NFT_CT_PROTO_DST                  = C.NFT_CT_PROTO_DST
	NFT_CT_LABELS                     = C.NFT_CT_LABELS
	NFT_CT_PKTS                       = C.NFT_CT_PKTS
	NFT_CT_BYTES                      = C.NFT_CT_BYTES
	NFT_CT_AVGPKT                     = C.NFT_CT_AVGPKT
	NFT_CT_ZONE                       = C.NFT_CT_ZONE
	NFT_CT_EVENTMASK                  = C.NFT_CT_EVENTMASK
	NFTA_CT_UNSPEC                    = C.NFTA_CT_UNSPEC
	NFTA_CT_DREG                      = C.NFTA_CT_DREG
	NFTA_CT_KEY                       = C.NFTA_CT_KEY
	NFTA_CT_DIRECTION                 = C.NFTA_CT_DIRECTION
	NFTA_CT_SREG                      = C.NFTA_CT_SREG
	NFT_LIMIT_PKTS                    = C.NFT_LIMIT_PKTS
	NFT_LIMIT_PKT_BYTES               = C.NFT_LIMIT_PKT_BYTES
	NFT_LIMIT_F_INV                   = C.NFT_LIMIT_F_INV
	NFTA_LIMIT_UNSPEC                 = C.NFTA_LIMIT_UNSPEC
	NFTA_LIMIT_RATE                   = C.NFTA_LIMIT_RATE
	NFTA_LIMIT_UNIT                   = C.NFTA_LIMIT_UNIT
	NFTA_LIMIT_BURST                  = C.NFTA_LIMIT_BURST
	NFTA_LIMIT_TYPE                   = C.NFTA_LIMIT_TYPE
	NFTA_LIMIT_FLAGS                  = C.NFTA_LIMIT_FLAGS
	NFTA_LIMIT_PAD                    = C.NFTA_LIMIT_PAD
	NFTA_COUNTER_UNSPEC               = C.NFTA_COUNTER_UNSPEC
	NFTA_COUNTER_BYTES                = C.NFTA_COUNTER_BYTES
	NFTA_COUNTER_PACKETS              = C.NFTA_COUNTER_PACKETS
	NFTA_COUNTER_PAD                  = C.NFTA_COUNTER_PAD
	NFTA_LOG_UNSPEC                   = C.NFTA_LOG_UNSPEC
	NFTA_LOG_GROUP                    = C.NFTA_LOG_GROUP
	NFTA_LOG_PREFIX                   = C.NFTA_LOG_PREFIX
	NFTA_LOG_SNAPLEN                  = C.NFTA_LOG_SNAPLEN
	NFTA_LOG_QTHRESHOLD               = C.NFTA_LOG_QTHRESHOLD
	NFTA_LOG_LEVEL                    = C.NFTA_LOG_LEVEL
	NFTA_LOG_FLAGS                    = C.NFTA_LOG_FLAGS
	NFTA_QUEUE_UNSPEC                 = C.NFTA_QUEUE_UNSPEC
	NFTA_QUEUE_NUM                    = C.NFTA_QUEUE_NUM
	NFTA_QUEUE_TOTAL                  = C.NFTA_QUEUE_TOTAL
	NFTA_QUEUE_FLAGS                  = C.NFTA_QUEUE_FLAGS
	NFTA_QUEUE_SREG_QNUM              = C.NFTA_QUEUE_SREG_QNUM
	NFT_QUOTA_F_INV                   = C.NFT_QUOTA_F_INV
	NFT_QUOTA_F_DEPLETED              = C.NFT_QUOTA_F_DEPLETED
	NFTA_QUOTA_UNSPEC                 = C.NFTA_QUOTA_UNSPEC
	NFTA_QUOTA_BYTES                  = C.NFTA_QUOTA_BYTES
	NFTA_QUOTA_FLAGS                  = C.NFTA_QUOTA_FLAGS
	NFTA_QUOTA_PAD                    = C.NFTA_QUOTA_PAD
	NFTA_QUOTA_CONSUMED               = C.NFTA_QUOTA_CONSUMED
	NFT_REJECT_ICMP_UNREACH           = C.NFT_REJECT_ICMP_UNREACH
	NFT_REJECT_TCP_RST                = C.NFT_REJECT_TCP_RST
	NFT_REJECT_ICMPX_UNREACH          = C.NFT_REJECT_ICMPX_UNREACH
	NFT_REJECT_ICMPX_NO_ROUTE         = C.NFT_REJECT_ICMPX_NO_ROUTE
	NFT_REJECT_ICMPX_PORT_UNREACH     = C.NFT_REJECT_ICMPX_PORT_UNREACH
	NFT_REJECT_ICMPX_HOST_UNREACH     = C.NFT_REJECT_ICMPX_HOST_UNREACH
	NFT_REJECT_ICMPX_ADMIN_PROHIBITED = C.NFT_REJECT_ICMPX_ADMIN_PROHIBITED
	NFTA_REJECT_UNSPEC                = C.NFTA_REJECT_UNSPEC
	NFTA_REJECT_TYPE                  = C.NFTA_REJECT_TYPE
	NFTA_REJECT_ICMP_CODE             = C.NFTA_REJECT_ICMP_CODE
	NFT_NAT_SNAT                      = C.NFT_NAT_SNAT
	NFT_NAT_DNAT                      = C.NFT_NAT_DNAT
	NFTA_NAT_UNSPEC                   = C.NFTA_NAT_UNSPEC
	NFTA_NAT_TYPE                     = C.NFTA_NAT_TYPE
	NFTA_NAT_FAMILY                   = C.NFTA_NAT_FAMILY
	NFTA_NAT_REG_ADDR_MIN             = C.NFTA_NAT_REG_ADDR_MIN
	NFTA_NAT_REG_ADDR_MAX             = C.NFTA_NAT_REG_ADDR_MAX
	NFTA_NAT_REG_PROTO_MIN            = C.NFTA_NAT_REG_PROTO_MIN
	NFTA_NAT_REG_PROTO_MAX            = C.NFTA_NAT_REG_PROTO_MAX
	NFTA_NAT_FLAGS                    = C.NFTA_NAT_FLAGS
	NFTA_MASQ_UNSPEC                  = C.NFTA_MASQ_UNSPEC
	NFTA_MASQ_FLAGS                   = C.NFTA_MASQ_FLAGS
	NFTA_MASQ_REG_PROTO_MIN           = C.NFTA_MASQ_REG_PROTO_MIN
	NFTA_MASQ_REG_PROTO_MAX           = C.NFTA_MASQ_REG_PROTO_MAX
	NFTA_REDIR_UNSPEC                 = C.NFTA_REDIR_UNSPEC
	NFTA_REDIR_REG_PROTO_MIN          = C.NFTA_REDIR_REG_PROTO_MIN
	NFTA_REDIR_REG_PROTO_MAX          = C.NFTA_REDIR_REG_PROTO_MAX
	NFTA_REDIR_FLAGS                  = C.NFTA_REDIR_FLAGS
	NFTA_DUP_UNSPEC                   = C.NFTA_DUP_UNSPEC
	NFTA_DUP_SREG_ADDR                = C.NFTA_DUP_SREG_ADDR
	NFTA_DUP_SREG_DEV                 = C.NFTA_DUP_SREG_DEV
	NFTA_FWD_UNSPEC                   = C.NFTA_FWD_UNSPEC
	NFTA_FWD_SREG_DEV                 = C.NFTA_FWD_SREG_DEV
	NFTA_OBJREF_UNSPEC                = C.NFTA_OBJREF_UNSPEC
	NFTA_OBJREF_IMM_TYPE              = C.NFTA_OBJREF_IMM_TYPE
	NFTA_OBJREF_IMM_NAME              = C.NFTA_OBJREF_IMM_NAME
	NFTA_OBJREF_SET_SREG              = C.NFTA_OBJREF_SET_SREG
	NFTA_OBJREF_SET_NAME              = C.NFTA_OBJREF_SET_NAME
	NFTA_OBJREF_SET_ID                = C.NFTA_OBJREF_SET_ID
	NFTA_GEN_UNSPEC                   = C.NFTA_GEN_UNSPEC
	NFTA_GEN_ID                       = C.NFTA_GEN_ID
	NFTA_GEN_PROC_PID                 = C.NFTA_GEN_PROC_PID
	NFTA_GEN_PROC_NAME                = C.NFTA_GEN_PROC_NAME
	NFTA_FIB_UNSPEC                   = C.NFTA_FIB_UNSPEC
	NFTA_FIB_DREG                     = C.NFTA_FIB_DREG
	NFTA_FIB_RESULT                   = C.NFTA_FIB_RESULT
	NFTA_FIB_FLAGS                    = C.NFTA_FIB_FLAGS
	NFT_FIB_RESULT_UNSPEC             = C.NFT_FIB_RESULT_UNSPEC
	NFT_FIB_RESULT_OIF                = C.NFT_FIB_RESULT_OIF
	NFT_FIB_RESULT_OIFNAME            = C.NFT_FIB_RESULT_OIFNAME
	NFT_FIB_RESULT_ADDRTYPE           = C.NFT_FIB_RESULT_ADDRTYPE
	NFTA_FIB_F_SADDR                  = C.NFTA_FIB_F_SADDR
	NFTA_FIB_F_DADDR                  = C.NFTA_FIB_F_DADDR
	NFTA_FIB_F_MARK                   = C.NFTA_FIB_F_MARK
	NFTA_FIB_F_IIF                    = C.NFTA_FIB_F_IIF
	NFTA_FIB_F_OIF                    = C.NFTA_FIB_F_OIF
	NFTA_FIB_F_PRESENT                = C.NFTA_FIB_F_PRESENT
	NFTA_CT_HELPER_UNSPEC             = C.NFTA_CT_HELPER_UNSPEC
	NFTA_CT_HELPER_NAME               = C.NFTA_CT_HELPER_NAME
	NFTA_CT_HELPER_L3PROTO            = C.NFTA_CT_HELPER_L3PROTO
	NFTA_CT_HELPER_L4PROTO            = C.NFTA_CT_HELPER_L4PROTO
	NFTA_OBJ_UNSPEC                   = C.NFTA_OBJ_UNSPEC
	NFTA_OBJ_TABLE                    = C.NFTA_OBJ_TABLE
	NFTA_OBJ_NAME                     = C.NFTA_OBJ_NAME
	NFTA_OBJ_TYPE                     = C.NFTA_OBJ_TYPE
	NFTA_OBJ_DATA                     = C.NFTA_OBJ_DATA
	NFTA_OBJ_USE                      = C.NFTA_OBJ_USE
	NFTA_TRACE_UNSPEC                 = C.NFTA_TRACE_UNSPEC
	NFTA_TRACE_TABLE                  = C.NFTA_TRACE_TABLE
	NFTA_TRACE_CHAIN                  = C.NFTA_TRACE_CHAIN
	NFTA_TRACE_RULE_HANDLE            = C.NFTA_TRACE_RULE_HANDLE
	NFTA_TRACE_TYPE                   = C.NFTA_TRACE_TYPE
	NFTA_TRACE_VERDICT                = C.NFTA_TRACE_VERDICT
	NFTA_TRACE_ID                     = C.NFTA_TRACE_ID
	NFTA_TRACE_LL_HEADER              = C.NFTA_TRACE_LL_HEADER
	NFTA_TRACE_NETWORK_HEADER         = C.NFTA_TRACE_NETWORK_HEADER
	NFTA_TRACE_TRANSPORT_HEADER       = C.NFTA_TRACE_TRANSPORT_HEADER
	NFTA_TRACE_IIF                    = C.NFTA_TRACE_IIF
	NFTA_TRACE_IIFTYPE                = C.NFTA_TRACE_IIFTYPE
	NFTA_TRACE_OIF                    = C.NFTA_TRACE_OIF
	NFTA_TRACE_OIFTYPE                = C.NFTA_TRACE_OIFTYPE
	NFTA_TRACE_MARK                   = C.NFTA_TRACE_MARK
	NFTA_TRACE_NFPROTO                = C.NFTA_TRACE_NFPROTO
	NFTA_TRACE_POLICY                 = C.NFTA_TRACE_POLICY
	NFTA_TRACE_PAD                    = C.NFTA_TRACE_PAD
	NFT_TRACETYPE_UNSPEC              = C.NFT_TRACETYPE_UNSPEC
	NFT_TRACETYPE_POLICY              = C.NFT_TRACETYPE_POLICY
	NFT_TRACETYPE_RETURN              = C.NFT_TRACETYPE_RETURN
	NFT_TRACETYPE_RULE                = C.NFT_TRACETYPE_RULE
	NFTA_NG_UNSPEC                    = C.NFTA_NG_UNSPEC
	NFTA_NG_DREG                      = C.NFTA_NG_DREG
	NFTA_NG_MODULUS                   = C.NFTA_NG_MODULUS
	NFTA_NG_TYPE                      = C.NFTA_NG_TYPE
	NFTA_NG_OFFSET                    = C.NFTA_NG_OFFSET
	NFT_NG_INCREMENTAL                = C.NFT_NG_INCREMENTAL
	NFT_NG_RANDOM                     = C.NFT_NG_RANDOM
)

type RTCTime C.struct_rtc_time

type RTCWkAlrm C.struct_rtc_wkalrm

type RTCPLLInfo C.struct_rtc_pll_info

// BLKPG ioctl:

type BlkpgIoctlArg C.struct_blkpg_ioctl_arg

type BlkpgPartition C.struct_my_blkpg_partition

const (
	BLKPG                  = C.BLKPG
	BLKPG_ADD_PARTITION    = C.BLKPG_ADD_PARTITION
	BLKPG_DEL_PARTITION    = C.BLKPG_DEL_PARTITION
	BLKPG_RESIZE_PARTITION = C.BLKPG_RESIZE_PARTITION
)

// netlink namespace
// generated from
// perl -nlE '/^\s*(NETNSA\w+)/ && say "$1 = C.$1"' /usr/include/linux/net_namespace.h
const (
	NETNSA_NONE = C.NETNSA_NONE
	NETNSA_NSID = C.NETNSA_NSID
	NETNSA_PID  = C.NETNSA_PID
	NETNSA_FD   = C.NETNSA_FD
)

// AF_XDP:

type XDPRingOffset C.struct_xdp_ring_offset

type XDPMmapOffsets C.struct_xdp_mmap_offsets

type XDPUmemReg C.struct_xdp_umem_reg

type XDPStatistics C.struct_xdp_statistics

type XDPDesc C.struct_xdp_desc

// NCSI generic netlink:

const (
	NCSI_CMD_UNSPEC                 = C.NCSI_CMD_UNSPEC
	NCSI_CMD_PKG_INFO               = C.NCSI_CMD_PKG_INFO
	NCSI_CMD_SET_INTERFACE          = C.NCSI_CMD_SET_INTERFACE
	NCSI_CMD_CLEAR_INTERFACE        = C.NCSI_CMD_CLEAR_INTERFACE
	NCSI_ATTR_UNSPEC                = C.NCSI_ATTR_UNSPEC
	NCSI_ATTR_IFINDEX               = C.NCSI_ATTR_IFINDEX
	NCSI_ATTR_PACKAGE_LIST          = C.NCSI_ATTR_PACKAGE_LIST
	NCSI_ATTR_PACKAGE_ID            = C.NCSI_ATTR_PACKAGE_ID
	NCSI_ATTR_CHANNEL_ID            = C.NCSI_ATTR_CHANNEL_ID
	NCSI_PKG_ATTR_UNSPEC            = C.NCSI_PKG_ATTR_UNSPEC
	NCSI_PKG_ATTR                   = C.NCSI_PKG_ATTR
	NCSI_PKG_ATTR_ID                = C.NCSI_PKG_ATTR_ID
	NCSI_PKG_ATTR_FORCED            = C.NCSI_PKG_ATTR_FORCED
	NCSI_PKG_ATTR_CHANNEL_LIST      = C.NCSI_PKG_ATTR_CHANNEL_LIST
	NCSI_CHANNEL_ATTR_UNSPEC        = C.NCSI_CHANNEL_ATTR_UNSPEC
	NCSI_CHANNEL_ATTR               = C.NCSI_CHANNEL_ATTR
	NCSI_CHANNEL_ATTR_ID            = C.NCSI_CHANNEL_ATTR_ID
	NCSI_CHANNEL_ATTR_VERSION_MAJOR = C.NCSI_CHANNEL_ATTR_VERSION_MAJOR
	NCSI_CHANNEL_ATTR_VERSION_MINOR = C.NCSI_CHANNEL_ATTR_VERSION_MINOR
	NCSI_CHANNEL_ATTR_VERSION_STR   = C.NCSI_CHANNEL_ATTR_VERSION_STR
	NCSI_CHANNEL_ATTR_LINK_STATE    = C.NCSI_CHANNEL_ATTR_LINK_STATE
	NCSI_CHANNEL_ATTR_ACTIVE        = C.NCSI_CHANNEL_ATTR_ACTIVE
	NCSI_CHANNEL_ATTR_FORCED        = C.NCSI_CHANNEL_ATTR_FORCED
	NCSI_CHANNEL_ATTR_VLAN_LIST     = C.NCSI_CHANNEL_ATTR_VLAN_LIST
	NCSI_CHANNEL_ATTR_VLAN_ID       = C.NCSI_CHANNEL_ATTR_VLAN_ID
)

// Timestamping

type ScmTimestamping C.struct_scm_timestamping

const (
	SOF_TIMESTAMPING_TX_HARDWARE  = C.SOF_TIMESTAMPING_TX_HARDWARE
	SOF_TIMESTAMPING_TX_SOFTWARE  = C.SOF_TIMESTAMPING_TX_SOFTWARE
	SOF_TIMESTAMPING_RX_HARDWARE  = C.SOF_TIMESTAMPING_RX_HARDWARE
	SOF_TIMESTAMPING_RX_SOFTWARE  = C.SOF_TIMESTAMPING_RX_SOFTWARE
	SOF_TIMESTAMPING_SOFTWARE     = C.SOF_TIMESTAMPING_SOFTWARE
	SOF_TIMESTAMPING_SYS_HARDWARE = C.SOF_TIMESTAMPING_SYS_HARDWARE
	SOF_TIMESTAMPING_RAW_HARDWARE = C.SOF_TIMESTAMPING_RAW_HARDWARE
	SOF_TIMESTAMPING_OPT_ID       = C.SOF_TIMESTAMPING_OPT_ID
	SOF_TIMESTAMPING_TX_SCHED     = C.SOF_TIMESTAMPING_TX_SCHED
	SOF_TIMESTAMPING_TX_ACK       = C.SOF_TIMESTAMPING_TX_ACK
	SOF_TIMESTAMPING_OPT_CMSG     = C.SOF_TIMESTAMPING_OPT_CMSG
	SOF_TIMESTAMPING_OPT_TSONLY   = C.SOF_TIMESTAMPING_OPT_TSONLY
	SOF_TIMESTAMPING_OPT_STATS    = C.SOF_TIMESTAMPING_OPT_STATS
	SOF_TIMESTAMPING_OPT_PKTINFO  = C.SOF_TIMESTAMPING_OPT_PKTINFO
	SOF_TIMESTAMPING_OPT_TX_SWHW  = C.SOF_TIMESTAMPING_OPT_TX_SWHW

	SOF_TIMESTAMPING_LAST = C.SOF_TIMESTAMPING_LAST
	SOF_TIMESTAMPING_MASK = C.SOF_TIMESTAMPING_MASK

	SCM_TSTAMP_SND   = C.SCM_TSTAMP_SND
	SCM_TSTAMP_SCHED = C.SCM_TSTAMP_SCHED
	SCM_TSTAMP_ACK   = C.SCM_TSTAMP_ACK
)

// Socket error queue

type SockExtendedErr C.struct_sock_extended_err

// Fanotify

type FanotifyEventMetadata C.struct_fanotify_event_metadata

type FanotifyResponse C.struct_fanotify_response

// Crypto user configuration API.

const (
	CRYPTO_MSG_BASE      = C.CRYPTO_MSG_BASE
	CRYPTO_MSG_NEWALG    = C.CRYPTO_MSG_NEWALG
	CRYPTO_MSG_DELALG    = C.CRYPTO_MSG_DELALG
	CRYPTO_MSG_UPDATEALG = C.CRYPTO_MSG_UPDATEALG
	CRYPTO_MSG_GETALG    = C.CRYPTO_MSG_GETALG
	CRYPTO_MSG_DELRNG    = C.CRYPTO_MSG_DELRNG
	CRYPTO_MSG_GETSTAT   = C.CRYPTO_MSG_GETSTAT
)

const (
	CRYPTOCFGA_UNSPEC           = C.CRYPTOCFGA_UNSPEC
	CRYPTOCFGA_PRIORITY_VAL     = C.CRYPTOCFGA_PRIORITY_VAL
	CRYPTOCFGA_REPORT_LARVAL    = C.CRYPTOCFGA_REPORT_LARVAL
	CRYPTOCFGA_REPORT_HASH      = C.CRYPTOCFGA_REPORT_HASH
	CRYPTOCFGA_REPORT_BLKCIPHER = C.CRYPTOCFGA_REPORT_BLKCIPHER
	CRYPTOCFGA_REPORT_AEAD      = C.CRYPTOCFGA_REPORT_AEAD
	CRYPTOCFGA_REPORT_COMPRESS  = C.CRYPTOCFGA_REPORT_COMPRESS
	CRYPTOCFGA_REPORT_RNG       = C.CRYPTOCFGA_REPORT_RNG
	CRYPTOCFGA_REPORT_CIPHER    = C.CRYPTOCFGA_REPORT_CIPHER
	CRYPTOCFGA_REPORT_AKCIPHER  = C.CRYPTOCFGA_REPORT_AKCIPHER
	CRYPTOCFGA_REPORT_KPP       = C.CRYPTOCFGA_REPORT_KPP
	CRYPTOCFGA_REPORT_ACOMP     = C.CRYPTOCFGA_REPORT_ACOMP
	CRYPTOCFGA_STAT_LARVAL      = C.CRYPTOCFGA_STAT_LARVAL
	CRYPTOCFGA_STAT_HASH        = C.CRYPTOCFGA_STAT_HASH
	CRYPTOCFGA_STAT_BLKCIPHER   = C.CRYPTOCFGA_STAT_BLKCIPHER
	CRYPTOCFGA_STAT_AEAD        = C.CRYPTOCFGA_STAT_AEAD
	CRYPTOCFGA_STAT_COMPRESS    = C.CRYPTOCFGA_STAT_COMPRESS
	CRYPTOCFGA_STAT_RNG         = C.CRYPTOCFGA_STAT_RNG
	CRYPTOCFGA_STAT_CIPHER      = C.CRYPTOCFGA_STAT_CIPHER
	CRYPTOCFGA_STAT_AKCIPHER    = C.CRYPTOCFGA_STAT_AKCIPHER
	CRYPTOCFGA_STAT_KPP         = C.CRYPTOCFGA_STAT_KPP
	CRYPTOCFGA_STAT_ACOMP       = C.CRYPTOCFGA_STAT_ACOMP
)

type CryptoUserAlg C.struct_crypto_user_alg

type CryptoStatAEAD C.struct_crypto_stat_aead

type CryptoStatAKCipher C.struct_crypto_stat_akcipher

type CryptoStatCipher C.struct_crypto_stat_cipher

type CryptoStatCompress C.struct_crypto_stat_compress

type CryptoStatHash C.struct_crypto_stat_hash

type CryptoStatKPP C.struct_crypto_stat_kpp

type CryptoStatRNG C.struct_crypto_stat_rng

type CryptoStatLarval C.struct_crypto_stat_larval

type CryptoReportLarval C.struct_crypto_report_larval

type CryptoReportHash C.struct_crypto_report_hash

type CryptoReportCipher C.struct_crypto_report_cipher

type CryptoReportBlkCipher C.struct_crypto_report_blkcipher

type CryptoReportAEAD C.struct_crypto_report_aead

type CryptoReportComp C.struct_crypto_report_comp

type CryptoReportRNG C.struct_crypto_report_rng

type CryptoReportAKCipher C.struct_crypto_report_akcipher

type CryptoReportKPP C.struct_crypto_report_kpp

type CryptoReportAcomp C.struct_crypto_report_acomp

// generated by:
// perl -nlE '/^\s*(BPF_\w+)/ && say "$1 = C.$1"' include/uapi/linux/bpf.h
const (
	BPF_REG_0                             = C.BPF_REG_0
	BPF_REG_1                             = C.BPF_REG_1
	BPF_REG_2                             = C.BPF_REG_2
	BPF_REG_3                             = C.BPF_REG_3
	BPF_REG_4                             = C.BPF_REG_4
	BPF_REG_5                             = C.BPF_REG_5
	BPF_REG_6                             = C.BPF_REG_6
	BPF_REG_7                             = C.BPF_REG_7
	BPF_REG_8                             = C.BPF_REG_8
	BPF_REG_9                             = C.BPF_REG_9
	BPF_REG_10                            = C.BPF_REG_10
	BPF_MAP_CREATE                        = C.BPF_MAP_CREATE
	BPF_MAP_LOOKUP_ELEM                   = C.BPF_MAP_LOOKUP_ELEM
	BPF_MAP_UPDATE_ELEM                   = C.BPF_MAP_UPDATE_ELEM
	BPF_MAP_DELETE_ELEM                   = C.BPF_MAP_DELETE_ELEM
	BPF_MAP_GET_NEXT_KEY                  = C.BPF_MAP_GET_NEXT_KEY
	BPF_PROG_LOAD                         = C.BPF_PROG_LOAD
	BPF_OBJ_PIN                           = C.BPF_OBJ_PIN
	BPF_OBJ_GET                           = C.BPF_OBJ_GET
	BPF_PROG_ATTACH                       = C.BPF_PROG_ATTACH
	BPF_PROG_DETACH                       = C.BPF_PROG_DETACH
	BPF_PROG_TEST_RUN                     = C.BPF_PROG_TEST_RUN
	BPF_PROG_GET_NEXT_ID                  = C.BPF_PROG_GET_NEXT_ID
	BPF_MAP_GET_NEXT_ID                   = C.BPF_MAP_GET_NEXT_ID
	BPF_PROG_GET_FD_BY_ID                 = C.BPF_PROG_GET_FD_BY_ID
	BPF_MAP_GET_FD_BY_ID                  = C.BPF_MAP_GET_FD_BY_ID
	BPF_OBJ_GET_INFO_BY_FD                = C.BPF_OBJ_GET_INFO_BY_FD
	BPF_PROG_QUERY                        = C.BPF_PROG_QUERY
	BPF_RAW_TRACEPOINT_OPEN               = C.BPF_RAW_TRACEPOINT_OPEN
	BPF_BTF_LOAD                          = C.BPF_BTF_LOAD
	BPF_BTF_GET_FD_BY_ID                  = C.BPF_BTF_GET_FD_BY_ID
	BPF_TASK_FD_QUERY                     = C.BPF_TASK_FD_QUERY
	BPF_MAP_LOOKUP_AND_DELETE_ELEM        = C.BPF_MAP_LOOKUP_AND_DELETE_ELEM
	BPF_MAP_FREEZE                        = C.BPF_MAP_FREEZE
	BPF_BTF_GET_NEXT_ID                   = C.BPF_BTF_GET_NEXT_ID
	BPF_MAP_TYPE_UNSPEC                   = C.BPF_MAP_TYPE_UNSPEC
	BPF_MAP_TYPE_HASH                     = C.BPF_MAP_TYPE_HASH
	BPF_MAP_TYPE_ARRAY                    = C.BPF_MAP_TYPE_ARRAY
	BPF_MAP_TYPE_PROG_ARRAY               = C.BPF_MAP_TYPE_PROG_ARRAY
	BPF_MAP_TYPE_PERF_EVENT_ARRAY         = C.BPF_MAP_TYPE_PERF_EVENT_ARRAY
	BPF_MAP_TYPE_PERCPU_HASH              = C.BPF_MAP_TYPE_PERCPU_HASH
	BPF_MAP_TYPE_PERCPU_ARRAY             = C.BPF_MAP_TYPE_PERCPU_ARRAY
	BPF_MAP_TYPE_STACK_TRACE              = C.BPF_MAP_TYPE_STACK_TRACE
	BPF_MAP_TYPE_CGROUP_ARRAY             = C.BPF_MAP_TYPE_CGROUP_ARRAY
	BPF_MAP_TYPE_LRU_HASH                 = C.BPF_MAP_TYPE_LRU_HASH
	BPF_MAP_TYPE_LRU_PERCPU_HASH          = C.BPF_MAP_TYPE_LRU_PERCPU_HASH
	BPF_MAP_TYPE_LPM_TRIE                 = C.BPF_MAP_TYPE_LPM_TRIE
	BPF_MAP_TYPE_ARRAY_OF_MAPS            = C.BPF_MAP_TYPE_ARRAY_OF_MAPS
	BPF_MAP_TYPE_HASH_OF_MAPS             = C.BPF_MAP_TYPE_HASH_OF_MAPS
	BPF_MAP_TYPE_DEVMAP                   = C.BPF_MAP_TYPE_DEVMAP
	BPF_MAP_TYPE_SOCKMAP                  = C.BPF_MAP_TYPE_SOCKMAP
	BPF_MAP_TYPE_CPUMAP                   = C.BPF_MAP_TYPE_CPUMAP
	BPF_MAP_TYPE_XSKMAP                   = C.BPF_MAP_TYPE_XSKMAP
	BPF_MAP_TYPE_SOCKHASH                 = C.BPF_MAP_TYPE_SOCKHASH
	BPF_MAP_TYPE_CGROUP_STORAGE           = C.BPF_MAP_TYPE_CGROUP_STORAGE
	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY      = C.BPF_MAP_TYPE_REUSEPORT_SOCKARRAY
	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE    = C.BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
	BPF_MAP_TYPE_QUEUE                    = C.BPF_MAP_TYPE_QUEUE
	BPF_MAP_TYPE_STACK                    = C.BPF_MAP_TYPE_STACK
	BPF_MAP_TYPE_SK_STORAGE               = C.BPF_MAP_TYPE_SK_STORAGE
	BPF_MAP_TYPE_DEVMAP_HASH              = C.BPF_MAP_TYPE_DEVMAP_HASH
	BPF_PROG_TYPE_UNSPEC                  = C.BPF_PROG_TYPE_UNSPEC
	BPF_PROG_TYPE_SOCKET_FILTER           = C.BPF_PROG_TYPE_SOCKET_FILTER
	BPF_PROG_TYPE_KPROBE                  = C.BPF_PROG_TYPE_KPROBE
	BPF_PROG_TYPE_SCHED_CLS               = C.BPF_PROG_TYPE_SCHED_CLS
	BPF_PROG_TYPE_SCHED_ACT               = C.BPF_PROG_TYPE_SCHED_ACT
	BPF_PROG_TYPE_TRACEPOINT              = C.BPF_PROG_TYPE_TRACEPOINT
	BPF_PROG_TYPE_XDP                     = C.BPF_PROG_TYPE_XDP
	BPF_PROG_TYPE_PERF_EVENT              = C.BPF_PROG_TYPE_PERF_EVENT
	BPF_PROG_TYPE_CGROUP_SKB              = C.BPF_PROG_TYPE_CGROUP_SKB
	BPF_PROG_TYPE_CGROUP_SOCK             = C.BPF_PROG_TYPE_CGROUP_SOCK
	BPF_PROG_TYPE_LWT_IN                  = C.BPF_PROG_TYPE_LWT_IN
	BPF_PROG_TYPE_LWT_OUT                 = C.BPF_PROG_TYPE_LWT_OUT
	BPF_PROG_TYPE_LWT_XMIT                = C.BPF_PROG_TYPE_LWT_XMIT
	BPF_PROG_TYPE_SOCK_OPS                = C.BPF_PROG_TYPE_SOCK_OPS
	BPF_PROG_TYPE_SK_SKB                  = C.BPF_PROG_TYPE_SK_SKB
	BPF_PROG_TYPE_CGROUP_DEVICE           = C.BPF_PROG_TYPE_CGROUP_DEVICE
	BPF_PROG_TYPE_SK_MSG                  = C.BPF_PROG_TYPE_SK_MSG
	BPF_PROG_TYPE_RAW_TRACEPOINT          = C.BPF_PROG_TYPE_RAW_TRACEPOINT
	BPF_PROG_TYPE_CGROUP_SOCK_ADDR        = C.BPF_PROG_TYPE_CGROUP_SOCK_ADDR
	BPF_PROG_TYPE_LWT_SEG6LOCAL           = C.BPF_PROG_TYPE_LWT_SEG6LOCAL
	BPF_PROG_TYPE_LIRC_MODE2              = C.BPF_PROG_TYPE_LIRC_MODE2
	BPF_PROG_TYPE_SK_REUSEPORT            = C.BPF_PROG_TYPE_SK_REUSEPORT
	BPF_PROG_TYPE_FLOW_DISSECTOR          = C.BPF_PROG_TYPE_FLOW_DISSECTOR
	BPF_PROG_TYPE_CGROUP_SYSCTL           = C.BPF_PROG_TYPE_CGROUP_SYSCTL
	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = C.BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
	BPF_PROG_TYPE_CGROUP_SOCKOPT          = C.BPF_PROG_TYPE_CGROUP_SOCKOPT
	BPF_PROG_TYPE_TRACING                 = C.BPF_PROG_TYPE_TRACING
	BPF_CGROUP_INET_INGRESS               = C.BPF_CGROUP_INET_INGRESS
	BPF_CGROUP_INET_EGRESS                = C.BPF_CGROUP_INET_EGRESS
	BPF_CGROUP_INET_SOCK_CREATE           = C.BPF_CGROUP_INET_SOCK_CREATE
	BPF_CGROUP_SOCK_OPS                   = C.BPF_CGROUP_SOCK_OPS
	BPF_SK_SKB_STREAM_PARSER              = C.BPF_SK_SKB_STREAM_PARSER
	BPF_SK_SKB_STREAM_VERDICT             = C.BPF_SK_SKB_STREAM_VERDICT
	BPF_CGROUP_DEVICE                     = C.BPF_CGROUP_DEVICE
	BPF_SK_MSG_VERDICT                    = C.BPF_SK_MSG_VERDICT
	BPF_CGROUP_INET4_BIND                 = C.BPF_CGROUP_INET4_BIND
	BPF_CGROUP_INET6_BIND                 = C.BPF_CGROUP_INET6_BIND
	BPF_CGROUP_INET4_CONNECT              = C.BPF_CGROUP_INET4_CONNECT
	BPF_CGROUP_INET6_CONNECT              = C.BPF_CGROUP_INET6_CONNECT
	BPF_CGROUP_INET4_POST_BIND            = C.BPF_CGROUP_INET4_POST_BIND
	BPF_CGROUP_INET6_POST_BIND            = C.BPF_CGROUP_INET6_POST_BIND
	BPF_CGROUP_UDP4_SENDMSG               = C.BPF_CGROUP_UDP4_SENDMSG
	BPF_CGROUP_UDP6_SENDMSG               = C.BPF_CGROUP_UDP6_SENDMSG
	BPF_LIRC_MODE2                        = C.BPF_LIRC_MODE2
	BPF_FLOW_DISSECTOR                    = C.BPF_FLOW_DISSECTOR
	BPF_CGROUP_SYSCTL                     = C.BPF_CGROUP_SYSCTL
	BPF_CGROUP_UDP4_RECVMSG               = C.BPF_CGROUP_UDP4_RECVMSG
	BPF_CGROUP_UDP6_RECVMSG               = C.BPF_CGROUP_UDP6_RECVMSG
	BPF_CGROUP_GETSOCKOPT                 = C.BPF_CGROUP_GETSOCKOPT
	BPF_CGROUP_SETSOCKOPT                 = C.BPF_CGROUP_SETSOCKOPT
	BPF_TRACE_RAW_TP                      = C.BPF_TRACE_RAW_TP
	BPF_TRACE_FENTRY                      = C.BPF_TRACE_FENTRY
	BPF_TRACE_FEXIT                       = C.BPF_TRACE_FEXIT
	BPF_STACK_BUILD_ID_EMPTY              = C.BPF_STACK_BUILD_ID_EMPTY
	BPF_STACK_BUILD_ID_VALID              = C.BPF_STACK_BUILD_ID_VALID
	BPF_STACK_BUILD_ID_IP                 = C.BPF_STACK_BUILD_ID_IP
	BPF_ADJ_ROOM_NET                      = C.BPF_ADJ_ROOM_NET
	BPF_ADJ_ROOM_MAC                      = C.BPF_ADJ_ROOM_MAC
	BPF_HDR_START_MAC                     = C.BPF_HDR_START_MAC
	BPF_HDR_START_NET                     = C.BPF_HDR_START_NET
	BPF_LWT_ENCAP_SEG6                    = C.BPF_LWT_ENCAP_SEG6
	BPF_LWT_ENCAP_SEG6_INLINE             = C.BPF_LWT_ENCAP_SEG6_INLINE
	BPF_LWT_ENCAP_IP                      = C.BPF_LWT_ENCAP_IP
	BPF_OK                                = C.BPF_OK
	BPF_DROP                              = C.BPF_DROP
	BPF_REDIRECT                          = C.BPF_REDIRECT
	BPF_LWT_REROUTE                       = C.BPF_LWT_REROUTE
	BPF_SOCK_OPS_VOID                     = C.BPF_SOCK_OPS_VOID
	BPF_SOCK_OPS_TIMEOUT_INIT             = C.BPF_SOCK_OPS_TIMEOUT_INIT
	BPF_SOCK_OPS_RWND_INIT                = C.BPF_SOCK_OPS_RWND_INIT
	BPF_SOCK_OPS_TCP_CONNECT_CB           = C.BPF_SOCK_OPS_TCP_CONNECT_CB
	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB    = C.BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB
	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB   = C.BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB
	BPF_SOCK_OPS_NEEDS_ECN                = C.BPF_SOCK_OPS_NEEDS_ECN
	BPF_SOCK_OPS_BASE_RTT                 = C.BPF_SOCK_OPS_BASE_RTT
	BPF_SOCK_OPS_RTO_CB                   = C.BPF_SOCK_OPS_RTO_CB
	BPF_SOCK_OPS_RETRANS_CB               = C.BPF_SOCK_OPS_RETRANS_CB
	BPF_SOCK_OPS_STATE_CB                 = C.BPF_SOCK_OPS_STATE_CB
	BPF_SOCK_OPS_TCP_LISTEN_CB            = C.BPF_SOCK_OPS_TCP_LISTEN_CB
	BPF_SOCK_OPS_RTT_CB                   = C.BPF_SOCK_OPS_RTT_CB
	BPF_TCP_ESTABLISHED                   = C.BPF_TCP_ESTABLISHED
	BPF_TCP_SYN_SENT                      = C.BPF_TCP_SYN_SENT
	BPF_TCP_SYN_RECV                      = C.BPF_TCP_SYN_RECV
	BPF_TCP_FIN_WAIT1                     = C.BPF_TCP_FIN_WAIT1
	BPF_TCP_FIN_WAIT2                     = C.BPF_TCP_FIN_WAIT2
	BPF_TCP_TIME_WAIT                     = C.BPF_TCP_TIME_WAIT
	BPF_TCP_CLOSE                         = C.BPF_TCP_CLOSE
	BPF_TCP_CLOSE_WAIT                    = C.BPF_TCP_CLOSE_WAIT
	BPF_TCP_LAST_ACK                      = C.BPF_TCP_LAST_ACK
	BPF_TCP_LISTEN                        = C.BPF_TCP_LISTEN
	BPF_TCP_CLOSING                       = C.BPF_TCP_CLOSING
	BPF_TCP_NEW_SYN_RECV                  = C.BPF_TCP_NEW_SYN_RECV
	BPF_TCP_MAX_STATES                    = C.BPF_TCP_MAX_STATES
	BPF_FIB_LKUP_RET_SUCCESS              = C.BPF_FIB_LKUP_RET_SUCCESS
	BPF_FIB_LKUP_RET_BLACKHOLE            = C.BPF_FIB_LKUP_RET_BLACKHOLE
	BPF_FIB_LKUP_RET_UNREACHABLE          = C.BPF_FIB_LKUP_RET_UNREACHABLE
	BPF_FIB_LKUP_RET_PROHIBIT             = C.BPF_FIB_LKUP_RET_PROHIBIT
	BPF_FIB_LKUP_RET_NOT_FWDED            = C.BPF_FIB_LKUP_RET_NOT_FWDED
	BPF_FIB_LKUP_RET_FWD_DISABLED         = C.BPF_FIB_LKUP_RET_FWD_DISABLED
	BPF_FIB_LKUP_RET_UNSUPP_LWT           = C.BPF_FIB_LKUP_RET_UNSUPP_LWT
	BPF_FIB_LKUP_RET_NO_NEIGH             = C.BPF_FIB_LKUP_RET_NO_NEIGH
	BPF_FIB_LKUP_RET_FRAG_NEEDED          = C.BPF_FIB_LKUP_RET_FRAG_NEEDED
	BPF_FD_TYPE_RAW_TRACEPOINT            = C.BPF_FD_TYPE_RAW_TRACEPOINT
	BPF_FD_TYPE_TRACEPOINT                = C.BPF_FD_TYPE_TRACEPOINT
	BPF_FD_TYPE_KPROBE                    = C.BPF_FD_TYPE_KPROBE
	BPF_FD_TYPE_KRETPROBE                 = C.BPF_FD_TYPE_KRETPROBE
	BPF_FD_TYPE_UPROBE                    = C.BPF_FD_TYPE_UPROBE
	BPF_FD_TYPE_URETPROBE                 = C.BPF_FD_TYPE_URETPROBE
)

// generated by:
// perl -nlE '/^\s*(RTNLGRP_\w+)/ && say "$1 = C.$1"' include/uapi/linux/rtnetlink.h
const (
	RTNLGRP_NONE          = C.RTNLGRP_NONE
	RTNLGRP_LINK          = C.RTNLGRP_LINK
	RTNLGRP_NOTIFY        = C.RTNLGRP_NOTIFY
	RTNLGRP_NEIGH         = C.RTNLGRP_NEIGH
	RTNLGRP_TC            = C.RTNLGRP_TC
	RTNLGRP_IPV4_IFADDR   = C.RTNLGRP_IPV4_IFADDR
	RTNLGRP_IPV4_MROUTE   = C.RTNLGRP_IPV4_MROUTE
	RTNLGRP_IPV4_ROUTE    = C.RTNLGRP_IPV4_ROUTE
	RTNLGRP_IPV4_RULE     = C.RTNLGRP_IPV4_RULE
	RTNLGRP_IPV6_IFADDR   = C.RTNLGRP_IPV6_IFADDR
	RTNLGRP_IPV6_MROUTE   = C.RTNLGRP_IPV6_MROUTE
	RTNLGRP_IPV6_ROUTE    = C.RTNLGRP_IPV6_ROUTE
	RTNLGRP_IPV6_IFINFO   = C.RTNLGRP_IPV6_IFINFO
	RTNLGRP_DECnet_IFADDR = C.RTNLGRP_DECnet_IFADDR
	RTNLGRP_NOP2          = C.RTNLGRP_NOP2
	RTNLGRP_DECnet_ROUTE  = C.RTNLGRP_DECnet_ROUTE
	RTNLGRP_DECnet_RULE   = C.RTNLGRP_DECnet_RULE
	RTNLGRP_NOP4          = C.RTNLGRP_NOP4
	RTNLGRP_IPV6_PREFIX   = C.RTNLGRP_IPV6_PREFIX
	RTNLGRP_IPV6_RULE     = C.RTNLGRP_IPV6_RULE
	RTNLGRP_ND_USEROPT    = C.RTNLGRP_ND_USEROPT
	RTNLGRP_PHONET_IFADDR = C.RTNLGRP_PHONET_IFADDR
	RTNLGRP_PHONET_ROUTE  = C.RTNLGRP_PHONET_ROUTE
	RTNLGRP_DCB           = C.RTNLGRP_DCB
	RTNLGRP_IPV4_NETCONF  = C.RTNLGRP_IPV4_NETCONF
	RTNLGRP_IPV6_NETCONF  = C.RTNLGRP_IPV6_NETCONF
	RTNLGRP_MDB           = C.RTNLGRP_MDB
	RTNLGRP_MPLS_ROUTE    = C.RTNLGRP_MPLS_ROUTE
	RTNLGRP_NSID          = C.RTNLGRP_NSID
	RTNLGRP_MPLS_NETCONF  = C.RTNLGRP_MPLS_NETCONF
	RTNLGRP_IPV4_MROUTE_R = C.RTNLGRP_IPV4_MROUTE_R
	RTNLGRP_IPV6_MROUTE_R = C.RTNLGRP_IPV6_MROUTE_R
	RTNLGRP_NEXTHOP       = C.RTNLGRP_NEXTHOP
)

// Capabilities

type CapUserHeader C.struct___user_cap_header_struct

type CapUserData C.struct___user_cap_data_struct

const (
	LINUX_CAPABILITY_VERSION_1 = C._LINUX_CAPABILITY_VERSION_1
	LINUX_CAPABILITY_VERSION_2 = C._LINUX_CAPABILITY_VERSION_2
	LINUX_CAPABILITY_VERSION_3 = C._LINUX_CAPABILITY_VERSION_3
)

// Loop devices

const (
	LO_FLAGS_READ_ONLY = C.LO_FLAGS_READ_ONLY
	LO_FLAGS_AUTOCLEAR = C.LO_FLAGS_AUTOCLEAR
	LO_FLAGS_PARTSCAN  = C.LO_FLAGS_PARTSCAN
	LO_FLAGS_DIRECT_IO = C.LO_FLAGS_DIRECT_IO
)

type LoopInfo C.struct_loop_info
type LoopInfo64 C.struct_loop_info64

// AF_TIPC

type TIPCSocketAddr C.struct_tipc_socket_addr

type TIPCServiceRange C.struct_tipc_service_range

type TIPCServiceName C.struct_tipc_service_name

type TIPCSubscr C.struct_tipc_subscr

type TIPCEvent C.struct_tipc_event

type TIPCGroupReq C.struct_tipc_group_req

type TIPCSIOCLNReq C.struct_tipc_sioc_ln_req

type TIPCSIOCNodeIDReq C.struct_tipc_sioc_nodeid_req

const (
	TIPC_CLUSTER_SCOPE = C.TIPC_CLUSTER_SCOPE
	TIPC_NODE_SCOPE    = C.TIPC_NODE_SCOPE
)

const (
	SYSLOG_ACTION_CLOSE         = 0
	SYSLOG_ACTION_OPEN          = 1
	SYSLOG_ACTION_READ          = 2
	SYSLOG_ACTION_READ_ALL      = 3
	SYSLOG_ACTION_READ_CLEAR    = 4
	SYSLOG_ACTION_CLEAR         = 5
	SYSLOG_ACTION_CONSOLE_OFF   = 6
	SYSLOG_ACTION_CONSOLE_ON    = 7
	SYSLOG_ACTION_CONSOLE_LEVEL = 8
	SYSLOG_ACTION_SIZE_UNREAD   = 9
	SYSLOG_ACTION_SIZE_BUFFER   = 10
)

// Devlink generic netlink API, generated using:
// perl -nlE '/^\s*(DEVLINK_\w+)/ && say "$1 = C.$1"' devlink.h
const (
	DEVLINK_CMD_UNSPEC                        = C.DEVLINK_CMD_UNSPEC
	DEVLINK_CMD_GET                           = C.DEVLINK_CMD_GET
	DEVLINK_CMD_SET                           = C.DEVLINK_CMD_SET
	DEVLINK_CMD_NEW                           = C.DEVLINK_CMD_NEW
	DEVLINK_CMD_DEL                           = C.DEVLINK_CMD_DEL
	DEVLINK_CMD_PORT_GET                      = C.DEVLINK_CMD_PORT_GET
	DEVLINK_CMD_PORT_SET                      = C.DEVLINK_CMD_PORT_SET
	DEVLINK_CMD_PORT_NEW                      = C.DEVLINK_CMD_PORT_NEW
	DEVLINK_CMD_PORT_DEL                      = C.DEVLINK_CMD_PORT_DEL
	DEVLINK_CMD_PORT_SPLIT                    = C.DEVLINK_CMD_PORT_SPLIT
	DEVLINK_CMD_PORT_UNSPLIT                  = C.DEVLINK_CMD_PORT_UNSPLIT
	DEVLINK_CMD_SB_GET                        = C.DEVLINK_CMD_SB_GET
	DEVLINK_CMD_SB_SET                        = C.DEVLINK_CMD_SB_SET
	DEVLINK_CMD_SB_NEW                        = C.DEVLINK_CMD_SB_NEW
	DEVLINK_CMD_SB_DEL                        = C.DEVLINK_CMD_SB_DEL
	DEVLINK_CMD_SB_POOL_GET                   = C.DEVLINK_CMD_SB_POOL_GET
	DEVLINK_CMD_SB_POOL_SET                   = C.DEVLINK_CMD_SB_POOL_SET
	DEVLINK_CMD_SB_POOL_NEW                   = C.DEVLINK_CMD_SB_POOL_NEW
	DEVLINK_CMD_SB_POOL_DEL                   = C.DEVLINK_CMD_SB_POOL_DEL
	DEVLINK_CMD_SB_PORT_POOL_GET              = C.DEVLINK_CMD_SB_PORT_POOL_GET
	DEVLINK_CMD_SB_PORT_POOL_SET              = C.DEVLINK_CMD_SB_PORT_POOL_SET
	DEVLINK_CMD_SB_PORT_POOL_NEW              = C.DEVLINK_CMD_SB_PORT_POOL_NEW
	DEVLINK_CMD_SB_PORT_POOL_DEL              = C.DEVLINK_CMD_SB_PORT_POOL_DEL
	DEVLINK_CMD_SB_TC_POOL_BIND_GET           = C.DEVLINK_CMD_SB_TC_POOL_BIND_GET
	DEVLINK_CMD_SB_TC_POOL_BIND_SET           = C.DEVLINK_CMD_SB_TC_POOL_BIND_SET
	DEVLINK_CMD_SB_TC_POOL_BIND_NEW           = C.DEVLINK_CMD_SB_TC_POOL_BIND_NEW
	DEVLINK_CMD_SB_TC_POOL_BIND_DEL           = C.DEVLINK_CMD_SB_TC_POOL_BIND_DEL
	DEVLINK_CMD_SB_OCC_SNAPSHOT               = C.DEVLINK_CMD_SB_OCC_SNAPSHOT
	DEVLINK_CMD_SB_OCC_MAX_CLEAR              = C.DEVLINK_CMD_SB_OCC_MAX_CLEAR
	DEVLINK_CMD_ESWITCH_GET                   = C.DEVLINK_CMD_ESWITCH_GET
	DEVLINK_CMD_ESWITCH_SET                   = C.DEVLINK_CMD_ESWITCH_SET
	DEVLINK_CMD_DPIPE_TABLE_GET               = C.DEVLINK_CMD_DPIPE_TABLE_GET
	DEVLINK_CMD_DPIPE_ENTRIES_GET             = C.DEVLINK_CMD_DPIPE_ENTRIES_GET
	DEVLINK_CMD_DPIPE_HEADERS_GET             = C.DEVLINK_CMD_DPIPE_HEADERS_GET
	DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET      = C.DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET
	DEVLINK_CMD_MAX                           = C.DEVLINK_CMD_MAX
	DEVLINK_PORT_TYPE_NOTSET                  = C.DEVLINK_PORT_TYPE_NOTSET
	DEVLINK_PORT_TYPE_AUTO                    = C.DEVLINK_PORT_TYPE_AUTO
	DEVLINK_PORT_TYPE_ETH                     = C.DEVLINK_PORT_TYPE_ETH
	DEVLINK_PORT_TYPE_IB                      = C.DEVLINK_PORT_TYPE_IB
	DEVLINK_SB_POOL_TYPE_INGRESS              = C.DEVLINK_SB_POOL_TYPE_INGRESS
	DEVLINK_SB_POOL_TYPE_EGRESS               = C.DEVLINK_SB_POOL_TYPE_EGRESS
	DEVLINK_SB_THRESHOLD_TYPE_STATIC          = C.DEVLINK_SB_THRESHOLD_TYPE_STATIC
	DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC         = C.DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC
	DEVLINK_ESWITCH_MODE_LEGACY               = C.DEVLINK_ESWITCH_MODE_LEGACY
	DEVLINK_ESWITCH_MODE_SWITCHDEV            = C.DEVLINK_ESWITCH_MODE_SWITCHDEV
	DEVLINK_ESWITCH_INLINE_MODE_NONE          = C.DEVLINK_ESWITCH_INLINE_MODE_NONE
	DEVLINK_ESWITCH_INLINE_MODE_LINK          = C.DEVLINK_ESWITCH_INLINE_MODE_LINK
	DEVLINK_ESWITCH_INLINE_MODE_NETWORK       = C.DEVLINK_ESWITCH_INLINE_MODE_NETWORK
	DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT     = C.DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT
	DEVLINK_ESWITCH_ENCAP_MODE_NONE           = C.DEVLINK_ESWITCH_ENCAP_MODE_NONE
	DEVLINK_ESWITCH_ENCAP_MODE_BASIC          = C.DEVLINK_ESWITCH_ENCAP_MODE_BASIC
	DEVLINK_ATTR_UNSPEC                       = C.DEVLINK_ATTR_UNSPEC
	DEVLINK_ATTR_BUS_NAME                     = C.DEVLINK_ATTR_BUS_NAME
	DEVLINK_ATTR_DEV_NAME                     = C.DEVLINK_ATTR_DEV_NAME
	DEVLINK_ATTR_PORT_INDEX                   = C.DEVLINK_ATTR_PORT_INDEX
	DEVLINK_ATTR_PORT_TYPE                    = C.DEVLINK_ATTR_PORT_TYPE
	DEVLINK_ATTR_PORT_DESIRED_TYPE            = C.DEVLINK_ATTR_PORT_DESIRED_TYPE
	DEVLINK_ATTR_PORT_NETDEV_IFINDEX          = C.DEVLINK_ATTR_PORT_NETDEV_IFINDEX
	DEVLINK_ATTR_PORT_NETDEV_NAME             = C.DEVLINK_ATTR_PORT_NETDEV_NAME
	DEVLINK_ATTR_PORT_IBDEV_NAME              = C.DEVLINK_ATTR_PORT_IBDEV_NAME
	DEVLINK_ATTR_PORT_SPLIT_COUNT             = C.DEVLINK_ATTR_PORT_SPLIT_COUNT
	DEVLINK_ATTR_PORT_SPLIT_GROUP             = C.DEVLINK_ATTR_PORT_SPLIT_GROUP
	DEVLINK_ATTR_SB_INDEX                     = C.DEVLINK_ATTR_SB_INDEX
	DEVLINK_ATTR_SB_SIZE                      = C.DEVLINK_ATTR_SB_SIZE
	DEVLINK_ATTR_SB_INGRESS_POOL_COUNT        = C.DEVLINK_ATTR_SB_INGRESS_POOL_COUNT
	DEVLINK_ATTR_SB_EGRESS_POOL_COUNT         = C.DEVLINK_ATTR_SB_EGRESS_POOL_COUNT
	DEVLINK_ATTR_SB_INGRESS_TC_COUNT          = C.DEVLINK_ATTR_SB_INGRESS_TC_COUNT
	DEVLINK_ATTR_SB_EGRESS_TC_COUNT           = C.DEVLINK_ATTR_SB_EGRESS_TC_COUNT
	DEVLINK_ATTR_SB_POOL_INDEX                = C.DEVLINK_ATTR_SB_POOL_INDEX
	DEVLINK_ATTR_SB_POOL_TYPE                 = C.DEVLINK_ATTR_SB_POOL_TYPE
	DEVLINK_ATTR_SB_POOL_SIZE                 = C.DEVLINK_ATTR_SB_POOL_SIZE
	DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE       = C.DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE
	DEVLINK_ATTR_SB_THRESHOLD                 = C.DEVLINK_ATTR_SB_THRESHOLD
	DEVLINK_ATTR_SB_TC_INDEX                  = C.DEVLINK_ATTR_SB_TC_INDEX
	DEVLINK_ATTR_SB_OCC_CUR                   = C.DEVLINK_ATTR_SB_OCC_CUR
	DEVLINK_ATTR_SB_OCC_MAX                   = C.DEVLINK_ATTR_SB_OCC_MAX
	DEVLINK_ATTR_ESWITCH_MODE                 = C.DEVLINK_ATTR_ESWITCH_MODE
	DEVLINK_ATTR_ESWITCH_INLINE_MODE          = C.DEVLINK_ATTR_ESWITCH_INLINE_MODE
	DEVLINK_ATTR_DPIPE_TABLES                 = C.DEVLINK_ATTR_DPIPE_TABLES
	DEVLINK_ATTR_DPIPE_TABLE                  = C.DEVLINK_ATTR_DPIPE_TABLE
	DEVLINK_ATTR_DPIPE_TABLE_NAME             = C.DEVLINK_ATTR_DPIPE_TABLE_NAME
	DEVLINK_ATTR_DPIPE_TABLE_SIZE             = C.DEVLINK_ATTR_DPIPE_TABLE_SIZE
	DEVLINK_ATTR_DPIPE_TABLE_MATCHES          = C.DEVLINK_ATTR_DPIPE_TABLE_MATCHES
	DEVLINK_ATTR_DPIPE_TABLE_ACTIONS          = C.DEVLINK_ATTR_DPIPE_TABLE_ACTIONS
	DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = C.DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED
	DEVLINK_ATTR_DPIPE_ENTRIES                = C.DEVLINK_ATTR_DPIPE_ENTRIES
	DEVLINK_ATTR_DPIPE_ENTRY                  = C.DEVLINK_ATTR_DPIPE_ENTRY
	DEVLINK_ATTR_DPIPE_ENTRY_INDEX            = C.DEVLINK_ATTR_DPIPE_ENTRY_INDEX
	DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES     = C.DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES
	DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES    = C.DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES
	DEVLINK_ATTR_DPIPE_ENTRY_COUNTER          = C.DEVLINK_ATTR_DPIPE_ENTRY_COUNTER
	DEVLINK_ATTR_DPIPE_MATCH                  = C.DEVLINK_ATTR_DPIPE_MATCH
	DEVLINK_ATTR_DPIPE_MATCH_VALUE            = C.DEVLINK_ATTR_DPIPE_MATCH_VALUE
	DEVLINK_ATTR_DPIPE_MATCH_TYPE             = C.DEVLINK_ATTR_DPIPE_MATCH_TYPE
	DEVLINK_ATTR_DPIPE_ACTION                 = C.DEVLINK_ATTR_DPIPE_ACTION
	DEVLINK_ATTR_DPIPE_ACTION_VALUE           = C.DEVLINK_ATTR_DPIPE_ACTION_VALUE
	DEVLINK_ATTR_DPIPE_ACTION_TYPE            = C.DEVLINK_ATTR_DPIPE_ACTION_TYPE
	DEVLINK_ATTR_DPIPE_VALUE                  = C.DEVLINK_ATTR_DPIPE_VALUE
	DEVLINK_ATTR_DPIPE_VALUE_MASK             = C.DEVLINK_ATTR_DPIPE_VALUE_MASK
	DEVLINK_ATTR_DPIPE_VALUE_MAPPING          = C.DEVLINK_ATTR_DPIPE_VALUE_MAPPING
	DEVLINK_ATTR_DPIPE_HEADERS                = C.DEVLINK_ATTR_DPIPE_HEADERS
	DEVLINK_ATTR_DPIPE_HEADER                 = C.DEVLINK_ATTR_DPIPE_HEADER
	DEVLINK_ATTR_DPIPE_HEADER_NAME            = C.DEVLINK_ATTR_DPIPE_HEADER_NAME
	DEVLINK_ATTR_DPIPE_HEADER_ID              = C.DEVLINK_ATTR_DPIPE_HEADER_ID
	DEVLINK_ATTR_DPIPE_HEADER_FIELDS          = C.DEVLINK_ATTR_DPIPE_HEADER_FIELDS
	DEVLINK_ATTR_DPIPE_HEADER_GLOBAL          = C.DEVLINK_ATTR_DPIPE_HEADER_GLOBAL
	DEVLINK_ATTR_DPIPE_HEADER_INDEX           = C.DEVLINK_ATTR_DPIPE_HEADER_INDEX
	DEVLINK_ATTR_DPIPE_FIELD                  = C.DEVLINK_ATTR_DPIPE_FIELD
	DEVLINK_ATTR_DPIPE_FIELD_NAME             = C.DEVLINK_ATTR_DPIPE_FIELD_NAME
	DEVLINK_ATTR_DPIPE_FIELD_ID               = C.DEVLINK_ATTR_DPIPE_FIELD_ID
	DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH         = C.DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH
	DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE     = C.DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE
	DEVLINK_ATTR_PAD                          = C.DEVLINK_ATTR_PAD
	DEVLINK_ATTR_ESWITCH_ENCAP_MODE           = C.DEVLINK_ATTR_ESWITCH_ENCAP_MODE
	DEVLINK_ATTR_MAX                          = C.DEVLINK_ATTR_MAX
	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE     = C.DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE
	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX  = C.DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX
	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT      = C.DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT
	DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY    = C.DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY
	DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC      = C.DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC
	DEVLINK_DPIPE_FIELD_IPV4_DST_IP           = C.DEVLINK_DPIPE_FIELD_IPV4_DST_IP
	DEVLINK_DPIPE_FIELD_IPV6_DST_IP           = C.DEVLINK_DPIPE_FIELD_IPV6_DST_IP
	DEVLINK_DPIPE_HEADER_ETHERNET             = C.DEVLINK_DPIPE_HEADER_ETHERNET
	DEVLINK_DPIPE_HEADER_IPV4                 = C.DEVLINK_DPIPE_HEADER_IPV4
	DEVLINK_DPIPE_HEADER_IPV6                 = C.DEVLINK_DPIPE_HEADER_IPV6
)
