【发布时间】:2026-01-08 05:30:01
【问题描述】:
我对 IPv6 协议了解不多,如果这个问题听起来很愚蠢,我很抱歉。 当我检索网络中所有 IPv6 地址的列表时,我得到一个名为 scope 的字段,如下所示:
inet6 addr: 2001:470:1:82::11/64 Scope:Global
inet6 addr: 2001:470:1:82::10/64 Scope:Global
inet6 addr: 2001:470:1:82::13/64 Scope:Global
inet6 addr: fe80::21d:9ff:fe69:2c50/64 Scope:Link
inet6 addr: 2001:470:1:82::12/64 Scope:Global
inet6 addr: 2001:470:1:82::15/64 Scope:Global
inet6 addr: 2001:470:1:82::14/64 Scope:Global
inet6 addr: 2001:470:1:82::5/64 Scope:Global
inet6 addr: 2001:470:1:82::17/64 Scope:Global
inet6 addr: 2001:470:1:82::6/64 Scope:Global
inet6 addr: 2001:470:1:82::16/64 Scope:Global
inet6 addr: 2001:470:1:82::7/64 Scope:Global
inet6 addr: 2001:470:1:82::19/64 Scope:Global
inet6 addr: 2001:470:1:82::8/64 Scope:Global
inet6 addr: 2001:470:1:82::18/64 Scope:Global
inet6 addr: 2001:470:1:82::9/64 Scope:Global
inet6 addr: 2001:470:1:82::1b/64 Scope:Global
inet6 addr: 2001:470:1:82::a/64 Scope:Global
inet6 addr: 2001:470:1:82::1a/64 Scope:Global
inet6 addr: 2001:470:1:82::b/64 Scope:Global
inet6 addr: 2001:470:1:82::1d/64 Scope:Global
inet6 addr: 2001:470:1:82::c/64 Scope:Global
inet6 addr: 2001:470:1:82::1c/64 Scope:Global
inet6 addr: 2001:470:1:82::d/64 Scope:Global
inet6 addr: 2001:470:1:82::1f/64 Scope:Global
inet6 addr: 2001:470:1:82::e/64 Scope:Global
inet6 addr: 2001:470:1:82::1e/64 Scope:Global
inet6 addr: 2001:470:1:82::f/64 Scope:Global
inet6 addr: ::1/128 Scope:Host
在我的应用程序中,我需要获取范围为“链接”的地址。我本可以对 ifconfig 使用系统调用,然后解析输出以提取相应的地址。但问题是,我正在使用对 getifaddrs() 的调用,它返回结构 ifaddr 的链表,给出为:
struct ifaddrs {
struct ifaddrs *ifa_next; /* Next item in list */
char *ifa_name; /* Name of interface */
unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */
struct sockaddr *ifa_addr; /* Address of interface */
struct sockaddr *ifa_netmask; /* Netmask of interface */
union {
struct sockaddr *ifu_broadaddr;
/* Broadcast address of interface */
struct sockaddr *ifu_dstaddr;
/* Point-to-point destination address */
} ifa_ifu;
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
void *ifa_data; /* Address-specific data */
};
问题是:如何从此列表中获取具有“链接”范围的地址?
【问题讨论】:
-
为什么票数接近?解释会很好。
-
@EBGreen 因为问题是询问如何编写例程以提取接口细节。这在 * 上是最好的,因此最接近的投票是将问题迁移到可以更好地回答它的网站。
-
@Manish,您无需对此做任何事情,如果合适,迁移将自动发生,您可以继续在那里处理您的问题。
-
为我工作。我只是认为,如果用户在接近投票的同时获得一些评论,它会帮助用户,尤其是新用户。
-
@Manish,接受正确答案(单击勾号)或评论为什么没有帮助是有礼貌的。如果您不这样做,您可能会发现将来没有人会回答您的问题!
标签: linux bash ip-address ipv6