I am able to use memfd with 14.04 by updating its kernel to 3.19 (my 14.04 kernel was 3.13 before the update).
I also had to add the following to /usr/include/x86_64-linux-gnu/asm/unistd_64.h #define __NR_memfd_create 319 Hope this works for you, John From: vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] On Behalf Of Florin Coras Sent: Wednesday, September 27, 2017 10:46 AM To: 薛欣颖 <xy...@fiberhome.com> Cc: vpp-dev <vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Failed to use vcl_test_client Hi xyxue, VPP now has a dependency on memfd which is not available in 14.04. Unfortunately, that means you’ll have to switch to ubuntu 16.04. Florin On Sep 27, 2017, at 1:34 AM, 薛欣颖 <xy...@fiberhome.com<mailto:xy...@fiberhome.com>> wrote: Hi Florin, There is a compile error:not support ‘__NR_memfd_create’ /home/vpp_communication/vpp/build-root/../src/vppinfra/linux/syscall.h:45:19: error: '__NR_memfd_create' undeclared (first use in this function) return syscall (__NR_memfd_create, name, flags); Is the kernel version of the problem ? What is your kernel version? The Kernel version of mine: root@ubuntu:/home/vpp_communication/vppsb/vcl-ldpreload/src# uname -a Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux If I change ‘return syscall (__NR_memfd_create, name, flags);’ to ‘return 0’. Will the vcl function be affected? Thanks, xyxue From: Florin Coras<mailto:fcoras.li...@gmail.com> Date: 2017-09-20 13:05 To: 薛欣颖<mailto:xy...@fiberhome.com> CC: dwallacelf<mailto:dwallac...@gmail.com>; vpp-dev<mailto:vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Failed to use vcl_test_client Hi xyxue, I just tested the stack with linux and everything seems to be working fine. I tested the stack with linux using uri_tcp_test and nc and the cut-through path with the vcl test tools. How are you running the server? Florin On Sep 19, 2017, at 8:29 PM, 薛欣颖 <xy...@fiberhome.com<mailto:xy...@fiberhome.com>> wrote: Hi Florin, The server is started on the peer vpp . And through 'sock_test_client/sock_test_server' can be normal communication. Thanks, xyxue From: Florin Coras<mailto:fcoras.li...@gmail.com> Date: 2017-09-20 10:52 To: 薛欣颖<mailto:xy...@fiberhome.com> CC: dwallacelf<mailto:dwallac...@gmail.com>; vpp-dev<mailto:vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Failed to use vcl_test_client Hi xyxue, What you’re getting is a connect fail because, I assume from trace, the server is not started on the peer vpp. Because the server is not started, i.e., bind wasn’t called, when the peer vpp receives the syn it replies with a reset. That reset finally results in a connect fail notify. As for your other questions: 1. Obviously, the one in vpp is for handling connect requests from applications while the one in vppcom is for cut-through session. That is, vpp acts as introduction mechanism for the two apps which afterwards exchange data via shared memory fifos. 2. For exchanging control messages, e.g., bind, connect, accept, they use the binary api. For exchanging data, that is, moving data from vpp to vcl and vice-versa, they use shared memory fifos. 3. That message is a notification from vpp to the application (vcl in this case) regarding a previous connect attempt. As you’ve discovered, if is_fail=1, the connect attempt failed. Hope this helps, Florin On Sep 19, 2017, at 7:30 PM, 薛欣颖 <xy...@fiberhome.com<mailto:xy...@fiberhome.com>> wrote: Hi , There are still problems: root@ubuntu:/home/vpp_communication/vpp/build-root/install-vpp-native/vpp/bin# ./vcl_test_client -U 1.1.1.2 22000 CLIENT: Connecting to server... vl_api_connect_session_reply_t_handler:697: [9478] connect failed: Session failed to connect (-115) Breakpoint 1, send_session_connected_callback (app_index=1, api_context=0, s=0x0, is_fail=1 '\001') at /home/vpp_communication/vpp/build-data/../src/vnet/session/session_api.c:157 157 { (gdb) bt #0 send_session_connected_callback (app_index=1, api_context=0, s=0x0, is_fail=1 '\001') at /home/vpp_communication/vpp/build-data/../src/vnet/session/session_api.c:157 #1 0x00007f35c658459c in stream_session_connect_notify (tc=0x7f358585e3f8, is_fail=<optimized out>, is_fail@entry=1 '\001') at /home/vpp_communication/vpp/build-data/../src/vnet/session/session.c:489 #2 0x00007f35c6456972 in tcp_connection_reset (tc=tc@entry=0x7f358585e3f8) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp.c:258 #3 0x00007f35c6429977 in tcp46_syn_sent_inline (is_ip4=1, from_frame=<optimized out>, node=<optimized out>, vm=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp_input.c:2023 #4 tcp4_syn_sent (vm=<optimized out>, node=<optimized out>, from_frame=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp_input.c:2184 #5 0x00007f35c6962d14 in dispatch_node (last_time_stamp=204974335045786, frame=0x7f35858596c0, dispatch_state=VLIB_NODE_STATE_POLLING, type=VLIB_NODE_TYPE_INTERNAL, node=0x7f3584da06c0, code segment: int send_session_connected_callback (u32 app_index, u32 api_context, stream_session_t * s, u8 is_fail) { vl_api_connect_session_reply_t *mp; unix_shared_memory_queue_t *q; application_t *app; unix_shared_memory_queue_t *vpp_queue; app = application_get (app_index); q = vl_api_client_index_to_input_queue (app->api_client_index); if (!q) return -1; mp = vl_msg_api_alloc (sizeof (*mp)); mp->_vl_msg_id = clib_host_to_net_u16 (VL_API_CONNECT_SESSION_REPLY); mp->context = api_context; if (!is_fail) { vpp_queue = session_manager_get_vpp_event_queue (s->thread_index); mp->server_rx_fifo = pointer_to_uword (s->server_rx_fifo); mp->server_tx_fifo = pointer_to_uword (s->server_tx_fifo); mp->handle = stream_session_handle (s); mp->vpp_event_queue_address = pointer_to_uword (vpp_queue); mp->retval = 0; } else { mp->retval = clib_host_to_net_u32 (VNET_API_ERROR_SESSION_CONNECT_FAIL); } vl_msg_api_send_shmem (q, (u8 *) & mp); return 0; } ruturn message to VCL, connect failed: Session failed to connect I have two question : 1. there are two function "vl_api_connect_sock_t_handler", one in session_api.c, another in vppcom.c, How to work ? 2. How to VCL and VPP communication ? 3. Why the message of VPP to VCL is "send_session_connected_callback" function send ? thanks, xyxue From: Dave Wallace<mailto:dwallac...@gmail.com> Date: 2017-09-19 01:29 To: 薛欣颖<mailto:xy...@fiberhome.com>; vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Failed to use vcl_test_client Hi Xyeue, I believe this patch fixes this issue: https://gerrit.fd.io/r/#/c/8315/ Can you please pull the latest source code and try again? Thanks, -daw- On 9/18/2017 2:43 AM, 薛欣颖 wrote: Hi, When I test vcl ,there is some error : root@ubuntu:/home/vpp_communication/vpp/build-root/install-vpp-native/vpp/bin# ./vcl_test_client -U 1.1.1.2 22000 CLIENT: Connecting to server... msg_handler_internal:429: no handler for msg id 424 .......... ................... ................... ERROR in main(): Bad file descriptor ERROR: connect failed (errno = 9)! Segmentation fault The msg id 424 is VL_API_CONNECT_URI_REPLY .The VL_API_CONNECT_URI_REPLY is registed in vat. Is there anything wrong in my test? The gdb information is shown below: (gdb) bt #0 vl_msg_api_send_shmem (q=q@entry=0x302891c0, elem=elem@entry=0x7faafab32cc8 "\344o\006\060") at /home/vpp_communication/vpp/build-data/../src/vlibmemory/memory_shared.c:584 #1 0x00007fab3c053b55 in send_session_connected_callback (app_index=<optimized out>, api_context=3472551422, s=0x0, is_fail=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vnet/session/session_api.c:186 #2 0x00007fab3c03cc44 in stream_session_connect_notify (tc=0x7faafa776bd8, is_fail=<optimized out>, is_fail@entry=1 '\001') at /home/vpp_communication/vpp/build-data/../src/vnet/session/session.c:489 #3 0x00007fab3bf0f642 in tcp_connection_reset (tc=tc@entry=0x7faafa776bd8) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp.c:257 #4 0x00007fab3bee4077 in tcp46_syn_sent_inline (is_ip4=1, from_frame=<optimized out>, node=<optimized out>, vm=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp_input.c:1938 #5 tcp4_syn_sent (vm=<optimized out>, node=<optimized out>, from_frame=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vnet/tcp/tcp_input.c:2091 #6 0x00007fab3c4159e4 in dispatch_node (last_time_stamp=1926897640132334, frame=0x7faafb34a000, dispatch_state=VLIB_NODE_STATE_POLLING, type=VLIB_NODE_TYPE_INTERNAL, node=0x7faafa86a600, vm=0x7fab3c668320 <vlib_global_main>) at /home/vpp_communication/vpp/build-data/../src/vlib/main.c:1011 #7 dispatch_pending_node (vm=vm@entry=0x7fab3c668320 <vlib_global_main>, pending_frame_index=pending_frame_index@entry=5, last_time_stamp=last_time_stamp@entry=1926897640132334) at /home/vpp_communication/vpp/build-data/../src/vlib/main.c:1161 #8 0x00007fab3c4177a5 in vlib_main_or_worker_loop (is_main=1, vm=0x7fab3c668320 <vlib_global_main>) at /home/vpp_communication/vpp/build-data/../src/vlib/main.c:1622 #9 vlib_main_loop (vm=0x7fab3c668320 <vlib_global_main>) at /home/vpp_communication/vpp/build-data/../src/vlib/main.c:1641 #10 vlib_main (vm=vm@entry=0x7fab3c668320 <vlib_global_main>, input=input@entry=0x7faafab32fa0) at /home/vpp_communication/vpp/build-data/../src/vlib/main.c:1799 #11 0x00007fab3c44f433 in thread0 (arg=140373429486368) at /home/vpp_communication/vpp/build-data/../src/vlib/unix/main.c:534 #12 0x00007fab3ba4dbf8 in clib_calljmp () at /home/vpp_communication/vpp/build-data/../src/vppinfra/longjmp.S:110 #13 0x00007ffe9df58600 in ?? () #14 0x00007fab3c44ffb5 in vlib_unix_main (argc=<optimized out>, argv=<optimized out>) at /home/vpp_communication/vpp/build-data/../src/vlib/unix/main.c:597 #15 0x0000000000000000 in ?? () Thanks, xyxue _______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> https://lists.fd.io/mailman/listinfo/vpp-dev _______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> https://lists.fd.io/mailman/listinfo/vpp-dev
_______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev