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
| | /* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright Red Hat
* Author: David Gibson <david@gibson.dropbear.id.au>
*
* Tracking for logical "flows" of packets.
*/
#ifndef FLOW_H
#define FLOW_H
/**
* struct demiflow - Describes a logical packet flow as seen from one "side"
* @caddr: Correspondent address (remote address from passt's PoV)
* @faddr: Forwarding address (local address from passt's PoV)
* @cport: Correspondent port
* @fport: Forwarding port
*/
struct demiflow {
union inany_addr faddr;
union inany_addr caddr;
in_port_t fport, cport;
};
/** demiflow_from_af - Initialize a demiflow from addresses
* @df: demiflow to initialize
* @af: Address family for @faddr and @caddr
* @faddr: Forwarding address (pointer to in_addr or in6_addr)
* @fport: Forwarding port
* @caddr: Correspondent address (pointer to in_addr or in6_addr)
* @cport: Correspondent port
*/
static inline void demiflow_from_af(struct demiflow *df, int af,
const void *faddr, in_port_t fport,
const void *caddr, in_port_t cport)
{
inany_from_af(&df->faddr, af, faddr);
inany_from_af(&df->caddr, af, caddr);
df->fport = fport;
df->cport = cport;
}
#endif /* FLOW_H */
|