2 * SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)
6 #include <sys/types.h> /* See NOTES */
7 #include <sys/socket.h>
14 static void socketcall_socket(unsigned long *args
)
16 struct socket_triplet st
;
22 args
[2] = st
.protocol
;
25 struct socketcall_ptr
{
27 void (*func
)(unsigned long *args
);
30 static const struct socketcall_ptr socketcallptrs
[] = {
31 { .call
= SYS_SOCKET
, .func
= socketcall_socket
},
32 // { .call = SYS_BIND, .func = socketcall_bind },
33 // { .call = SYS_CONNECT, .func = socketcall_connect },
34 // { .call = SYS_LISTEN, .func = socketcall_listen },
35 // { .call = SYS_ACCEPT, .func = socketcall_accept },
36 // { .call = SYS_GETSOCKNAME, .func = socketcall_getsockname },
37 // { .call = SYS_GETPEERNAME, .func = socketcall_getpeername },
38 // { .call = SYS_SOCKETPAIR, .func = socketcall_socketpair },
39 // { .call = SYS_SEND, .func = socketcall_send },
40 // { .call = SYS_RECV, .func = socketcall_recv },
41 // { .call = SYS_SENDTO, .func = socketcall_sendto },
42 // { .call = SYS_RECVFROM, .func = socketcall_recvfrom },
43 // { .call = SYS_SHUTDOWN, .func = socketcall_shutdown },
44 // { .call = SYS_SETSOCKOPT, .func = socketcall_setsockopt },
45 // { .call = SYS_GETSOCKOPT, .func = socketcall_getsockopt },
46 // { .call = SYS_SENDMSG, .func = socketcall_sendmsg },
47 // { .call = SYS_RECVMSG, .func = socketcall_recvmsg },
48 // { .call = SYS_ACCEPT4, .func = socketcall_accept },
49 // { .call = SYS_RECVMMSG, .func = socketcall_recvmmsg },
50 // { .call = SYS_SENDMMSG, .func = socketcall_sendmmsg },
54 static void sanitise_socketcall(int childno
)
59 args
= malloc(6 * sizeof(unsigned long));
61 shm
->syscall
[childno
].a1
= rand() % 20;
62 shm
->syscall
[childno
].a1
= SYS_SOCKET
;
64 for (i
= 0; i
< ARRAY_SIZE(socketcallptrs
); i
++) {
65 if (socketcallptrs
[i
].call
== shm
->syscall
[childno
].a1
)
66 socketcallptrs
[i
].func(args
);
69 shm
->syscall
[childno
].a2
= (unsigned long) args
;
72 struct syscallentry syscall_socketcall
= {
77 .arg2type
= ARG_ADDRESS
,
78 .sanitise
= sanitise_socketcall
,