MEDIUM: protocol: add a pointer to struct sock_ops to the listener struct

The listener struct is now aware of the socket layer to use upon accept().
At the moment, only sock_raw is supported so this patch should not change
anything.
diff --git a/include/types/protocols.h b/include/types/protocols.h
index bda4922..ac52a53 100644
--- a/include/types/protocols.h
+++ b/include/types/protocols.h
@@ -102,6 +102,7 @@
 	int options;			/* socket options : LI_O_* */
 	struct licounters *counters;	/* statistics counters */
 	struct protocol *proto;		/* protocol this listener belongs to */
+	struct sock_ops *sock;          /* listener socket operations */
 	int nbconn;			/* current number of connections on this listener */
 	int maxconn;			/* maximum connections allowed on this listener */
 	unsigned int backlog;		/* if set, listen backlog */
diff --git a/src/cfgparse.c b/src/cfgparse.c
index b3ae050..5bd2cfc 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -265,6 +265,7 @@
 
 			l->fd = -1;
 			l->addr = ss;
+			l->sock = &sock_raw;
 			l->state = LI_INIT;
 
 			if (ss.ss_family == AF_INET) {
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 6b4c84e..14d50e1 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -276,6 +276,7 @@
 			}
 		}
 
+		global.stats_sock.sock = &sock_raw;
 		uxst_add_listener(&global.stats_sock);
 		global.maxsock++;
 	}
diff --git a/src/session.c b/src/session.c
index fcd113e..353fa66 100644
--- a/src/session.c
+++ b/src/session.c
@@ -180,7 +180,7 @@
 		s->si[0].flags = SI_FL_CAP_SPLTCP; /* TCP/TCPv6 splicing possible */
 
 	/* add the various callbacks */
-	stream_interface_prepare(&s->si[0], &sock_raw);
+	stream_interface_prepare(&s->si[0], l->sock);
 
 	/* pre-initialize the other side's stream interface to an INIT state. The
 	 * callbacks will be initialized before attempting to connect.