Я добавляю поддержку 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 в oder для поддержки как IPv4, так и IPv6, исключивЗначение AFI раньше?
Я не думаю, что могу использовать sockaddr_storage
для этого, потому что оно резервирует больше места, чем необходимо для пакета.
Я видел людей, использующих uchar ip1[0]
, но тогда мне, вероятно, придется собирать пакет вручную, не используя структуру.Любые предложения?
Я также принимаю хорошие ссылки RTFM:)
Спасибо!