public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
d2a0c393972039173d3ad960f3426bd4d1f55f6f blob 2445 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
/* SPDX-License-Identifier: GPL-2.0-or-later
 * Copyright Red Hat
 * Author: Stefano Brivio <sbrivio@redhat.com>
 * Author: David Gibson <david@gibson.dropbear.id.au>
 */

#ifndef FWD_H
#define FWD_H

#include <assert.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

#include <netinet/in.h>

#include "inany.h"
#include "ports.h"
#include "fwd_rule.h"

struct flowside;

void fwd_probe_ephemeral(void);
bool fwd_port_is_ephemeral(in_port_t port);

/**
 * struct fwd_scan - Port scanning state for a protocol+direction
 * @scan4:	/proc/net fd to scan for IPv4 ports when in AUTO mode
 * @scan6:	/proc/net fd to scan for IPv6 ports when in AUTO mode
 * @map:	Bitmap describing which ports are forwarded
 */
struct fwd_scan {
	int scan4;
	int scan6;
	uint8_t map[PORT_BITMAP_SIZE];
};

#define FWD_PORT_SCAN_INTERVAL		1000	/* ms */

void fwd_rule_init(struct ctx *c);
void fwd_rule_add(struct fwd_table *fwd, uint8_t proto, uint8_t flags,
		  const union inany_addr *addr, const char *ifname,
		  in_port_t first, in_port_t last, in_port_t to);
const struct fwd_rule *fwd_rule_search(const struct fwd_table *fwd,
				       const struct flowside *ini,
				       uint8_t proto, int hint);
void fwd_rules_print(const struct fwd_table *fwd);

void fwd_scan_ports_init(struct ctx *c);
void fwd_scan_ports_timer(struct ctx * c, const struct timespec *now);

int fwd_listen_sync(const struct ctx *c, uint8_t pif,
		    const struct fwd_scan *tcp, const struct fwd_scan *udp);
void fwd_listen_close(struct fwd_table *fwd);
int fwd_listen_init(const struct ctx *c);

bool nat_inbound(const struct ctx *c, const union inany_addr *addr,
		 union inany_addr *translated);
uint8_t fwd_nat_from_tap(const struct ctx *c, uint8_t proto,
			 const struct flowside *ini, struct flowside *tgt);
uint8_t fwd_nat_from_splice(const struct fwd_rule *rule, uint8_t proto,
			    const struct flowside *ini, struct flowside *tgt);
uint8_t fwd_nat_from_host(const struct ctx *c,
			  const struct fwd_rule *rule, uint8_t proto,
			  const struct flowside *ini, struct flowside *tgt);
void fwd_neigh_table_update(const struct ctx *c, const union inany_addr *addr,
			    const uint8_t *mac, bool permanent);
void fwd_neigh_table_free(const struct ctx *c,
			  const union inany_addr *addr);
void fwd_neigh_mac_get(const struct ctx *c, const union inany_addr *addr,
		       uint8_t *mac);
void fwd_neigh_table_init(const struct ctx *c);

#endif /* FWD_H */
debug log:

solving d2a0c39 ...
found d2a0c39 in https://archives.passt.top/passt-dev/20260322141843.4095972-3-sbrivio@redhat.com/
found 00450a4 in https://archives.passt.top/passt-dev/20260322141843.4095972-2-sbrivio@redhat.com/
found 00f96860 in https://archives.passt.top/passt-dev/20260319061157.1983818-13-david@gibson.dropbear.id.au/
found b387d926 in https://archives.passt.top/passt-dev/20260319061157.1983818-7-david@gibson.dropbear.id.au/
found 958eee25 in https://passt.top/passt
preparing index
index prepared:
100644 958eee255ca6e5a161807068578ed7213c0cd1e0	fwd.h

applying [1/4] https://archives.passt.top/passt-dev/20260319061157.1983818-7-david@gibson.dropbear.id.au/
diff --git a/fwd.h b/fwd.h
index 958eee25..b387d926 100644


applying [2/4] https://archives.passt.top/passt-dev/20260319061157.1983818-13-david@gibson.dropbear.id.au/
diff --git a/fwd.h b/fwd.h
index b387d926..00f96860 100644


applying [3/4] https://archives.passt.top/passt-dev/20260322141843.4095972-2-sbrivio@redhat.com/
diff --git a/fwd.h b/fwd.h
index 00f96860..00450a4 100644


applying [4/4] https://archives.passt.top/passt-dev/20260322141843.4095972-3-sbrivio@redhat.com/
diff --git a/fwd.h b/fwd.h
index 00450a4..d2a0c39 100644

Checking patch fwd.h...
Applied patch fwd.h cleanly.
Checking patch fwd.h...
Applied patch fwd.h cleanly.
Checking patch fwd.h...
Applied patch fwd.h cleanly.
Checking patch fwd.h...
Applied patch fwd.h cleanly.

index at:
100644 d2a0c393972039173d3ad960f3426bd4d1f55f6f	fwd.h

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).