MEDIUM: counters: add support for tracking a third counter

We're often missin a third counter to track base, src and base+src at
the same time. Here we introduce track_sc3 to have this third counter.
It would be wise not to add much more counters because that slightly
increases the session size and processing time though the real issue
is more the declaration of the keywords in the code and in the doc.
diff --git a/include/types/proto_tcp.h b/include/types/proto_tcp.h
index 74863b4..ac9d328 100644
--- a/include/types/proto_tcp.h
+++ b/include/types/proto_tcp.h
@@ -34,6 +34,7 @@
 	TCP_ACT_REJECT = 2,
 	TCP_ACT_TRK_SC1 = 3, /* TCP request tracking : must be contiguous */
 	TCP_ACT_TRK_SC2 = 4,
+	TCP_ACT_TRK_SC3 = 5,
 };
 
 struct tcp_rule {
diff --git a/include/types/session.h b/include/types/session.h
index b5c7460..8fbca53 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -89,10 +89,11 @@
 
 #define SN_COMP_READY   0x00100000	/* the compression is initialized */
 
-/* session tracking flags: these ones must absolutely be contiguous */
+/* session tracking flags: these ones must absolutely be contiguous. See also s->stkctr */
 #define SN_BE_TRACK_SC1 0x00200000	/* backend tracks stick-counter 1 */
 #define SN_BE_TRACK_SC2 0x00400000	/* backend tracks stick-counter 2 */
-#define SN_BE_TRACK_ANY 0x00600000      /* union of all SN_BE_TRACK_* above */
+#define SN_BE_TRACK_SC3 0x00800000	/* backend tracks stick-counter 3 */
+#define SN_BE_TRACK_ANY 0x00E00000      /* union of all SN_BE_TRACK_* above */
 
 
 /* WARNING: if new fields are added, they must be initialized in event_accept()
@@ -144,7 +145,7 @@
 	} store[8];				/* tracked stickiness values to store */
 	int store_count;
 
-	struct stkctr stkctr[2];                /* stick counters */
+	struct stkctr stkctr[3];                /* stick counters */
 
 	struct stream_interface si[2];          /* client and server stream interfaces */
 	struct {