]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
exthdr: incomplete type 2 routing header definition
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 28 Jan 2025 20:48:19 +0000 (21:48 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 7 Feb 2025 10:53:32 +0000 (11:53 +0100)
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 <pablo@netfilter.org>
src/exthdr.c

index 60c7cd1e67f6bcf37dc89a6cec3b50f8bc9d970b..1438d7e2d2dce5282561b83afbb6de3a0e8b3e11 100644 (file)
@@ -450,13 +450,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),
        },
 };