Hi,

> I am not getting a reply from vpp.
> Any pointers will be helpful.
> Thanks in advance.
>  
>  logs below.   after " writing punt socket register...:"  log it does not 
> come out.
>  
>  NTPSYNC-TEST:: app start
>  NTPSYNC-TEST:: VPP Server Socket bind Successful (/var/run/vpp-punt.sock)
>  NTPSYNC-TEST:: Connected to vpp...: 0
>  NTPSYNC-TEST:: message id VL_API_PUNT_SOCKET_REGISTER 694
>  NTPSYNC-TEST:: message id VL_API_PUNT_SOCKET_REGISTER 695

The message IDs are dynamic and depend on which plugins are loaded.
Are you sure these are correct?

VAPI provides a much higher level C interface. src/vpp-api/vapi/
Which would allow you to write much less boilerplate.

Ole

>  NTPSYNC-TEST:: type=1 , ntohl=16777216, htonl=16777216
>  NTPSYNC-TEST:: protocol = 17
>  NTPSYNC-TEST:: writing punt socket register...:
>  
>  
>  code:
>  ----------------
>  const char* Unix_socket_path = "/var/run/vpp-punt.sock";
>  
>  int main()
>  {
>     openlog("NTPSYNC-TEST:",0, LOG_USER);
>     syslog(LOG_INFO, "app start");
> 
>     unix_socket_rd = -1;
>     unix_socket_wr = -1;
>     strncpy(strAppName, appName, strlen(appName));
>     maxOutStandingReq = maxOutSize;
>     responseQueSize = respSize;
> 
>     int len, rc;
>     struct sockaddr_un remote;
> 
>     memset(&remote, 0, sizeof(struct sockaddr_un));
> 
>     unix_socket_rd = socket(AF_UNIX, SOCK_DGRAM, 0);
>     if (unix_socket_rd == -1)
>     {
>         syslog(LOG_ERR, "VPP Server socket error (%s)", strerror(errno));
>         return;
>     }
> 
>     remote.sun_family = AF_UNIX;
>     strcpy(remote.sun_path, Unix_socket_path);
>     len = sizeof(remote);
>     unlink(Unix_socket_path);
>     rc = bind(unix_socket_rd, (struct sockaddr *) &remote, len);
>     if (rc == -1)
>     {
>         syslog(LOG_ERR, "VPP Server Socket bind failed (%s)", 
> strerror(errno));
>         close(unix_socket_rd);
>         return;
>     }
>     else
>     {
>         syslog(LOG_INFO, "VPP Server Socket bind Successful (%s)", 
> Unix_socket_path);
>     }
> 
> clib_mem_init(0, 3ULL << 30);
> test_punt_socket_register_message();
> }
> 
> void test_punt_socket_register_message()
> {
>     api_main_t * am = vlibapi_get_main();
>     vl_api_punt_socket_register_t *mp;
>     char *read_path = "/var/run/vpp.sock";
>     int async = 1;
> 
>     int rv = vac_connect("vac_client", NULL, wrap_vac_callback, 32 );
>         if (rv != 0)
>         {
>                         syslog(LOG_INFO, "Connect failed: %d \n", rv);
>                         exit(rv);
>         }
> 
>         syslog(LOG_INFO,"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);
>                 syslog(LOG_INFO," message id VL_API_PUNT_SOCKET_REGISTER %d", 
> VL_API_PUNT_SOCKET_REGISTER);
>                 syslog(LOG_INFO," 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 = IP_PROTOCOL_UDP;
>                 mp->punt.punt.l4.port = ntohs(123);
>                 mp->client_index = am->my_client_index;
>                 strncpy((char*) mp->pathname, read_path, 107);
> syslog(LOG_INFO, " type=%u , ntohl=%u, htonl=%u", PUNT_API_TYPE_L4, 
> clib_host_to_net_u32(PUNT_API_TYPE_L4), 
> clib_net_to_host_u32(PUNT_API_TYPE_L4));
> syslog(LOG_INFO, " protocol = %u", IP_PROTOCOL_UDP);
> 
>                 syslog(LOG_INFO, " writing punt socket register...: \n");
>                 vac_write((char *)mp, sizeof(*mp));
> 
>                 while (result_msg_id != VL_API_PUNT_SOCKET_REGISTER_REPLY);
>         }
> 
> syslog(LOG_INFO," 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);
>                 syslog(LOG_INFO," 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;
>         syslog(LOG_INFO,"\nTook %.2f msec, %.0f msgs/msec \n", (timestamp_end 
> - timestamp_start),
>                                         1/(timestamp_end - timestamp_start));
>         syslog(LOG_INFO,"Exiting...\n");
>         vac_disconnect();
> }  
> 
> -- 
> Thanks & Regards,
> B.Nousilal,
> 
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#20991): https://lists.fd.io/g/vpp-dev/message/20991
Mute This Topic: https://lists.fd.io/mt/89660111/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