ACT_RET_PRS_ERR, /* abort processing. */
};
+/* flags passed to custom actions */
+enum act_flag {
+ ACT_FLAG_NONE = 0x00000000, /* no flag */
+};
+
enum act_name {
ACT_CUSTOM = 0,
enum act_name action; /* ACT_ACTION_* */
enum act_from from; /* ACT_F_* */
short deny_status; /* HTTP status to return to user when denying */
- enum act_return (*action_ptr)(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s); /* ptr to custom action */
+ enum act_return (*action_ptr)(struct act_rule *rule, struct proxy *px, /* ptr to custom action */
+ struct session *sess, struct stream *s, int flags);
struct action_kw *kw;
union {
struct {
* because the LUA returns a yield.
*/
static enum act_return hlua_action(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
char **arg;
unsigned int analyzer;
}
case ACT_CUSTOM:
- switch (rule->action_ptr(rule, px, s->sess, s)) {
+ switch (rule->action_ptr(rule, px, s->sess, s, 0)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
break;
return HTTP_RULE_RES_DONE;
case ACT_CUSTOM:
- switch (rule->action_ptr(rule, px, s->sess, s)) {
+ switch (rule->action_ptr(rule, px, s->sess, s, 0)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
break;
* occurs the action is canceled, but the rule processing continue.
*/
enum act_return http_action_set_req_line(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
chunk_reset(&trash);
/* This function is just a compliant action wrapper for "set-status". */
enum act_return action_http_set_status(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
http_set_status(rule->arg.status.code, s);
return ACT_RET_CONT;
* processing continues.
*/
enum act_return http_action_req_capture(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
struct sample *key;
struct cap_hdr *h = rule->arg.cap.hdr;
* error occurs the action is cancelled, but the rule processing continues.
*/
enum act_return http_action_req_capture_by_id(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
struct sample *key;
struct cap_hdr *h;
* error occurs the action is cancelled, but the rule processing continues.
*/
enum act_return http_action_res_capture_by_id(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
struct sample *key;
struct cap_hdr *h;
/* Custom keywords. */
if (!rule->action_ptr)
continue;
- switch (rule->action_ptr(rule, s->be, s->sess, s)) {
+ switch (rule->action_ptr(rule, s->be, s->sess, s, 0)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
continue;
/* Custom keywords. */
if (!rule->action_ptr)
continue;
- switch (rule->action_ptr(rule, s->be, s->sess, s)) {
+ switch (rule->action_ptr(rule, s->be, s->sess, s, 0)) {
case ACT_RET_ERR:
case ACT_RET_CONT:
continue;
/* Custom keywords. */
if (rule->action_ptr)
break;
- switch (rule->action_ptr(rule, sess->fe, sess, NULL)) {
+ switch (rule->action_ptr(rule, sess->fe, sess, NULL, 0)) {
case ACT_RET_YIELD:
/* yield is not allowed at this point. If this return code is
* used it is a bug, so I prefer to abort the process.
/* Always returns 1. */
static enum act_return action_inc_gpc0(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
void *ptr;
struct stksess *ts;
/* Always returns 1. */
static enum act_return action_set_gpt0(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
void *ptr;
struct stksess *ts;
/* Always returns ACT_RET_CONT even if an error occurs. */
static enum act_return action_store(struct act_rule *rule, struct proxy *px,
- struct session *sess, struct stream *s)
+ struct session *sess, struct stream *s, int flags)
{
struct sample smp;
int dir;