"Fossies" - the Fresh Open Source Software Archive

Member "haproxy-2.0.0/include/proto/action.h" (16 Jun 2019, 2641 Bytes) of package /linux/misc/haproxy-2.0.0.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "action.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 1.9.8_vs_2.0.0.

    1 /*
    2  * include/proto/action.h
    3  * This file contains actions prototypes.
    4  *
    5  * Copyright (C) 2000-2010 Willy Tarreau - w@1wt.eu
    6  *
    7  * This library is free software; you can redistribute it and/or
    8  * modify it under the terms of the GNU Lesser General Public
    9  * License as published by the Free Software Foundation, version 2.1
   10  * exclusively.
   11  *
   12  * This library is distributed in the hope that it will be useful,
   13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   15  * Lesser General Public License for more details.
   16  *
   17  * You should have received a copy of the GNU Lesser General Public
   18  * License along with this library; if not, write to the Free Software
   19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
   20  */
   21 
   22 #ifndef _PROTO_ACTION_H
   23 #define _PROTO_ACTION_H
   24 
   25 #include <types/action.h>
   26 
   27 int act_resolution_cb(struct dns_requester *requester, struct dns_nameserver *nameserver);
   28 int act_resolution_error_cb(struct dns_requester *requester, int error_code);
   29 
   30 static inline struct action_kw *action_lookup(struct list *keywords, const char *kw)
   31 {
   32     struct action_kw_list *kw_list;
   33     int i;
   34 
   35     if (LIST_ISEMPTY(keywords))
   36         return NULL;
   37 
   38     list_for_each_entry(kw_list, keywords, list) {
   39         for (i = 0; kw_list->kw[i].kw != NULL; i++) {
   40             if (kw_list->kw[i].match_pfx &&
   41                 strncmp(kw, kw_list->kw[i].kw, strlen(kw_list->kw[i].kw)) == 0)
   42                 return &kw_list->kw[i];
   43             if (!strcmp(kw, kw_list->kw[i].kw))
   44                 return &kw_list->kw[i];
   45         }
   46     }
   47     return NULL;
   48 }
   49 
   50 static inline void action_build_list(struct list *keywords,
   51                      struct buffer *chk)
   52 {
   53     struct action_kw_list *kw_list;
   54     int i;
   55     char *p;
   56     char *end;
   57     int l;
   58 
   59     p = chk->area;
   60     end = p + chk->size - 1;
   61     list_for_each_entry(kw_list, keywords, list) {
   62         for (i = 0; kw_list->kw[i].kw != NULL; i++) {
   63             l = snprintf(p, end - p, "'%s%s', ", kw_list->kw[i].kw, kw_list->kw[i].match_pfx ? "(*)" : "");
   64             if (l > end - p)
   65                 continue;
   66             p += l;
   67         }
   68     }
   69     if (p > chk->area)
   70         *(p-2) = '\0';
   71     else
   72         *p = '\0';
   73 }
   74 
   75 /* for an action ACT_ACTION_TRK_SC*, return a tracking index starting at zero
   76  * for SC0. Unknown actions also return zero.
   77  */
   78 static inline int trk_idx(int trk_action)
   79 {
   80     return trk_action - ACT_ACTION_TRK_SC0;
   81 }
   82 
   83 /* Find and check the target table used by an action ACT_ACTION_TRK_*. This
   84  * function should be called during the configuration validity check.
   85  *
   86  * The function returns 1 in success case, otherwise, it returns 0 and err is
   87  * filled.
   88  */
   89 int check_trk_action(struct act_rule *rule, struct proxy *px, char **err);
   90 
   91 #endif /* _PROTO_ACTION_H */