diff options
Diffstat (limited to 'src/vnet/session/transport_types.h')
-rw-r--r-- | src/vnet/session/transport_types.h | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/src/vnet/session/transport_types.h b/src/vnet/session/transport_types.h index 9ea1f2102b4..b3469fa9fdb 100644 --- a/src/vnet/session/transport_types.h +++ b/src/vnet/session/transport_types.h @@ -21,10 +21,8 @@ #include <vnet/tcp/tcp_debug.h> #include <vppinfra/bihash_24_8.h> - #define TRANSPORT_MAX_HDRS_LEN 140 /* Max number of bytes for headers */ - typedef enum transport_dequeue_type_ { TRANSPORT_TX_PEEK, /**< reliable transport protos */ @@ -42,24 +40,35 @@ typedef enum transport_service_type_ TRANSPORT_N_SERVICES } transport_service_type_t; +/* + * IS_TX_PACED : Connection sending is paced + * NO_LOOKUP: Don't register connection in lookup. Does not apply to local + * apps and transports using the network layer (udp/tcp) + * DESCHED: Connection descheduled by the session layer + * CLESS: Connection is "connection less". Some important implications of that + * are that connections are not pinned to workers and listeners will + * have fifos associated to them + */ +#define foreach_transport_connection_flag \ + _ (IS_TX_PACED, "tx_paced") \ + _ (NO_LOOKUP, "no_lookup") \ + _ (DESCHED, "descheduled") \ + _ (CLESS, "connectionless") + +typedef enum transport_connection_flags_bits_ +{ +#define _(sym, str) TRANSPORT_CONNECTION_F_BIT_##sym, + foreach_transport_connection_flag +#undef _ + TRANSPORT_CONNECTION_N_FLAGS +} transport_connection_flags_bits_t; + typedef enum transport_connection_flags_ { - TRANSPORT_CONNECTION_F_IS_TX_PACED = 1 << 0, - /** - * Don't register connection in lookup. Does not apply to local apps - * and transports using the network layer (udp/tcp) - */ - TRANSPORT_CONNECTION_F_NO_LOOKUP = 1 << 1, - /** - * Connection descheduled by the session layer. - */ - TRANSPORT_CONNECTION_F_DESCHED = 1 << 2, - /** - * Connection is "connection less". Some important implications of that - * are that connections are not pinned to workers and listeners will - * have fifos associated to them - */ - TRANSPORT_CONNECTION_F_CLESS = 1 << 3, +#define _(sym, str) \ + TRANSPORT_CONNECTION_F_##sym = 1 << TRANSPORT_CONNECTION_F_BIT_##sym, + foreach_transport_connection_flag +#undef _ } transport_connection_flags_t; typedef struct _spacer @@ -106,6 +115,7 @@ typedef struct _transport_connection u32 c_index; /**< Connection index in transport pool */ u32 thread_index; /**< Worker-thread index */ u8 flags; /**< Transport specific flags */ + u8 dscp; /**< Differentiated Services Code Point */ /*fib_node_index_t rmt_fei; dpo_id_t rmt_dpo; */ @@ -114,7 +124,7 @@ typedef struct _transport_connection #if TRANSPORT_DEBUG elog_track_t elog_track; /**< Event logging */ - u32 cc_stat_tstamp; /**< CC stats timestamp */ + f64 cc_stat_tstamp; /**< CC stats timestamp */ #endif /** @@ -146,6 +156,7 @@ typedef struct _transport_connection #define c_stats connection.stats #define c_pacer connection.pacer #define c_flags connection.flags +#define c_dscp connection.dscp #define s_ho_handle pacer.bytes_per_sec } transport_connection_t; @@ -164,7 +175,8 @@ STATIC_ASSERT (sizeof (transport_connection_t) <= 128, _ (TLS, "tls", "J") \ _ (QUIC, "quic", "Q") \ _ (DTLS, "dtls", "D") \ - _ (SRTP, "srtp", "R") + _ (SRTP, "srtp", "R") \ + _ (HTTP, "http", "H") typedef enum _transport_proto { @@ -175,6 +187,7 @@ typedef enum _transport_proto u8 *format_transport_proto (u8 * s, va_list * args); u8 *format_transport_proto_short (u8 * s, va_list * args); +u8 *format_transport_flags (u8 *s, va_list *args); u8 *format_transport_connection (u8 * s, va_list * args); u8 *format_transport_listen_connection (u8 * s, va_list * args); u8 *format_transport_half_open_connection (u8 * s, va_list * args); @@ -209,6 +222,7 @@ typedef enum transport_endpt_cfg_flags_ _ (u32, next_node_index) \ _ (u32, next_node_opaque) \ _ (u16, mss) \ + _ (u8, dscp) \ _ (u8, transport_flags) \ /* clang-format on */ |