cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

errqueue.h (2066B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2#ifndef _UAPI_LINUX_ERRQUEUE_H
      3#define _UAPI_LINUX_ERRQUEUE_H
      4
      5#include <linux/types.h>
      6#include <linux/time_types.h>
      7
      8/* RFC 4884: return offset to extension struct + validation */
      9struct sock_ee_data_rfc4884 {
     10	__u16	len;
     11	__u8	flags;
     12	__u8	reserved;
     13};
     14
     15struct sock_extended_err {
     16	__u32	ee_errno;	
     17	__u8	ee_origin;
     18	__u8	ee_type;
     19	__u8	ee_code;
     20	__u8	ee_pad;
     21	__u32   ee_info;
     22	union	{
     23		__u32   ee_data;
     24		struct sock_ee_data_rfc4884 ee_rfc4884;
     25	};
     26};
     27
     28#define SO_EE_ORIGIN_NONE	0
     29#define SO_EE_ORIGIN_LOCAL	1
     30#define SO_EE_ORIGIN_ICMP	2
     31#define SO_EE_ORIGIN_ICMP6	3
     32#define SO_EE_ORIGIN_TXSTATUS	4
     33#define SO_EE_ORIGIN_ZEROCOPY	5
     34#define SO_EE_ORIGIN_TXTIME	6
     35#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
     36
     37#define SO_EE_OFFENDER(ee)	((struct sockaddr*)((ee)+1))
     38
     39#define SO_EE_CODE_ZEROCOPY_COPIED	1
     40
     41#define SO_EE_CODE_TXTIME_INVALID_PARAM	1
     42#define SO_EE_CODE_TXTIME_MISSED	2
     43
     44#define SO_EE_RFC4884_FLAG_INVALID	1
     45
     46/**
     47 *	struct scm_timestamping - timestamps exposed through cmsg
     48 *
     49 *	The timestamping interfaces SO_TIMESTAMPING, MSG_TSTAMP_*
     50 *	communicate network timestamps by passing this struct in a cmsg with
     51 *	recvmsg(). See Documentation/networking/timestamping.rst for details.
     52 *	User space sees a timespec definition that matches either
     53 *	__kernel_timespec or __kernel_old_timespec, in the kernel we
     54 *	require two structure definitions to provide both.
     55 */
     56struct scm_timestamping {
     57#ifdef __KERNEL__
     58	struct __kernel_old_timespec ts[3];
     59#else
     60	struct timespec ts[3];
     61#endif
     62};
     63
     64struct scm_timestamping64 {
     65	struct __kernel_timespec ts[3];
     66};
     67
     68/* The type of scm_timestamping, passed in sock_extended_err ee_info.
     69 * This defines the type of ts[0]. For SCM_TSTAMP_SND only, if ts[0]
     70 * is zero, then this is a hardware timestamp and recorded in ts[2].
     71 */
     72enum {
     73	SCM_TSTAMP_SND,		/* driver passed skb to NIC, or HW */
     74	SCM_TSTAMP_SCHED,	/* data entered the packet scheduler */
     75	SCM_TSTAMP_ACK,		/* data acknowledged by peer */
     76};
     77
     78#endif /* _UAPI_LINUX_ERRQUEUE_H */