/* -*- c -*-
 *
 * These are calls that are invoked via the socketcall mechanism
 * Note that on most architectures this is simply #included into
 * SYSCALLS.def.
 */
<?> int socket(int, int, int);
<?> int bind(int, const struct sockaddr *, int);
<?> int connect(int, const 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 sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t);
<?> 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);
