インターフェイスのmacアドレスとipv4アドレスを取得するサンプルコードを見ました。私はそれがそのインターフェイスが、プログラムのIPv6アドレスを取得しようとしているビットが言って失敗変更「:エラー:27:13互換性のない型をタイプから 『u_int32_t』と入力して割り当てるときに「構造体libnet_in6_addr」libnetを使ってインタフェースのipv6アドレスを取得する方法は?
#include <stdlib.h>
#include <libnet.h>
#include <stdint.h>
int main() {
libnet_t *l; /* libnet context */
char errbuf[LIBNET_ERRBUF_SIZE];
u_int32_t ip_addr;
struct libnet_ether_addr *mac_addr;
l = libnet_init(LIBNET_RAW4, NULL, errbuf);
if (l == NULL) {
fprintf(stderr, "libnet_init() failed: %s\n", errbuf);
exit(EXIT_FAILURE);
}
ip_addr = libnet_get_ipaddr4(l);
if (ip_addr != -1)
printf("IP address: %s\n", libnet_addr2name4(ip_addr,\
LIBNET_DONT_RESOLVE));
else
fprintf(stderr, "Couldn't get own IP address: %s\n",\
libnet_geterror(l));
u_int32_t ipv6_addr;
ipv6_addr = libnet_get_ipaddr6(l);
if (ip_addr != -1)
printf("IPv6 address: %s\n", libnet_addr2name6(ip_addr,\
LIBNET_DONT_RESOLVE));
else
fprintf(stderr, "Couldn't get own IPv6 address: %s\n",\
libnet_geterror(l));
mac_addr = libnet_get_hwaddr(l);
if (mac_addr != NULL)
printf("MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n",\
mac_addr->ether_addr_octet[0],\
mac_addr->ether_addr_octet[1],\
mac_addr->ether_addr_octet[2],\
mac_addr->ether_addr_octet[3],\
mac_addr->ether_addr_octet[4],\
mac_addr->ether_addr_octet[5]);
else
fprintf(stderr, "Couldn't get own MAC address: %s\n",\
libnet_geterror(l));
libnet_destroy(l);
return 0;
}
Iドン私はu_int32_tを使用するようにipv6アドレスを格納するために何を使用するのか知っていない、私はそれが動作していないu_int64_tを試してみました。私は、このような種類の基本的な問題をもう一度見つけて解決策を見つけるべきかどうかを知りたい。私はipv6アドレスに関する例を見つけることができません。