aboutsummaryrefslogtreecommitdiffstats
path: root/src/vcl
AgeCommit message (Collapse)AuthorFilesLines
2020-08-18vcl: allow vcl worker index to be set by applicationsIJsbrand Wijnands2-0/+11
When using vppcom_session* apis to setup TCP sessions in applications build outside of the VPP repository, it is necessary to set the worker_index explicitly when these apis are called from the none-VCL worker threads. An example is when data is to be sent to the TCP session that is originated from a different thread, like the main program thread or from the bin api thread. This change allows the application to set it. Type: fix Signed-off-by: IJsbrand Wijnands <ice@cisco.com> Change-Id: I37f3654a49ea9a8cf3a0d3d0e672583018c12299 (cherry picked from commit 6017ff0dd7a27c062d0ad4687bfc70a69747ac55)
2020-08-18vcl: disconnect both flavors of bapi transport on destroyFlorin Coras1-5/+8
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6697296b45c5816a31535b0cf44b8e726292b8bb (cherry picked from commit dc0ded7dd7a6b8ee68df25cd56666de804e55e64)
2020-08-18vcl: add separate fcntl64 ldp handlerFlorin Coras1-5/+12
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Idb81e2901398dd6ae94931c705a704c7b52bbb36 (cherry picked from commit d7586d50f68655631482f33a83a1fe6f4f21ff64)
2020-08-13vcl: generate select events on read/write errorsFlorin Coras2-8/+9
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3429f9d0406b6d710846fc82d77400f26f77fdf4 (cherry picked from commit 5e6222a0332e38316b5a58b23c35cca69bb72025)
2020-08-13vcl: fix use-after-freeBenoît Ganne1-1/+2
Make sure we disconnect from vlib prior to free-ing the last worker, as we'll need to access it. Type: fix Change-Id: Id5bdd17f0f5efa1ce52021b4270eb4f1e95cc61d Signed-off-by: Benoît Ganne <bganne@cisco.com> (cherry picked from commit 38ab5672b599df8ef201ca6733c9b008c37fdfa3)
2020-08-13vcl: ensure sessions are open on select eventsFlorin Coras1-7/+5
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I4d56b61af574dfdaf6028160ce331606bdf65609 (cherry picked from commit f49cf470c583507fa1b5b841887107071701ef5e)
2020-08-13vcl: expand vcl select maps in ldp if neededFlorin Coras1-4/+5
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I56c487821233cebf2146745a4706cb573cc088a5 (cherry picked from commit cbce80aaa3f1853856d4d64c95f10d65caa4d786)
2020-08-13vcl: fix app destroyFlorin Coras3-21/+21
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I21daa87b1a301142270a1bf20680dd9e9395aac9 (cherry picked from commit ce815deb72fd3941b000aecec931131afc9d6c34)
2020-08-13misc: strcpy be goneDave Barach1-1/+1
Causes static analysis "vulnerability" warnings Type: fix Ticket: VPP-1837 Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I272fa69251d70f62178e6dff0423c16f99937af1 (cherry picked from commit 0250090fc0c24214cb1fa969f6e2f585099ee36b)
2020-08-13vcl: fix ldp recv return on errorFlorin Coras1-1/+4
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0875705d3a0c95f2781b0595ef27a30486438aae (cherry picked from commit 2a6642e95dc18d7c56f87b74a70658b8312b8c08)
2020-08-13vcl: fix ldp writev 0 vecsFlorin Coras1-12/+8
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iec5db8dcf3a019b731e15fd79d0208d6eb10943b (cherry picked from commit eda1b8c32f9857bb749835b0189af002b224927d)
2020-08-12vcl: fix ldp read on closing sessionFlorin Coras2-15/+10
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I60be191866d20721951ad22f571a2a3275511e12 (cherry picked from commit 067f9544d52c95c0b60b0e8425fce1e295120180)
2020-08-12vcl: clear accept msg flagsFlorin Coras2-1/+1
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Idb513232e7b091c8f767726bfa1deb10a7e3b751 (cherry picked from commit e88845e4fea2c6b6743ff7790cc2247631d65189)
2020-08-12vcl: fix session closing errorFlorin Coras1-1/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I94f1365569e98d43486d9528faafc6d7c3ad88f7 (cherry picked from commit 190dc1f6782eba4c49511636570eef678d1bac16)
2020-08-12vcl: always report EPOLLHUP/EPOLLRDHUP on closeFlorin Coras1-4/+0
Type: fix Change-Id: I3d24a7973c7113ffeb9109e89cda7fa960e73a5b Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit ddb90a063cb3fa797257d8a632cba8cf2a01a455)
2020-08-12vcl: add rx event on epoll ctl if neededFlorin Coras2-2/+18
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ib6d0387076a4bb0b52e4cdfdcd62b6060b704fe6 (cherry picked from commit 6e3c1f8ec3faa8f0cad591fada32ad2f506ec0a0)
2020-08-12vcl: hold errno when calling LDBGhanlin1-1/+5
Type: fix Call trace of LDBG: LDBG->clib_warning->_clib_error->dispatch_message->os_puts->writev However, writev will hijacked by LDP, and then execute following code: if ((errno = -ldp_init ())) return -1; Now, errno will be set. Because we always call LDBG just before return from ldp_accept4, listen, and etc. So errno will be overwritted after LDBG called. Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: I7a90f3a14772994f11f09650481411796e3f5630 (cherry picked from commit 9f3f18f99fd321cdcfc331e92b10b64f0ef590b3)
2020-08-12vcl: EPOLLOUT should be generated when epoll_ctl called with EPOLLOUThanlin1-0/+20
event Type: fix When we call epoll_ctl to add or mod fd with EPOLLOUT event, mostly to check if we can write. So we expect a EPOLLOUT event should be generated immediately unless tx queue is full. Signed-off-by: hanlin <hanlin_wang@163.com> Change-Id: Ie99986a44dbb07b6ff2fba6512171056f79e77bd (cherry picked from commit 475c9d7bcd0f2ceca77022eaef67ad9a84365609)
2020-08-12vcl: RX event may lost when accept session repeatedlywanghanlin1-1/+1
Type: fix Some applications may call accept repeatedly to process all connect request until get EAGIAIN error. Subsequent call may get RX event of previous accepted session, then should process it rather than just discard it. Signed-off-by: wanghanlin <wanghanlin@corp.netease.com> Change-Id: Ice53442de66289a62591b79a9cc31e883e894c23 (cherry picked from commit 96453fd2417ebd1d69354a7fb692976129cea80e)
2020-08-12vcl: resolve VCL part session cleanup issueYu Ping1-0/+2
In Nginx performance test, we notice that there are so many session kept open with the state of TRANSPORT_DELETE, and it is root caused that vppcom fails to return close state. Type: fix Change-Id: Ia30f959e0e5adb5b8bcfa13fb1dd7b2cb410a31b Signed-off-by: Yu Ping <ping.yu@intel.com> (cherry picked from commit b2955355cc9a654447d8647e33def67cd27892f6)
2019-12-01vcl: if the ldp user send buf with 0 len, it will assert failed.jiangxiaoming1-1/+1
Type: fix Change-Id: I8ff60cf8726c463491c687e170ad0b1026a1303a Signed-off-by: jiangxiaoming <jiangxiaoming@outlook.com> (cherry picked from commit ff31ac6809d9913ebd2f58a3a4153a0f419b9a77)
2019-11-28vcl: Handle newer Glibc (>2.28) where fcntl is actually fcntl64Carl Smith3-0/+42
Glibc 2.28 now provides fcntl64 which is used instead of fcntl by defining fcntl as fcntl64 in fcntl.h Type: fix Change-Id: I87fedfbf3e0d241aafdc920e90f824d71353e0e6 Signed-off-by: Carl Smith <carl.smith@alliedtelesis.co.nz> (cherry picked from commit e16707b5b2195fda47c1a3db7ba61f30055d2dbc)
2019-11-28vcl: fix nonblocking accept with >1 event in the queueCarl Smith1-3/+3
We discard unwanted events until we get an ACCEPTED. But if we are non-blocking we need to check the queue length every time and EAGAIN if empty before waiting. Type: fix Signed-off-by: Carl Smith <carl.smith@alliedtelesis.co.nz> Change-Id: Ie0c7e5cb00f0d37d2e1534f8bb384221ff56f2e3 (cherry picked from commit 592a909a302262cf4088a5468b8e427f577725e8)
2019-11-28vcl: fix epoll connected events sidFlorin Coras1-2/+1
Type: fix Use sid returned by vcl_session_connected_handler instead of trying to infer it from vpp session handle. Change-Id: Ic0fbb90ec2bd851b435fc3f2a34265ac9a8ab29f Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit f1653e62fe41e3df429aadaaab22d0cc8aaa227a)
2019-11-18vcl: handle segment map errorsFlorin Coras1-8/+12
Type: fix Change-Id: Ibd122a4565c067627c4bbc8cac7df2d5b6497392 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit dbc9c599b9d4453c7433ac59dd21f088778e024b)
2019-11-15vcl: add api to set lcl ipFlorin Coras2-6/+40
Type: feature Change-Id: I40169fbbe8a20670dd612c341b6c78b5c925bf74 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit ef7cbf6adf1882af4d4ae8657632d4a2a59efcb2)
2019-11-05vcl: handle rx notifications on reused sessionsFlorin Coras1-0/+2
Type: fix Ignore events on sessions that have been reused but not fully initialized. Change-Id: Ided020eb5245d665d0a2e4a9e1f8a6dddebae009 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit bd52e46fe8193182cce150292e9df1c517795011)
2019-10-03vcl: initialize ctrl_mq in workersFlorin Coras2-1/+5
Type: fix Change-Id: I1b9c8b0f9292f039b941e18d8aca5d734d5f1e77 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 22ba3303d8e1ead33a4d032a532e38d255461c8a)
2019-10-03vcl: allow non-blocking connectsFlorin Coras2-3/+16
Type: feature Change-Id: I55349f482ce6781337f747b2f0d2c0a027c3a675 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 57c88938f8a80e63e7307cacaca23b0ab3a51b6c)
2019-09-30session: move ctrl messages from bapi to mqFlorin Coras5-167/+133
Type:refactor Moves connect, disconnect, bind, unbind and app detach to message queue from binary api. Simplifies app/vcl interaction with the session layer since all session control messages are now handled over the mq. Add/del segment messages require internal C api changes which affect all builtin applications. They'll be moved in a different patch and might not be back portable to 19.08. Change-Id: I93f6d18e551b024effa75d47f5ff25f23ba8aff5 Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 458089bbad9cf5bef6cf8119f23fc44e66b36ad3)
2019-09-24vcl: fix ldp_set_app_name overflowBenoît Ganne1-5/+2
In case of overflow, we null-terminate the parameter ('app_name') instead of ldp global name ('ldp->app_name'). Moreover, snprintf() always safely null-terminate the destination string even in case of overflow. Type: fix Fixes: 048b1d6ab7 Change-Id: I4d8b0e020a228e982b6699d652b341c5afe92993 Signed-off-by: Benoît Ganne <bganne@cisco.com> (cherry picked from commit 747b3d8b0e045edb166738ecde99dcc951212988)
2019-08-05vcl: fix bapi disconnect with socket transportFlorin Coras3-1/+13
Type:fix Change-Id: I7b69c28118f3d7054a20ca48792dfc403a8e2694 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-08-02vcl: initialize worker thread index and heap map slotFlorin Coras1-0/+3
Type: fix Change-Id: I7e762b43a2a074dc81cb7b0f6446e315e63ecae5 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-31vcl: fix epoll chain validationFlorin Coras1-22/+22
Type:fix Change-Id: I91dfe7e0ae2e632022fbf639ca16c93f570849de Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-29vcl: fix config parsing of hex valuesFlorin Coras1-24/+23
Type:fix Change-Id: I31f35dd86fb6efb04d4a449f7fc834296baaa043 Signed-off-by: Tal Saiag <tal.saiag@gmail.com> Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-19vcl: fix coverity warningFlorin Coras1-1/+2
Type:fix Change-Id: I7b91ce9359f94131882ab430606586b1a6cf3e02 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-19session: Use parent_handle instead of transport_optsNathan Skrzypczak4-5/+5
Type: feature This is mostly used for quic in the case of a stream creation (i.e. connect on an already established QUIC session). We want do default parent_handle to INVALID to be able to distinguish it from parent_handle = 0 Change-Id: Id5ac0b0155a3c44e51334231b711e4fd87a96a10 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-18vcl: add QUIC supportNathan Skrzypczak3-15/+200
Type: feature * Adds the concept of a "connectable listener" : a session that can be both connected and accepted on. * vppcom_session_is_connectable_listener (fd) that tells if the fd is a connectable listener * vppcom_session_listener (fd) that gives you the listener's fd that accepted the session (if any) * vppcom_session_n_accepted (fd) that gives the number of sessions a listener accepted. Change-Id: Id89d67d8339fb15a7cf7e00a9c5448175eca04fc Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-18session: Refactor invalid session idx/handleNathan Skrzypczak1-0/+1
Type: refactor Change-Id: I885d9d2af1674f705339e3e96f87ff766965c9e5 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-07-12vcl: fix namespace debug printBenoît Ganne1-2/+1
vcm->cfg.namespace_id is a vector and not a null-terminated C-string. Type: fix Fixes: 8af2054b78 Change-Id: I9324712f053066790a30fed617c9cac673f0fbd7 Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-07-08vcl: add worker unregister apiFlorin Coras2-0/+12
Type:feature Change-Id: Ie73644aed94e58d5dce822de5000183e414401df Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-08vcl: cleanup listener accept fifoFlorin Coras1-0/+14
Type: fix Change-Id: Ic470d429f4bf1924185f720d66efe06f4727bcbd Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-07-02vcl: handle fd rcv msg errorFlorin Coras1-4/+12
Type:fix Also cleanup worker fds on error. Reported by coverity Change-Id: I52cf77ca90e9ba1cc8ee9ddb3edaeabdc073beda Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-29svm: rename fifo tx notifications to reflect useFlorin Coras1-8/+8
Type: refactor Change-Id: I651db44acdcb666a9c63e1037352cf88c68795b5 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-26hsa: move vcl test apps to hsaFlorin Coras7-4812/+1
Type: refactor Change-Id: I352975585c1091bfc5b85d7f8fe985f9059820a7 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-07build: add -Wall and -fno-common, fix reported issuesBenoît Ganne2-10/+6
Type: refactor Change-Id: I8489ccd54411c2aa9355439c5641dc31012c64a2 Signed-off-by: Benoît Ganne <bganne@cisco.com> Signed-off-by: Damjan Marion <damarion@cisco.com>
2019-06-06vcl: avoid hash table lookup on acceptFlorin Coras2-24/+27
Type: refactor Change-Id: I363a97b9f5ab0dbda78e13582630e78d57fb83e7 Signed-off-by: Florin Coras <fcoras@cisco.com>
2019-06-06vcl: cap epoll dequeue batch size to max eventsFlorin Coras1-14/+14
Type: fix Change-Id: Ia9be1413cf9423552137885521cefdbecc3e5df5 Signed-off-by: Florin Coras <fcoras@cisco.com> Signed-off-by: Ping Yu <ping.yu@intel.com>
2019-05-16Add transport_opts to connect_sock bapiNathan Skrzypczak2-0/+2
Needed by QUIC to distinguish Q/Ssessions Change-Id: Idcc9e46f86f54a7d06ce6d870edec1766e95c82d Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
2019-05-09vls: relax copy on fork locksFlorin Coras1-2/+2
Change-Id: I08cb7180364a5ef8444c9895c6d4f4842661b2a7 Signed-off-by: Florin Coras <fcoras@cisco.com>