Force getaddrinfo para usar o IPv4

0

A página man diz:

The getaddrinfo(3) function is not limited to creating IPv4 socket address structures; IPv6 socket address structures can be created if IPv6 support is available. These socket address structures can be used directly by bind(2) or connect(2), to prepare a client or a server socket.

O que devo fazer para forçar o getaddrinfo a não criar estruturas de endereço de soquete IPv6?

    
por Derui Si 16.08.2012 / 10:13

2 respostas

1

De acordo com a página de manual de getaddrinfo() , você pode passar a família de endereços no parâmetro hints , então algo como

struct addrinfo hints, *result;
int s;

memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;        /* or AF_INET6 for ipv6 addresses */
s = getaddrinfo(NULL, "ftp", &hints, &result);
...

Eu não tentei isso, mas a abordagem parece estar certa.

    
por 05.03.2013 / 17:40
0

Curiosamente, a primeira pergunta que eu fiz neste site acabou por ter uma resposta que você pode achar útil.

Para resumir, o arquivo /etc/gai.conf é usado pela chamada do sistema getaddrinfo () para determinar como responder. Para o seu caso particular, adicionando

precedence ::ffff:0:0/96  100

ao final do arquivo de configuração deve ser suficiente.

    
por 16.08.2012 / 11:39

Tags