前缀掩码转前缀长度转换IPV6

问题描述 投票:0回答:1

我想将子网掩码转换为 IPV6 的前缀长度。 假设我有以下带有前缀掩码的 IPV6 地址:

2001:0DB8:0000:CD30:0000:0000:0000:0000 -> 地址

FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000 -> 前缀掩码

如何将前缀掩码转换为前缀长度,以便地址为:2001:0DB8:0000:CD30:0000:0000:0000:0000/64

我找到了 IPV4 的解决方案:

int main()
{
    const char *network = "255.255.255.0";
    int n;
    inet_pton(AF_INET, network, &n);
    int i = 0;

    while (n > 0) {
            n = n >> 1;
            i++;
    }

    printf("network = %s, suffix = %d\n", network, i);
}

任何 C 代码解决方案都受到高度赞赏。

c networking network-programming
1个回答
0
投票

dhcpcd
有一个很好的实现

© www.soinside.com 2019 - 2024. All rights reserved.