MEDIUM: acl: use temp_pattern to store any integer-type information

All ACL fetches which return integer value now store the result into
the temporary pattern struct. All ACL matches which rely on integer
also get their value there.

Note: the pattern data types are not set right now.
diff --git a/src/backend.c b/src/backend.c
index 6a12cf4..0f3bccd 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1340,7 +1340,7 @@
 /*             All supported keywords must be declared here.            */
 /************************************************************************/
 
-/* set test->i to the number of enabled servers on the proxy */
+/* set temp integer to the number of enabled servers on the proxy */
 static int
 acl_fetch_nbsrv(struct proxy *px, struct session *l4, void *l7, int dir,
                 struct acl_expr *expr, struct acl_test *test)
@@ -1356,11 +1356,11 @@
 		return 0;
 
 	if (px->srv_act)
-		test->i = px->srv_act;
+		temp_pattern.data.integer = px->srv_act;
 	else if (px->lbprm.fbck)
-		test->i = 1;
+		temp_pattern.data.integer = 1;
 	else
-		test->i = px->srv_bck;
+		temp_pattern.data.integer = px->srv_bck;
 
 	return 1;
 }
@@ -1383,7 +1383,7 @@
 	return 1;
 }
 
-/* set test->i to the number of enabled servers on the proxy */
+/* set temp integer to the number of enabled servers on the proxy */
 static int
 acl_fetch_connslots(struct proxy *px, struct session *l4, void *l7, int dir,
 		    struct acl_expr *expr, struct acl_test *test)
@@ -1399,7 +1399,7 @@
 	if (!px)
 		return 0;
 
-	test->i = 0;
+	temp_pattern.data.integer = 0;
 	iterator = px->srv;
 	while (iterator) {
 		if ((iterator->state & SRV_RUNNING) == 0) {
@@ -1407,31 +1407,31 @@
 			continue;
 		}
 		if (iterator->maxconn == 0 || iterator->maxqueue == 0) {
-			test->i = -1;
+			/* configuration is stupid */
+			temp_pattern.data.integer = -1;
 			return 1;
 		}
 
-		test->i += (iterator->maxconn - iterator->cur_sess)
-			+  (iterator->maxqueue - iterator->nbpend);
+		temp_pattern.data.integer += (iterator->maxconn - iterator->cur_sess)
+		                          +  (iterator->maxqueue - iterator->nbpend);
 		iterator = iterator->next;
 	}
 
 	return 1;
 }
 
-/* set test->i to the id of the backend */
+/* set temp integer to the id of the backend */
 static int
 acl_fetch_be_id(struct proxy *px, struct session *l4, void *l7, int dir,
                 struct acl_expr *expr, struct acl_test *test) {
 
 	test->flags = ACL_TEST_F_READ_ONLY;
-
-	test->i = l4->be->uuid;
+	temp_pattern.data.integer = l4->be->uuid;
 
 	return 1;
 }
 
-/* set test->i to the id of the server */
+/* set temp integer to the id of the server */
 static int
 acl_fetch_srv_id(struct proxy *px, struct session *l4, void *l7, int dir,
                 struct acl_expr *expr, struct acl_test *test) {
@@ -1440,13 +1440,12 @@
 		return 0;
 
 	test->flags = ACL_TEST_F_READ_ONLY;
-
-	test->i = target_srv(&l4->target)->puid;
+	temp_pattern.data.integer = target_srv(&l4->target)->puid;
 
 	return 1;
 }
 
-/* set test->i to the number of connections per second reaching the backend */
+/* set temp integer to the number of connections per second reaching the backend */
 static int
 acl_fetch_be_sess_rate(struct proxy *px, struct session *l4, void *l7, int dir,
                        struct acl_expr *expr, struct acl_test *test)
@@ -1461,11 +1460,11 @@
 	if (!px)
 		return 0;
 
-	test->i = read_freq_ctr(&px->be_sess_per_sec);
+	temp_pattern.data.integer = read_freq_ctr(&px->be_sess_per_sec);
 	return 1;
 }
 
-/* set test->i to the number of concurrent connections on the backend */
+/* set temp integer to the number of concurrent connections on the backend */
 static int
 acl_fetch_be_conn(struct proxy *px, struct session *l4, void *l7, int dir,
 		  struct acl_expr *expr, struct acl_test *test)
@@ -1480,11 +1479,11 @@
 	if (!px)
 		return 0;
 
-	test->i = px->beconn;
+	temp_pattern.data.integer = px->beconn;
 	return 1;
 }
 
-/* set test->i to the total number of queued connections on the backend */
+/* set temp integer to the total number of queued connections on the backend */
 static int
 acl_fetch_queue_size(struct proxy *px, struct session *l4, void *l7, int dir,
 		   struct acl_expr *expr, struct acl_test *test)
@@ -1499,11 +1498,11 @@
 	if (!px)
 		return 0;
 
-	test->i = px->totpend;
+	temp_pattern.data.integer = px->totpend;
 	return 1;
 }
 
-/* set test->i to the total number of queued connections on the backend divided
+/* set temp integer to the total number of queued connections on the backend divided
  * by the number of running servers and rounded up. If there is no running
  * server, we return twice the total, just as if we had half a running server.
  * This is more or less correct anyway, since we expect the last server to come
@@ -1533,21 +1532,21 @@
 		nbsrv = px->srv_bck;
 
 	if (nbsrv > 0)
-		test->i = (px->totpend + nbsrv - 1) / nbsrv;
+		temp_pattern.data.integer = (px->totpend + nbsrv - 1) / nbsrv;
 	else
-		test->i = px->totpend * 2;
+		temp_pattern.data.integer = px->totpend * 2;
 
 	return 1;
 }
 
-/* set test->i to the number of concurrent connections on the server in the backend */
+/* set temp integer to the number of concurrent connections on the server in the backend */
 static int
 acl_fetch_srv_conn(struct proxy *px, struct session *l4, void *l7, int dir,
 		  struct acl_expr *expr, struct acl_test *test)
 {
 	struct server *srv = expr->arg.srv;
 
-	test->i = srv->cur_sess;
+	temp_pattern.data.integer = srv->cur_sess;
 	return 1;
 }