KDK_NC_GET_PRIVATE_IPV6(3) Library Functions Manual KDK_NC_GET_PRIVATE_IPV6(3)

kdk_nc_get_private_ipv6 - 获取指定网卡的第一个IPv6地址

#include <libkync.h>

extern char* kdk_nc_get_private_ipv6(const char *nc);

Link with -lkyhw.

The main function of the interface is to obtain the first IPv6 address of the specified NIC nc

The argument nc is the name of the NIC, such as "eno1".

On success, returns an IPv6 address of type char*, and returns NULL without IP.

On error, return NULL.

#include "libkync.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char **cards = kdk_nc_get_cardlist();
    size_t index = 0;
    printf("所有网卡:\n");
    while (cards[index])
    {
        char *mac = kdk_nc_get_phymac(cards[index]);
        char *ipv4 = kdk_nc_get_private_ipv4(cards[index]);
        char *ipv6 = kdk_nc_get_private_ipv6(cards[index]);
        char *driver = kdk_nc_get_driver(cards[index]);
        char vendor[256] = " ", product[256] = " ";
        kdk_nc_get_vendor_and_product(cards[index], vendor, product);
        printf("Card %zd: %sStatus: %sMac: %sIPv4: %sIPv6: %s Vendor: %s Product: %s Type: %s driver: %s\n",
               index + 1, cards[index], kdk_nc_is_up(cards[index]) == 1 ? "Up" : "Down",
               mac, ipv4, ipv6, vendor, product,
               kdk_nc_is_wireless(cards[index]) ? "wireless" : "ethernet", driver);
        char **list4 = kdk_nc_get_ipv4(cards[index]);
        int i = 0;
        printf("AllIpV4: ");
        while (list4 && list4[i])
        {
            printf("%s", list4[i++]);
        }
        printf("\n");
        char **list6 = kdk_nc_get_ipv6(cards[index]);
        printf("AllIpV6: ");
        i = 0;
        while (list6 && list6[i])
        {
            printf("%s", list6[i++]);
        }
        printf("\n");
        free(mac);
        free(ipv4);
        free(ipv6);
        free(list4);
        free(list6);
        free(driver);
        index++;
    }
    kdk_nc_freeall(cards);
    char **upcards = kdk_nc_get_upcards();
    index = 0;
    printf("工作网卡:\n");
    while (upcards[index])
    {
        printf("Card %zd: %s\n", index + 1, upcards[index]);
        index++;
    }
    kdk_nc_freeall(upcards);
    return 0;
} 

These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: kdk_nc_is_up(), kdk_nc_get_upcards(), kdk_nc_get_cardlist(), kdk_nc_get_phymac(), kdk_nc_get_ipv4(), kdk_nc_get_private_ipv4(), kdk_nc_get_ipv6(), kdk_nc_is_wireless(), kdk_nc_get_vendor_and_product(), kdk_nc_get_driver(), and kdk_nc_freeall().

kdk_nc_is_up(3), kdk_nc_get_upcards(3), kdk_nc_get_cardlist(3), kdk_nc_get_phymac(3), kdk_nc_get_ipv4(3), kdk_nc_get_private_ipv4(3), kdk_nc_get_ipv6(3), kdk_nc_is_wireless(3), kdk_nc_get_vendor_and_product(3), kdk_nc_get_driver(3), and kdk_nc_freeall(3).

Fri Aug 25 2023 Linux Programmer's Manual