mirror of
https://passt.top/passt
synced 2025-06-13 02:55:34 +02:00
flow, tcp: Generalise connection types
Currently TCP connections use a 1-bit selector, 'spliced', to determine the rest of the contents of the structure. We want to generalise the TCP connection table to other types of flows in other protocols. Make a start on this by replacing the tcp_conn_common structure with a new flow_common structure with an enum rather than a simple boolean indicating the type of flow. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
ba84a3b17a
commit
16ae032608
6 changed files with 112 additions and 40 deletions
36
flow.h
Normal file
36
flow.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/* 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
|
||||
|
||||
/**
|
||||
* enum flow_type - Different types of packet flows we track
|
||||
*/
|
||||
enum flow_type {
|
||||
/* Represents an invalid or unused flow */
|
||||
FLOW_TYPE_NONE = 0,
|
||||
/* A TCP connection between a socket and tap interface */
|
||||
FLOW_TCP,
|
||||
/* A TCP connection between a host socket and ns socket */
|
||||
FLOW_TCP_SPLICE,
|
||||
|
||||
FLOW_NUM_TYPES,
|
||||
};
|
||||
|
||||
extern const char *flow_type_str[];
|
||||
#define FLOW_TYPE(f) \
|
||||
((f)->type < FLOW_NUM_TYPES ? flow_type_str[(f)->type] : "?")
|
||||
|
||||
/**
|
||||
* struct flow_common - Common fields for packet flows
|
||||
* @type: Type of packet flow
|
||||
*/
|
||||
struct flow_common {
|
||||
uint8_t type;
|
||||
};
|
||||
|
||||
#endif /* FLOW_H */
|
Loading…
Add table
Add a link
Reference in a new issue