Ligação de Sockets a Endereços IPv6

Eu estou tentando escrever um servidor da web que escuta em endereços IPv4 e IPv6. No entanto, o código que escrevi originalmente não funcionou. Então descobri que as estruturas IPv6 funcionam tanto para IPv4 quanto para IPv6. Então agora eu uso as estruturas IPv6, mas apenas os endereços IPv4 funcionam. Esta postagem,por que não consigo ligar o soquete ipv6 a um endereço linklocal, que disse para adicionarserver.sin6_scope_id = 5; então eu fiz isso, mas ainda não aceita conexões telnet IPv6. Qualquer ajuda seria muito apreciada porque estou completamente perplexo.
Obrigado!

Meu código está abaixo:

void initialize_server(int port, int connections, char* address)
{
        struct sockaddr_in6 socket_struct;
        /*Creates the socket*/
        if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        {
                syslog(LOG_ERR, "%s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }/*Ends the socket creation*/

        /*Populates the socket address structure*/
                socket_struct.sin6_family = AF_INET6;

        if(address == NULL)
                socket_struct.sin6_addr=in6addr_any;
        else
        {
                inet_pton(AF_INET6, "fe80::216:3eff:fec3:3c22", (void *)&socket_struct.sin6_addr.s6_addr);
        }
        socket_struct.sin6_port =htons(port);
        socket_struct.sin6_scope_id = 0;
        if (bind(sock_fd, (struct sockaddr*) &socket_struct, sizeof(socket_struct)) < 0)
        {
                syslog(LOG_ERR, "%s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }//Ends the binding.

        if (listen(sock_fd, connections) <0)
        {
                syslog(LOG_ERR, "%s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }//Ends the listening function

}//ends the initialize server function.

questionAnswers(2)

yourAnswerToTheQuestion