passt: Relicense to GPL 2.0, or any later version
In practical terms, passt doesn't benefit from the additional
protection offered by the AGPL over the GPL, because it's not
suitable to be executed over a computer network.
Further, restricting the distribution under the version 3 of the GPL
wouldn't provide any practical advantage either, as long as the passt
codebase is concerned, and might cause unnecessary compatibility
dilemmas.
Change licensing terms to the GNU General Public License Version 2,
or any later version, with written permission from all current and
past contributors, namely: myself, David Gibson, Laine Stump, Andrea
Bolognani, Paul Holzinger, Richard W.M. Jones, Chris Kuhn, Florian
Weimer, Giuseppe Scrivano, Stefan Hajnoczi, and Vasiliy Ulyanov.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
2023-04-05 18:11:44 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later
|
2022-09-24 09:08:16 +00:00
|
|
|
* Copyright Red Hat
|
|
|
|
* Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
* Author: David Gibson <david@gibson.dropbear.id.au>
|
|
|
|
*/
|
|
|
|
|
2024-02-28 11:25:20 +00:00
|
|
|
#ifndef FWD_H
|
|
|
|
#define FWD_H
|
2022-09-24 09:08:16 +00:00
|
|
|
|
2022-09-24 09:08:22 +00:00
|
|
|
/* Number of ports for both TCP and UDP */
|
|
|
|
#define NUM_PORTS (1U << 16)
|
|
|
|
|
2024-02-28 11:25:20 +00:00
|
|
|
enum fwd_ports_mode {
|
2024-05-13 14:57:57 +00:00
|
|
|
FWD_UNSET = 0,
|
2022-09-24 09:08:16 +00:00
|
|
|
FWD_SPEC = 1,
|
|
|
|
FWD_NONE,
|
|
|
|
FWD_AUTO,
|
|
|
|
FWD_ALL,
|
|
|
|
};
|
|
|
|
|
2022-09-24 09:08:22 +00:00
|
|
|
#define PORT_BITMAP_SIZE DIV_ROUND_UP(NUM_PORTS, 8)
|
2022-09-24 09:08:16 +00:00
|
|
|
|
2022-09-24 09:08:17 +00:00
|
|
|
/**
|
2024-02-28 11:25:20 +00:00
|
|
|
* fwd_ports - Describes port forwarding for one protocol and direction
|
2022-09-24 09:08:17 +00:00
|
|
|
* @mode: Overall forwarding mode (all, none, auto, specific ports)
|
2023-11-03 02:23:02 +00:00
|
|
|
* @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
|
2022-09-24 09:08:17 +00:00
|
|
|
* @map: Bitmap describing which ports are forwarded
|
|
|
|
* @delta: Offset between the original destination and mapped port number
|
|
|
|
*/
|
2024-02-28 11:25:20 +00:00
|
|
|
struct fwd_ports {
|
|
|
|
enum fwd_ports_mode mode;
|
2023-11-03 02:23:02 +00:00
|
|
|
int scan4;
|
|
|
|
int scan6;
|
2022-09-24 09:08:17 +00:00
|
|
|
uint8_t map[PORT_BITMAP_SIZE];
|
2022-09-24 09:08:22 +00:00
|
|
|
in_port_t delta[NUM_PORTS];
|
2022-09-24 09:08:17 +00:00
|
|
|
};
|
|
|
|
|
2024-02-28 11:25:20 +00:00
|
|
|
void fwd_scan_ports_tcp(struct fwd_ports *fwd, const struct fwd_ports *rev);
|
|
|
|
void fwd_scan_ports_udp(struct fwd_ports *fwd, const struct fwd_ports *rev,
|
|
|
|
const struct fwd_ports *tcp_fwd,
|
|
|
|
const struct fwd_ports *tcp_rev);
|
|
|
|
void fwd_scan_ports_init(struct ctx *c);
|
2023-11-03 02:22:56 +00:00
|
|
|
|
2024-02-28 11:25:20 +00:00
|
|
|
#endif /* FWD_H */
|