KDK_NC_GET_VENDOR_AND_PRODUCT(3)
💖 KDK_NC_GET_VENDOR_AND_PRODUCT 💖
okay bestie, welcome to the KDK_NC_GET...AND_PRODUCT(3) page, straight out of the Library Functions Manual ✨ pull up a chair, we're learning about NICs today 🎀
🌸 NAME 🌸
kdk_nc_get_vendor_and_product — 获取指定网卡的厂商名称和设备型号 💅
like. it gets the vendor name and the device model of a NIC you point at. that's the whole job. iconic behavior honestly 👑
🦋 SYNOPSIS 🦋
#include <libkync.h>
extern int kdk_nc_get_vendor_and_product(const char *nc, char *vendor, char *product);
Link with -lkyhw.
not me reminding you to actually link -lkyhw or your linker will simply pass away 😭
🌈 Detailed Description 🌈
so the main function of this interface is to obtain the manufacturer name and device model of the specified NIC nc 🫶
- The argument
ncis the name of the NIC, such as"eno1"— like, the actual interface name, lowercase, no vibes-based guessing 💫 - The argument
vendoris the manufacturer of the NIC, and it is necessary to allocate enough space in advance — bestie. allocate. enough. space. in. advance. I'm not playing 🙈 - The argument
porductis a NIC name that stands for output parameters and needs to be allocated enough space in advance. (yes it saysporduct, that's how it's written here, we love a typo that made it into the docs fr fr 💀 — either way: pre-allocate, plenty of room, no shortcuts)
⭐ RETURN VALUE ⭐
- On success, returns
0. slay ✨ - On error, return
-1. we do not love that but okay 😭
🎀 EXAMPLES 🎀
here's the whole demo, verbatim, go off 👑
#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;
}
see how vendor[256] and product[256] are just... sitting there, pre-allocated, living their best life? that's the assignment, bestie. char vendor[256] = " ", product[256] = " "; then hand them to kdk_nc_get_vendor_and_product and let it cook 🔥
💜 CONFORMING TO 💜
These functions are as per the withdrawn POSIX.1e draft specification. periodt.
The following functions are Linux extensions, so like, don't go looking for them on other platforms, iykyk: 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_private_ipv6(), kdk_nc_get_driver(), and kdk_nc_freeall().
🫶 SEE ALSO 🫶
go read these next, they're the whole friend group: 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_private_ipv6(3), kdk_nc_get_driver(3), and kdk_nc_freeall(3).
and that's the page!! 🎀 this one's from the Linux Programmer's Manual, dated Fri Aug 25 2023 — so if you're reading this, it's giving vintage-but-correct 💅 mwah, go get your vendor and product strings bestie 💖🌸✨
📦 where this page comes from
- arch rolling: libkysdk-system 3.0.1.4-1 · LGPL-3.0-or-later AND LGPL-2.1-only OR LGPL-3.0-only AND LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR LGPL-3.0-only WITH Qt-LGPL-exception-1.1 AND MIT
- ubuntu resolute: libkysdk-system-dev 3.0.1.2-0ubuntu1 · LGPL-3.0-only
- ubuntu stonking: libkysdk-system-dev 3.0.1.3-0ubuntu1 · LGPL-3.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms