REORG/MINOR: connection: move declaration to its own include file

This way we don't depend on stream_interface anymore.
diff --git a/include/types/connection.h b/include/types/connection.h
new file mode 100644
index 0000000..7c88ed7
--- /dev/null
+++ b/include/types/connection.h
@@ -0,0 +1,62 @@
+/*
+ * include/types/connection.h
+ * This file describes the connection struct and associated constants.
+ *
+ * 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_CONNECTION_H
+#define _TYPES_CONNECTION_H
+
+#include <stdlib.h>
+#include <sys/socket.h>
+
+#include <common/config.h>
+
+/* referenced below */
+struct sock_ops;
+struct protocol;
+
+/* This structure describes a connection with its methods and data.
+ * A connection may be performed to proxy or server via a local or remote
+ * socket, and can also be made to an internal applet. It can support
+ * several data schemes (applet, raw, ssl, ...). It can support several
+ * connection control schemes, generally a protocol for socket-oriented
+ * connections, but other methods for applets.
+ */
+struct connection {
+	const struct sock_ops *data;  /* operations at the data layer */
+	const struct protocol *ctrl;  /* operations at the control layer, generally a protocol */
+	union {                       /* definitions which depend on connection type */
+		struct {              /*** information used by socket-based connections ***/
+			int fd;       /* file descriptor for a stream driver when known */
+		} sock;
+	} t;
+	int data_st;                  /* data layer state, initialized to zero */
+	void *data_ctx;               /* general purpose pointer, initialized to NULL */
+	struct sockaddr *peeraddr;    /* pointer to peer's network address, or NULL if unset */
+	socklen_t peerlen;            /* peer's address length, or 0 if unset */
+};
+
+#endif /* _TYPES_CONNECTION_H */
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index 311cf0e..88b55ab 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -26,6 +26,7 @@
 #include <sys/socket.h>
 
 #include <types/buffers.h>
+#include <types/connection.h>
 #include <common/config.h>
 
 /* A stream interface must have its own errors independently of the buffer's,
@@ -95,27 +96,6 @@
 struct si_applet;
 struct stream_interface;
 
-/* This structure describes a connection with its methods and data.
- * A connection may be performed to proxy or server via a local or remote
- * socket, and can also be made to an internal applet. It can support
- * several data schemes (applet, raw, ssl, ...). It can support several
- * connection control schemes, generally a protocol for socket-oriented
- * connections, but other methods for applets.
- */
-struct connection {
-	const struct sock_ops *data;  /* operations at the data layer */
-	const struct protocol *ctrl;  /* operations at the control layer, generally a protocol */
-	union {                       /* definitions which depend on connection type */
-		struct {              /*** information used by socket-based connections ***/
-			int fd;       /* file descriptor for a stream driver when known */
-		} sock;
-	} t;
-	int data_st;                  /* data layer state, initialized to zero */
-	void *data_ctx;               /* general purpose pointer, initialized to NULL */
-	struct sockaddr *peeraddr;    /* pointer to peer's network address, or NULL if unset */
-	socklen_t peerlen;            /* peer's address length, or 0 if unset */
-};
-
 struct target {
 	int type;
 	union {