[279] | 1 |
|
---|
| 2 | #ifndef SOCKET_STUB_H
|
---|
| 3 | #define SOCKET_STUB_H
|
---|
| 4 |
|
---|
| 5 | typedef unsigned socklen_t;
|
---|
| 6 | typedef unsigned short sa_family_t;
|
---|
| 7 |
|
---|
| 8 | struct sockaddr {
|
---|
| 9 | sa_family_t sa_family;
|
---|
| 10 | char sa_data[14];
|
---|
| 11 | };
|
---|
| 12 |
|
---|
| 13 | struct addrinfo {
|
---|
| 14 | int ai_flags;
|
---|
| 15 | int ai_family;
|
---|
| 16 | int ai_socktype;
|
---|
| 17 | int ai_protocol;
|
---|
| 18 | socklen_t ai_addrlen;
|
---|
| 19 | struct sockaddr *ai_addr;
|
---|
| 20 | char *ai_canonname;
|
---|
| 21 | struct addrinfo *ai_next;
|
---|
| 22 | };
|
---|
| 23 |
|
---|
| 24 | #define AF_INET 2
|
---|
| 25 | #define AF_INET6 10
|
---|
| 26 |
|
---|
| 27 | #define SOCK_STREAM 1
|
---|
| 28 | #define SOCK_DGRAM 2
|
---|
| 29 |
|
---|
| 30 | typedef uint16_t in_port_t;
|
---|
| 31 | typedef uint32_t in_addr_t;
|
---|
| 32 | struct in_addr { in_addr_t s_addr; };
|
---|
| 33 |
|
---|
| 34 | struct sockaddr_in {
|
---|
| 35 | sa_family_t sin_family;
|
---|
| 36 | in_port_t sin_port;
|
---|
| 37 | struct in_addr sin_addr;
|
---|
| 38 | uint8_t sin_zero[8];
|
---|
| 39 | };
|
---|
| 40 |
|
---|
| 41 | struct in6_addr
|
---|
| 42 | {
|
---|
| 43 | union {
|
---|
| 44 | uint8_t __s6_addr[16];
|
---|
| 45 | uint16_t __s6_addr16[8];
|
---|
| 46 | uint32_t __s6_addr32[4];
|
---|
| 47 | } __in6_union;
|
---|
| 48 | };
|
---|
| 49 | #define s6_addr __in6_union.__s6_addr
|
---|
| 50 | #define s6_addr16 __in6_union.__s6_addr16
|
---|
| 51 | #define s6_addr32 __in6_union.__s6_addr32
|
---|
| 52 |
|
---|
| 53 | struct sockaddr_in6
|
---|
| 54 | {
|
---|
| 55 | sa_family_t sin6_family;
|
---|
| 56 | in_port_t sin6_port;
|
---|
| 57 | uint32_t sin6_flowinfo;
|
---|
| 58 | struct in6_addr sin6_addr;
|
---|
| 59 | uint32_t sin6_scope_id;
|
---|
| 60 | };
|
---|
| 61 |
|
---|
| 62 | #define MSG_OOB 0x0001
|
---|
| 63 |
|
---|
| 64 | typedef struct socket_t {
|
---|
| 65 | int family;
|
---|
| 66 | int type;
|
---|
| 67 | int protocol;
|
---|
| 68 | int cepid;
|
---|
| 69 | int repid;
|
---|
| 70 | int backlog;
|
---|
| 71 | unsigned int flags;
|
---|
| 72 | union {
|
---|
| 73 | struct sockaddr_in laddr4;
|
---|
| 74 | struct sockaddr_in6 laddr6;
|
---|
| 75 | };
|
---|
| 76 | union {
|
---|
| 77 | struct sockaddr_in raddr4;
|
---|
| 78 | struct sockaddr_in6 raddr6;
|
---|
| 79 | };
|
---|
| 80 | int buf_size;
|
---|
| 81 | unsigned char *buf;
|
---|
| 82 | } socket_t;
|
---|
| 83 |
|
---|
| 84 | struct _IO_FILE {
|
---|
| 85 | int fd;
|
---|
| 86 | int type;
|
---|
| 87 | int handle;
|
---|
| 88 | int (*close)(struct _IO_FILE *);
|
---|
| 89 | size_t (*read)(struct _IO_FILE *, unsigned char *, size_t);
|
---|
| 90 | size_t (*write)(struct _IO_FILE *, const unsigned char *, size_t);
|
---|
| 91 | int readevt_r;
|
---|
| 92 | int readevt_w;
|
---|
| 93 | int writeevt_r;
|
---|
| 94 | int writeevt_w;
|
---|
| 95 | int errorevt_r;
|
---|
| 96 | int errorevt_w;
|
---|
| 97 | union {
|
---|
| 98 | FIL file;
|
---|
| 99 | socket_t socket;
|
---|
| 100 | };
|
---|
| 101 | };
|
---|
| 102 |
|
---|
| 103 | #ifndef bool
|
---|
| 104 | #define bool int
|
---|
| 105 | #endif
|
---|
| 106 | #ifndef true
|
---|
| 107 | #define true 1
|
---|
| 108 | #endif
|
---|
| 109 | #ifndef false
|
---|
| 110 | #define false 0
|
---|
| 111 | #endif
|
---|
| 112 |
|
---|
| 113 | extern int stdio_close(struct _IO_FILE *fp);
|
---|
| 114 | extern size_t stdio_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 115 | extern size_t stdio_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 116 | extern size_t stdin_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 117 | extern size_t stdout_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 118 | extern size_t stderr_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 119 |
|
---|
| 120 | extern int sio_close(struct _IO_FILE *fp);
|
---|
| 121 | extern size_t sio_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 122 | extern size_t sio_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 123 |
|
---|
| 124 | extern int file_close(struct _IO_FILE *fp);
|
---|
| 125 | extern size_t file_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 126 | extern size_t file_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 127 |
|
---|
| 128 | extern int tcp_fd_close(struct _IO_FILE *fp);
|
---|
| 129 | extern size_t tcp_fd_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 130 | extern size_t tcp_fd_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 131 |
|
---|
| 132 | extern int udp_fd_close(struct _IO_FILE *fp);
|
---|
| 133 | extern size_t udp_fd_read(struct _IO_FILE *fp, unsigned char *data, size_t len);
|
---|
| 134 | extern size_t udp_fd_write(struct _IO_FILE *fp, const unsigned char *data, size_t len);
|
---|
| 135 |
|
---|
| 136 | struct _IO_FILE *fd_to_fp(int fd);
|
---|
| 137 |
|
---|
| 138 | struct _IO_FILE *new_sio_fd(int sioid);
|
---|
| 139 | int delete_sio_fd(int sioid);
|
---|
| 140 | struct _IO_FILE *sioid_to_fd(int sioid);
|
---|
| 141 |
|
---|
| 142 | struct _IO_FILE *new_file_fd(int fileid);
|
---|
| 143 | int delete_file_fd(int fileid);
|
---|
| 144 | struct _IO_FILE *fileid_to_fd(int fileid);
|
---|
| 145 |
|
---|
| 146 | struct _IO_FILE *new_tcp_fd(int tcpid);
|
---|
| 147 | int delete_tcp_fd(int tcpid);
|
---|
| 148 | struct _IO_FILE *tcpid_to_fd(int tcpid);
|
---|
| 149 |
|
---|
| 150 | struct _IO_FILE *new_udp_fd(int udpid);
|
---|
| 151 | int delete_udp_fd(int udpid);
|
---|
| 152 | struct _IO_FILE *udpid_to_fd(int udpid);
|
---|
| 153 |
|
---|
| 154 | int delete_tcp_rep(int repid);
|
---|
| 155 | void clean_fd();
|
---|
| 156 |
|
---|
| 157 | ER socket_tcp_callback(ID cepid, FN fncd, void *p_parblk);
|
---|
| 158 | ER socket_udp_callback(ID cepid, FN fncd, void *p_parblk);
|
---|
| 159 |
|
---|
| 160 | #endif // !SOCKET_STUB_H
|
---|