summaryrefslogtreecommitdiff
path: root/hurd/socket.defs
diff options
context:
space:
mode:
Diffstat (limited to 'hurd/socket.defs')
-rw-r--r--hurd/socket.defs136
1 files changed, 136 insertions, 0 deletions
diff --git a/hurd/socket.defs b/hurd/socket.defs
new file mode 100644
index 00000000..f71930ea
--- /dev/null
+++ b/hurd/socket.defs
@@ -0,0 +1,136 @@
+/* Definitions for socket interface
+ Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation
+
+This file is part of the GNU Hurd.
+
+The GNU Hurd is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+The GNU Hurd is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU Hurd; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+/* Sockets also support the generic IO facilities. */
+
+subsystem socket 26000;
+
+#include <hurd/hurd_types.defs>
+
+#ifdef SOCKET_IMPORTS
+SOCKET_IMPORTS
+#endif
+
+INTR_INTERFACE
+
+/* Create a new socket. Sock type is, for example, SOCK_STREAM,
+ SOCK_DGRAM, or some such. */
+routine socket_create (
+ server: pf_t;
+ sock_type: int;
+ protocol: int;
+ out sock: mach_port_send_t);
+
+/* Prepare a socket of appropriate type for future accept operations. */
+routine socket_listen (
+ sock: socket_t;
+ queue_limit: int);
+
+/* Return a new connection from a socket previously listened. */
+routine socket_accept (
+ sock: socket_t;
+ out conn_sock: mach_port_send_t;
+ out peer_addr: mach_port_send_t);
+
+/* Connect to an address. */
+routine socket_connect (
+ sock: socket_t;
+ addr: addr_port_t);
+
+/* Bind a socket to an address. */
+routine socket_bind (
+ sock: socket_t;
+ addr: addr_port_t);
+
+/* Find out the name of a socket. */
+routine socket_name (
+ sock: socket_t;
+ out addr: mach_port_send_t);
+
+/* Find out the name of the socket's peer. */
+routine socket_peername (
+ sock: socket_t;
+ out addr: mach_port_send_t);
+
+/* Connect two sockets */
+routine socket_connect2 (
+ sock1: socket_t;
+ sock2: socket_t);
+
+/* Create an address from a sockaddr. */
+routine socket_create_address (
+ server: mach_port_t; /* Can be either pf_t or socket_t. */
+ sockaddr_type: int;
+ sockaddr: data_t SCP;
+ out addr: mach_port_send_t);
+
+/* Create an address without any sockaddr. */
+routine socket_fabricate_address (
+ server: mach_port_t; /* Can be either pf_t or socket_t. */
+ sockaddr_type: int;
+ out addr: mach_port_send_t);
+
+/* Find the sockaddr name of an address. */
+routine socket_whatis_address(
+ addr: addr_port_t;
+ out sockaddr_type: int;
+ out sockaddr: data_t, dealloc);
+
+/* Shutdown a socket for reading or writing. */
+routine socket_shutdown (
+ sock: socket_t;
+ direction: int);
+
+/* XXX to become ioctl hack */
+/* Get a socket option. */
+routine socket_getopt (
+ sock: socket_t;
+ level: int;
+ option: int;
+ out optval: data_t, dealloc);
+
+/* XXX to become ioctl hack */
+/* Set a socket option. */
+routine socket_setopt (
+ sock: socket_t;
+ level: int;
+ option: int;
+ optval: data_t SCP);
+
+/* Send data over a socket, possibly including Mach ports. */
+routine socket_send (
+ sock: socket_t;
+ addr: addr_port_t;
+ flags: int;
+ data: data_t SCP;
+ ports: portarray_t SCP;
+ control: data_t SCP;
+ out amount: mach_msg_type_number_t);
+
+/* Receive data from a socket, possibly including Mach ports. */
+routine socket_recv (
+ sock: socket_t;
+ out addr: mach_port_send_t;
+ flags: int;
+ out data: data_t, dealloc;
+ out ports: portarray_t, dealloc;
+ out control: data_t, dealloc;
+ out outflags: int;
+ amount: mach_msg_type_number_t);