Hi Igor, For connected UDP, you can’t specify the remote endpoint, i.e., the remote ip:port pair. That’s because you’ve connected the vcl session to a peer, which ultimately means that the session in vpp is pinned to a worker and will always send/receive traffic to/from only one peer.
You can use sendo with a null ep with connected udp but that is equivalent to just calling vppcom_write(), as we don’t currently support sendto flags. Regards, Florin > On Jun 1, 2020, at 6:27 AM, [email protected] wrote: > > Hi > > I'm trying to use vppcom_session_sendto function in order to send UDP > traffic. > According to code: > > int > vppcom_session_sendto (uint32_t session_handle, void *buffer, > uint32_t buflen, int flags, vppcom_endpt_t * ep) > { > vcl_worker_t *wrk = vcl_worker_get_current (); > vcl_session_t *s; > > s = vcl_session_get_w_handle (wrk, session_handle); > if (!s) > return VPPCOM_EBADFD; > > if (!buffer) > return VPPCOM_EINVAL; > > if (ep) > { > if (s->session_type != VPPCOM_PROTO_UDP > || (s->flags & VCL_SESSION_F_CONNECTED)) > return VPPCOM_EINVAL; > > /* Session not connected/bound in vpp. Create it by 'connecting' it */ > if (PREDICT_FALSE (s->session_state == STATE_CLOSED)) > { > vcl_send_session_connect (wrk, s); > } > else > { > s->transport.is_ip4 = ep->is_ip4; > s->transport.rmt_port = ep->port; > vcl_ip_copy_from_ep (&s->transport.rmt_ip, ep); > } > } > > if (flags) > { > // TBD check the flags and do the right thing > VDBG (2, "handling flags 0x%u (%d) not implemented yet.", flags, flags); > } > > return (vppcom_session_write_inline (wrk, s, buffer, buflen, 1, > s->is_dgram ? 1 : 0)); > } > > session which is used in sendto must be closed because of "s->flags & > VCL_SESSION_F_CONNECTED" condition. If i give connected session i receive the > following: > > [root@5g-control-1 ~]# VCL_DEBUG=2 VCL_CONFIG=/etc/vpp/vcl1.conf > /root/client-server/build/vcl-client-app u 192.168.2.1 1000 > VCL<6204>: configured VCL debug level (2) from VCL_DEBUG! > VCL<6204>: allocated VCL heap = 0x7efe90561010, size 1073741824 (0x40000000) > VCL<6204>: configured heapsize 1073741824 > VCL<6204>: configured rx_fifo_size 40000000 (0x2625a00) > VCL<6204>: configured tx_fifo_size 40000000 (0x2625a00) > VCL<6204>: configured api-socket-name (/tmp/vpp-api1.sock) > VCL<6204>: completed parsing vppcom config! > vppcom_connect_to_vpp:502: vcl<6204:0>: app (server-app) is connected to VPP! > vppcom_app_create:1201: vcl<6204:0>: sending session enable > vppcom_app_create:1209: vcl<6204:0>: sending app attach > vppcom_app_create:1217: vcl<6204:0>: app_name 'server-app', my_client_index 0 > (0x0) > vppcom_session_create:1280: vcl<6204:0>: created session 0 > vppcom_session_connect:1731: vcl<6204:0>: session handle 0 (STATE_CLOSED): > connecting to peer IPv4 192.168.2.1 port 6000 proto UDP > vcl_session_connected_handler:503: vcl<6204:0>: session 0 [0x0] connected! > rx_fifo 0x244019900, refcnt 1, tx_fifo 0x244019800, refcnt 1 > vppcom_session_connect:1753: vcl<6204:0>: session 0 [0x0]: connect succeeded! > ERROR when calling vppcom_session_sendto(): Invalid argument > > ERROR: vppcom_session_sendto() failed (errno = 22)! > > At the same time if i give closed session it returns error "Transport > endpoint is not connected". > > VCL<40088>: configured VCL debug level (2) from VCL_DEBUG! > VCL<40088>: allocated VCL heap = 0x7f98d8678010, size 1073741824 (0x40000000) > VCL<40088>: configured heapsize 1073741824 > VCL<40088>: configured rx_fifo_size 40000000 (0x2625a00) > VCL<40088>: configured tx_fifo_size 40000000 (0x2625a00) > VCL<40088>: configured api-socket-name (/tmp/vpp-api1.sock) > VCL<40088>: completed parsing vppcom config! > vppcom_connect_to_vpp:502: vcl<40088:0>: app (server-app) is connected to VPP! > vppcom_app_create:1201: vcl<40088:0>: sending session enable > vppcom_app_create:1209: vcl<40088:0>: sending app attach > vppcom_app_create:1217: vcl<40088:0>: app_name 'server-app', my_client_index > 256 (0x100) > vppcom_session_create:1280: vcl<40088:0>: created session 0 > vppcom_session_write_inline:2053: vcl<40088:0>: session 0 > [0xffffffffffffffff]: is not open! state 0x0 (STATE_CLOSED) > ERROR when calling vppcom_session_sendto(): Transport endpoint is not > connected > ERROR: vppcom_session_sendto() failed (errno = 107)! > vl_client_disconnect:323: queue drain: 531 > > Maybe i'm using it in a wrong way. Can you please assist? > > Best Regards, > Igor > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#16599): https://lists.fd.io/g/vpp-dev/message/16599 Mute This Topic: https://lists.fd.io/mt/74604071/21656 Mute #vnet: https://lists.fd.io/mk?hashtag=vnet&subid=1480452 Mute #vpp-hoststack: https://lists.fd.io/mk?hashtag=vpp-hoststack&subid=1480452 Group Owner: [email protected] Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
