Lines Matching defs:kv
44 char *, struct kv *);
46 const char *, struct kv *);
47 int relay_lookup_query(struct ctl_relay_event *, struct kv *);
49 struct kv *);
54 int relay_writeheader_kv(struct ctl_relay_event *, struct kv *);
192 struct kv *hdr = NULL;
193 struct kv *upgrade = NULL, *upgrade_ws = NULL;
194 struct kv *connection_close = NULL;
941 char *query, struct kv *kv)
956 switch (kv->kv_digest) {
959 if ((md = digeststr(kv->kv_digest,
973 str, kv->kv_key, strcasecmp(kv->kv_key, str));
975 if (strcasecmp(kv->kv_key, str) == 0) {
988 relay_lookup_url(struct ctl_relay_event *cre, const char *host, struct kv *kv)
1034 pp, desc->http_query, kv)) != RES_PASS)
1039 pp, NULL, kv)) != RES_PASS)
1051 pp, NULL, kv)) != RES_PASS)
1065 struct kv *kv)
1098 __func__, key, value, kv->kv_key, kv->kv_value,
1099 strcasecmp(kv->kv_key, key));
1101 if (strcasecmp(kv->kv_key, key) == 0 &&
1102 ((kv->kv_value == NULL) ||
1103 (fnmatch(kv->kv_value, value,
1118 relay_lookup_query(struct ctl_relay_event *cre, struct kv *kv)
1121 struct kv *match = &desc->http_matchquery;
1141 if (fnmatch(kv->kv_key, tmpkey, 0) != FNM_NOMATCH &&
1142 (kv->kv_value == NULL || fnmatch(kv->kv_value, tmpval, 0)
1303 struct kv *host, key;
1414 relay_writeheader_kv(struct ctl_relay_event *dst, struct kv *hdr)
1445 struct kv *hdr, *kv;
1451 TAILQ_FOREACH(kv, &hdr->kv_children, kv_entry) {
1452 if (relay_writeheader_kv(dst, kv) == -1)
1534 struct kv *match = &desc->http_matchquery;
1535 struct kv *kv = &rule->rule_kv[KEY_TYPE_QUERY];
1538 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_QUERY)
1540 else if (kv->kv_key == NULL)
1542 else if ((res = relay_lookup_query(cre, kv)) != 0)
1545 relay_match(actions, kv, match, NULL);
1555 struct kv *kv = &rule->rule_kv[KEY_TYPE_HEADER];
1556 struct kv *match;
1558 if (kv->kv_type != KEY_TYPE_HEADER)
1561 match = kv_find(&desc->http_headers, kv);
1563 if (kv->kv_option == KEY_OPTION_APPEND ||
1564 kv->kv_option == KEY_OPTION_SET) {
1570 if (fnmatch(kv->kv_key, match->kv_key,
1573 if (kv->kv_value != NULL &&
1575 fnmatch(kv->kv_value, match->kv_value, 0) == FNM_NOMATCH)
1579 relay_match(actions, kv, match, &desc->http_headers);
1589 struct kv *kv = &rule->rule_kv[KEY_TYPE_PATH];
1590 struct kv *match = &desc->http_pathquery;
1593 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_PATH)
1595 else if (kv->kv_option != KEY_OPTION_STRIP) {
1596 if (kv->kv_key == NULL)
1598 else if (fnmatch(kv->kv_key, desc->http_path, 0) == FNM_NOMATCH)
1600 else if (kv->kv_value != NULL && kv->kv_option == KEY_OPTION_NONE) {
1602 if (fnmatch(kv->kv_value, query, FNM_CASEFOLD) == FNM_NOMATCH)
1607 relay_match(actions, kv, match, NULL);
1617 struct kv *host, key;
1618 struct kv *kv = &rule->rule_kv[KEY_TYPE_URL];
1619 struct kv *match = &desc->http_pathquery;
1622 if (cre->dir == RELAY_DIR_RESPONSE || kv->kv_type != KEY_TYPE_URL ||
1623 kv->kv_key == NULL)
1632 kv->kv_option == KEY_OPTION_LOG &&
1633 fnmatch(kv->kv_key, match->kv_key, FNM_CASEFOLD) != FNM_NOMATCH) {
1635 } else if ((res = relay_lookup_url(cre, host->kv_value, kv)) != 0)
1637 relay_match(actions, kv, match, NULL);
1647 struct kv *kv = &rule->rule_kv[KEY_TYPE_COOKIE], key;
1648 struct kv *match = NULL;
1651 if (kv->kv_type != KEY_TYPE_COOKIE)
1667 if (kv->kv_option == KEY_OPTION_APPEND ||
1668 kv->kv_option == KEY_OPTION_SET) {
1674 if (kv->kv_key == NULL || match->kv_value == NULL)
1677 kv)) != 0)
1681 relay_match(actions, kv, match, &desc->http_headers);
1691 struct kv *kv;
1713 TAILQ_FOREACH(kv, matches, kv_match_entry) {
1714 TAILQ_INSERT_TAIL(actions, kv, kv_action_entry);
1727 struct kv *host = NULL;
1729 struct kv *kv, *match, *kp, *mp, kvcopy, matchcopy, key;
1740 TAILQ_FOREACH(kv, actions, kv_action_entry) {
1742 match = kv->kv_match;
1752 switch (kv->kv_option) {
1755 switch (kv->kv_type) {
1757 if (kv->kv_option == KEY_OPTION_APPEND) {
1759 match->kv_key, kv->kv_key) == -1)
1763 kv->kv_value) == -1)
1769 if (kv_inherit(kp, kv) == NULL)
1785 kv->kv_option == KEY_OPTION_SET) {
1787 kv->kv_value) == -1)
1798 switch (kv->kv_type) {
1805 if (kv->kv_matchtree != NULL)
1809 match = kv->kv_match = NULL;
1817 switch (kv->kv_type) {
1832 nstrip = strtonum(kv->kv_value, 0, INT_MAX, NULL);
1833 if (kv->kv_type == KEY_TYPE_PATH) {
1845 /* from now on, reads from kp writes to kv */
1847 kp = kv;
1848 if (addkv && kv->kv_matchtree != NULL) {
1850 if ((match = kv_add(kv->kv_matchtree, kp->kv_key,
1855 kv->kv_match = match;
1867 switch (kv->kv_option) {
1879 switch (kv->kv_type) {
1883 switch (kv->kv_digest) {
1894 if (kv_setkey(mp, "%s", kv->kv_key)
1911 /* actions applied, cleanup kv */
1912 kv->kv_match = NULL;
1913 kv->kv_matchtree = NULL;
1914 TAILQ_REMOVE(actions, kv, kv_match_entry);
1969 struct kv *kv;
2028 TAILQ_FOREACH(kv, &matches, kv_match_entry) {
2030 kv, kv_rule_entry);
2105 relay_match(struct kvlist *actions, struct kv *kv, struct kv *match,
2108 if (kv->kv_option != KEY_OPTION_NONE) {
2109 kv->kv_match = match;
2110 kv->kv_matchtree = matchtree;
2111 TAILQ_INSERT_TAIL(actions, kv, kv_match_entry);