diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2025-01-28 21:48:19 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2025-02-07 11:53:32 +0100 |
commit | c029dcb14940936dbeddc2947316c9dbc5b93656 (patch) | |
tree | b831c9763afa2719554ee296cdaa9c24a3b86631 /src | |
parent | 877255e8cfa10280f61218c8b1b4b6b7afb0e328 (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.c | 14 |
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), }, }; |