This a first step of sample reorganization.
#include <types/map.h>
/* maps output sample parser */
-int map_parse_ip(const char *text, struct sample_storage *smp);
-int map_parse_ip6(const char *text, struct sample_storage *smp);
-int map_parse_str(const char *text, struct sample_storage *smp);
-int map_parse_int(const char *text, struct sample_storage *smp);
+int map_parse_ip(const char *text, struct sample_data *smp);
+int map_parse_ip6(const char *text, struct sample_data *smp);
+int map_parse_str(const char *text, struct sample_data *smp);
+int map_parse_int(const char *text, struct sample_data *smp);
struct map_reference *map_get_reference(const char *reference);
struct pattern_expr *pattern_lookup_expr(struct pattern_head *head, struct pat_ref *ref);
struct pattern_expr *pattern_new_expr(struct pattern_head *head, struct pat_ref *ref,
char **err, int *reuse);
-struct sample_storage **pattern_find_smp(struct pattern_expr *expr, struct pat_ref_elt *elt);
+struct sample_data **pattern_find_smp(struct pattern_expr *expr, struct pat_ref_elt *elt);
int pattern_delete(struct pattern_expr *expr, struct pat_ref_elt *ref);
* "sample" with a tree entry. It is used with maps.
*/
struct pattern_tree {
- struct sample_storage *smp;
+ struct sample_data *smp;
struct pat_ref_elt *ref;
struct ebmb_node node;
};
} ptr; /* indirect values, allocated */
int len; /* data length when required */
int sflags; /* flags relative to the storage method. */
- struct sample_storage *smp; /* used to store a pointer to sample value associated
+ struct sample_data *smp; /* used to store a pointer to sample value associated
with the match. It is used with maps */
struct pat_ref_elt *ref;
};
/* This struct contain a list of pattern expr */
struct pattern_head {
int (*parse)(const char *text, struct pattern *pattern, int flags, char **err);
- int (*parse_smp)(const char *text, struct sample_storage *smp);
+ int (*parse_smp)(const char *text, struct sample_data *smp);
int (*index)(struct pattern_expr *, struct pattern *, char **);
void (*delete)(struct pattern_expr *, struct pat_ref_elt *);
void (*prune)(struct pattern_expr *);
};
/* Used to store sample constant */
-struct sample_storage {
+struct sample_data {
int type; /* SMP_T_* */
union {
long long int sint; /* used for signed 64bits integers */
struct var {
struct list l; /* Used for chaining vars. */
const char *name; /* Contains the variable name. */
- struct sample_storage data; /* data storage. */
+ struct sample_data data; /* data storage. */
};
#endif
/* Parse an IPv4 address and store it into the sample.
* The output type is IPV4.
*/
-int map_parse_ip(const char *text, struct sample_storage *smp)
+int map_parse_ip(const char *text, struct sample_data *smp)
{
if (!buf2ip(text, strlen(text), &smp->data.ipv4))
return 0;
/* Parse an IPv6 address and store it into the sample.
* The output type is IPV6.
*/
-int map_parse_ip6(const char *text, struct sample_storage *smp)
+int map_parse_ip6(const char *text, struct sample_data *smp)
{
if (!buf2ip6(text, strlen(text), &smp->data.ipv6))
return 0;
* overwritten because sample_conv_map() makes a const sample with this
* output.
*/
-int map_parse_str(const char *text, struct sample_storage *smp)
+int map_parse_str(const char *text, struct sample_data *smp)
{
smp->data.str.str = (char *)text;
smp->data.str.len = strlen(text);
* number is negative, or UINT if it is positive or null. The function returns
* zero (error) if the number is too large.
*/
-int map_parse_int(const char *text, struct sample_storage *smp)
+int map_parse_int(const char *text, struct sample_data *smp)
{
smp->type = SMP_T_SINT;
smp->data.sint = read_int64(&text, text + strlen(text));
const char *value, char **err)
{
struct pattern_expr *expr;
- struct sample_storage **smp;
+ struct sample_data **smp;
char *sample;
- struct sample_storage test;
+ struct sample_data test;
/* Try all needed converters. */
list_for_each_entry(expr, &ref->pat, list) {
int pat_ref_push(struct pat_ref_elt *elt, struct pattern_expr *expr,
int patflags, char **err)
{
- struct sample_storage *smp;
+ struct sample_data *smp;
struct pattern pattern;
/* Create sample */
* the function returns NULL. If the key cannot be parsed, the function
* fill <err>.
*/
-struct sample_storage **pattern_find_smp(struct pattern_expr *expr, struct pat_ref_elt *ref)
+struct sample_data **pattern_find_smp(struct pattern_expr *expr, struct pat_ref_elt *ref)
{
struct ebmb_node *node;
struct pattern_tree *elt;