linux/include/uapi/linux/errqueue.h

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ERRQUEUE_H
#define _UAPI_LINUX_ERRQUEUE_H

#include <linux/types.h>
#include <linux/time_types.h>

/* RFC 4884: return offset to extension struct + validation */
struct sock_ee_data_rfc4884 {};

struct sock_extended_err {};

#define SO_EE_ORIGIN_NONE
#define SO_EE_ORIGIN_LOCAL
#define SO_EE_ORIGIN_ICMP
#define SO_EE_ORIGIN_ICMP6
#define SO_EE_ORIGIN_TXSTATUS
#define SO_EE_ORIGIN_ZEROCOPY
#define SO_EE_ORIGIN_TXTIME
#define SO_EE_ORIGIN_TIMESTAMPING

#define SO_EE_OFFENDER(ee)

#define SO_EE_CODE_ZEROCOPY_COPIED

#define SO_EE_CODE_TXTIME_INVALID_PARAM
#define SO_EE_CODE_TXTIME_MISSED

#define SO_EE_RFC4884_FLAG_INVALID

/**
 *	struct scm_timestamping - timestamps exposed through cmsg
 *
 *	The timestamping interfaces SO_TIMESTAMPING, MSG_TSTAMP_*
 *	communicate network timestamps by passing this struct in a cmsg with
 *	recvmsg(). See Documentation/networking/timestamping.rst for details.
 *	User space sees a timespec definition that matches either
 *	__kernel_timespec or __kernel_old_timespec, in the kernel we
 *	require two structure definitions to provide both.
 */
struct scm_timestamping {};

struct scm_timestamping64 {};

/* The type of scm_timestamping, passed in sock_extended_err ee_info.
 * This defines the type of ts[0]. For SCM_TSTAMP_SND only, if ts[0]
 * is zero, then this is a hardware timestamp and recorded in ts[2].
 */
enum {};

#endif /* _UAPI_LINUX_ERRQUEUE_H */