diff --git a/include/proto/vars.h b/include/proto/vars.h
index dadbf3b..e1092c7 100644
--- a/include/proto/vars.h
+++ b/include/proto/vars.h
@@ -5,6 +5,8 @@
 
 void vars_init(struct vars *vars, enum vars_scope scope);
 void vars_prune(struct vars *vars, struct stream *strm);
+int vars_get_by_name(const char *name, size_t len, struct stream *strm, struct sample *smp);
+void vars_set_by_name(const char *name, size_t len, struct stream *strm, struct sample *smp);
 int vars_check_arg(struct arg *arg, char **err);
 
 #endif
diff --git a/src/vars.c b/src/vars.c
index 74033a5..cf3275c 100644
--- a/src/vars.c
+++ b/src/vars.c
@@ -360,6 +360,60 @@
 	return 1;
 }
 
+/* This function store a sample in a variable.
+ * In error case, it fails silently.
+ */
+void vars_set_by_name(const char *name, size_t len, struct stream *strm, struct sample *smp)
+{
+	enum vars_scope scope;
+
+	/* Resolve name and scope. */
+	name = register_name(name, len, &scope, NULL);
+	if (!name)
+		return;
+
+	sample_store_stream(name, scope, strm, smp);
+}
+
+/* this function fills a sample with the
+ * variable content. Returns 1 if the sample
+ * is filled, otherwise it returns 0.
+ */
+int vars_get_by_name(const char *name, size_t len, struct stream *strm, struct sample *smp)
+{
+	struct vars *vars;
+	struct var *var;
+	enum vars_scope scope;
+
+	/* Resolve name and scope. */
+	name = register_name(name, len, &scope, NULL);
+	if (!name)
+		return 0;
+
+	/* Select "vars" pool according with the scope. */
+	switch (scope) {
+	case SCOPE_SESS: vars = &strm->vars_sess;   break;
+	case SCOPE_TXN:  vars = &strm->vars_txn;    break;
+	case SCOPE_REQ:
+	case SCOPE_RES:  vars = &strm->vars_reqres; break;
+	}
+
+	/* Check if the scope is avalaible a this point of processing. */
+	if (vars->scope != scope)
+		return 0;
+
+	/* Get the variable entry. */
+	var = var_get(vars, name);
+	if (!var)
+		return 0;
+
+	/* Copy sample. */
+	smp->type = var->data.type;
+	smp->flags = SMP_F_CONST;
+	memcpy(&smp->data, &var->data.data, sizeof(smp->data));
+	return 1;
+}
+
 /* Returns 0 if miss data, else returns 1. */
 static inline int action_store(struct sample_expr *expr, const char *name,
                                enum vars_scope scope, struct proxy *px,
