【发布时间】:2010-08-11 09:27:54
【问题描述】:
我正在向网络应用程序添加 IPv6 支持。一些控制数据包应该包含 IPv4 和 IPv6 地址的混合列表(当前代码仅支持 IPv4):
struct control_packet {
[...]
ushort ip1_afi;
struct in_addr ip1;
ushort ip2_afi;
struct in_addr ip2;
uchar reserved1;
uchar prefix_mask_len;
ushort prefix_afi;
struct in_addr prefix;
} __attribute__ ((__packed__));
我应该如何替换 in_addr 结构以支持 IPv4 和 IPv6,之前依赖 AFI 值?
我认为我不能为此使用sockaddr_storage,因为它为数据包预留了比所需空间更多的空间。
我见过有人使用uchar ip1[0],但是我可能不得不手动组装数据包,而不是使用结构。有什么建议吗?
我也接受好的 RTFM 链接 :)
谢谢!
【问题讨论】:
标签: c networking network-programming struct