ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1#pragma once
2
3#include <__esbmc/stddefs.h>
4#include <stdint.h>
5#include <stddef.h>
6
8
9/* Guard against the typedef the C library headers expose under their own
10 * macro (glibc's __ssize_t_defined, Darwin's _SSIZE_T) so including
11 * <sys/types.h> or <unistd.h> alongside this header does not redefine it,
12 * and spell it as that libc does: pointer-width on glibc, but long at every
13 * data model on Darwin (xnu bsd/i386/_types.h). */
14#if !defined(_SSIZE_T_DEFINED) && !defined(__ssize_t_defined) && \
15 !defined(_SSIZE_T)
16#define _SSIZE_T_DEFINED
17#define __ssize_t_defined
18#define _SSIZE_T
19#ifdef __APPLE__
20typedef long ssize_t;
21#else
22typedef __PTRDIFF_TYPE__ ssize_t;
23#endif
24#endif
25
26/* Address families */
27#define AF_UNSPEC 0
28#define AF_UNIX 1
29#define AF_LOCAL 1
30#define AF_INET 2
31#define AF_INET6 10
32
33/* Protocol families (aliases for AF_*) */
34#define PF_UNSPEC AF_UNSPEC
35#define PF_UNIX AF_UNIX
36#define PF_LOCAL AF_LOCAL
37#define PF_INET AF_INET
38#define PF_INET6 AF_INET6
39
40/* Socket types */
41#define SOCK_STREAM 1
42#define SOCK_DGRAM 2
43#define SOCK_RAW 3
44
45/* Socket options / levels */
46#define SOL_SOCKET 1
47#define SO_REUSEADDR 2
48#define SO_KEEPALIVE 9
49#define SO_RCVBUF 8
50#define SO_SNDBUF 7
51
52/* Shutdown modes */
53#define SHUT_RD 0
54#define SHUT_WR 1
55#define SHUT_RDWR 2
56
57/* Message flags */
58#define MSG_DONTWAIT 0x40
59#define MSG_NOSIGNAL 0x4000
60#define MSG_PEEK 0x02
61
62/* Socket address length type */
63typedef unsigned int socklen_t;
64
65/* Generic socket address */
66typedef unsigned short sa_family_t;
67
68struct sockaddr {
69 sa_family_t sa_family; // cppcheck-suppress unusedStructMember
70 char sa_data[14]; // cppcheck-suppress unusedStructMember
71};
72
74 sa_family_t ss_family; // cppcheck-suppress unusedStructMember
75 char __ss_pad1[6]; // cppcheck-suppress unusedStructMember
76 int64_t __ss_align; // cppcheck-suppress unusedStructMember
77 char __ss_pad2[112]; // cppcheck-suppress unusedStructMember
78};
79
80#ifndef __iovec_defined
81#define __iovec_defined 1
82
83/* I/O vector for scatter/gather I/O */
84struct iovec {
85 void *iov_base; // cppcheck-suppress unusedStructMember
86 size_t iov_len; // cppcheck-suppress unusedStructMember
87};
88
89#endif /* __iovec_defined */
90
91struct msghdr {
92 void *msg_name; // cppcheck-suppress unusedStructMember
93 socklen_t msg_namelen; // cppcheck-suppress unusedStructMember
94 struct iovec *msg_iov; // cppcheck-suppress unusedStructMember
95 size_t msg_iovlen; // cppcheck-suppress unusedStructMember
96 void *msg_control; // cppcheck-suppress unusedStructMember
97 size_t msg_controllen; // cppcheck-suppress unusedStructMember
98 int msg_flags; // cppcheck-suppress unusedStructMember
99};
100
101/* Function declarations */
102int socket(int domain, int type, int protocol);
103int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
104int listen(int sockfd, int backlog);
105int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
106int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
107
108ssize_t send(int sockfd, const void *buf, size_t len, int flags);
109ssize_t recv(int sockfd, void *buf, size_t len, int flags);
110ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
111 const struct sockaddr *dest_addr, socklen_t addrlen);
112ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
113 struct sockaddr *src_addr, socklen_t *addrlen);
114
115int setsockopt(int sockfd, int level, int optname,
116 const void *optval, socklen_t optlen);
117int getsockopt(int sockfd, int level, int optname,
118 void *optval, socklen_t *optlen);
119int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
120int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
121
122int shutdown(int sockfd, int how);
123
unsigned short sa_family_t
Definition socket.h:66
int shutdown(int sockfd, int how)
Definition socket_lib.c:392
ssize_t recv(int sockfd, void *buf, size_t len, int flags)
Definition socket_lib.c:163
int listen(int sockfd, int backlog)
Definition socket_lib.c:82
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
Definition socket_lib.c:335
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
Definition socket_lib.c:100
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
Definition socket_lib.c:63
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
Definition socket_lib.c:268
unsigned int socklen_t
Definition socket.h:63
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen)
Definition socket_lib.c:314
ssize_t send(int sockfd, const void *buf, size_t len, int flags)
Definition socket_lib.c:195
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
Definition socket_lib.c:136
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
Definition socket_lib.c:217
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
Definition socket_lib.c:362
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen)
Definition socket_lib.c:296
int socket(int domain, int type, int protocol)
Definition socket_lib.c:42
address_t addr
Definition solidity_mapping.c:0
#define __ESBMC_C_CPP_END
Definition stddefs.h:9
#define __ESBMC_C_CPP_BEGIN
Definition stddefs.h:8
__PTRDIFF_TYPE__ ssize_t
Definition stdio.h:150
Definition socket.h:84
void * iov_base
Definition socket.h:85
size_t iov_len
Definition socket.h:86
Definition socket.h:91
struct iovec * msg_iov
Definition socket.h:94
socklen_t msg_namelen
Definition socket.h:93
void * msg_name
Definition socket.h:92
int msg_flags
Definition socket.h:98
size_t msg_controllen
Definition socket.h:97
size_t msg_iovlen
Definition socket.h:95
void * msg_control
Definition socket.h:96
Definition socket.h:73
sa_family_t ss_family
Definition socket.h:74
int64_t __ss_align
Definition socket.h:76
char __ss_pad2[112]
Definition socket.h:77
char __ss_pad1[6]
Definition socket.h:75
Definition socket.h:68
sa_family_t sa_family
Definition socket.h:69
char sa_data[14]
Definition socket.h:70