xref: /openbmc/qemu/linux-user/mips/sockbits.h (revision 3ea856094cb77fe3087f607fa75382073963254b)
15de33b10SLaurent Vivier /*
25de33b10SLaurent Vivier  * This program is free software; you can redistribute it and/or modify
35de33b10SLaurent Vivier  * it under the terms of the GNU General Public License version 2 as
45de33b10SLaurent Vivier  * published by the Free Software Foundation, or (at your option) any
55de33b10SLaurent Vivier  * later version. See the COPYING file in the top-level directory.
65de33b10SLaurent Vivier  */
75de33b10SLaurent Vivier 
85de33b10SLaurent Vivier #ifndef MIPS_SOCKBITS_H
95de33b10SLaurent Vivier #define MIPS_SOCKBITS_H
105de33b10SLaurent Vivier /* MIPS special values for constants */
115de33b10SLaurent Vivier 
125de33b10SLaurent Vivier /*
135de33b10SLaurent Vivier  * For setsockopt(2)
145de33b10SLaurent Vivier  *
155de33b10SLaurent Vivier  * This defines are ABI conformant as far as Linux supports these ...
165de33b10SLaurent Vivier  */
175de33b10SLaurent Vivier #define TARGET_SOL_SOCKET      0xffff
185de33b10SLaurent Vivier 
195de33b10SLaurent Vivier #define TARGET_SO_DEBUG        0x0001  /* Record debugging information. */
205de33b10SLaurent Vivier #define TARGET_SO_REUSEADDR    0x0004  /* Allow reuse of local addresses. */
215de33b10SLaurent Vivier #define TARGET_SO_KEEPALIVE    0x0008  /* Keep connections alive and send
225de33b10SLaurent Vivier                                           SIGPIPE when they die. */
235de33b10SLaurent Vivier #define TARGET_SO_DONTROUTE    0x0010  /* Don't do local routing. */
245de33b10SLaurent Vivier #define TARGET_SO_BROADCAST    0x0020  /* Allow transmission of
255de33b10SLaurent Vivier                                           broadcast messages. */
265de33b10SLaurent Vivier #define TARGET_SO_LINGER       0x0080  /* Block on close of a reliable
275de33b10SLaurent Vivier                                         * socket to transmit pending data.
285de33b10SLaurent Vivier                                         */
295de33b10SLaurent Vivier #define TARGET_SO_OOBINLINE 0x0100     /* Receive out-of-band data in-band.
305de33b10SLaurent Vivier                                         */
315de33b10SLaurent Vivier #define TARGET_SO_REUSEPORT 0x0200
325de33b10SLaurent Vivier 
335de33b10SLaurent Vivier #define TARGET_SO_TYPE         0x1008  /* Compatible name for SO_STYLE. */
345de33b10SLaurent Vivier #define TARGET_SO_STYLE        SO_TYPE /* Synonym */
355de33b10SLaurent Vivier #define TARGET_SO_ERROR        0x1007  /* get error status and clear */
365de33b10SLaurent Vivier #define TARGET_SO_SNDBUF       0x1001  /* Send buffer size. */
375de33b10SLaurent Vivier #define TARGET_SO_RCVBUF       0x1002  /* Receive buffer. */
385de33b10SLaurent Vivier #define TARGET_SO_SNDLOWAT     0x1003  /* send low-water mark */
395de33b10SLaurent Vivier #define TARGET_SO_RCVLOWAT     0x1004  /* receive low-water mark */
405de33b10SLaurent Vivier #define TARGET_SO_SNDTIMEO     0x1005  /* send timeout */
415de33b10SLaurent Vivier #define TARGET_SO_RCVTIMEO     0x1006  /* receive timeout */
425de33b10SLaurent Vivier #define TARGET_SO_ACCEPTCONN   0x1009
43*ec63e06eSJason A. Donenfeld #define TARGET_SO_PROTOCOL     0x1028  /* protocol type */
44*ec63e06eSJason A. Donenfeld #define TARGET_SO_DOMAIN       0x1029  /* domain/socket family */
455de33b10SLaurent Vivier 
465de33b10SLaurent Vivier /* linux-specific, might as well be the same as on i386 */
475de33b10SLaurent Vivier #define TARGET_SO_NO_CHECK     11
485de33b10SLaurent Vivier #define TARGET_SO_PRIORITY     12
495de33b10SLaurent Vivier #define TARGET_SO_BSDCOMPAT    14
505de33b10SLaurent Vivier 
515de33b10SLaurent Vivier #define TARGET_SO_PASSCRED     17
525de33b10SLaurent Vivier #define TARGET_SO_PEERCRED     18
535de33b10SLaurent Vivier 
545de33b10SLaurent Vivier /* Security levels - as per NRL IPv6 - don't actually do anything */
555de33b10SLaurent Vivier #define TARGET_SO_SECURITY_AUTHENTICATION              22
565de33b10SLaurent Vivier #define TARGET_SO_SECURITY_ENCRYPTION_TRANSPORT        23
575de33b10SLaurent Vivier #define TARGET_SO_SECURITY_ENCRYPTION_NETWORK          24
585de33b10SLaurent Vivier 
595de33b10SLaurent Vivier #define TARGET_SO_BINDTODEVICE         25
605de33b10SLaurent Vivier 
615de33b10SLaurent Vivier /* Socket filtering */
625de33b10SLaurent Vivier #define TARGET_SO_ATTACH_FILTER        26
635de33b10SLaurent Vivier #define TARGET_SO_DETACH_FILTER        27
645de33b10SLaurent Vivier 
655de33b10SLaurent Vivier #define TARGET_SO_PEERNAME             28
665de33b10SLaurent Vivier #define TARGET_SO_TIMESTAMP            29
675de33b10SLaurent Vivier #define SCM_TIMESTAMP          SO_TIMESTAMP
685de33b10SLaurent Vivier 
695de33b10SLaurent Vivier #define TARGET_SO_PEERSEC              30
705de33b10SLaurent Vivier #define TARGET_SO_SNDBUFFORCE          31
715de33b10SLaurent Vivier #define TARGET_SO_RCVBUFFORCE          33
725de33b10SLaurent Vivier #define TARGET_SO_PASSSEC              34
735de33b10SLaurent Vivier 
745de33b10SLaurent Vivier /** sock_type - Socket types
755de33b10SLaurent Vivier  *
765de33b10SLaurent Vivier  * Please notice that for binary compat reasons MIPS has to
775de33b10SLaurent Vivier  * override the enum sock_type in include/linux/net.h, so
785de33b10SLaurent Vivier  * we define ARCH_HAS_SOCKET_TYPES here.
795de33b10SLaurent Vivier  *
805de33b10SLaurent Vivier  * @SOCK_DGRAM - datagram (conn.less) socket
815de33b10SLaurent Vivier  * @SOCK_STREAM - stream (connection) socket
825de33b10SLaurent Vivier  * @SOCK_RAW - raw socket
835de33b10SLaurent Vivier  * @SOCK_RDM - reliably-delivered message
845de33b10SLaurent Vivier  * @SOCK_SEQPACKET - sequential packet socket
855de33b10SLaurent Vivier  * @SOCK_DCCP - Datagram Congestion Control Protocol socket
865de33b10SLaurent Vivier  * @SOCK_PACKET - linux specific way of getting packets at the dev level.
875de33b10SLaurent Vivier  *                For writing rarp and other similar things on the user
885de33b10SLaurent Vivier  *                level.
895de33b10SLaurent Vivier  * @SOCK_CLOEXEC - sets the close-on-exec (FD_CLOEXEC) flag.
905de33b10SLaurent Vivier  * @SOCK_NONBLOCK - sets the O_NONBLOCK file status flag.
915de33b10SLaurent Vivier  */
925de33b10SLaurent Vivier 
938f553bf7SLaurent Vivier #define TARGET_ARCH_HAS_SOCKET_TYPES          1
945de33b10SLaurent Vivier 
955de33b10SLaurent Vivier enum sock_type {
965de33b10SLaurent Vivier        TARGET_SOCK_DGRAM       = 1,
975de33b10SLaurent Vivier        TARGET_SOCK_STREAM      = 2,
985de33b10SLaurent Vivier        TARGET_SOCK_RAW         = 3,
995de33b10SLaurent Vivier        TARGET_SOCK_RDM         = 4,
1005de33b10SLaurent Vivier        TARGET_SOCK_SEQPACKET   = 5,
1015de33b10SLaurent Vivier        TARGET_SOCK_DCCP        = 6,
1025de33b10SLaurent Vivier        TARGET_SOCK_PACKET      = 10,
1035de33b10SLaurent Vivier };
1045de33b10SLaurent Vivier 
1055de33b10SLaurent Vivier #define TARGET_SOCK_MAX (TARGET_SOCK_PACKET + 1)
1065de33b10SLaurent Vivier #define TARGET_SOCK_TYPE_MASK    0xf  /* Covers up to TARGET_SOCK_MAX-1. */
1078f553bf7SLaurent Vivier 
1088f553bf7SLaurent Vivier /* Flags for socket, socketpair, paccept */
1098f553bf7SLaurent Vivier #define TARGET_SOCK_CLOEXEC    TARGET_O_CLOEXEC
1108f553bf7SLaurent Vivier #define TARGET_SOCK_NONBLOCK   TARGET_O_NONBLOCK
1118f553bf7SLaurent Vivier 
1125de33b10SLaurent Vivier #endif
113