Hi All,
I am not getting reply for punt socket register for the following code
*C-Code*
volatile int sigterm_received = 0;
volatile u32 result_ready;
volatile u16 result_msg_id;
/* M_NOALLOC: construct, but don't yet send a message */
#define M_NOALLOC(T,t) \
do { \
result_ready = 0; \
clib_memset (mp, 0, sizeof (*mp)); \
mp->_vl_msg_id = ntohs (VL_API_##T); \
mp->client_index = am->my_client_index; \
} while(0);
void
wrap_vac_callback (unsigned char *data, int len)
{
result_ready = 1;
result_msg_id = ntohs(*((u16 *)data));
vl_api_punt_socket_register_reply_t *rmp =
(vl_api_punt_socket_register_reply_t *)data;
printf(" vpp punt socket path \n", rmp->pathname);
printf("message id : %d\n", result_msg_id);
}
static void
test_connect ()
{
static int i;
int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32 /*
rx queue-length*/);
if (rv != 0) {
printf("Connect failed: %d\n", rv);
exit(rv);
}
printf(".");
vac_disconnect();
i++;
}
static void test_messages (void)
{
api_main_t * am = vlibapi_get_main();
vl_api_show_version_t message;
vl_api_show_version_t *mp;
int async = 1;
int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32 /*
rx queue-length*/);
if (rv != 0) {
printf("Connect failed: %d\n", rv);
exit(rv);
}
printf("Connected to vpp...: %d\n", rv);
double timestamp_start = unix_time_now_nsec() * 1e-6;
/*
* Test vpe_api_write and vpe_api_read to send and recv message for
an
* API
*/
int i;
long int no_msgs = 10;
mp = &message;
for (i = 0; i < no_msgs; i++) {
/* Construct the API message */
M_NOALLOC(SHOW_VERSION, show_version);
printf(" writing show version message: \n");
vac_write((char *)mp, sizeof(*mp));
#ifndef __COVERITY__
/* As given, async is always 1. Shut up Coverity about it */
if (!async)
while (result_ready == 0);
#endif
}
if (async) {
vl_api_control_ping_t control;
vl_api_control_ping_t *mp;
mp = &control;
M_NOALLOC(CONTROL_PING, control_ping);
printf(" writing control ping message...: \n");
vac_write((char *)mp, sizeof(*mp));
while (result_msg_id != VL_API_CONTROL_PING_REPLY);
}
double timestamp_end = unix_time_now_nsec() * 1e-6;
printf("\nTook %.2f msec, %.0f msgs/msec \n", (timestamp_end -
timestamp_start),
no_msgs/(timestamp_end - timestamp_start));
printf("Exiting...\n");
vac_disconnect();
}
#define READ_PATH "/tmp/strongswan-uds-socket"
#define PUNT_SOCKET_REGISTER_REPLY "punt_socket_register_reply"
static void test_punt_socket_register_message(void)
{
api_main_t * am = vlibapi_get_main();
vl_api_punt_socket_register_t *mp;
char *read_buffer;
int msg_length;
char *read_path = READ_PATH;
int async = 1;
int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32 /*
rx queue-length*/);
if (rv != 0) {
printf("Connect failed: %d\n", rv);
exit(rv);
}
printf("Connected to vpp...: %d\n", rv);
double timestamp_start = unix_time_now_nsec() * 1e-6;
if (async) {
mp = vl_msg_api_alloc(sizeof(*mp));
memset(mp, 0, sizeof(*mp));
mp->_vl_msg_id = ntohs(VL_API_PUNT_SOCKET_REGISTER);
printf(" message id VL_API_PUNT_SOCKET_REGISTER
%d",VL_API_PUNT_SOCKET_REGISTER);
printf(" message id VL_API_PUNT_SOCKET_REGISTER
%d",VL_API_PUNT_SOCKET_REGISTER_REPLY);
mp->header_version = ntohl(1);
mp->punt.type = PUNT_API_TYPE_L4;
mp->punt.punt.l4.af = ADDRESS_IP4;
mp->punt.punt.l4.protocol = IPPROTO_UDP;
mp->punt.punt.l4.port = ntohs(4500);
mp->client_index = am->my_client_index;
strncpy(mp->pathname, read_path, 107);
printf(" writing punt socket register...: \n");
vac_write((char *)mp, sizeof(*mp));
while (result_msg_id != VL_API_PUNT_SOCKET_REGISTER_REPLY);
}
printf(" message id VL_API_PUNT_SOCKET_REGISTER
%d",VL_API_CONTROL_PING_REPLY);
if (async) {
vl_api_control_ping_t control;
vl_api_control_ping_t *mp;
mp = &control;
M_NOALLOC(CONTROL_PING, control_ping);
printf(" writing control ping message...: \n");
vac_write((char *)mp, sizeof(*mp));
while (result_msg_id != VL_API_CONTROL_PING_REPLY);
}
double timestamp_end = unix_time_now_nsec() * 1e-6;
printf("\nTook %.2f msec, %.0f msgs/msec \n", (timestamp_end -
timestamp_start),
1/(timestamp_end - timestamp_start));
printf("Exiting...\n");
vac_disconnect();
}
int main (int argc, char ** argv)
{
clib_mem_init (0, 3ULL << 30);
#if 0
test_stats();
#endif
int i;
/*
for (i = 0; i < 10; i++) {
test_connect();
}
*/
/* test_messages();*/
test_punt_socket_register_message();
exit (0);
}
*Compilation Options used*
gcc vpp_api_client_vac_layer.c -o vpp_api_client_vac_layer.o -lpthread
-lvlibmemoryclient -lvppinfra -lvppapiclient -I/usr/include/
*Output*
[root@8f57181df3a1 vpp_c_api_examples]# ./vpp_api_client_vac_layer.o
Connected to vpp...: 0
message id VL_API_PUNT_SOCKET_REGISTER 538 message id
VL_API_PUNT_SOCKET_REGISTER 539 writing punt socket register...:
It is stuck, can you please suggest how to debug this ?
Thanks,
Regards,
Venu
On Fri, 1 Oct 2021 at 14:12, Venumadhav Josyula via lists.fd.io <vjosyula=
[email protected]> wrote:
> Thanks, my mistake, it worked...
>
> On Fri, 1 Oct 2021 at 13:34, Stanislav Zaikin <[email protected]> wrote:
>
>> You need to uncomment clib_mem_init
>>
>> On Fri, 1 Oct 2021 at 10:01, Venumadhav Josyula <[email protected]>
>> wrote:
>>
>>> Hi Ole,
>>>
>>> So instead of the code below, I tried the code from
>>> "src/vpp-api/client/test.c". I directly copied this into my .c file. And
>>> following commands i used
>>>
>>> compilation + linking : - gcc vpp_api_client_vac_layer.c -o
>>> vpp_api_client_vac_layer.o -lpthread -lvlibmemoryclient -lvppinfra
>>> -lvppapiclient -I/usr/include/
>>> code is below
>>> #include<stdio.h>
>>> #include<stdlib.h>
>>> #include <vnet/vnet.h>
>>> #include <vlib/vlib.h>
>>> #include <vlib/unix/unix.h>
>>> #include <vlibapi/api.h>
>>> #include <vppinfra/time.h>
>>> #include <vpp/api/vpe_msg_enum.h>
>>> #include <signal.h>
>>>
>>> #include<vpp-api/client/vppapiclient.h>
>>> #include<vpp-api/client/stat_client.h>
>>>
>>> #define vl_typedefs /* define message structures */
>>> #include <vpp/api/vpe_all_api_h.h>
>>> #undef vl_typedefs
>>>
>>>
>>> volatile int sigterm_received = 0;
>>> volatile u32 result_ready;
>>> volatile u16 result_msg_id;
>>>
>>> /* M_NOALLOC: construct, but don't yet send a message */
>>>
>>> #define M_NOALLOC(T,t) \
>>> do { \
>>> result_ready = 0; \
>>> clib_memset (mp, 0, sizeof (*mp)); \
>>> mp->_vl_msg_id = ntohs (VL_API_##T); \
>>> mp->client_index = am->my_client_index; \
>>> } while(0);
>>>
>>> void
>>> wrap_vac_callback (unsigned char *data, int len)
>>> {
>>> result_ready = 1;
>>> result_msg_id = ntohs(*((u16 *)data));
>>> }
>>>
>>> static void
>>> test_connect ()
>>> {
>>> static int i;
>>> int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32
>>> /* rx queue-length*/);
>>> if (rv != 0) {
>>> printf("Connect failed: %d\n", rv);
>>> exit(rv);
>>> }
>>> printf(".");
>>> vac_disconnect();
>>> i++;
>>> }
>>>
>>> static void test_messages (void)
>>> {
>>> api_main_t * am = vlibapi_get_main();
>>> vl_api_show_version_t message;
>>> vl_api_show_version_t *mp;
>>> int async = 1;
>>>
>>> int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32
>>> /* rx queue-length*/);
>>> if (rv != 0) {
>>> printf("Connect failed: %d\n", rv);
>>> exit(rv);
>>> }
>>>
>>> double timestamp_start = unix_time_now_nsec() * 1e-6;
>>>
>>> /*
>>> * Test vpe_api_write and vpe_api_read to send and recv message
>>> for an
>>> * API
>>> */
>>> int i;
>>> long int no_msgs = 10000;
>>> mp = &message;
>>>
>>> for (i = 0; i < no_msgs; i++) {
>>> /* Construct the API message */
>>> M_NOALLOC(SHOW_VERSION, show_version);
>>> vac_write((char *)mp, sizeof(*mp));
>>> #ifndef __COVERITY__
>>> /* As given, async is always 1. Shut up Coverity about
>>> it */
>>> if (!async)
>>> while (result_ready == 0);
>>> #endif
>>> }
>>> if (async) {
>>> vl_api_control_ping_t control;
>>> vl_api_control_ping_t *mp;
>>> mp = &control;
>>> M_NOALLOC(CONTROL_PING, control_ping);
>>> vac_write((char *)mp, sizeof(*mp));
>>>
>>> while (result_msg_id != VL_API_CONTROL_PING_REPLY);
>>> }
>>>
>>> double timestamp_end = unix_time_now_nsec() * 1e-6;
>>> printf("\nTook %.2f msec, %.0f msgs/msec \n", (timestamp_end -
>>> timestamp_start),
>>> no_msgs/(timestamp_end - timestamp_start));
>>> printf("Exiting...\n");
>>> vac_disconnect();
>>> }
>>>
>>>
>>> int main (int argc, char ** argv)
>>> {
>>> #if 0
>>> clib_mem_init (0, 3ULL << 30);
>>> test_stats();
>>> #endif
>>>
>>> int i;
>>>
>>> for (i = 0; i < 1000; i++) {
>>> test_connect();
>>> }
>>>
>>> test_messages();
>>> exit (0);
>>> }
>>>
>>> It compiled successfully, i got following assert for heap
>>> [root@8f57181df3a1 vpp_c_api_examples]# gdb ./vpp_api_client_vac_layer.o
>>> GNU gdb (GDB) Red Hat Enterprise Linux 8.3-3.el7
>>> Copyright (C) 2019 Free Software Foundation, Inc.
>>> License GPLv3+: GNU GPL version 3 or later <
>>> http://gnu.org/licenses/gpl.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.
>>> Type "show copying" and "show warranty" for details.
>>> This GDB was configured as "x86_64-redhat-linux-gnu".
>>> Type "show configuration" for configuration details.
>>> For bug reporting instructions, please see:
>>> <http://www.gnu.org/software/gdb/bugs/>.
>>> Find the GDB manual and other documentation resources online at:
>>> <http://www.gnu.org/software/gdb/documentation/>.
>>>
>>> For help, type "help".
>>> Type "apropos word" to search for commands related to "word"...
>>> Reading symbols from ./vpp_api_client_vac_layer.o...
>>> (No debugging symbols found in ./vpp_api_client_vac_layer.o)
>>> (gdb) r
>>> Starting program: /root/vpp_c_api_examples/vpp_api_client_vac_layer.o
>>> Missing separate debuginfos, use: debuginfo-install
>>> glibc-2.17-324.el7_9.x86_64
>>> [Thread debugging using libthread_db enabled]
>>> Using host libthread_db library "/lib64/libthread_db.so.1".
>>> vpp_api_client_vac_layer.o:
>>> /vpp/build-root/rpmbuild/vpp-21.06.0/src/vpp-api/client/client.c:295:
>>> vac_connect: Assertion `clib_mem_get_heap ()' failed.
>>>
>>> Program received signal SIGABRT, Aborted.
>>> 0x00007ffff7827387 in raise () from /lib64/libc.so.6
>>> (gdb) bt
>>> #0 0x00007ffff7827387 in raise () from /lib64/libc.so.6
>>> #1 0x00007ffff7828a78 in abort () from /lib64/libc.so.6
>>> #2 0x00007ffff78201a6 in __assert_fail_base () from /lib64/libc.so.6
>>> #3 0x00007ffff7820252 in __assert_fail () from /lib64/libc.so.6
>>> #4 0x00007ffff7f57bcd in vac_connect (name=0x402010 "vac_client",
>>> chroot_prefix=0x0, cb=0x4011d2 <wrap_vac_callback>, rx_qlen=32)
>>> at /usr/src/debug/vpp-21.06.0/src/vpp-api/client/client.c:314
>>> #5 0x0000000000401227 in test_connect ()
>>> #6 0x0000000000401687 in main ()
>>> (gdb)
>>>
>>> Startup.conf
>>> [root@8f57181df3a1 vpp_c_api_examples]# cat /etc/vpp/startup.conf
>>> unix {
>>> #nodaemon
>>> #interactive
>>> log /var/log/vpp/vpp.log
>>> cli-listen /run/vpp/cli.sock
>>> gid vpp
>>> #exec /etc/ipsec-setup.txt
>>> }
>>>
>>> cpu {
>>> main-core 2
>>> }
>>>
>>> dpdk {
>>> dev default {
>>> num-rx-desc 512
>>> num-tx-desc 512
>>> }
>>> socket-mem 1024
>>> dev 0000:00:04.0
>>> uio-driver uio_pci_generic
>>> }
>>>
>>> logging {
>>> default-log-level debug
>>> default-syslog-log-level info
>>> }
>>> [root@8f57181df3a1 vpp_c_api_examples]#
>>> I
>>> Is there some setting i need to do in the startup.conf ?
>>>
>>> Please suggest a way to fix this assert.
>>>
>>> Thanks,
>>> Regards
>>> Venu
>>>
>>> On Thu, 30 Sept 2021 at 21:08, Benoit Ganne (bganne) <[email protected]>
>>> wrote:
>>>
>>>> You should remove -lvlib it is not needed here.
>>>> If you really want to link with vlib, you must fix the link ordering:
>>>> vlib depends upon vppinfra (where os_exit is defined) so you'd need link as
>>>> -lvlib -lvppinfra instead of the opposite (the C linker scan libraries
>>>> symbols in reverse order, so symbols declared in a library are available to
>>>> libraries listed *before*).
>>>>
>>>> Best
>>>> ben
>>>>
>>>> > -----Original Message-----
>>>> > From: [email protected] <[email protected]> On Behalf Of
>>>> Venumadhav
>>>> > Josyula
>>>> > Sent: jeudi 30 septembre 2021 16:09
>>>> > To: Akash S R <[email protected]>
>>>> > Cc: Benoit Ganne (bganne) <[email protected]>; Ole Troan
>>>> > <[email protected]>; RaviKiran Veldanda <[email protected]>;
>>>> vpp-
>>>> > dev <[email protected]>
>>>> > Subject: Re: [vpp-dev] VPP Socket API how to use from the application
>>>> > #socket-api #vpp #sock-api
>>>> >
>>>> > Hi Akash,
>>>> >
>>>> > Thansks, now after devtoolset,
>>>> >
>>>> >
>>>> > @Benoit Ganne (bganne) <mailto:[email protected]> , @Ole Troan
>>>> > <mailto:[email protected]>
>>>> >
>>>> > i am getting following error
>>>> >
>>>> > [root@8f57181df3a1 vpp_c_api_examples]# gcc vpp_api_client_test3.c -o
>>>> > vpp_api_client_test3.o -lvlibmemoryclient -lsvm -lvppinfra -lvlib
>>>> > /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld:
>>>> > /lib/../lib64/libvlib.so: undefined reference to
>>>> > `classify_get_trace_chain'
>>>> > /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld:
>>>> > /lib/../lib64/libvlib.so: undefined reference to
>>>> > `stat_segment_register_gauge'
>>>> > /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld:
>>>> > /lib/../lib64/libvlib.so: undefined reference to `os_exit'
>>>> > collect2: error: ld returned 1 exit status
>>>> > [root@8f57181df3a1 vpp_c_api_examples]#
>>>> >
>>>> > Let me paste the code again,
>>>> > #include<stdio.h>
>>>> > #include<stdlib.h>
>>>> > #include <vlibapi/api.h>
>>>> > #include <vlibmemory/api.h>
>>>> > #include <vpp/api/vpe_msg_enum.h>
>>>> >
>>>> > #define vl_typedefs
>>>> > #define vl_endianfun
>>>> > #include <vpp/api/vpe_all_api_h.h>
>>>> > #undef vl_typedefs
>>>> > #undef vl_endianfun
>>>> >
>>>> > int main()
>>>> > {
>>>> > char *name = "vpp-test-app";
>>>> >
>>>> > clib_mem_init_thread_safe (0, 64ULL << 20);
>>>> >
>>>> > if (vl_client_api_map("/vpe-api"))
>>>> > {
>>>> > printf("unable to map....\n");
>>>> > goto quit;
>>>> > }
>>>> > if (vl_client_connect("vpp-test-app", 0, 32) < 0)
>>>> > {
>>>> > printf("unable to connect \n");
>>>> > vl_client_api_unmap();
>>>> > goto quit;
>>>> > }
>>>> > printf("successfully connected... \n");
>>>> > quit:
>>>> > return 0;
>>>> > }
>>>> >
>>>> > Is this wrong way, i am trying to use APIs ?
>>>> >
>>>> > Thanks,
>>>> > Regards
>>>> > Venu
>>>> >
>>>> >
>>>> > On Thu, 30 Sept 2021 at 19:00, Akash S R <[email protected]
>>>> > <mailto:[email protected]> > wrote:
>>>> >
>>>> >
>>>> > Hey Venu,
>>>> >
>>>> > Try "scl enable devtoolset-9 bash" inside your docker or update
>>>> your
>>>> > gcc version.
>>>> >
>>>> >
>>>> > /Akash S R
>>>> >
>>>> > On Thu, Sep 30, 2021, 18:54 Venumadhav Josyula <
>>>> [email protected]
>>>> > <mailto:[email protected]> > wrote:
>>>> >
>>>> >
>>>> > Hi Benoit,
>>>> >
>>>> > Thanks for quick reply.
>>>> >
>>>> > I have docker with following
>>>> > [root@8f57181df3a1 vpp_c_api_examples]# rpm -qa | grep
>>>> vpp
>>>> > vpp-lib-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-api-lua-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-api-python3-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-debuginfo-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-selinux-policy-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-plugins-21.06.0-4~g0d9d3a0.x86_64
>>>> > vpp-devel-21.06.0-4~g0d9d3a0.x86_64
>>>> >
>>>> > This will vpp running in it.
>>>> >
>>>> > [root@8f57181df3a1 /]# cat /etc/redhat-release
>>>> > CentOS Linux release 7.3.1611 (Core)
>>>> > [root@8f57181df3a1 /]#
>>>> >
>>>> > > Eg. use devtoolset-9 (gcc-9).
>>>> >
>>>> >
>>>> > How do I use it ?
>>>> >
>>>> > Thanks,
>>>> > Regards,
>>>> > Venu
>>>> >
>>>> >
>>>> > On Thu, 30 Sept 2021 at 18:47, Benoit Ganne (bganne)
>>>> > <[email protected] <mailto:[email protected]> > wrote:
>>>> >
>>>> >
>>>> > You should upgrade your compiler... GCC-4 is
>>>> way too
>>>> > old.
>>>> > Eg. use devtoolset-9 (gcc-9).
>>>> >
>>>> > Best
>>>> > ben
>>>> >
>>>> > > -----Original Message-----
>>>> > > From: [email protected] <mailto:
>>>> [email protected]>
>>>> > <[email protected] <mailto:[email protected]> > On Behalf Of
>>>> > Venumadhav
>>>> > > Josyula
>>>> > > Sent: jeudi 30 septembre 2021 14:49
>>>> > > To: [email protected] <mailto:
>>>> [email protected]>
>>>> > > Cc: RaviKiran Veldanda <[email protected]
>>>> > <mailto:[email protected]> >; vpp-dev <vpp-
>>>> > > [email protected] <mailto:[email protected]> >
>>>> > > Subject: Re: [vpp-dev] VPP Socket API how to
>>>> use from
>>>> > the application
>>>> > > #socket-api #vpp #sock-api
>>>> > >
>>>> > > Hi Ole / Others,
>>>> > >
>>>> > >
>>>> > >
>>>> > > Thanks for your email, i getting following
>>>> compilation
>>>> > error
>>>> > > [root@8f57181df3a1 vpp_c_api_examples]# gcc
>>>> > vpp_api_client_test3.c -o
>>>> > > vpp_api_client_test3.o -lvlibmemoryclient
>>>> -lsvm -
>>>> > lvppinfra -lvlib
>>>> > > In file included from
>>>> > /usr/include/vppinfra/error.h:41:0,
>>>> > > from
>>>> /usr/include/vlibapi/api.h:24,
>>>> > > from
>>>> vpp_api_client_test3.c:3:
>>>> > > /usr/include/vppinfra/clib.h:43:18: error:
>>>> missing
>>>> > binary operator before
>>>> > > token "("
>>>> > > #if __has_include(<vppinfra/config.h>)
>>>> > > ^
>>>> > > In file included from
>>>> > /usr/include/vppinfra/mem.h:49:0,
>>>> > > from
>>>> /usr/include/vppinfra/vec.h:42,
>>>> > > from
>>>> > /usr/include/vppinfra/error.h:53,
>>>> > > from
>>>> /usr/include/vlibapi/api.h:24,
>>>> > > from
>>>> vpp_api_client_test3.c:3:
>>>> > > /usr/include/vppinfra/string.h:92:34: error:
>>>> expected
>>>> > ';', ',' or ')'
>>>> > > before 'dst'
>>>> > > clib_memcpy_fast (void *restrict dst, const
>>>> void
>>>> > *restrict src, size_t n)
>>>> > > ^
>>>> > > [root@8f57181df3a1 vpp_c_api_examples]# vim
>>>> > /usr/include/vppinfra/clib.h
>>>> > > +43
>>>> > > [root@8f57181df3a1 vpp_c_api_examples]# vim
>>>> > /usr/include/vppinfra/clib.h
>>>> > > +43
>>>> > > [root@8f57181df3a1 vpp_c_api_examples]# gcc
>>>> --version
>>>> > > gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
>>>> > > Copyright (C) 2015 Free Software Foundation,
>>>> Inc.
>>>> > > This is free software; see the source for
>>>> copying
>>>> > conditions. There is NO
>>>> > > warranty; not even for MERCHANTABILITY or
>>>> FITNESS FOR
>>>> > A PARTICULAR
>>>> > > PURPOSE.
>>>> > >
>>>> > > [root@8f57181df3a1 vpp_c_api_examples]#
>>>> > >
>>>> > >
>>>> > > -----------------
>>>> > >
>>>> > > c -code
>>>> > > ----------------
>>>> > >
>>>> > >
>>>> > > #include<stdio.h>
>>>> > > #include<stdlib.h>
>>>> > > #include <vlibapi/api.h>
>>>> > > #include <vlibmemory/api.h>
>>>> > > #include <vpp/api/vpe_msg_enum.h>
>>>> > >
>>>> > > #define vl_typedefs
>>>> > > #define vl_endianfun
>>>> > > #include <vpp/api/vpe_all_api_h.h>
>>>> > > #undef vl_typedefs
>>>> > > #undef vl_endianfun
>>>> > >
>>>> > > int main()
>>>> > > {
>>>> > > char *name = "vpp-test-app";
>>>> > >
>>>> > > clib_mem_init_thread_safe (0, 64ULL << 20);
>>>> > >
>>>> > > if (vl_client_api_map("/vpe-api"))
>>>> > > {
>>>> > > printf("unable to map....\n");
>>>> > > goto quit;
>>>> > > }
>>>> > > if (vl_client_connect("vpp-test-app", 0,
>>>> 32) < 0)
>>>> > > {
>>>> > > printf("unable to connect \n");
>>>> > > vl_client_api_unmap();
>>>> > > goto quit;
>>>> > > }
>>>> > > printf("successfully connected... \n");
>>>> > > quit:
>>>> > > return 0;
>>>> > > }
>>>> > >
>>>> > >
>>>> > > ------------
>>>> > >
>>>> > >
>>>> > > Can you please suggest what can i be doing
>>>> worng ?
>>>> > >
>>>> > >
>>>> > > Thanks,
>>>> > > Regards,
>>>> > > Venu
>>>> > >
>>>> > >
>>>> > > On Thu, 30 Sept 2021 at 13:21, <
>>>> [email protected]
>>>> > <mailto:[email protected]>
>>>> > > <mailto:[email protected]
>>>> > <mailto:[email protected]> > > wrote:
>>>> > >
>>>> > >
>>>> > > Hi Venu,
>>>> > >
>>>> > > > Any examples for VAPI shared to use
>>>> binary
>>>> > APIs ?
>>>> > >
>>>> > > Try this for a start:
>>>> > > https://git.fd.io/vpp/tree/src/vpp-
>>>> > api/vapi/vapi_c_test.c
>>>> > >
>>>> > > Cheers,
>>>> > > Ole
>>>> > >
>>>> > >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>>
>>>>
>>>
>>>
>>>
>>
>> --
>> Best regards
>> Stanislav Zaikin
>>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#20300): https://lists.fd.io/g/vpp-dev/message/20300
Mute This Topic: https://lists.fd.io/mt/85796959/21656
Mute #vpp:https://lists.fd.io/g/vpp-dev/mutehashtag/vpp
Mute #socket-api:https://lists.fd.io/g/vpp-dev/mutehashtag/socket-api
Mute #sock-api:https://lists.fd.io/g/vpp-dev/mutehashtag/sock-api
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-