/* SPDX-License-Identifier: GPL-2.0-or-later * Copyright Red Hat * Author: David Gibson * * 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 */