summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2025-01-28 21:48:19 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2025-02-07 11:53:32 +0100
commitc029dcb14940936dbeddc2947316c9dbc5b93656 (patch)
treeb831c9763afa2719554ee296cdaa9c24a3b86631 /src
parent877255e8cfa10280f61218c8b1b4b6b7afb0e328 (diff)
exthdr: incomplete type 2 routing header definition
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>
Diffstat (limited to 'src')
-rw-r--r--src/exthdr.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/exthdr.c b/src/exthdr.c
index 60c7cd1e..1438d7e2 100644
--- a/src/exthdr.c
+++ b/src/exthdr.c
@@ -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),
},
};