Lines Matching refs:rlay
267 relay_protodebug(struct relay *rlay) in relay_protodebug() argument
269 struct protocol *proto = rlay->rl_proto; in relay_protodebug()
276 printb_flags(rlay->rl_conf.flags, F_BITS)); in relay_protodebug()
280 if ((rlay->rl_conf.flags & (F_TLS|F_TLSCLIENT)) && proto->tlsflags) in relay_protodebug()
306 relay_privinit(struct relay *rlay) in relay_privinit() argument
308 log_debug("%s: adding relay %s", __func__, rlay->rl_conf.name); in relay_privinit()
311 relay_protodebug(rlay); in relay_privinit()
313 switch (rlay->rl_proto->type) { in relay_privinit()
315 relay_udp_privinit(rlay); in relay_privinit()
323 if (rlay->rl_conf.flags & F_UDP) in relay_privinit()
324 rlay->rl_s = relay_udp_bind(&rlay->rl_conf.ss, in relay_privinit()
325 rlay->rl_conf.port, rlay->rl_proto); in relay_privinit()
327 rlay->rl_s = relay_socket_listen(&rlay->rl_conf.ss, in relay_privinit()
328 rlay->rl_conf.port, rlay->rl_proto); in relay_privinit()
329 if (rlay->rl_s == -1) in relay_privinit()
375 struct relay *rlay; in relay_statistics() local
389 TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) { in relay_statistics()
393 cur = &rlay->rl_stats[ps->ps_instance]; in relay_statistics()
417 crs.id = rlay->rl_conf.id; in relay_statistics()
422 for (con = SPLAY_ROOT(&rlay->rl_sessions); in relay_statistics()
425 &rlay->rl_sessions, con); in relay_statistics()
427 if (timercmp(&tv, &rlay->rl_conf.timeout, >=)) in relay_statistics()
442 struct relay *rlay; in relay_launch() local
446 TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) { in relay_launch()
447 if ((rlay->rl_conf.flags & (F_TLS|F_TLSCLIENT)) && in relay_launch()
448 relay_tls_ctx_create(rlay) == -1) in relay_launch()
451 TAILQ_FOREACH(rlt, &rlay->rl_tables, rlt_entry) { in relay_launch()
457 rule_settable(&rlay->rl_proto->rules, rlt); in relay_launch()
473 switch (rlay->rl_proto->type) { in relay_launch()
475 relay_udp_init(env, rlay); in relay_launch()
479 relay_http_init(rlay); in relay_launch()
485 rlay->rl_conf.name); in relay_launch()
487 rlay->rl_up = HOST_UP; in relay_launch()
489 if (rlay->rl_conf.flags & F_UDP) in relay_launch()
494 event_set(&rlay->rl_ev, rlay->rl_s, EV_READ, in relay_launch()
495 callback, rlay); in relay_launch()
496 event_add(&rlay->rl_ev, NULL); in relay_launch()
497 evtimer_set(&rlay->rl_evt, callback, rlay); in relay_launch()
687 struct relay *rlay = con->se_relay; in relay_connected() local
688 struct protocol *proto = rlay->rl_proto; in relay_connected()
721 if ((rlay->rl_conf.flags & F_TLSCLIENT) && (out->tls == NULL)) { in relay_connected()
744 switch (rlay->rl_proto->type) { in relay_connected()
778 if ((rlay->rl_conf.flags & F_TLSCLIENT) && (out->tls != NULL)) in relay_connected()
782 rlay->rl_conf.timeout.tv_sec, rlay->rl_conf.timeout.tv_sec); in relay_connected()
796 struct relay *rlay = con->se_relay; in relay_input() local
797 struct protocol *proto = rlay->rl_proto; in relay_input()
801 switch (rlay->rl_proto->type) { in relay_input()
829 if ((rlay->rl_conf.flags & F_TLS) && con->se_in.tls != NULL) in relay_input()
833 rlay->rl_conf.timeout.tv_sec, rlay->rl_conf.timeout.tv_sec); in relay_input()
924 struct relay *rlay = con->se_relay; in relay_splice() local
925 struct protocol *proto = rlay->rl_proto; in relay_splice()
928 if ((rlay->rl_conf.flags & (F_TLS|F_TLSCLIENT)) || in relay_splice()
957 bcopy(&rlay->rl_conf.timeout, &sp.sp_idle, sizeof(sp.sp_idle)); in relay_splice()
1097 struct relay *rlay = arg; in relay_accept() local
1105 event_add(&rlay->rl_ev, NULL); in relay_accept()
1119 event_del(&rlay->rl_ev); in relay_accept()
1120 evtimer_add(&rlay->rl_evt, &evtpause); in relay_accept()
1125 if (rlay->rl_conf.flags & F_DISABLE) in relay_accept()
1149 con->se_relay = rlay; in relay_accept()
1151 con->se_relayid = rlay->rl_conf.id; in relay_accept()
1155 con->se_retry = rlay->rl_conf.dstretry; in relay_accept()
1157 con->se_out.port = rlay->rl_conf.dstport; in relay_accept()
1177 if (rlay->rl_conf.flags & F_HASHKEY) { in relay_accept()
1179 &rlay->rl_conf.hashkey.siphashkey); in relay_accept()
1183 SPLAY_INSERT(session_tree, &rlay->rl_sessions, con); in relay_accept()
1187 rlay->rl_stats[ps->ps_instance].last++; in relay_accept()
1196 if (rlay->rl_conf.flags & F_DIVERT) { in relay_accept()
1202 if (bcmp(&rlay->rl_conf.ss, &con->se_out.ss, in relay_accept()
1204 con->se_out.port == rlay->rl_conf.port) in relay_accept()
1206 } else if (rlay->rl_conf.flags & F_NATLOOK) { in relay_accept()
1227 bcopy(&rlay->rl_conf.timeout, &tv, sizeof(tv)); in relay_accept()
1232 if (rlay->rl_conf.flags & F_TLSINSPECT) { in relay_accept()
1279 struct relay *rlay = con->se_relay; in relay_from_table() local
1298 TAILQ_FOREACH(rlt, &rlay->rl_tables, rlt_entry) { in relay_from_table()
1333 relay_hash_addr(&con->se_siphashctx, &rlay->rl_conf.ss, in relay_from_table()
1334 rlay->rl_conf.port); in relay_from_table()
1346 &rlay->rl_conf.hashkey.siphashkey); in relay_from_table()
1404 struct relay *rlay = con->se_relay; in relay_natlook() local
1411 rlay->rl_conf.dstss.ss_family == AF_UNSPEC && in relay_natlook()
1412 TAILQ_EMPTY(&rlay->rl_tables)) { in relay_natlook()
1429 struct relay *rlay = con->se_relay; in relay_session() local
1432 if (bcmp(&rlay->rl_conf.ss, &out->ss, sizeof(out->ss)) == 0 && in relay_session()
1433 out->port == rlay->rl_conf.port) { in relay_session()
1439 if (rlay->rl_conf.flags & F_UDP) { in relay_session()
1443 if (rlay->rl_proto->request == NULL) in relay_session()
1445 if ((*rlay->rl_proto->request)(con) == -1) in relay_session()
1450 if ((rlay->rl_conf.flags & F_TLS) && (in->tls == NULL)) { in relay_session()
1455 if (rlay->rl_proto->type != RELAY_PROTO_HTTP) { in relay_session()
1456 if (rlay->rl_conf.fwdmode == FWD_TRANS) in relay_session()
1471 struct relay *rlay = con->se_relay; in relay_bindanyreq() local
1486 bcopy(&rlay->rl_conf.timeout, &tv, sizeof(tv)); in relay_bindanyreq()
1519 struct relay *rlay = con->se_relay; in relay_connect_retry() local
1549 event_add(&rlay->rl_ev, NULL); in relay_connect_retry()
1554 if (rlay->rl_conf.fwdmode == FWD_TRANS) { in relay_connect_retry()
1561 con->se_out.port, rlay->rl_proto, bnds)) == -1) { in relay_connect_retry()
1571 event_del(&rlay->rl_ev); in relay_connect_retry()
1573 evtimer_add(&rlay->rl_evt, &evtpause); in relay_connect_retry()
1577 event_add(&rlay->rl_ev, NULL); in relay_connect_retry()
1582 if (rlay->rl_conf.flags & F_TLSINSPECT) in relay_connect_retry()
1589 event_add(&rlay->rl_ev, NULL); in relay_connect_retry()
1593 relay_connected, &con->se_tv_start, &rlay->rl_conf.timeout, in relay_connect_retry()
1617 struct relay *rlay = con->se_relay; in relay_connect() local
1628 if ((rlay->rl_conf.flags & F_TLSINSPECT) && in relay_connect()
1647 !TAILQ_EMPTY(&rlay->rl_tables)) { in relay_connect()
1651 bcopy(&rlay->rl_conf.dstss, &con->se_out.ss, in relay_connect()
1653 con->se_out.port = rlay->rl_conf.dstport; in relay_connect()
1656 if (rlay->rl_conf.fwdmode == FWD_TRANS) { in relay_connect()
1665 if (rlay->rl_conf.dstaf.ss_family != AF_UNSPEC) { in relay_connect()
1667 rlay->rl_conf.dstaf.ss_family == AF_INET6) in relay_connect()
1668 ret = map4to6(&con->se_out.ss, &rlay->rl_conf.dstaf); in relay_connect()
1670 rlay->rl_conf.dstaf.ss_family == AF_INET) in relay_connect()
1682 con->se_out.port, rlay->rl_proto, bnds)) == -1) { in relay_connect()
1688 event_del(&rlay->rl_ev); in relay_connect()
1690 evtimer_add(&rlay->rl_evt, &evtpause); in relay_connect()
1718 relay_connected, &con->se_tv_start, &rlay->rl_conf.timeout, in relay_connect()
1730 struct relay *rlay = con->se_relay; in relay_close() local
1731 struct protocol *proto = rlay->rl_proto; in relay_close()
1733 SPLAY_REMOVE(session_tree, &rlay->rl_sessions, con); in relay_close()
1752 "%s%s%s", rlay->rl_conf.name, con->se_id, in relay_close()
1760 "%s%s%s", rlay->rl_conf.name, con->se_id, in relay_close()
1791 if (evtimer_pending(&rlay->rl_evt, NULL)) { in relay_close()
1792 evtimer_del(&rlay->rl_evt); in relay_close()
1793 event_add(&rlay->rl_ev, NULL); in relay_close()
1847 struct relay *rlay; in relay_dispatch_pfe() local
1944 TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) { in relay_dispatch_pfe()
1946 &rlay->rl_sessions) { in relay_dispatch_pfe()
1981 struct relay *rlay; in relay_dispatch_parent() local
2036 TAILQ_FOREACH(rlay, env->sc_relays, rl_entry) { in relay_dispatch_parent()
2037 if (rlay->rl_conf.flags & F_TLS) in relay_dispatch_parent()
2038 tls_config_add_ticket_key(rlay->rl_tls_cfg, in relay_dispatch_parent()
2130 relay_tls_ctx_create(struct relay *rlay) in relay_tls_ctx_create() argument
2148 if (relay_tls_ctx_create_proto(rlay->rl_proto, tls_cfg) == -1) in relay_tls_ctx_create()
2150 if (relay_tls_ctx_create_proto(rlay->rl_proto, tls_client_cfg) == -1) in relay_tls_ctx_create()
2154 if (rlay->rl_conf.flags & F_TLSCLIENT) { in relay_tls_ctx_create()
2161 if (rlay->rl_tls_ca_fd != -1) { in relay_tls_ctx_create()
2162 if ((buf = relay_load_fd(rlay->rl_tls_ca_fd, &len)) == NULL) { in relay_tls_ctx_create()
2166 rlay->rl_tls_ca_fd = -1; in relay_tls_ctx_create()
2180 rlay->rl_tls_client_cfg = tls_client_cfg; in relay_tls_ctx_create()
2183 if (rlay->rl_conf.flags & F_TLS) { in relay_tls_ctx_create()
2194 if (cert->cert_relayid != rlay->rl_conf.id || in relay_tls_ctx_create()
2226 !ssl_load_pkey(buf, len, NULL, &rlay->rl_tls_pkey)) in relay_tls_ctx_create()
2240 if (rlay->rl_tls_cacert_fd != -1) { in relay_tls_ctx_create()
2241 if ((cabuf = relay_load_fd(rlay->rl_tls_cacert_fd, in relay_tls_ctx_create()
2248 &rlay->rl_tls_cacertx509, &rlay->rl_tls_capkey)) in relay_tls_ctx_create()
2251 rlay->rl_tls_cacert_fd = -1; in relay_tls_ctx_create()
2253 if (rlay->rl_tls_client_ca_fd != -1) { in relay_tls_ctx_create()
2254 if ((buf = relay_load_fd(rlay->rl_tls_client_ca_fd, in relay_tls_ctx_create()
2271 rlay->rl_tls_client_ca_fd = -1; in relay_tls_ctx_create()
2284 rlay->rl_tls_cfg = tls_cfg; in relay_tls_ctx_create()
2285 rlay->rl_tls_ctx = tls; in relay_tls_ctx_create()
2290 if (rlay->rl_tls_client_cfg == NULL) in relay_tls_ctx_create()
2292 if (rlay->rl_tls_cfg == NULL) in relay_tls_ctx_create()
2307 relay_tls_inspect_create(struct relay *rlay, struct ctl_relay_event *cre) in relay_tls_inspect_create() argument
2317 if (relay_tls_ctx_create_proto(rlay->rl_proto, tls_cfg) == -1) { in relay_tls_inspect_create()
2354 struct relay *rlay = con->se_relay; in relay_tls_transaction() local
2361 tls_server = relay_tls_inspect_create(rlay, cre); in relay_tls_transaction()
2363 tls_server = rlay->rl_tls_ctx; in relay_tls_transaction()
2377 tls_configure(cre->tls, rlay->rl_tls_client_cfg) == -1) { in relay_tls_transaction()
2391 &con->se_tv_start, &rlay->rl_conf.timeout, cre); in relay_tls_transaction()
2403 struct relay *rlay = con->se_relay; in relay_tls_handshake() local
2421 rlay->rl_conf.name, con->se_id, in relay_tls_handshake()
2430 if (rlay->rl_conf.flags & F_TLSINSPECT) { in relay_tls_handshake()
2439 rlay->rl_tls_pkey, rlay->rl_tls_capkey, in relay_tls_handshake()
2440 rlay->rl_tls_cacertx509, in relay_tls_handshake()
2471 &con->se_tv_start, &rlay->rl_conf.timeout, cre); in relay_tls_handshake()
2703 struct relay *rlay = b->se_relay; in relay_session_cmp() local
2704 struct protocol *proto = rlay->rl_proto; in relay_session_cmp()