Hi,
Trying a IPv6 listener and binding on the socket is giving the below error:
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | UNKNOWN[9230]/ T=main | _componentMain.c _uarttotcpv6listener_psaComponent_Init() 30 | Initializing uarttotcpv6listener_psaComponent component library.
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | uarttotcpv6listener_psaComponentExe[9230]/framework T=main | mem.c InitPool() 400 | Memory pool name ‘framework.msgs-LogControlProtocol’ is truncated to ‘framework.msgs-LogControlProtoc’
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | uarttotcpv6listener_psaComponentExe[9230]/framework T=main | messagingSession.c le_msg_SetSessionRecvHandler() 2078 | SetSessionRecv: Unix socket session
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | uarttotcpv6listener_psaComponentExe[9230]/framework T=main | mem.c le_mem_ForceAlloc() 1172 | Memory pool ‘framework.SigMonitor’ overflowed. Expanded to 1 blocks.
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | uarttotcpv6listener_psaComponentExe[9230]/framework T=main | mem.c le_mem_ForceAlloc() 1172 | Memory pool ‘framework.SigHandler’ overflowed. Expanded to 1 blocks.
Dec 17 12:31:42 swi-mdm9x28-wp user.debug Legato: DBUG | uarttotcpv6listener_psaComponentExe[9230]/uarttotcpv6listener_psaComponentExe_exe T=main | _main.c main() 59 | == Starting Event Processing Loop ==
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | uarttotcpv6listener_psaComponentExe[9230]/uarttotcpv6listener_psaComponent T=main | uarttotcpv6listener_psaComponent.c _uarttotcpv6listener_psaComponent_COMPONENT_INIT() 254 | Component uarttotcpv6listener_psaComponent
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | uarttotcpv6listener_psaComponentExe[9230]/uarttotcpv6listener_psaComponent T=main | uarttotcpv6listener_psaComponent.c start_listener() 203 | IPv6 Listening started…
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | uarttotcpv6listener_psaComponentExe[9230]/uarttotcpv6listener_psaComponent T=main | uarttotcpv6listener_psaComponent.c start_listener() 214 | IPv6 Socket Binding…
Dec 17 12:31:42 swi-mdm9x28-wp user.err Legato: =ERR= | uarttotcpv6listener_psaComponentExe[9230] | ERROR on binding: Address family not supported by protocol
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | supervisor[8648]/supervisor T=main | proc.c proc_SigChildHandler() 2079 | Process ‘uarttotcpv6listener_psaComponentExe’ (PID: 9230) has exited with exit code 1.
Dec 17 12:31:42 swi-mdm9x28-wp user.warn Legato: -WRN- | supervisor[8648]/supervisor T=main | app.c app_SigChildHandler() 4066 | Process ‘uarttotcpv6listener_psaComponentExe’ in app ‘uarttotcpv6listener_psa’ faulted: Ignored.
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | supervisor[8648]/supervisor T=main | app.c app_StopComplete() 4753 | app ‘uarttotcpv6listener_psa’ has stopped.
Dec 17 12:31:42 swi-mdm9x28-wp user.info Legato: INFO | supervisor[8648]/supervisor T=main | apps.c DeactivateAppContainer() 374 | Application ‘uarttotcpv6listener_psa’ has stopped.
Below is the TCP V6 listener function:
int start_listener(void)
{
int sockfd, newsockfd;
int portno = 30001;
socklen_t clilen;
char buffer[256];
struct sockaddr_in6 serv_addr, cli_addr;
int n;
char client_addr_ipv6[100];
/* if (argc < 2) {
fprintf(stderr,“ERROR, no port provided\n”);
exit(1);
} */
LE_INFO(“IPv6 Listening started…”);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error(“ERROR opening socket”);
bzero((char *) &serv_addr, sizeof(serv_addr));
// portno = atoi(argv[1]);
serv_addr.sin6_flowinfo = 0;
serv_addr.sin6_family = AF_INET6;
serv_addr.sin6_addr = in6addr_any;
serv_addr.sin6_port = htons(portno);
LE_INFO("IPv6 Socket Binding...\n");
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
LE_INFO("IPv6 Socket Listening...\n");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
//Connection accepted let us start reading and Writing on the server
LE_INFO("IPv6 Socket Connection Accepted..\n");
//Sockets Layer Call: inet_ntop()
inet_ntop(AF_INET6, &(cli_addr.sin6_addr),client_addr_ipv6, 100);
LE_INFO("Incoming connection from client having IPv6 address: %s\n",client_addr_ipv6);
memset(buffer,0, 256);
//Sockets Layer Call: recv()
n = recv(newsockfd, buffer, 255, 0);
if (n < 0)
error("ERROR reading from socket");
LE_INFO("Message from client: %s\n", buffer);
//Sockets Layer Call: send()
n = send(newsockfd, "Server got your message", 23+1, 0);
if (n < 0)
error("ERROR writing to socket");
close(sockfd);
close(newsockfd);
return 0;
}