]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: stick-table: Add "server_name" new data type.
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 17 May 2019 08:08:29 +0000 (10:08 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 5 Jun 2019 06:33:35 +0000 (08:33 +0200)
This simple patch only adds definitions to create a new stick-table
data type ID and a new standard type to store information in relation
wich dictionary entries (STD_T_DICT).

include/proto/stick_table.h
include/types/stick_table.h
src/stick_table.c

index a1dd06a1bd3f9fdd3ae554835346758a2784a556..2243d3d1bd4d6e95d3ff637fe5a79916a7d64c4e 100644 (file)
@@ -27,6 +27,7 @@
 #include <common/ticks.h>
 #include <common/time.h>
 #include <types/stick_table.h>
+#include <types/dict.h>
 
 extern struct stktable *stktables_list;
 
@@ -75,6 +76,8 @@ static inline int stktable_type_size(int type)
                return sizeof(unsigned long long);
        case STD_T_FRQP:
                return sizeof(struct freq_ctr_period);
+       case STD_T_DICT:
+               return sizeof(struct dict_entry *);
        }
        return 0;
 }
index 384a0a853aa3fee264aad04fa8083ef51d567b29..5e15aaaa47802b9231ea583b2c3f197d173a3acf 100644 (file)
@@ -30,6 +30,7 @@
 #include <ebmbtree.h>
 #include <eb32tree.h>
 #include <common/memory.h>
+#include <types/dict.h>
 #include <types/freq_ctr.h>
 #include <types/peers.h>
 #include <types/sample.h>
@@ -55,6 +56,7 @@ enum {
        STKTABLE_DT_BYTES_OUT_RATE,/* bytes rate from servers to client */
        STKTABLE_DT_GPC1,         /* General Purpose Counter 1 (unsigned 32-bit integer) */
        STKTABLE_DT_GPC1_RATE,    /* General Purpose Counter 1's event rate */
+       STKTABLE_DT_SERVER_NAME,  /* The server name */
        STKTABLE_STATIC_DATA_TYPES,/* number of types above */
        /* up to STKTABLE_EXTRA_DATA_TYPES types may be registered here, always
         * followed by the number of data types, must always be last.
@@ -68,6 +70,7 @@ enum {
        STD_T_UINT,               /* data is of type unsigned int */
        STD_T_ULL,                /* data is of type unsigned long long */
        STD_T_FRQP,               /* data is of type freq_ctr_period */
+       STD_T_DICT,               /* data is of type key of dictionary entry */
 };
 
 /* The types of optional arguments to stored data */
@@ -84,9 +87,11 @@ union stktable_data {
        unsigned int std_t_uint;
        unsigned long long std_t_ull;
        struct freq_ctr_period std_t_frqp;
+       struct dict_entry *std_t_dict;
 
        /* types of each storable data */
        int server_id;
+       struct dict_entry *server_name;
        unsigned int gpt0;
        unsigned int gpc0;
        struct freq_ctr_period gpc0_rate;
index 1263ca4c4b897cb23a9ea97bd10ec6bb3617345c..4901edf2a2fbd2d6063e6ced0f893c19edcabb9b 100644 (file)
@@ -1036,6 +1036,7 @@ struct stktable_data_type stktable_data_types[STKTABLE_DATA_TYPES] = {
        [STKTABLE_DT_BYTES_OUT_RATE]= { .name = "bytes_out_rate", .std_type = STD_T_FRQP, .arg_type = ARG_T_DELAY },
        [STKTABLE_DT_GPC1]          = { .name = "gpc1",           .std_type = STD_T_UINT  },
        [STKTABLE_DT_GPC1_RATE]     = { .name = "gpc1_rate",      .std_type = STD_T_FRQP, .arg_type = ARG_T_DELAY  },
+       [STKTABLE_DT_SERVER_NAME]   = { .name = "server_name",    .std_type = STD_T_DICT  },
 };
 
 /* Registers stick-table extra data type with index <idx>, name <name>, type