From: Pablo Neira Ayuso Date: Tue, 28 Jan 2025 20:48:19 +0000 (+0100) Subject: exthdr: incomplete type 2 routing header definition X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=4e56abc4006057c2cda6ca8c211d6c4a0f88bd55;p=thirdparty%2Fnftables.git exthdr: incomplete type 2 routing header definition commit c029dcb14940936dbeddc2947316c9dbc5b93656 upstream. Add missing type 2 routing header definition. Listing is not correct because these IPv6 extension header are still lacking context to properly delinearize the listing, but at least this does not crash anymore. Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/exthdr.c b/src/exthdr.c index 3e5f5cd8..27445eed 100644 --- a/src/exthdr.c +++ b/src/exthdr.c @@ -444,13 +444,23 @@ const struct exthdr_desc exthdr_hbh = { * Routing header */ +/* similar to uapi/linux/ipv6.h */ +struct ip6_rt2_hdr { + struct ip6_rthdr rt_hdr; + uint32_t reserved; + struct in6_addr addr; +}; + +#define RT2_FIELD(__name, __member, __dtype) \ + HDR_TEMPLATE(__name, __dtype, struct ip6_rt2_hdr, __member) + const struct exthdr_desc exthdr_rt2 = { .name = "rt2", .id = EXTHDR_DESC_RT2, .type = IPPROTO_ROUTING, .templates = { - [RT2HDR_RESERVED] = {}, - [RT2HDR_ADDR] = {}, + [RT2HDR_RESERVED] = RT2_FIELD("reserved", reserved, &integer_type), + [RT2HDR_ADDR] = RT2_FIELD("addr", addr, &ip6addr_type), }, };