aboutgitcodebugslistschat
path: root/tcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'tcp.h')
-rw-r--r--tcp.h44
1 files changed, 15 insertions, 29 deletions
diff --git a/tcp.h b/tcp.h
index 3f21e75..384974d 100644
--- a/tcp.h
+++ b/tcp.h
@@ -6,6 +6,14 @@
#ifndef TCP_H
#define TCP_H
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+#include "fwd.h"
+
#define TCP_TIMER_INTERVAL 1000 /* ms */
struct ctx;
@@ -18,12 +26,10 @@ void tcp_sock_handler(const struct ctx *c, union epoll_ref ref,
int tcp_tap_handler(const struct ctx *c, uint8_t pif, sa_family_t af,
const void *saddr, const void *daddr, uint32_t flow_lbl,
const struct pool *p, int idx, const struct timespec *now);
-int tcp_sock_init(const struct ctx *c, uint8_t pif,
- const union inany_addr *addr, const char *ifname,
- in_port_t port);
+int tcp_listen(const struct ctx *c, uint8_t pif, unsigned rule,
+ const union inany_addr *addr, const char *ifname, in_port_t port);
int tcp_init(struct ctx *c);
-void tcp_port_rebind_all(struct ctx *c);
-void tcp_timer(const struct ctx *c, const struct timespec *now);
+void tcp_timer(struct ctx *c, const struct timespec *now);
void tcp_defer_handler(struct ctx *c);
void tcp_update_l2_buf(const unsigned char *eth_d);
@@ -31,30 +37,6 @@ void tcp_update_l2_buf(const unsigned char *eth_d);
extern bool peek_offset_cap;
/**
- * union tcp_epoll_ref - epoll reference portion for TCP connections
- * @index: Index of connection in table
- * @u32: Opaque u32 value of reference
- */
-union tcp_epoll_ref {
- uint32_t index:20;
- uint32_t u32;
-};
-
-/**
- * union tcp_listen_epoll_ref - epoll reference portion for TCP listening
- * @port: Bound port number of the socket
- * @pif: pif in which the socket is listening
- * @u32: Opaque u32 value of reference
- */
-union tcp_listen_epoll_ref {
- struct {
- in_port_t port;
- uint8_t pif;
- };
- uint32_t u32;
-};
-
-/**
* struct tcp_ctx - Execution context for TCP routines
* @port_to_tap: Ports bound host-side, packets to tap or spliced
* @fwd_in: Port forwarding configuration for inbound packets
@@ -64,6 +46,8 @@ union tcp_listen_epoll_ref {
* @rto_max: Maximum retry timeout (in s)
* @syn_retries: SYN retries using exponential backoff timeout
* @syn_linear_timeouts: SYN retries before using exponential backoff timeout
+ * @keepalive_run: Time we last issued tap-side keepalives
+ * @inactivity_run: Time we last scanned for inactive connections
*/
struct tcp_ctx {
struct fwd_ports fwd_in;
@@ -73,6 +57,8 @@ struct tcp_ctx {
int rto_max;
uint8_t syn_retries;
uint8_t syn_linear_timeouts;
+ time_t keepalive_run;
+ time_t inactivity_run;
};
#endif /* TCP_H */