MEDIUM: samples: Use the "struct sample_data" in the "struct sample"
This patch remove the struct information stored both in the struct
sample_data and in the striuct sample. Now, only thestruct sample_data
contains data, and the struct sample use the struct sample_data for storing
his own data.
diff --git a/src/stick_table.c b/src/stick_table.c
index 243066e..7559bc6 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -458,65 +458,65 @@
static void *k_int2int(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- kdata->integer = smp->data.sint;
+ kdata->integer = smp->data.data.sint;
return (void *)&kdata->integer;
}
static void *k_ip2ip(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (smp->type == SMP_T_IPV6) {
- v6tov4(&kdata->ip, &smp->data.ipv6);
+ if (smp->data.type == SMP_T_IPV6) {
+ v6tov4(&kdata->ip, &smp->data.data.ipv6);
return (void *)&kdata->ip.s_addr;
}
else {
- return (void *)&smp->data.ipv4.s_addr;
+ return (void *)&smp->data.data.ipv4.s_addr;
}
}
static void *k_ip2ipv6(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (smp->type == SMP_T_IPV6) {
- return (void *)&smp->data.ipv6.s6_addr;
+ if (smp->data.type == SMP_T_IPV6) {
+ return (void *)&smp->data.data.ipv6.s6_addr;
}
else {
- v4tov6(&kdata->ipv6, &smp->data.ipv4);
+ v4tov6(&kdata->ipv6, &smp->data.data.ipv4);
return (void *)&kdata->ipv6.s6_addr;
}
}
static void *k_ip2int(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (smp->type == SMP_T_IPV6) {
- if (!v6tov4(&kdata->ip, &smp->data.ipv6))
+ if (smp->data.type == SMP_T_IPV6) {
+ if (!v6tov4(&kdata->ip, &smp->data.data.ipv6))
return NULL;
kdata->integer = ntohl(kdata->ip.s_addr);
}
else {
- kdata->integer = ntohl(smp->data.ipv4.s_addr);
+ kdata->integer = ntohl(smp->data.data.ipv4.s_addr);
}
return (void *)&kdata->integer;
}
static void *k_int2ip(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- kdata->ip.s_addr = htonl((unsigned int)smp->data.sint);
+ kdata->ip.s_addr = htonl((unsigned int)smp->data.data.sint);
return (void *)&kdata->ip.s_addr;
}
static void *k_str2str(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- *len = smp->data.str.len;
- return (void *)smp->data.str.str;
+ *len = smp->data.data.str.len;
+ return (void *)smp->data.data.str.str;
}
static void *k_ip2str(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (smp->type == SMP_T_IPV6) {
- if (!inet_ntop(AF_INET6, &smp->data.ipv6, kdata->buf, *len))
+ if (smp->data.type == SMP_T_IPV6) {
+ if (!inet_ntop(AF_INET6, &smp->data.data.ipv6, kdata->buf, *len))
return NULL;
}
else {
- if (!inet_ntop(AF_INET, &smp->data.ipv4, kdata->buf, *len))
+ if (!inet_ntop(AF_INET, &smp->data.data.ipv4, kdata->buf, *len))
return NULL;
}
@@ -526,15 +526,15 @@
static void *k_ip2bin(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (smp->type == SMP_T_IPV4) {
+ if (smp->data.type == SMP_T_IPV4) {
if (*len > 4)
*len = 4;
- memcpy(kdata->buf, &smp->data.ipv4, *len);
+ memcpy(kdata->buf, &smp->data.data.ipv4, *len);
}
- else if (smp->type == SMP_T_IPV6) {
+ else if (smp->data.type == SMP_T_IPV6) {
if (*len > 16)
*len = 16;
- memcpy(kdata->buf, &smp->data.ipv6, *len);
+ memcpy(kdata->buf, &smp->data.data.ipv6, *len);
}
else
*len = 0;
@@ -548,8 +548,8 @@
int max = *len;
int size = 0;
- while (ptr < smp->data.str.len && size <= max - 2) {
- c = smp->data.str.str[ptr++];
+ while (ptr < smp->data.data.str.len && size <= max - 2) {
+ c = smp->data.data.str.str[ptr++];
kdata->buf[size++] = hextab[(c >> 4) & 0xF];
kdata->buf[size++] = hextab[c & 0xF];
}
@@ -561,7 +561,7 @@
{
void *key;
- key = (void *)lltoa_r(smp->data.sint, kdata->buf, *len);
+ key = (void *)lltoa_r(smp->data.data.sint, kdata->buf, *len);
if (!key)
return NULL;
@@ -571,7 +571,7 @@
static void *k_str2ip(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (!buf2ip(smp->data.str.str, smp->data.str.len, &kdata->ip))
+ if (!buf2ip(smp->data.data.str.str, smp->data.data.str.len, &kdata->ip))
return NULL;
return (void *)&kdata->ip.s_addr;
@@ -579,7 +579,7 @@
static void *k_str2ipv6(struct sample *smp, union stktable_key_data *kdata, size_t *len)
{
- if (!inet_pton(AF_INET6, smp->data.str.str, &kdata->ipv6))
+ if (!inet_pton(AF_INET6, smp->data.data.str.str, &kdata->ipv6))
return NULL;
return (void *)&kdata->ipv6.s6_addr;
@@ -590,8 +590,8 @@
int i;
kdata->integer = 0;
- for (i = 0; i < smp->data.str.len; i++) {
- uint32_t val = smp->data.str.str[i] - '0';
+ for (i = 0; i < smp->data.data.str.len; i++) {
+ uint32_t val = smp->data.data.str.str[i] - '0';
if (val > 9)
break;
@@ -628,11 +628,11 @@
*/
struct stktable_key *smp_to_stkey(struct sample *smp, struct stktable *t)
{
- if (!sample_to_key[smp->type][t->type])
+ if (!sample_to_key[smp->data.type][t->type])
return NULL;
static_table_key->key_len = t->key_size;
- static_table_key->key = sample_to_key[smp->type][t->type](smp, &static_table_key->data, &static_table_key->key_len);
+ static_table_key->key = sample_to_key[smp->data.type][t->type](smp, &static_table_key->data, &static_table_key->key_len);
if (!static_table_key->key)
return NULL;
@@ -643,7 +643,7 @@
if ((static_table_key->key_len < t->key_size) && (t->type != STKTABLE_TYPE_STRING)) {
/* need padding with null */
- /* assume static_table_key.key_len is less than sizeof(static_table_key.data.buf)
+ /* assume static_table_key.key_len is less than sizeof(static_table_key.data.data.buf)
cause t->key_size is necessary less than sizeof(static_table_key.data) */
if ((char *)static_table_key->key > (char *)&static_table_key->data &&
@@ -811,8 +811,8 @@
ts = stktable_lookup_key(t, key);
- smp->type = SMP_T_BOOL;
- smp->data.sint = !!ts;
+ smp->data.type = SMP_T_BOOL;
+ smp->data.data.sint = !!ts;
smp->flags = SMP_F_VOL_TEST;
return 1;
}
@@ -837,8 +837,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -848,7 +848,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, bytes_in_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, bytes_in_rate),
t->data_arg[STKTABLE_DT_BYTES_IN_RATE].u);
return 1;
}
@@ -873,8 +873,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -884,7 +884,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, conn_cnt);
+ smp->data.data.sint = stktable_data_cast(ptr, conn_cnt);
return 1;
}
@@ -908,8 +908,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -919,7 +919,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, conn_cur);
+ smp->data.data.sint = stktable_data_cast(ptr, conn_cur);
return 1;
}
@@ -943,8 +943,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -954,7 +954,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, conn_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, conn_rate),
t->data_arg[STKTABLE_DT_CONN_RATE].u);
return 1;
}
@@ -979,8 +979,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -990,7 +990,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, bytes_out_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, bytes_out_rate),
t->data_arg[STKTABLE_DT_BYTES_OUT_RATE].u);
return 1;
}
@@ -1015,8 +1015,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1026,7 +1026,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, gpc0);
+ smp->data.data.sint = stktable_data_cast(ptr, gpc0);
return 1;
}
@@ -1050,8 +1050,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1061,7 +1061,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, gpc0_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, gpc0_rate),
t->data_arg[STKTABLE_DT_GPC0_RATE].u);
return 1;
}
@@ -1086,8 +1086,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1097,7 +1097,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, http_err_cnt);
+ smp->data.data.sint = stktable_data_cast(ptr, http_err_cnt);
return 1;
}
@@ -1121,8 +1121,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1132,7 +1132,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, http_err_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, http_err_rate),
t->data_arg[STKTABLE_DT_HTTP_ERR_RATE].u);
return 1;
}
@@ -1157,8 +1157,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1168,7 +1168,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, http_req_cnt);
+ smp->data.data.sint = stktable_data_cast(ptr, http_req_cnt);
return 1;
}
@@ -1192,8 +1192,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1203,7 +1203,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, http_req_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, http_req_rate),
t->data_arg[STKTABLE_DT_HTTP_REQ_RATE].u);
return 1;
}
@@ -1228,8 +1228,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1239,7 +1239,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, bytes_in_cnt) >> 10;
+ smp->data.data.sint = stktable_data_cast(ptr, bytes_in_cnt) >> 10;
return 1;
}
@@ -1263,8 +1263,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1274,7 +1274,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, bytes_out_cnt) >> 10;
+ smp->data.data.sint = stktable_data_cast(ptr, bytes_out_cnt) >> 10;
return 1;
}
@@ -1298,8 +1298,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1309,7 +1309,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, server_id);
+ smp->data.data.sint = stktable_data_cast(ptr, server_id);
return 1;
}
@@ -1333,8 +1333,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1344,7 +1344,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = stktable_data_cast(ptr, sess_cnt);
+ smp->data.data.sint = stktable_data_cast(ptr, sess_cnt);
return 1;
}
@@ -1368,8 +1368,8 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (!ts) /* key not present */
@@ -1379,7 +1379,7 @@
if (!ptr)
return 0; /* parameter not stored */
- smp->data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, sess_rate),
+ smp->data.data.sint = read_freq_ctr_period(&stktable_data_cast(ptr, sess_rate),
t->data_arg[STKTABLE_DT_SESS_RATE].u);
return 1;
}
@@ -1403,12 +1403,12 @@
return 0;
smp->flags = SMP_F_VOL_TEST;
- smp->type = SMP_T_SINT;
- smp->data.sint = 0;
+ smp->data.type = SMP_T_SINT;
+ smp->data.data.sint = 0;
ts = stktable_lookup_key(t, key);
if (ts)
- smp->data.sint = ts->ref_cnt;
+ smp->data.data.sint = ts->ref_cnt;
return 1;
}