diff --git a/Makefile b/Makefile
index e11f39a..7453198 100644
--- a/Makefile
+++ b/Makefile
@@ -560,9 +560,9 @@
 all: haproxy
 endif
 
-OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocols.o \
+OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocol.o \
        src/uri_auth.o src/standard.o src/buffer.o src/log.o src/task.o \
-       src/chunk.o src/channel.o \
+       src/chunk.o src/channel.o src/listener.o \
        src/time.o src/fd.o src/pipe.o src/regex.o src/cfgparse.o src/server.o \
        src/checks.o src/queue.o src/frontend.o src/proxy.o src/peers.o \
        src/arg.o src/stick_table.o src/proto_uxst.o src/connection.o \
diff --git a/Makefile.bsd b/Makefile.bsd
index ca00c7b..6fff29b 100644
--- a/Makefile.bsd
+++ b/Makefile.bsd
@@ -105,9 +105,9 @@
 CFLAGS  = -Wall $(COPTS) $(DEBUG)
 LDFLAGS = -g
 
-OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocols.o \
+OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocol.o \
        src/uri_auth.o src/standard.o src/buffer.o src/log.o src/task.o \
-       src/chunk.o src/channel.o \
+       src/chunk.o src/channel.o src/listener.o \
        src/time.o src/fd.o src/pipe.o src/regex.o src/cfgparse.o src/server.o \
        src/checks.o src/queue.o src/frontend.o src/proxy.o src/proto_uxst.o \
        src/proto_http.o src/raw_sock.o src/appsession.o src/backend.o \
diff --git a/Makefile.osx b/Makefile.osx
index a251c4f..8201a6a 100644
--- a/Makefile.osx
+++ b/Makefile.osx
@@ -102,9 +102,9 @@
 CFLAGS  = -Wall $(COPTS) $(DEBUG) -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -mmacosx-version-min=10.4
 LDFLAGS = -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -mmacosx-version-min=10.4
 
-OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocols.o \
+OBJS = src/haproxy.o src/sessionhash.o src/base64.o src/protocol.o \
        src/uri_auth.o src/standard.o src/buffer.o src/log.o src/task.o \
-       src/chunk.o src/channel.o \
+       src/chunk.o src/channel.o src/listener.o \
        src/time.o src/fd.o src/pipe.o src/regex.o src/cfgparse.o src/server.o \
        src/checks.o src/queue.o src/frontend.o src/proxy.o src/proto_uxst.o \
        src/proto_http.o src/raw_sock.o src/appsession.o src/backend.o \
diff --git a/include/proto/connection.h b/include/proto/connection.h
index 3ed605f..32e77cf 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -24,7 +24,7 @@
 
 #include <common/config.h>
 #include <types/connection.h>
-#include <types/protocols.h>
+#include <types/listener.h>
 
 /* I/O callback for fd-based connections. It calls the read/write handlers
  * provided by the connection's sock_ops. Returns 0.
diff --git a/include/proto/protocols.h b/include/proto/listener.h
similarity index 68%
rename from include/proto/protocols.h
rename to include/proto/listener.h
index ec98e59..415b913 100644
--- a/include/proto/protocols.h
+++ b/include/proto/listener.h
@@ -1,28 +1,28 @@
 /*
-  include/proto/protocols.h
-  This file declares generic protocol primitives.
-
-  Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
-  
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation, version 2.1
-  exclusively.
-
-  This library 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
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+ * include/proto/listener.h
+ * This file declares listener management primitives.
+ *
+ * Copyright (C) 2000-2012 Willy Tarreau - w@1wt.eu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 
-#ifndef _PROTO_PROTOCOLS_H
-#define _PROTO_PROTOCOLS_H
+#ifndef _PROTO_LISTENER_H
+#define _PROTO_LISTENER_H
 
-#include <types/protocols.h>
+#include <types/listener.h>
 
 /* This function adds the specified listener's file descriptor to the polling
  * lists if it is in the LI_LISTEN state. The listener enters LI_READY or
@@ -105,35 +105,6 @@
  */
 int listener_accept(int fd);
 
-/* Registers the protocol <proto> */
-void protocol_register(struct protocol *proto);
-
-/* Unregisters the protocol <proto>. Note that all listeners must have
- * previously been unbound.
- */
-void protocol_unregister(struct protocol *proto);
-
-/* binds all listeneres of all registered protocols. Returns a composition
- * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_bind_all(char *errmsg, int errlen);
-
-/* unbinds all listeners of all registered protocols. They are also closed.
- * This must be performed before calling exit() in order to get a chance to
- * remove file-system based sockets and pipes.
- * Returns a composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_unbind_all(void);
-
-/* enables all listeners of all registered protocols. This is intended to be
- * used after a fork() to enable reading on all file descriptors. Returns a
- * composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_enable_all(void);
-
-/* returns the protocol associated to family <family> or NULL if not found */
-struct protocol *protocol_by_family(int family);
-
 /* allocate an ssl_conf struct for a bind line, and chain it to list head <lh>.
  * If <arg> is not NULL, it is duplicated into ->arg to store useful config
  * information for error reporting.
@@ -151,7 +122,7 @@
 	return ssl_conf;
 }
 
-#endif /* _PROTO_PROTOCOLS_H */
+#endif /* _PROTO_LISTENER_H */
 
 /*
  * Local variables:
diff --git a/include/proto/protocol.h b/include/proto/protocol.h
new file mode 100644
index 0000000..1842faf
--- /dev/null
+++ b/include/proto/protocol.h
@@ -0,0 +1,63 @@
+/*
+ * include/proto/protocol.h
+ * This file declares generic protocol management primitives.
+ *
+ * Copyright (C) 2000-2012 Willy Tarreau - w@1wt.eu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _PROTO_PROTOCOL_H
+#define _PROTO_PROTOCOL_H
+
+#include <types/protocol.h>
+
+/* Registers the protocol <proto> */
+void protocol_register(struct protocol *proto);
+
+/* Unregisters the protocol <proto>. Note that all listeners must have
+ * previously been unbound.
+ */
+void protocol_unregister(struct protocol *proto);
+
+/* binds all listeneres of all registered protocols. Returns a composition
+ * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_bind_all(char *errmsg, int errlen);
+
+/* unbinds all listeners of all registered protocols. They are also closed.
+ * This must be performed before calling exit() in order to get a chance to
+ * remove file-system based sockets and pipes.
+ * Returns a composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_unbind_all(void);
+
+/* enables all listeners of all registered protocols. This is intended to be
+ * used after a fork() to enable reading on all file descriptors. Returns a
+ * composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_enable_all(void);
+
+/* returns the protocol associated to family <family> or NULL if not found */
+struct protocol *protocol_by_family(int family);
+
+#endif /* _PROTO_PROTOCOL_H */
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/include/proto/proxy.h b/include/proto/proxy.h
index d5fd3e0..4a4b285 100644
--- a/include/proto/proxy.h
+++ b/include/proto/proxy.h
@@ -27,6 +27,7 @@
 #include <common/time.h>
 #include <types/global.h>
 #include <types/proxy.h>
+#include <types/listener.h>
 #include <proto/freq_ctr.h>
 
 int start_proxies(int verbose);
diff --git a/include/proto/ssl_sock.h b/include/proto/ssl_sock.h
index 9d04624..6192fe8 100644
--- a/include/proto/ssl_sock.h
+++ b/include/proto/ssl_sock.h
@@ -23,7 +23,9 @@
 #define _PROTO_SSL_SOCK_H
 #include <openssl/ssl.h>
 
-#include <types/protocols.h>
+#include <types/connection.h>
+#include <types/listener.h>
+#include <types/proxy.h>
 #include <types/stream_interface.h>
 
 extern struct data_ops ssl_sock;
diff --git a/include/types/connection.h b/include/types/connection.h
index 711abf0..8a1b8ee 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -27,8 +27,10 @@
 
 #include <common/config.h>
 
+#include <types/listener.h>
+#include <types/protocol.h>
+
 /* referenced below */
-struct protocol;
 struct connection;
 struct buffer;
 struct pipe;
@@ -36,7 +38,6 @@
 struct proxy;
 struct si_applet;
 struct task;
-struct listener;
 
 /* Polling flags that are manipulated by I/O callbacks and handshake callbacks
  * indicate what they expect from a file descriptor at each layer. For each
diff --git a/include/types/global.h b/include/types/global.h
index 5775e27..4c0e443 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -26,8 +26,7 @@
 
 #include <common/config.h>
 #include <types/freq_ctr.h>
-#include <types/log.h>
-#include <types/protocols.h>
+#include <types/listener.h>
 #include <types/proxy.h>
 #include <types/task.h>
 
diff --git a/include/types/protocols.h b/include/types/listener.h
similarity index 74%
rename from include/types/protocols.h
rename to include/types/listener.h
index bd8b355..78195ec 100644
--- a/include/types/protocols.h
+++ b/include/types/listener.h
@@ -1,8 +1,8 @@
 /*
- * include/types/protocols.h
- * This file defines the structures used by generic network protocols.
+ * include/types/listener.h
+ * This file defines the structures needed to manage listeners.
  *
- * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
+ * Copyright (C) 2000-2012 Willy Tarreau - w@1wt.eu
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -19,13 +19,11 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#ifndef _TYPES_PROTOCOLS_H
-#define _TYPES_PROTOCOLS_H
+#ifndef _TYPES_LISTENER_H
+#define _TYPES_LISTENER_H
 
 #include <sys/types.h>
 #include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
 
 #ifdef USE_OPENSSL
 #include <openssl/ssl.h>
@@ -35,11 +33,12 @@
 #include <common/mini-clist.h>
 #include <eb32tree.h>
 
-#include <types/counters.h>
-#include <types/task.h>
-
-/* max length of a protcol name, including trailing zero */
-#define PROTO_NAME_LEN 16
+/* Some pointer types reference below */
+struct task;
+struct protocol;
+struct data_ops;
+struct proxy;
+struct licounters;
 
 /* listener state */
 enum {
@@ -159,38 +158,7 @@
 	} conf;				/* config information */
 };
 
-struct connection;
-
-/* This structure contains all information needed to easily handle a protocol.
- * Its primary goal is to ease listeners maintenance. Specifically, the
- * bind_all() primitive must be used before any fork(), and the enable_all()
- * primitive must be called after the fork() to enable all fds. Last, the
- * unbind_all() primitive closes all listeners.
- */
-struct protocol {
-	char name[PROTO_NAME_LEN];			/* protocol name, zero-terminated */
-	int sock_domain;				/* socket domain, as passed to socket()   */
-	int sock_type;					/* socket type, as passed to socket()     */
-	int sock_prot;					/* socket protocol, as passed to socket() */
-	sa_family_t sock_family;			/* socket family, for sockaddr */
-	socklen_t sock_addrlen;				/* socket address length, used by bind() */
-	int l3_addrlen;					/* layer3 address length, used by hashes */
-	int (*accept)(int fd);				/* generic accept function */
-	int (*bind)(struct listener *l, char *errmsg, int errlen); /* bind a listener */
-	int (*bind_all)(struct protocol *proto, char *errmsg, int errlen); /* bind all unbound listeners */
-	int (*unbind_all)(struct protocol *proto);	/* unbind all bound listeners */
-	int (*enable_all)(struct protocol *proto);	/* enable all bound listeners */
-	int (*disable_all)(struct protocol *proto);	/* disable all bound listeners */
-	int (*connect)(struct connection *, int data);  /* connect function if any */
-	int (*get_src)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve src addr */
-	int (*get_dst)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve dst addr */
-
-	struct list listeners;				/* list of listeners using this protocol */
-	int nb_listeners;				/* number of listeners */
-	struct list list;				/* list of registered protocols */
-};
-
-#endif /* _TYPES_PROTOCOLS_H */
+#endif /* _TYPES_LISTENER_H */
 
 /*
  * Local variables:
diff --git a/include/types/protocol.h b/include/types/protocol.h
new file mode 100644
index 0000000..a8e020c
--- /dev/null
+++ b/include/types/protocol.h
@@ -0,0 +1,75 @@
+/*
+ * include/types/protocol.h
+ * This file defines the structures used by generic network protocols.
+ *
+ * Copyright (C) 2000-2012 Willy Tarreau - w@1wt.eu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _TYPES_PROTOCOL_H
+#define _TYPES_PROTOCOL_H
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <common/config.h>
+#include <common/mini-clist.h>
+#include <eb32tree.h>
+
+/* some pointer types referenced below */
+struct listener;
+struct connection;
+
+/* max length of a protcol name, including trailing zero */
+#define PROTO_NAME_LEN 16
+
+/* This structure contains all information needed to easily handle a protocol.
+ * Its primary goal is to ease listeners maintenance. Specifically, the
+ * bind_all() primitive must be used before any fork(), and the enable_all()
+ * primitive must be called after the fork() to enable all fds. Last, the
+ * unbind_all() primitive closes all listeners.
+ */
+struct protocol {
+	char name[PROTO_NAME_LEN];			/* protocol name, zero-terminated */
+	int sock_domain;				/* socket domain, as passed to socket()   */
+	int sock_type;					/* socket type, as passed to socket()     */
+	int sock_prot;					/* socket protocol, as passed to socket() */
+	sa_family_t sock_family;			/* socket family, for sockaddr */
+	socklen_t sock_addrlen;				/* socket address length, used by bind() */
+	int l3_addrlen;					/* layer3 address length, used by hashes */
+	int (*accept)(int fd);				/* generic accept function */
+	int (*bind)(struct listener *l, char *errmsg, int errlen); /* bind a listener */
+	int (*bind_all)(struct protocol *proto, char *errmsg, int errlen); /* bind all unbound listeners */
+	int (*unbind_all)(struct protocol *proto);	/* unbind all bound listeners */
+	int (*enable_all)(struct protocol *proto);	/* enable all bound listeners */
+	int (*disable_all)(struct protocol *proto);	/* disable all bound listeners */
+	int (*connect)(struct connection *, int data);  /* connect function if any */
+	int (*get_src)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve src addr */
+	int (*get_dst)(int fd, struct sockaddr *, socklen_t, int dir); /* syscall used to retrieve dst addr */
+
+	struct list listeners;				/* list of listeners using this protocol */
+	int nb_listeners;				/* number of listeners */
+	struct list list;				/* list of registered protocols */
+};
+
+#endif /* _TYPES_PROTOCOL_H */
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/include/types/proxy.h b/include/types/proxy.h
index 1080568..a2355d5 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -40,8 +40,8 @@
 #include <types/backend.h>
 #include <types/counters.h>
 #include <types/freq_ctr.h>
+#include <types/listener.h>
 #include <types/log.h>
-#include <types/protocols.h>
 #include <types/proto_http.h>
 #include <types/sample.h>
 #include <types/session.h>
diff --git a/src/backend.c b/src/backend.c
index c2ecda8..29d8145 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -38,7 +38,7 @@
 #include <proto/lb_fwlc.h>
 #include <proto/lb_fwrr.h>
 #include <proto/lb_map.h>
-#include <proto/protocols.h>
+#include <proto/protocol.h>
 #include <proto/proto_http.h>
 #include <proto/proto_tcp.h>
 #include <proto/queue.h>
diff --git a/src/cfgparse.c b/src/cfgparse.c
index c91e996..f78f896 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -51,9 +51,10 @@
 #include <proto/lb_fwlc.h>
 #include <proto/lb_fwrr.h>
 #include <proto/lb_map.h>
+#include <proto/listener.h>
 #include <proto/log.h>
 #include <proto/port_range.h>
-#include <proto/protocols.h>
+#include <proto/protocol.h>
 #include <proto/proto_tcp.h>
 #include <proto/proto_uxst.h>
 #include <proto/proto_http.h>
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 2e775d9..e28f808 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -47,7 +47,7 @@
 #include <proto/freq_ctr.h>
 #include <proto/log.h>
 #include <proto/pipe.h>
-#include <proto/protocols.h>
+#include <proto/listener.h>
 #include <proto/proto_uxst.h>
 #include <proto/proxy.h>
 #include <proto/session.h>
diff --git a/src/haproxy.c b/src/haproxy.c
index 7fb0429..5edde4f 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -78,8 +78,9 @@
 #include <proto/checks.h>
 #include <proto/fd.h>
 #include <proto/hdr_idx.h>
+#include <proto/listener.h>
 #include <proto/log.h>
-#include <proto/protocols.h>
+#include <proto/protocol.h>
 #include <proto/proto_http.h>
 #include <proto/proxy.h>
 #include <proto/queue.h>
diff --git a/src/protocols.c b/src/listener.c
similarity index 83%
rename from src/protocols.c
rename to src/listener.c
index 377c985..0e864b2 100644
--- a/src/protocols.c
+++ b/src/listener.c
@@ -1,7 +1,7 @@
 /*
- * Protocol registration and listener management functions.
+ * Listener management functions.
  *
- * Copyright 2000-2010 Willy Tarreau <w@1wt.eu>
+ * Copyright 2000-2012 Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -21,6 +21,7 @@
 #include <common/time.h>
 
 #include <types/global.h>
+#include <types/protocol.h>
 
 #include <proto/acl.h>
 #include <proto/fd.h>
@@ -28,9 +29,6 @@
 #include <proto/log.h>
 #include <proto/task.h>
 
-/* List head of all registered protocols */
-static struct list protocols = LIST_HEAD_INIT(protocols);
-
 /* This function adds the specified listener's file descriptor to the polling
  * lists if it is in the LI_LISTEN state. The listener enters LI_READY or
  * LI_FULL state depending on its number of connections.
@@ -411,107 +409,6 @@
 	return;
 }
 
-/* Registers the protocol <proto> */
-void protocol_register(struct protocol *proto)
-{
-	LIST_ADDQ(&protocols, &proto->list);
-}
-
-/* Unregisters the protocol <proto>. Note that all listeners must have
- * previously been unbound.
- */
-void protocol_unregister(struct protocol *proto)
-{
-	LIST_DEL(&proto->list);
-	LIST_INIT(&proto->list);
-}
-
-/* binds all listeners of all registered protocols. Returns a composition
- * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_bind_all(char *errmsg, int errlen)
-{
-	struct protocol *proto;
-	int err;
-
-	err = 0;
-	list_for_each_entry(proto, &protocols, list) {
-		if (proto->bind_all) {
-			err |= proto->bind_all(proto, errmsg, errlen);
-			if ( err & ERR_ABORT )
-				break;
-		}
-	}
-	return err;
-}
-
-/* unbinds all listeners of all registered protocols. They are also closed.
- * This must be performed before calling exit() in order to get a chance to
- * remove file-system based sockets and pipes.
- * Returns a composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL, ERR_ABORT.
- */
-int protocol_unbind_all(void)
-{
-	struct protocol *proto;
-	int err;
-
-	err = 0;
-	list_for_each_entry(proto, &protocols, list) {
-		if (proto->unbind_all) {
-			err |= proto->unbind_all(proto);
-		}
-	}
-	return err;
-}
-
-/* enables all listeners of all registered protocols. This is intended to be
- * used after a fork() to enable reading on all file descriptors. Returns a
- * composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_enable_all(void)
-{
-	struct protocol *proto;
-	int err;
-
-	err = 0;
-	list_for_each_entry(proto, &protocols, list) {
-		if (proto->enable_all) {
-			err |= proto->enable_all(proto);
-		}
-	}
-	return err;
-}
-
-/* disables all listeners of all registered protocols. This may be used before
- * a fork() to avoid duplicating poll lists. Returns a composition of ERR_NONE,
- * ERR_RETRYABLE, ERR_FATAL.
- */
-int protocol_disable_all(void)
-{
-	struct protocol *proto;
-	int err;
-
-	err = 0;
-	list_for_each_entry(proto, &protocols, list) {
-		if (proto->disable_all) {
-			err |= proto->disable_all(proto);
-		}
-	}
-	return err;
-}
-
-/* Returns the protocol handler for socket family <family> or NULL if not found */
-struct protocol *protocol_by_family(int family)
-{
-	struct protocol *proto;
-
-	list_for_each_entry(proto, &protocols, list) {
-		if (proto->sock_domain == family)
-			return proto;
-	}
-	return NULL;
-}
-
 /************************************************************************/
 /*           All supported ACL keywords must be declared here.          */
 /************************************************************************/
@@ -546,7 +443,7 @@
 }};
 
 __attribute__((constructor))
-static void __protocols_init(void)
+static void __listener_init(void)
 {
 	acl_register_keywords(&acl_kws);
 }
diff --git a/src/peers.c b/src/peers.c
index 6af5d9c..09e45f7 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -25,6 +25,7 @@
 #include <common/time.h>
 
 #include <types/global.h>
+#include <proto/listener.h>
 #include <types/peers.h>
 
 #include <proto/acl.h>
@@ -32,7 +33,6 @@
 #include <proto/fd.h>
 #include <proto/log.h>
 #include <proto/hdr_idx.h>
-#include <proto/protocols.h>
 #include <proto/proto_tcp.h>
 #include <proto/proto_http.h>
 #include <proto/proxy.h>
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index f819147..092db69 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -42,9 +42,10 @@
 #include <proto/channel.h>
 #include <proto/connection.h>
 #include <proto/fd.h>
+#include <proto/listener.h>
 #include <proto/log.h>
 #include <proto/port_range.h>
-#include <proto/protocols.h>
+#include <proto/protocol.h>
 #include <proto/proto_tcp.h>
 #include <proto/proxy.h>
 #include <proto/sample.h>
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index e4aaeed..ed05e02 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -36,8 +36,9 @@
 #include <types/global.h>
 
 #include <proto/fd.h>
+#include <proto/listener.h>
 #include <proto/log.h>
-#include <proto/protocols.h>
+#include <proto/protocol.h>
 #include <proto/proto_uxst.h>
 #include <proto/task.h>
 
diff --git a/src/protocol.c b/src/protocol.c
new file mode 100644
index 0000000..84d23da
--- /dev/null
+++ b/src/protocol.c
@@ -0,0 +1,129 @@
+/*
+ * Protocol registration functions.
+ *
+ * Copyright 2000-2012 Willy Tarreau <w@1wt.eu>
+ *
+ * This program 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 of the License, or (at your option) any later version.
+ *
+ */
+
+#include <common/config.h>
+#include <common/errors.h>
+#include <common/mini-clist.h>
+#include <common/standard.h>
+
+#include <types/protocol.h>
+
+/* List head of all registered protocols */
+static struct list protocols = LIST_HEAD_INIT(protocols);
+
+/* Registers the protocol <proto> */
+void protocol_register(struct protocol *proto)
+{
+	LIST_ADDQ(&protocols, &proto->list);
+}
+
+/* Unregisters the protocol <proto>. Note that all listeners must have
+ * previously been unbound.
+ */
+void protocol_unregister(struct protocol *proto)
+{
+	LIST_DEL(&proto->list);
+	LIST_INIT(&proto->list);
+}
+
+/* binds all listeners of all registered protocols. Returns a composition
+ * of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_bind_all(char *errmsg, int errlen)
+{
+	struct protocol *proto;
+	int err;
+
+	err = 0;
+	list_for_each_entry(proto, &protocols, list) {
+		if (proto->bind_all) {
+			err |= proto->bind_all(proto, errmsg, errlen);
+			if ( err & ERR_ABORT )
+				break;
+		}
+	}
+	return err;
+}
+
+/* unbinds all listeners of all registered protocols. They are also closed.
+ * This must be performed before calling exit() in order to get a chance to
+ * remove file-system based sockets and pipes.
+ * Returns a composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL, ERR_ABORT.
+ */
+int protocol_unbind_all(void)
+{
+	struct protocol *proto;
+	int err;
+
+	err = 0;
+	list_for_each_entry(proto, &protocols, list) {
+		if (proto->unbind_all) {
+			err |= proto->unbind_all(proto);
+		}
+	}
+	return err;
+}
+
+/* enables all listeners of all registered protocols. This is intended to be
+ * used after a fork() to enable reading on all file descriptors. Returns a
+ * composition of ERR_NONE, ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_enable_all(void)
+{
+	struct protocol *proto;
+	int err;
+
+	err = 0;
+	list_for_each_entry(proto, &protocols, list) {
+		if (proto->enable_all) {
+			err |= proto->enable_all(proto);
+		}
+	}
+	return err;
+}
+
+/* disables all listeners of all registered protocols. This may be used before
+ * a fork() to avoid duplicating poll lists. Returns a composition of ERR_NONE,
+ * ERR_RETRYABLE, ERR_FATAL.
+ */
+int protocol_disable_all(void)
+{
+	struct protocol *proto;
+	int err;
+
+	err = 0;
+	list_for_each_entry(proto, &protocols, list) {
+		if (proto->disable_all) {
+			err |= proto->disable_all(proto);
+		}
+	}
+	return err;
+}
+
+/* Returns the protocol handler for socket family <family> or NULL if not found */
+struct protocol *protocol_by_family(int family)
+{
+	struct protocol *proto;
+
+	list_for_each_entry(proto, &protocols, list) {
+		if (proto->sock_domain == family)
+			return proto;
+	}
+	return NULL;
+}
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/src/proxy.c b/src/proxy.c
index 07e863c..56d343e 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -31,8 +31,8 @@
 #include <proto/backend.h>
 #include <proto/fd.h>
 #include <proto/hdr_idx.h>
+#include <proto/listener.h>
 #include <proto/log.h>
-#include <proto/protocols.h>
 #include <proto/proto_tcp.h>
 #include <proto/proto_http.h>
 #include <proto/proxy.h>
diff --git a/src/raw_sock.c b/src/raw_sock.c
index ea2fa66..37bea72 100644
--- a/src/raw_sock.c
+++ b/src/raw_sock.c
@@ -35,7 +35,6 @@
 #include <proto/freq_ctr.h>
 #include <proto/log.h>
 #include <proto/pipe.h>
-#include <proto/protocols.h>
 #include <proto/raw_sock.h>
 #include <proto/stream_interface.h>
 #include <proto/task.h>
diff --git a/src/session.c b/src/session.c
index 4503b41..6fb79e3 100644
--- a/src/session.c
+++ b/src/session.c
@@ -32,11 +32,11 @@
 #include <proto/freq_ctr.h>
 #include <proto/frontend.h>
 #include <proto/hdr_idx.h>
+#include <proto/listener.h>
 #include <proto/log.h>
 #include <proto/raw_sock.h>
 #include <proto/session.h>
 #include <proto/pipe.h>
-#include <proto/protocols.h>
 #include <proto/proto_http.h>
 #include <proto/proto_tcp.h>
 #include <proto/proxy.h>
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 4198339..5f259f3 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -64,7 +64,6 @@
 #include <proto/freq_ctr.h>
 #include <proto/frontend.h>
 #include <proto/log.h>
-#include <proto/protocols.h>
 #include <proto/shctx.h>
 #include <proto/ssl_sock.h>
 #include <proto/task.h>
