summaryrefslogtreecommitdiff
path: root/pfinet/glue-include/linux/socket.h
blob: 057afbdb5b5d903b18748375394822f3d834f426 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#ifndef _HACK_SOCKET_H_
#define _HACK_SOCKET_H_

#include <linux/types.h>
#include <asm/system.h>

#include <sys/socket.h>
#include <sys/uio.h>
#include <sys/ioctl.h>
#include <limits.h>


/* #define IP_MAX_MEMBERSHIPS 10 */

#define IPTOS_LOWDELAY 0x10
#define IPTOS_THROUGHPUT 0x08
#define IPTOS_RELIABILITY 0x04

#define SOPRI_INTERACTIVE 0
#define SOPRI_NORMAL 1
#define SOPRI_BACKGROUND 2

#ifndef SOL_IP
#define SOL_IP IPPROTO_IP
#endif
#define SOL_TCP IPPROTO_TCP
#ifndef SOL_IPV6
#define SOL_IPV6 IPPROTO_IPV6
#endif
#ifndef SOL_ICMPV6
#define SOL_ICMPV6 IPPROTO_ICMPV6
#endif
#define SOL_RAW IPPROTO_RAW

/* IP options */
#define IP_PKTINFO	190
#define IP_PKTOPTIONS	191
#define IP_MTU_DISCOVER	192
#define IP_RECVERR	193
#define IP_RECVTTL	194
#define	IP_RECVTOS	195
#define IP_MTU		196
#define IP_ROUTER_ALERT	197


/* TCP options */
#define TCP_NODELAY 1
#define TCP_MAXSEG 2
#define TCP_CORK 3

#define SO_NO_CHECK 11
#define SO_PRIORITY 12

#define	SO_PASSCRED 190
#define	SO_PEERCRED 191
#define	SO_BSDCOMPAT 192

/* Maximum queue length specifiable by listen.  */
#ifndef SOMAXCONN
#define SOMAXCONN	128
#endif

#ifndef CMSG_DATA
#define msg_control	msg_accrights
#define msg_controllen	msg_accrightslen
struct cmsghdr { int cmsg_garbage; };
#define cmsg_len	cmsg_garbage
#define cmsg_type	cmsg_garbage
#define cmsg_level	cmsg_garbage
static inline int
put_cmsg(struct msghdr *msg, int level, int type, int len, void *data)
{ return 0; }
#define CMSG_FIRSTHDR(msg)	(0)
#define CMSG_NXTHDR(msg, cmsg)	(0)
#define CMSG_DATA(cmsg)		(0)
#define CMSG_ALIGN(size)	(0)
#define CMSG_LEN(size) 		(0)
#else
static inline int
put_cmsg(struct msghdr *msg, int level, int type, int len, void *data)
{ return 0; }
#endif

#ifndef MSG_NOSIGNAL
# warning "http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00007.html"
# define MSG_NOSIGNAL	0
#endif
#define MSG_ERRQUEUE	0

/* There is no SOCK_PACKET, it is a bad bad thing.  This chicanery is
   because the one use of it is a comparison against a `short int' value;
   using a value outside the range of that type ensures that the comparison
   will always fail, and in fact it and the dead code will get optimized
   out entirely at compile time.  */
#define SOCK_PACKET	((int)((uint32_t)USHRT_MAX) * 2)
#define PF_PACKET	0

#ifndef UIO_MAXIOV
#define UIO_MAXIOV 4		/* 1 would do */
#endif


struct ucred {
  pid_t pid;
  uid_t uid;
  gid_t gid;
};


extern inline int		/* Does not modify IOV.  */
memcpy_fromiovecend (unsigned char *kdata, struct iovec *iov,
		     int offset, int len)
{
  assert (offset + len <= iov->iov_len);
  memcpy (kdata, iov->iov_base + offset, len);
  return 0;
}
extern inline int		/* Modifies IOV to consume LEN bytes.  */
memcpy_fromiovec (unsigned char *kdata, struct iovec *iov, int len)
{
  assert (len <= iov->iov_len);
  memcpy (kdata, iov->iov_base, len);
  iov->iov_base += len;
  iov->iov_len -= len;
  return 0;
}
extern inline void		/* Modifies IOV to consume LEN bytes.  */
memcpy_tokerneliovec (struct iovec *iov, unsigned char *kdata, int len)
{
  assert (len <= iov->iov_len);
  memcpy (iov->iov_base, kdata, len);
  iov->iov_base += len;
  iov->iov_len -= len;
}
extern inline int		/* Modifies IOV to consume LEN bytes.  */
memcpy_toiovec (struct iovec *iov, unsigned char *kdata, int len)
{
  memcpy_tokerneliovec (iov, kdata, len);
  return 0;
}

extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
					  struct iovec *iov,
					  int offset,
					  unsigned int len, int *csump);

static inline int move_addr_to_kernel(void *uaddr, int ulen, void *kaddr)
{
  abort ();
  return 0;
}
#if 0
extern int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode);
extern int move_addr_to_user(void *kaddr, int klen, void *uaddr, int *ulen);
#endif


#endif