IPv6 status
Marco d'Itri
md at Linux.IT
Sun Feb 3 04:01:50 UTC 2002
On Feb 03, "Jeffrey M. Vinocur" <jeff at litech.org> wrote:
>I was going to let my local IPv6 guru have a look at it, but the patch
>seems to call for lib/inet_stoa.c but that file is not actually included
>in the patch...
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include "config.h"
#include "clibrary.h"
char *inet_stoa(const struct sockaddr_storage *ss)
{
#ifdef HAVE_INET6
static char buff[256];
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)ss;
*buff = '\0';
if (ss->ss_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) {
struct sockaddr_in sin;
memcpy(&sin.sin_addr, sin6->sin6_addr.s6_addr + 12,
sizeof sin.sin_addr);
sin.sin_port = sin6->sin6_port;
sin.sin_family = AF_INET;
#ifdef HAVE_SOCKADDR_LEN
sin.sin_len = sizeof(struct sockaddr_in);
#endif
return inet_ntoa(sin.sin_addr);
}
getnameinfo((struct sockaddr *)ss, SA_LEN((struct sockaddr *)ss), buff,
sizeof buff, NULL, 0, NI_NUMERICHOST);
return buff;
#else
return inet_ntoa(((struct sockaddr_in *)ss)->sin_addr);
#endif
}
--
ciao,
Marco
More information about the inn-workers
mailing list