在 OS X 上的 ifconfig.h 的 ifadder 结构中,我可以将ifa_data转换为什么?

in ifconfig.h's ifadder struct on OS X, what can I cast ifa_data to?

本文关键字:ifa 我可以 data 为什么 转换 上的 OS ifconfig 结构 ifadder      更新时间:2023-10-16

我得到了我的ifadder struct,看起来像这样:

struct ifaddrs {
    struct ifaddrs  *ifa_next;
    char        *ifa_name;
    unsigned int     ifa_flags;
    struct sockaddr *ifa_addr;
    struct sockaddr *ifa_netmask;
    struct sockaddr *ifa_dstaddr;
    void        *ifa_data;
};

我也可以施放void *ifa_data?我想看看里面。我正在使用C/C (使用C 编译器编译(。我已经看到人们将其施加给rtnl_link_stats,但是该结构似乎不是OS X的一部分。

有什么想法吗?

也在这里加成问题,每当我在ifaddrs struct中访问sockaddr时,sockaddr的sa_data成员总是空白/空。有什么想法?

谢谢!

对我来说这有效:

...
if (ifa->ifa_data != NULL) {
    struct rtnl_link_stats *stats = (rtnl_link_stats*)ifa->ifa_data;
    cout << "packets received: " << stats->rx_packets << endl;
    cout << "packets sent:     " << stats->tx_packets << endl;
    cout << "bytes received:   " << stats->rx_bytes   << endl;
    cout << "bytes sent:       " << stats->tx_bytes   << endl;
}
...