# -*- 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)
