penguin/tinyproxy

An L4 proxy designed to act as a tiny transparent shim

src/datagram_client.h

raw ยท 761 bytes

#ifndef DATAGRAM_CLIENT_H
#define DATAGRAM_CLIENT_H

#include "datagram_route.h"

struct datagram_client {
	struct datagram_route_ctx *ctx;

	evutil_socket_t fd;
	struct event *ev;

	char unix_local_path[108];

	struct sockaddr_storage client_addr;
	socklen_t client_addr_len;

	time_t last_seen;

	struct datagram_client *next;
};

void cleanup_idle_datagram_clients(struct datagram_route_ctx *ctx);
void free_datagram_client(struct datagram_client *c);

struct datagram_client *create_datagram_client(
	struct datagram_route_ctx *ctx,
	const struct sockaddr_storage *client_addr,
	socklen_t client_addr_len
);

struct datagram_client *find_datagram_client(
	struct datagram_route_ctx *ctx,
	const struct sockaddr_storage *addr,
	socklen_t addr_len
);

#endif