| // 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. | |
| //go:build ignore | |
| /* | |
| Input to cgo -godefs. See also mkerrors.sh and mkall.sh | |
| */ | |
| // +godefs map struct_in_addr [4]byte /* in_addr */ | |
| // +godefs map struct_in6_addr [16]byte /* in6_addr */ | |
| package syscall | |
| /* | |
| #define _LARGEFILE_SOURCE | |
| #define _LARGEFILE64_SOURCE | |
| #define _FILE_OFFSET_BITS 64 | |
| #define _GNU_SOURCE | |
| #include <dirent.h> | |
| #include <fcntl.h> | |
| #include <netinet/in.h> | |
| #include <netinet/tcp.h> | |
| #include <netpacket/packet.h> | |
| #include <signal.h> | |
| #include <stdio.h> | |
| #include <sys/epoll.h> | |
| #include <sys/inotify.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/stat.h> | |
| #include <sys/statfs.h> | |
| #include <sys/sysinfo.h> | |
| #include <sys/time.h> | |
| #include <sys/times.h> | |
| #include <sys/timex.h> | |
| #include <sys/types.h> | |
| #include <sys/un.h> | |
| #include <sys/user.h> | |
| #include <sys/utsname.h> | |
| #include <sys/wait.h> | |
| #include <linux/filter.h> | |
| #include <linux/netlink.h> | |
| #include <linux/rtnetlink.h> | |
| #include <linux/icmpv6.h> | |
| #include <poll.h> | |
| #include <termios.h> | |
| #include <time.h> | |
| #include <unistd.h> | |
| #include <utime.h> | |
| 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_any { | |
| struct sockaddr addr; | |
| char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; | |
| }; | |
| // copied from /usr/include/linux/un.h | |
| struct my_sockaddr_un { | |
| sa_family_t sun_family; | |
| #if defined(__ARM_EABI__) || defined(__powerpc64__) || defined(__riscv__) || defined(__s390x__) | |
| // on ARM, PPC, RISC-V, and s390x char is by default unsigned | |
| 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(__powerpc64__) | |
| typedef struct pt_regs PtraceRegs; | |
| #elif defined(__mips__) | |
| typedef struct user PtraceRegs; | |
| #elif defined(__s390x__) | |
| typedef struct _user_regs_struct 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; | |
| #endif | |
| #if defined(__powerpc64__) || defined(__s390x__) || (defined(__riscv_xlen) && __riscv_xlen == 64) \ | |
| || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) || defined(__loongarch64) | |
| int32_t _padFd; | |
| #endif | |
| int32_t fd; | |
| int32_t pad; | |
| }; | |
| // 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]; | |
| }; | |
| */ | |
| import "C" | |
| // Machine characteristics; for internal use. | |
| 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 | |
| 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 Statfs_t C.struct_statfs | |
| type Dirent C.struct_dirent | |
| type Fsid C.fsid_t | |
| type Flock_t C.struct_flock | |
| // 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 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 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 | |
| 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 | |
| SizeofLinger = C.sizeof_struct_linger | |
| SizeofIPMreq = C.sizeof_struct_ip_mreq | |
| SizeofIPMreqn = C.sizeof_struct_ip_mreqn | |
| SizeofIPv6Mreq = C.sizeof_struct_ipv6_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 | |
| ) | |
| // Netlink routing and interface messages | |
| const ( | |
| 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 | |
| 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_MAX = C.IFLA_MAX | |
| 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 | |
| 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 | |
| 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_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX | |
| RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE | |
| RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT | |
| 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 | |
| SizeofRtMsg = C.sizeof_struct_rtmsg | |
| SizeofRtNexthop = C.sizeof_struct_rtnexthop | |
| ) | |
| 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 RtMsg C.struct_rtmsg | |
| type RtNexthop C.struct_rtnexthop | |
| // 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 post.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_FDCWD = C.AT_FDCWD | |
| _AT_REMOVEDIR = C.AT_REMOVEDIR | |
| _AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW | |
| _AT_EACCESS = C.AT_EACCESS | |
| _AT_EMPTY_PATH = C.AT_EMPTY_PATH | |
| _AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT | |
| _STATX_BASIC_STATS = C.STATX_BASIC_STATS | |
| ) | |
| type pollFd C.struct_pollfd | |
| // Terminal handling | |
| type Termios C.struct_termios | |
| const ( | |
| IUCLC = C.IUCLC | |
| OLCUC = C.OLCUC | |
| TCGETS = C.TCGETS | |
| TCSETS = C.TCSETS | |
| XCASE = C.XCASE | |
| ) |