1 #ifndef MINIX_TEST_SOCKLIB_H 2 #define MINIX_TEST_SOCKLIB_H 3 4 enum state { 5 S_NEW, 6 S_N_SHUT_R, 7 S_N_SHUT_W, 8 S_N_SHUT_RW, 9 S_BOUND, 10 S_LISTENING, 11 S_L_SHUT_R, 12 S_L_SHUT_W, 13 S_L_SHUT_RW, 14 S_CONNECTING, 15 S_C_SHUT_R, 16 S_C_SHUT_W, 17 S_C_SHUT_RW, 18 S_CONNECTED, 19 S_ACCEPTED, 20 S_SHUT_R, 21 S_SHUT_W, 22 S_SHUT_RW, 23 S_RSHUT_R, 24 S_RSHUT_W, 25 S_RSHUT_RW, 26 S_SHUT2_R, 27 S_SHUT2_W, 28 S_SHUT2_RW, 29 S_PRE_EOF, 30 S_AT_EOF, 31 S_POST_EOF, 32 S_PRE_SHUT_R, 33 S_EOF_SHUT_R, 34 S_POST_SHUT_R, 35 S_PRE_SHUT_W, 36 S_EOF_SHUT_W, 37 S_POST_SHUT_W, 38 S_PRE_SHUT_RW, 39 S_EOF_SHUT_RW, 40 S_POST_SHUT_RW, 41 S_PRE_RESET, 42 S_AT_RESET, 43 S_POST_RESET, 44 S_FAILED, 45 S_POST_FAILED, 46 S_MAX 47 }; 48 49 enum call { 50 C_ACCEPT, 51 C_BIND, 52 C_CONNECT, 53 C_GETPEERNAME, 54 C_GETSOCKNAME, 55 C_GETSOCKOPT_ERR, 56 C_GETSOCKOPT_KA, 57 C_GETSOCKOPT_RB, 58 C_IOCTL_NREAD, 59 C_LISTEN, 60 C_RECV, 61 C_RECVFROM, 62 C_SEND, 63 C_SENDTO, 64 C_SELECT_R, 65 C_SELECT_W, 66 C_SELECT_X, 67 C_SETSOCKOPT_BC, 68 C_SETSOCKOPT_KA, 69 C_SETSOCKOPT_L, 70 C_SETSOCKOPT_RA, 71 C_SHUTDOWN_R, 72 C_SHUTDOWN_RW, 73 C_SHUTDOWN_W, 74 C_MAX 75 }; 76 77 int socklib_sweep_call(enum call call, int fd, struct sockaddr * local_addr, 78 struct sockaddr * remote_addr, socklen_t addr_len); 79 void socklib_sweep(int domain, int type, int protocol, 80 const enum state * states, unsigned int nstates, const int * results, 81 int (* proc)(int domain, int type, int protocol, enum state, 82 enum call)); 83 84 void socklib_large_transfers(int fd[2]); 85 void socklib_producer_consumer(int fd[2]); 86 void socklib_stream_recv(int (* socket_pair)(int, int, int, int *), int domain, 87 int type, int (* break_recv)(int, const char *, size_t)); 88 89 #endif /* !MINIX_TEST_SOCKLIB_H */ 90