Codigo C para obtener una IPv6 ;)


/* ipv6.c ver. 0.001 */
/* peque~o programa para obtener una IPv6 */
/* por zzer */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <errno.h>

int
main(int argc, char *argv[])
{
struct ifaddrs *myaddrs, *ifa;
struct sockaddr_in *s4;
struct sockaddr_in6 *s6;
int status;
char buf[64];

status = getifaddrs(&myaddrs);
if (status != 0)
{
perror("getifaddrs");
exit(1);
}

for (ifa = myaddrs; ifa != NULL; ifa = ifa->ifa_next)
{
if (ifa->ifa_addr == NULL) continue;
if ((ifa->ifa_flags & IFF_UP) == 0) continue;

if (ifa->ifa_addr->sa_family == AF_INET)
{
s4 = (struct sockaddr_in *)(ifa->ifa_addr);
if (inet_ntop(ifa->ifa_addr->sa_family, (void *)&(s4->sin_addr), buf, sizeof(buf)) == NULL)
{
printf("%s: inet_ntop error!\n", ifa->ifa_name);
}
else
{
printf("%s: %s\n", ifa->ifa_name, buf);
}
}
else if (ifa->ifa_addr->sa_family == AF_INET6)
{
s6 = (struct sockaddr_in6 *)(ifa->ifa_addr);
if (inet_ntop(ifa->ifa_addr->sa_family, (void *)&(s6->sin6_addr), buf, sizeof(buf)) == NULL)
{
printf("%s: inet_ntop error!\n", ifa->ifa_name);
}
else
{
printf("%s: %s\n", ifa->ifa_name, buf);
}
}
}

freeifaddrs(myaddrs);
exit(0);
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: