penguin/tinyproxy

An L4 proxy designed to act as a tiny transparent shim

src/datagram_route.h

raw ยท 824 bytes

#ifndef DATAGRAM_ROUTE_H
#define DATAGRAM_ROUTE_H

#include <event2/util.h>

#include "compat.h"
#include "compat_thread.h"
#include "worker_pool.h"

struct event;
struct event_base;
struct worker;
struct route;
struct datagram_client;

struct datagram_route_ctx {
	compat_mutex_t clients_mu;

	struct event_base *base;
	struct worker_pool *worker_pool;
	const struct route *route;

	evutil_socket_t listen_fd;
	struct event *listen_ev;

	struct sockaddr_storage local_addr;
	socklen_t local_addr_len;

	struct datagram_client *clients;
};

int start_datagram_route(
		struct event_base *accept_base,
		struct worker_pool *wpool,
		const struct route *r,
		struct datagram_route_ctx *ctx);

void stop_datagram_route_listener(struct datagram_route_ctx *ctx);
void free_datagram_route(struct datagram_route_ctx *ctx);

#endif