summaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Expand)AuthorFilesLines
2020-12-10tests: check ethernet type in arp test caseElias Rudberg1-0/+4
2020-12-08tests: restore vapi C++ test under Centos-8Paul Vinciguerra2-9/+1
2020-12-08fib: Source Address SelectionNeale Ranns2-25/+144
2020-12-07tests: py2 cleanup - remove subclassing of objectPaul Vinciguerra8-18/+18
2020-12-06tests: remove the dependency on subprocess32Paul Vinciguerra2-14/+1
2020-12-06tests: refactor ForeignAddressFactoryPaul Vinciguerra1-13/+0
2020-12-03tests: remove py2/py3 six compatability libraryPaul Vinciguerra9-37/+18
2020-12-03tests: fix typo in numbered list in documentationElias Rudberg1-5/+6
2020-12-03tests: remove aenum libraryPaul Vinciguerra2-5/+1
2020-12-02tests: add type annotations to the vpp object abstract classPaul Vinciguerra1-12/+12
2020-12-01tests: remove ip_punt from vpp_papi_provider and add ip_punt object modelsJakub Grajciar5-91/+103
2020-11-30tests: Fix unversioned python shebang linesDave Wallace3-3/+3
2020-11-30tests: IPv6 multicast over GRENeale Ranns1-0/+76
2020-11-26vlib: clean up event-logger CLIDave Barach1-7/+7
2020-11-26fib: Only track cover if activatedNeale Ranns1-5/+9
2020-11-25ipsec: A P2MP ipsec interface is NBMANeale Ranns1-0/+2
2020-11-25ip-neighbor: Send API event when neighbor is removedNeale Ranns1-0/+35
2020-11-24tests: remove bond, pipe, session and api_namespace from vpp_papi_providerJakub Grajciar5-61/+12
2020-11-24tests: remove svs, proxy_arp and gso from vpp_papi_providerOle Troan3-85/+13
2020-11-24tests: [re]enable an ARP test form incompleteNeale Ranns1-8/+3
2020-11-20ip-neighbor: Use ip_address_t rather than ip46_address_tNeale Ranns2-1/+8
2020-11-17tests: move crypto tests to src/vnet/crypto/testDave Wallace1-28/+0
2020-11-17tests: move classifier tests to src/vnet/classify/testDave Wallace2-1059/+0
2020-11-17tests: move vpp-api tests to src/vpe-api/testDave Wallace3-174/+0
2020-11-17tests: move gre tests to src/vnet/gre/testDave Wallace1-1275/+0
2020-11-17tests: move GSO/GRO tests to src/vnet/gso/testDave Wallace2-855/+0
2020-11-16tests: move cli tests to src/vlib/testDave Wallace1-89/+0
2020-11-16tests: move buffer tests to src/vlib/testDave Wallace1-29/+0
2020-11-16tests: move bihash tests to src/vppinfra/testDave Wallace1-71/+0
2020-11-10classify: fix classify filter trace del cli processingJon Loeliger2-7/+5
2020-11-02ipsec: Tunnel SA DSCP behaviourNeale Ranns6-25/+230
2020-10-21ipsec: support for multipoint on ipsec interfacesNeale Ranns2-4/+128
2020-10-21ip: convert u32 entry_flags to vl_api_mfib_entry_flags_t on mroute APINeale Ranns6-140/+185
2020-10-16misc: deprecate VOMDamjan Marion3-2378/+3
2020-10-16ipsec: fix instance, and cli del for new ipsec interfaceEric Kinzie2-4/+23
2020-10-08gre: MPLS over GRE does not select correct fixup functionNeale Ranns1-1/+55
2020-10-08ip-neighbor: Grat ARPs from different subnet are droppedNeale Ranns2-1/+33
2020-10-08ipsec: Allow SAs with NULL auth &crypto on IPSec interfaceNeale Ranns1-4/+25
2020-10-08fib: Register multicast MAC with interface for accepting interfacesNeale Ranns1-2/+33
2020-10-07api: add heap alloc to vpp statsOle Troan1-1/+0
2020-09-30ikev2: better packet parsing functionsFilip Tehlar1-0/+24
2020-09-22lisp: Move to pluginNeale Ranns2-208/+2
2020-09-21geneve: Move to pluginNeale Ranns1-307/+0
2020-09-21misc: Move l2tp to pluginNeale Ranns1-47/+0
2020-09-21build: remove opensuse build infraDave Wallace1-1/+1
2020-09-17teib: Add adj-fibs for peers/adjacencies on p2mp interfaceNeale Ranns2-4/+52
2020-09-09wireguard: initial implementation of wireguard protocolArtem Glazychev2-1/+5
2020-09-07ipsec: fix padding/alignment for native IPsec encryptionChristian Hopps4-33/+101
2020-09-04vpp: Fix node APIsNathan Skrzypczak1-1/+1
2020-09-02bonding: add bond_create2 API to include gso optionSteven Luong2-16/+26
"cp"> _(TRANSPORT_DELETED, "transport-deleted") \ _(CLOSED, "closed") \ typedef enum { #define _(sym, str) SESSION_STATE_ ## sym, foreach_session_state #undef _ SESSION_N_STATES, } session_state_t; typedef enum session_flags_ { SESSION_F_RX_EVT = 1, SESSION_F_PROXY = (1 << 1), SESSION_F_CUSTOM_TX = (1 << 2), } session_flags_t; typedef struct session_ { /** Pointers to rx/tx buffers. Once allocated, these do not move */ svm_fifo_t *rx_fifo; svm_fifo_t *tx_fifo; /** Type built from transport and network protocol types */ session_type_t session_type; /** State in session layer state machine. See @ref session_state_t */ volatile u8 session_state; /** Index in thread pool where session was allocated */ u32 session_index; /** Index of the app worker that owns the session */ u32 app_wrk_index; /** Index of the thread that allocated the session */ u8 thread_index; /** Session flags. See @ref session_flags_t */ u32 flags; /** Index of the transport connection associated to the session */ u32 connection_index; /** Index of application that owns the listener. Set only if a listener */ u32 app_index; union { /** Parent listener session index if the result of an accept */ session_handle_t listener_handle; /** App listener index in app's listener pool if a listener */ u32 al_index; }; /** Opaque, for general use */ u32 opaque; CLIB_CACHE_LINE_ALIGN_MARK (pad); } session_t; always_inline session_type_t session_type_from_proto_and_ip (transport_proto_t proto, u8 is_ip4) { return (proto << 1 | is_ip4); } always_inline transport_proto_t session_type_transport_proto (session_type_t st) { return (st >> 1); } always_inline u8 session_type_is_ip4 (session_type_t st) { return (st & 1); } always_inline transport_proto_t session_get_transport_proto (session_t * s) { return (s->session_type >> 1); } always_inline fib_protocol_t session_get_fib_proto (session_t * s) { u8 is_ip4 = s->session_type & 1; return (is_ip4 ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6); } always_inline u8 session_has_transport (session_t * s) { return (session_get_transport_proto (s) != TRANSPORT_PROTO_NONE); } static inline transport_service_type_t session_transport_service_type (session_t * s) { transport_proto_t tp; tp = session_get_transport_proto (s); return transport_protocol_service_type (tp); } static inline transport_tx_fn_type_t session_transport_tx_fn_type (session_t * s) { transport_proto_t tp; tp = session_get_transport_proto (s); return transport_protocol_tx_fn_type (tp); } static inline u8 session_tx_is_dgram (session_t * s) { return (session_transport_tx_fn_type (s) == TRANSPORT_TX_DGRAM); } always_inline session_handle_t session_handle (session_t * s) { return ((u64) s->thread_index << 32) | (u64) s->session_index; } always_inline u32 session_index_from_handle (session_handle_t handle) { return handle & 0xFFFFFFFF; } always_inline u32 session_thread_from_handle (session_handle_t handle) { return handle >> 32; } always_inline void session_parse_handle (session_handle_t handle, u32 * index, u32 * thread_index) { *index = session_index_from_handle (handle); *thread_index = session_thread_from_handle (handle); } static inline session_handle_t session_make_handle (u32 session_index, u32 thread_index) { return (((u64) thread_index << 32) | (u64) session_index); } typedef enum { SESSION_IO_EVT_RX, SESSION_IO_EVT_TX, SESSION_IO_EVT_TX_FLUSH, SESSION_IO_EVT_BUILTIN_RX, SESSION_IO_EVT_BUILTIN_TX, SESSION_CTRL_EVT_RPC, SESSION_CTRL_EVT_CLOSE, SESSION_CTRL_EVT_RESET, SESSION_CTRL_EVT_BOUND, SESSION_CTRL_EVT_UNLISTEN_REPLY, SESSION_CTRL_EVT_ACCEPTED, SESSION_CTRL_EVT_ACCEPTED_REPLY, SESSION_CTRL_EVT_CONNECTED, SESSION_CTRL_EVT_DISCONNECTED, SESSION_CTRL_EVT_DISCONNECTED_REPLY, SESSION_CTRL_EVT_RESET_REPLY, SESSION_CTRL_EVT_REQ_WORKER_UPDATE, SESSION_CTRL_EVT_WORKER_UPDATE, SESSION_CTRL_EVT_WORKER_UPDATE_REPLY, SESSION_CTRL_EVT_DISCONNECT, SESSION_CTRL_EVT_CONNECT, SESSION_CTRL_EVT_CONNECT_URI, SESSION_CTRL_EVT_LISTEN, SESSION_CTRL_EVT_LISTEN_URI, SESSION_CTRL_EVT_UNLISTEN, SESSION_CTRL_EVT_APP_DETACH, } session_evt_type_t; #define foreach_session_ctrl_evt \ _(LISTEN, listen) \ _(LISTEN_URI, listen_uri) \ _(BOUND, bound) \ _(UNLISTEN, unlisten) \ _(UNLISTEN_REPLY, unlisten_reply) \ _(ACCEPTED, accepted) \ _(ACCEPTED_REPLY, accepted_reply) \ _(CONNECT, connect) \ _(CONNECT_URI, connect_uri) \ _(CONNECTED, connected) \ _(DISCONNECT, disconnect) \ _(DISCONNECTED, disconnected) \ _(DISCONNECTED_REPLY, disconnected_reply) \ _(RESET_REPLY, reset_reply) \ _(REQ_WORKER_UPDATE, req_worker_update) \ _(WORKER_UPDATE, worker_update) \ _(WORKER_UPDATE_REPLY, worker_update_reply) \ _(APP_DETACH, app_detach) \ /* Deprecated and will be removed. Use types above */ #define FIFO_EVENT_APP_RX SESSION_IO_EVT_RX #define FIFO_EVENT_APP_TX SESSION_IO_EVT_TX #define FIFO_EVENT_DISCONNECT SESSION_CTRL_EVT_CLOSE #define FIFO_EVENT_BUILTIN_RX SESSION_IO_EVT_BUILTIN_RX #define FIFO_EVENT_BUILTIN_TX SESSION_IO_EVT_BUILTIN_TX typedef enum { SESSION_MQ_IO_EVT_RING, SESSION_MQ_CTRL_EVT_RING, SESSION_MQ_N_RINGS } session_mq_rings_e; typedef struct { void *fp; void *arg; } session_rpc_args_t; typedef struct { u8 event_type; u8 postponed; union { u32 session_index; session_handle_t session_handle; session_rpc_args_t rpc_args; u32 ctrl_data_index; struct { u8 data[0]; }; }; } __clib_packed session_event_t; #define SESSION_MSG_NULL { } typedef struct session_dgram_pre_hdr_ { u32 data_length; u32 data_offset; } session_dgram_pre_hdr_t; typedef struct session_dgram_header_ { u32 data_length; u32 data_offset; ip46_address_t rmt_ip; ip46_address_t lcl_ip; u16 rmt_port; u16 lcl_port; u8 is_ip4; } __clib_packed session_dgram_hdr_t; #define SESSION_CONN_ID_LEN 37 #define SESSION_CONN_HDR_LEN 45 STATIC_ASSERT (sizeof (session_dgram_hdr_t) == (SESSION_CONN_ID_LEN + 8), "session conn id wrong length"); #endif /* SRC_VNET_SESSION_SESSION_TYPES_H_ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */