# -*- fundamental -*-
#
# These are calls that are invoked via the socketcall mechanism
#
int socket(int, int, int)
int bind(int, struct sockaddr *, int)
int connect(int, struct sockaddr *, socklen_t)
int listen(int, int)
int accept(int, struct sockaddr *, socklen_t *)
int getsockname(int, struct sockaddr *, socklen_t *)
int getpeername(int, struct sockaddr *, socklen_t *)
int socketpair(int, int, int, int *)
int send(int, const void *, size_t, unsigned int)
int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t)
int recv(int, void *, size_t, unsigned int)
int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)
int shutdown(int, int)
int setsockopt(int, int, int, const void *, socklen_t)
int getsockopt(int, int, int, void *, socklen_t *)
int sendmsg(int, const struct msghdr *, unsigned int)
int recvmsg(int, struct msghdr *, unsigned int)
