Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00030 #ifndef CR_RULE_H
00031 #define CR_RULE_H
00032
00033 #include "../../str.h"
00034 #include "../../flags.h"
00035
00036
00038 struct route_rule_p_list;
00039
00044 struct route_rule {
00045 int dice_to;
00046 double prob;
00047 double orig_prob;
00048 str host;
00049 int strip;
00050 str local_prefix;
00051 str local_suffix;
00052 str comment;
00053 str prefix;
00054 int status;
00055 struct route_rule_p_list * backed_up;
00056 struct route_rule_p_list * backup;
00057 int hash_index;
00058 struct route_rule * next;
00059 };
00060
00064 struct route_rule_p_list {
00065 struct route_rule * rr;
00066 int hash_index;
00067 struct route_rule_p_list * next;
00068 };
00069
00073 struct route_flags {
00074 flag_t flags;
00075 flag_t mask;
00076 struct route_rule * rule_list;
00077 struct route_rule ** rules;
00078 int rule_num;
00079 int dice_max;
00080 int max_targets;
00081 struct route_flags * next;
00082 };
00083
00088 struct failure_route_rule {
00089 str host;
00090 str comment;
00091 str prefix;
00092 str reply_code;
00093 int next_domain;
00094 flag_t flags;
00095 flag_t mask;
00096 struct failure_route_rule * next;
00097 };
00098
00099
00124 int add_route_rule(struct route_flags *rf, const str * prefix,
00125 int max_targets, double prob, const str * rewrite_hostpart, int strip,
00126 const str * rewrite_local_prefix, const str * rewrite_local_suffix,
00127 int status, int hash_index, int backup, int * backed_up,
00128 const str * comment);
00129
00130
00136 void destroy_route_rule(struct route_rule * rr);
00137
00138
00149 struct route_flags * add_route_flags(struct route_flags **rf_head, const flag_t flags, const flag_t mask);
00150
00151
00157 void destroy_route_flags(struct route_flags *rf);
00158
00159
00177 struct failure_route_rule *add_failure_route_rule(struct failure_route_rule **frr_head,
00178 const str * prefix, const str * host, const str * reply_code,
00179 flag_t flags, flag_t mask, const int next_domain, const str * comment);
00180
00181
00187 void destroy_failure_route_rule(struct failure_route_rule * frr);
00188
00189 struct route_rule * find_rule_by_hash(struct route_flags * rf, int hash);
00190
00191 struct route_rule * find_rule_by_host(struct route_flags * rf, str * host);
00192
00193 int add_backup_rule(struct route_rule * rule, struct route_rule * backup);
00194
00195 int remove_backed_up(struct route_rule * rule);
00196
00197 struct route_rule * find_auto_backup(struct route_flags * rf, struct route_rule * rule);
00198
00199 #endif