static TfwConnection * tfw_sched_http_sched_grp(TfwMsg *msg) { TfwSrvGroup *sg; TfwConnection *conn; TfwSchedHttpRule *rule; if(!tfw_sched_http_rules || list_empty(&tfw_sched_http_rules->list)) return NULL; rule = tfw_http_match_req_entry((TfwHttpReq *)msg, tfw_sched_http_rules, TfwSchedHttpRule, rule); if (unlikely(!rule)) { DBG("No matching rule found.\n"); return NULL; } sg = rule->main_sg; BUG_ON(!sg); DBG("use server group: '%s'\n", sg->name); conn = sg->sched->sched_srv(msg, sg); if (unlikely(!conn && rule->backup_sg)) { sg = rule->backup_sg; DBG("the main group is offline, use backup: '%s'\n", sg->name); conn = sg->sched->sched_srv(msg, sg); } if (unlikely(!conn)) ERR("Unable to select server from group '%s'\n", sg->name); return conn; }
int test_mlst_match(void) { MatchEntry *e; e = tfw_http_match_req_entry(test_req, test_mlst, MatchEntry, rule); if (e) return e->test_id; return -1; }