MINOR: connection: add a field to store an object type

This will soon be used to differenciate connections from applet
contexts. Object type "connection" has also been added.
diff --git a/include/proto/obj_type.h b/include/proto/obj_type.h
index 09a5ee4..8b180f2 100644
--- a/include/proto/obj_type.h
+++ b/include/proto/obj_type.h
@@ -24,6 +24,7 @@
 
 #include <common/config.h>
 #include <common/memory.h>
+#include <types/connection.h>
 #include <types/listener.h>
 #include <types/obj_type.h>
 #include <types/proxy.h>
@@ -44,6 +45,7 @@
 	case OBJ_TYPE_PROXY:    return "PROXY";
 	case OBJ_TYPE_SERVER:   return "SERVER";
 	case OBJ_TYPE_APPLET:   return "APPLET";
+	case OBJ_TYPE_CONN:     return "CONN";
 	default:                return "NONE";
 	}
 }
@@ -103,6 +105,18 @@
 	return __objt_applet(t);
 }
 
+static inline struct connection *__objt_conn(enum obj_type *t)
+{
+	return container_of(t, struct connection, obj_type);
+}
+
+static inline struct connection *objt_conn(enum obj_type *t)
+{
+	if (!t || *t != OBJ_TYPE_CONN)
+		return NULL;
+	return __objt_conn(t);
+}
+
 static inline void *obj_base_ptr(enum obj_type *t)
 {
 	switch (obj_type(t)) {
@@ -110,6 +124,7 @@
 	case OBJ_TYPE_PROXY:    return __objt_proxy(t);
 	case OBJ_TYPE_SERVER:   return __objt_server(t);
 	case OBJ_TYPE_APPLET:   return __objt_applet(t);
+	case OBJ_TYPE_CONN:     return __objt_conn(t);
 	default:                return NULL;
 	}
 }
diff --git a/include/types/connection.h b/include/types/connection.h
index 2c7acd1..3dfd73e 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -230,11 +230,12 @@
 /* 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 transport schemes (applet, raw, ssl, ...). It can support several
+ * several transport schemes (raw, ssl, ...). It can support several
  * connection control schemes, generally a protocol for socket-oriented
  * connections, but other methods for applets.
  */
 struct connection {
+	enum obj_type obj_type;       /* differentiates connection from applet context */
 	const struct protocol *ctrl;  /* operations at the socket layer */
 	const struct xprt_ops *xprt;  /* operations at the transport layer */
 	const struct data_cb  *data;  /* data layer callbacks */
diff --git a/include/types/obj_type.h b/include/types/obj_type.h
index b27f375..88d8973 100644
--- a/include/types/obj_type.h
+++ b/include/types/obj_type.h
@@ -37,6 +37,7 @@
 	OBJ_TYPE_PROXY,        /* object is a struct proxy */
 	OBJ_TYPE_SERVER,       /* object is a struct server */
 	OBJ_TYPE_APPLET,       /* object is a struct si_applet */
+	OBJ_TYPE_CONN,         /* object is a struct connection */
 	OBJ_TYPE_ENTRIES       /* last one : number of entries */
 };