aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/udp/udp.c
AgeCommit message (Expand)AuthorFilesLines
2020-04-10udp: remove connected udp transport protoFlorin Coras1-60/+0
2020-04-08udp: cleanup input nodeFlorin Coras1-2/+2
2020-04-07udp: move cli to separate fileFlorin Coras1-201/+50
2020-04-07udp session: allow dgram ip fragmentationFlorin Coras1-8/+5
2020-04-07udp session: jumbo frames and configurable mtuFlorin Coras1-1/+28
2020-04-06session udp: shared local endpointsFlorin Coras1-7/+35
2020-04-03session: improve error reportingFlorin Coras1-8/+7
2020-04-03session udp: fix transport flags and migrationFlorin Coras1-1/+5
2020-04-02udp session vcl: add udp iperf testFlorin Coras1-9/+18
2020-04-01udp: improvements to cliFlorin Coras1-9/+46
2020-04-01udp: track connection port sharingFlorin Coras1-24/+103
2020-03-30session udp: flag for connected udpFlorin Coras1-3/+13
2020-03-25session: api to add new transport typesFlorin Coras1-0/+4
2020-03-19session tcp udp: consolidate transport snd apisFlorin Coras1-14/+11
2020-03-09udp: fix UDP socket byte order in lookupAndreas Schultz1-1/+2
2020-01-16udp: fix ipv6 listen port registrationFlorin Coras1-1/+1
2020-01-02session: fix listener global endpoint lookupFlorin Coras1-0/+3
2019-10-01session: fix use-after-freeBenoƮt Ganne1-1/+2
2019-07-22udp: support close with dataFlorin Coras1-13/+30
2019-07-12quic: fix show session verboseAloys Augustin1-3/+3
2019-07-12session: add thread index to all formattersAloys Augustin1-0/+2
2019-07-09udp: UDPC handle open failNathan Skrzypczak1-6/+9
2019-06-28session: add half_open_has_fifos for UDPCNathan Skrzypczak1-0/+1
2019-06-27session: Add transport vft protocol optionsNathan Skrzypczak1-7/+14
2019-05-22fix show session verbose crash with udp transportDave Wallace1-0/+2
2019-05-16init / exit function orderingDave Barach1-10/+9
2019-05-14Unregister UDPC port only when ownedNathan Skrzypczak1-2/+5
2019-05-03Add packet headers in UDPC fifosAloys Augustin1-1/+1
2019-04-24UDPC: Fix open segfault with multiple workersAloys Augustin1-1/+3
2019-04-08host stack: update stale copyrightFlorin Coras1-1/+1
2019-03-06udp: migrate old MULTIARCH macros to VLIB_NODE_FNFilip Tehlar1-0/+2
2019-02-06transport: cleanupFlorin Coras1-6/+6
2018-12-28session: free session after transport and app confirmFlorin Coras1-1/+1
2018-12-07VPP-1506: dump local punts and registered punt socketsPavel Kotucek1-0/+60
2018-10-28session: extend connect api for internal appsFlorin Coras1-2/+2
2018-10-23c11 safe string handling supportDave Barach1-3/+3
2018-07-11avoid using thread local storage for thread indexDamjan Marion1-1/+1
2018-06-11udp: fix for multiple workers and add testFlorin Coras1-4/+12
2018-04-18udp/session: refactor to support dgram modeFlorin Coras1-3/+53
2018-03-02session: first approximation implementation of tlsFlorin Coras1-1/+3
2017-12-11session: generalize handling of network transportsFlorin Coras1-3/+4
2017-11-02session/udp: init rw locksFlorin Coras1-0/+8
2017-10-16udp: refactor udp codeFlorin Coras1-177/+216
2017-09-20session: store tep port in net orderFlorin Coras1-5/+5
2017-07-30Make tcp active open data structures thread safeFlorin Coras1-4/+4
2017-07-25Cleanup/refactor session layer codeFlorin Coras1-12/+10
2017-03-13VPP-659 Improve tcp/session debugging and testingFlorin Coras1-4/+6
2017-03-01VPP-598: tcp stack initial commitDave Barach1-0/+342
"o">*fib_entry); /** * format. */ typedef u8* (*fib_entry_src_format_t)(fib_entry_src_t *src, u8* s); /** * Source path add * the source is adding a new path */ typedef void (*fib_entry_src_path_add_t)(fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path); /** * Source path remove * the source is remoinvg a path */ typedef void (*fib_entry_src_path_remove_t)(fib_entry_src_t *src, fib_path_list_flags_t pl_flags, const fib_route_path_t *path); /** * Source path replace/swap * the source is providing a new set of paths */ typedef void (*fib_entry_src_path_swap_t)(fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path); /** * Set source specific opaque data */ typedef void (*fib_entry_src_set_data_t)(fib_entry_src_t *src, const fib_entry_t *fib_entry, const void *data); /** * Get source specific opaque data */ typedef const void* (*fib_entry_src_get_data_t)(fib_entry_src_t *src, const fib_entry_t *fib_entry); /** * Contribute forwarding to interpose inthe chain */ typedef const dpo_id_t* (*fib_entry_src_contribute_interpose_t)(const fib_entry_src_t *src, const fib_entry_t *fib_entry); /** * The fib entry flags for this source are changing */ typedef void (*fib_entry_src_flag_change_t)(fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_entry_flag_t new_flags); /** * The fib entry flags for this source are changing */ typedef void (*fib_entry_src_copy_t)(const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src); /** * Virtual function table each FIB entry source will register */ typedef struct fib_entry_src_vft_t_ { fib_entry_src_init_t fesv_init; fib_entry_src_deinit_t fesv_deinit; fib_entry_src_activate_t fesv_activate; fib_entry_src_deactivate_t fesv_deactivate; fib_entry_src_reactivate_t fesv_reactivate; fib_entry_src_add_t fesv_add; fib_entry_src_remove_t fesv_remove; fib_entry_src_path_swap_t fesv_path_swap; fib_entry_src_path_add_t fesv_path_add; fib_entry_src_path_remove_t fesv_path_remove; fib_entry_src_cover_change_t fesv_cover_change; fib_entry_src_cover_update_t fesv_cover_update; fib_entry_src_format_t fesv_format; fib_entry_src_installed_t fesv_installed; fib_entry_src_fwd_update_t fesv_fwd_update; fib_entry_src_get_data_t fesv_get_data; fib_entry_src_set_data_t fesv_set_data; fib_entry_src_contribute_interpose_t fesv_contribute_interpose; fib_entry_src_flag_change_t fesv_flags_change; fib_entry_src_copy_t fesv_copy; } fib_entry_src_vft_t; #define FOR_EACH_SRC_ADDED(_entry, _src, _source, action) \ { \ vec_foreach(_src, (_entry)->fe_srcs) \ { \ if (_src->fes_flags & FIB_ENTRY_SRC_FLAG_ADDED) { \ _source = (_src)->fes_src; \ action; \ } \ } \ } #define FIB_ENTRY_SRC_VFT_INVOKE(_fe, esrc, func, args) \ { \ const fib_entry_src_vft_t *_vft; \ fib_node_index_t _fei = fib_entry_get_index(_fe); \ _vft = fib_entry_src_get_vft(esrc); \ if (_vft->func) { \ (esrc)->fes_flags &= ~FIB_ENTRY_SRC_FLAG_STALE; \ _vft->func args; \ } \ _fe = fib_entry_get(_fei); \ } #define FIB_ENTRY_SRC_VFT_INVOKE_AND_RETURN(esrc, func, args) \ { \ const fib_entry_src_vft_t *_vft; \ _vft = fib_entry_src_get_vft(esrc); \ if (_vft->func) { \ (esrc)->fes_flags &= ~FIB_ENTRY_SRC_FLAG_STALE; \ return (_vft->func args); \ } \ } #define FIB_ENTRY_SRC_VFT_EXISTS(esrc, func) \ (fib_entry_src_get_vft(esrc)->func != 0) extern const fib_entry_src_vft_t*fib_entry_src_get_vft( const fib_entry_src_t *esrc); extern fib_entry_src_t * fib_entry_src_find (const fib_entry_t *fib_entry, fib_source_t source); extern u8* fib_entry_src_format(fib_entry_t *entry, fib_source_t source, u8* s); extern void fib_entry_src_behaviour_register (fib_source_behaviour_t source, const fib_entry_src_vft_t *vft); extern fib_entry_src_cover_res_t fib_entry_src_action_cover_change( fib_entry_t *entry, fib_entry_src_t *esrc); extern fib_entry_src_cover_res_t fib_entry_src_action_cover_update( fib_entry_t *fib_entry, fib_entry_src_t *esrc); extern void fib_entry_src_action_activate(fib_entry_t *fib_entry, fib_source_t source); extern void fib_entry_src_action_deactivate(fib_entry_t *fib_entry, fib_source_t source); extern void fib_entry_src_action_reactivate(fib_entry_t *fib_entry, fib_source_t source); extern fib_entry_t* fib_entry_src_action_add(fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo); extern fib_entry_t* fib_entry_src_action_update(fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo); extern fib_entry_src_flag_t fib_entry_src_action_remove(fib_entry_t *fib_entry, fib_source_t source); extern fib_entry_src_flag_t fib_entry_src_action_remove_or_update_inherit(fib_entry_t *fib_entry, fib_source_t source); extern void fib_entry_src_action_install(fib_entry_t *fib_entry, fib_source_t source); extern void fib_entry_src_action_uninstall(fib_entry_t *fib_entry); extern fib_entry_t* fib_entry_src_action_path_add(fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *path); extern fib_entry_t* fib_entry_src_action_path_swap(fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *path); extern fib_entry_src_flag_t fib_entry_src_action_path_remove(fib_entry_t *fib_entry, fib_source_t source, const fib_route_path_t *path); extern fib_entry_t* fib_entry_src_action_installed(fib_entry_t *fib_entry, fib_source_t source); extern void fib_entry_src_inherit (const fib_entry_t *cover, fib_entry_t *covered); extern fib_forward_chain_type_t fib_entry_get_default_chain_type( const fib_entry_t *fib_entry); extern fib_source_t fib_entry_get_source_i(const fib_entry_t *fib_entry); extern fib_entry_flag_t fib_entry_get_flags_i(const fib_entry_t *fib_entry); extern fib_path_list_flags_t fib_entry_src_flags_2_path_list_flags( fib_entry_flag_t eflags); extern fib_forward_chain_type_t fib_entry_chain_type_fixup(const fib_entry_t *entry, fib_forward_chain_type_t fct); extern void fib_entry_src_mk_lb (fib_entry_t *fib_entry, fib_source_t source, fib_forward_chain_type_t fct, dpo_id_t *dpo_lb); extern fib_protocol_t fib_entry_get_proto(const fib_entry_t * fib_entry); extern dpo_proto_t fib_entry_get_dpo_proto(const fib_entry_t * fib_entry); extern void fib_entry_source_change(fib_entry_t *fib_entry, fib_source_t old_source, fib_source_t new_source); /* * Per-source registration. declared here so we save a separate .h file for each */ extern void fib_entry_src_default_register(void); extern void fib_entry_src_rr_register(void); extern void fib_entry_src_interface_register(void); extern void fib_entry_src_interpose_register(void); extern void fib_entry_src_drop_register(void); extern void fib_entry_src_simple_register(void); extern void fib_entry_src_api_register(void); extern void fib_entry_src_adj_register(void); extern void fib_entry_src_mpls_register(void); extern void fib_entry_src_lisp_register(void); extern void fib_entry_src_module_init(void); #endif