[vpp-dev] NO REPLY FROM VPP FOR PUNT SOCKET REGISTRATION
Hi All, 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 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 (#20990): https://lists.fd.io/g/vpp-dev/message/20990 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] -=-=-=-=-=-=-=-=-=-=-=-
Re: [vpp-dev] NO REPLY FROM VPP FOR PUNT SOCKET REGISTRATION
Hi Ole, My requirement is to sniff the NTP packets using a raw sockets, and process them in my application. I new bee to VPP world. >>The message IDs are dynamic and depend on which plugins are loaded. i do not understand exactly. Thanks, Nousi On Wed, 9 Mar 2022 at 17:35, wrote: > 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",
Re: [vpp-dev] NO REPLY FROM VPP FOR PUNT SOCKET REGISTRATION
Hi All, how to debug vpp punt socket registration fail/stuck? any pointers will be helpful Thanks, Nousi On Wed, 9 Mar 2022 at 18:51, nousi via lists.fd.io wrote: > Hi Ole, > > My requirement is to sniff the NTP packets using a raw sockets, and > process them in my application. > I new bee to VPP world. > > >>The message IDs are dynamic and depend on which plugins are loaded. > i do not understand exactly. > > Thanks, > Nousi > > On Wed, 9 Mar 2022 at 17:35, wrote: > >> 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-&g