Hi there,

Is there any reason you don’t want to use the higher level C API? VAPI. 

That has an API call for dumping interfaces.
Then you don’t need to interact with the shared memory rings directly. 

Cheers 
Ole

> On 12 Sep 2018, at 14:28, "wangchuan...@163.com" <wangchuan...@163.com> wrote:
> 
> Hi Dave,
>      Thanks for your help!
> In the test.c ,  I see    "if (async) {  *send-ping* ".   
> And vac_connect's 3rd input-param set to NULL, I want the operation-by-c-api 
> to be synch.
> 
> Even no change, it (src/vpp-api/client) can not work successfully. 
> Is there something wrong?
> 
> Maybe, should  I follow another example?
> Can you give me a example that can dump sw_interfaces? 
> Be deeply grateful.
> 
> wangchuan...@163.com
>  
> From: Dave Barach (dbarach)
> Date: 2018-09-11 21:10
> To: wangchuan...@163.com; vpp-dev@lists.fd.io
> Subject: RE: [vpp-dev] VPP's C-type-api example
> The typical coding pattern to use when you don’t know how many messages will 
> come back: send a dump request, followed by an echo-ping.
>  
> When the ping reply shows up, the dump is complete...
>  
> HTH... Dave
>  
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of 
> wangchuan...@163.com
> Sent: Tuesday, September 11, 2018 4:34 AM
> To: vpp-dev <vpp-dev@lists.fd.io>
> Subject: [vpp-dev] VPP's C-type-api example
>  
> Hi all,
>     I code my example following src/vpp-api/client, but do {vac_read}while(1) 
> often block when the results-num does not know. 
> It shows  pthread_cond_wait when gdb.
> Help please! 
> Thanks very much!
>  
> void printIntefaces()
> {
>   api_main_t * am = &api_main;
>   vl_api_sw_interface_dump_t message;
>   M_NOALLOC(SW_INTERFACE_DUMP);
>   message.name_filter_valid = 0;
>   strcpy(message.name_filter, "Gigabit");
>   vac_write((char *)&message, sizeof(message));
>   char* pMsg = NULL;
>   int nLen = 0;
>   int ret = 0;
>   int nCount = 0;
>   do  {
>     printf("begin interface read .. \n");
>     ret = vac_read(&pMsg, &nLen, 1);
>     printf("begin interface end .. \n");
>     if(ret != -1)
>       {
>     vl_api_sw_interface_details_t* pSV = (vl_api_sw_interface_details_t*)pMsg;
>     printf("%lu:%s  \n", ntohl(pSV->sw_if_index), pSV->interface_name);
>       vac_free(pMsg);
>         nCount += 1;
>       } 
>     else{
>       break;
>     }
>   }while(1);
>  printf("get real count[%d] \n", nCount);
> }
>  
> wangchuan...@163.com
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> 
> View/Reply Online (#10475): https://lists.fd.io/g/vpp-dev/message/10475
> Mute This Topic: https://lists.fd.io/mt/25510961/675193
> Group Owner: vpp-dev+ow...@lists.fd.io
> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [otr...@employees.org]
> -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10476): https://lists.fd.io/g/vpp-dev/message/10476
Mute This Topic: https://lists.fd.io/mt/25510961/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to