diff options
-rw-r--r-- | tcp.c | 14 | ||||
-rw-r--r-- | udp.c | 13 |
2 files changed, 22 insertions, 5 deletions
@@ -2326,7 +2326,9 @@ void tcp_listen_handler(struct ctx *c, union epoll_ref ref, union flow *flow; int s; - if (c->no_tcp || !(flow = flow_alloc())) + ASSERT(!c->no_tcp); + + if (!(flow = flow_alloc())) return; s = accept4(ref.fd, &sa.sa, &sl, SOCK_NONBLOCK); @@ -2379,8 +2381,7 @@ void tcp_timer_handler(struct ctx *c, union epoll_ref ref) struct itimerspec check_armed = { { 0 }, { 0 } }; struct tcp_tap_conn *conn = CONN(ref.flow); - if (c->no_tcp) - return; + ASSERT(!c->no_tcp); /* We don't reset timers on ~ACK_FROM_TAP_DUE, ~ACK_TO_TAP_DUE. If the * timer is currently armed, this event came from a previous setting, @@ -2442,6 +2443,7 @@ void tcp_sock_handler(struct ctx *c, union epoll_ref ref, uint32_t events) { struct tcp_tap_conn *conn = CONN(ref.flowside.flow); + ASSERT(!c->no_tcp); ASSERT(conn->f.type == FLOW_TCP); ASSERT(conn->f.pif[ref.flowside.side] != PIF_TAP); @@ -2541,6 +2543,8 @@ int tcp_sock_init(const struct ctx *c, sa_family_t af, const void *addr, { int r4 = FD_REF_MAX + 1, r6 = FD_REF_MAX + 1; + ASSERT(!c->no_tcp); + if (af == AF_UNSPEC && c->ifi4 && c->ifi6) /* Attempt to get a dual stack socket */ if (tcp_sock_init_af(c, AF_UNSPEC, port, addr, ifname) >= 0) @@ -2618,6 +2622,8 @@ static void tcp_ns_sock_init6(const struct ctx *c, in_port_t port) */ void tcp_ns_sock_init(const struct ctx *c, in_port_t port) { + ASSERT(!c->no_tcp); + if (c->ifi4) tcp_ns_sock_init4(c, port); if (c->ifi6) @@ -2706,6 +2712,8 @@ int tcp_init(struct ctx *c) unsigned int b, optv = 0; int s; + ASSERT(!c->no_tcp); + for (b = 0; b < TCP_HASH_TABLE_SIZE; b++) tc_hash[b] = FLOW_SIDX_NONE; @@ -749,7 +749,9 @@ static int udp_sock_recv(const struct ctx *c, int s, uint32_t events, */ int n = (c->mode == MODE_PASTA ? 1 : UDP_MAX_FRAMES); - if (c->no_udp || !(events & EPOLLIN)) + ASSERT(!c->no_udp); + + if (!(events & EPOLLIN)) return 0; n = recvmmsg(s, mmh, n, 0, NULL); @@ -849,10 +851,11 @@ int udp_tap_handler(struct ctx *c, uint8_t pif, in_port_t src, dst; socklen_t sl; - (void)c; (void)saddr; (void)pif; + ASSERT(!c->no_udp); + uh = packet_get(p, idx, 0, sizeof(*uh), NULL); if (!uh) return 1; @@ -1026,6 +1029,8 @@ int udp_sock_init(const struct ctx *c, int ns, sa_family_t af, .orig = true, .port = port }; int s, r4 = FD_REF_MAX + 1, r6 = FD_REF_MAX + 1; + ASSERT(!c->no_udp); + if (ns) uref.pif = PIF_SPLICE; else @@ -1214,6 +1219,8 @@ void udp_timer(struct ctx *c, const struct timespec *now) unsigned int i; long *word, tmp; + ASSERT(!c->no_udp); + if (c->mode == MODE_PASTA) { if (c->udp.fwd_out.f.mode == FWD_AUTO) { fwd_scan_ports_udp(&c->udp.fwd_out.f, &c->udp.fwd_in.f, @@ -1257,6 +1264,8 @@ v6: */ int udp_init(struct ctx *c) { + ASSERT(!c->no_udp); + udp_iov_init(c); udp_invert_portmap(&c->udp.fwd_in); |