aboutsummaryrefslogtreecommitdiff
path: root/pfinet/pfinet.h
diff options
context:
space:
mode:
Diffstat (limited to 'pfinet/pfinet.h')
-rw-r--r--pfinet/pfinet.h73
1 files changed, 50 insertions, 23 deletions
diff --git a/pfinet/pfinet.h b/pfinet/pfinet.h
index 966a4e8d..050ba6f7 100644
--- a/pfinet/pfinet.h
+++ b/pfinet/pfinet.h
@@ -1,5 +1,7 @@
-/*
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+/*
+ Copyright (C) 1995, 1996, 1999, 2000, 2002, 2007
+ Free Software Foundation, Inc.
+
Written by Michael I. Bushnell, p/BSG.
This file is part of the GNU Hurd.
@@ -23,17 +25,12 @@
#include <device/device.h>
#include <hurd/ports.h>
-#include <linux/netdevice.h>
#include <hurd/trivfs.h>
+#include <sys/mman.h>
+#include <sys/socket.h>
-extern device_t master_device;
-
-void incoming_net_packet (void);
-
-extern struct proto_ops *proto_ops;
-
-struct mutex global_lock;
-struct mutex packet_queue_lock;
+extern struct mutex global_lock;
+extern struct mutex net_bh_lock;
struct port_bucket *pfinet_bucket;
struct port_class *addrport_class;
@@ -41,7 +38,8 @@ struct port_class *socketport_class;
mach_port_t fsys_identity;
-extern struct device ether_dev;
+extern struct device *dev_base;
+extern struct device loopback_dev;
/* A port on SOCK. Multiple sock_user's can point to the same socket. */
struct sock_user
@@ -55,23 +53,35 @@ struct sock_user
struct sock_addr
{
struct port_info pi;
- size_t len;
- struct sockaddr address[0];
+ struct sockaddr address;
};
+/* Trivfs control structure for pfinet. */
+struct trivfs_control *pfinetctl;
+
+/* Owner of the underlying node. */
+uid_t pfinet_owner;
+
+/* Group of the underlying node. */
+uid_t pfinet_group;
+
+void ethernet_initialize (void);
int ethernet_demuxer (mach_msg_header_t *, mach_msg_header_t *);
-void setup_ethernet_device (char *);
-void become_task_protid (struct trivfs_protid *);
-void become_task (struct sock_user *);
-struct sock_user *make_sock_user (struct socket *, int, int);
-error_t make_sockaddr_port (struct socket *, int,
+int ethernet_change_flags (struct device *, short);
+void setup_ethernet_device (char *, struct device **);
+void setup_dummy_device (char *, struct device **);
+void setup_tunnel_device (char *, struct device **);
+struct sock_user *make_sock_user (struct socket *, int, int, int);
+error_t make_sockaddr_port (struct socket *, int,
mach_port_t *, mach_msg_type_name_t *);
void init_devices (void);
+any_t net_bh_worker (any_t);
void init_time (void);
-void inet_proto_init (struct net_proto *);
-void ip_rt_add (short, u_long, u_long, u_long, struct device *,
+void ip_rt_add (short, u_long, u_long, u_long, struct device *,
u_short, u_long);
-int tcp_readable (struct sock *);
+void ip_rt_del (u_long, struct device *);
+struct sock;
+error_t tcp_tiocinq (struct sock *sk, mach_msg_type_number_t *amount);
struct sock_user *begin_using_socket_port (socket_t);
@@ -84,6 +94,23 @@ void clean_socketport (void *);
/* MiG bogosity */
typedef struct sock_user *sock_user_t;
typedef struct sock_addr *sock_addr_t;
-typedef struct trivfs_protid *trivfs_protid_t;
+
+/* pfinet6 port classes. */
+enum {
+ PORTCLASS_INET,
+ PORTCLASS_INET6,
+};
+
+extern struct port_class *trivfs_protid_portclasses[];
+extern int trivfs_protid_nportclasses;
+
+extern struct port_class *trivfs_cntl_portclasses[2];
+extern int trivfs_cntl_nportclasses;
+
+/* Which portclass to install on the bootstrap port. */
+extern int pfinet_bootstrap_portclass;
+
+/* Install portclass on node NAME. */
+void pfinet_bind (int portclass, const char *name);
#endif