From 519629978fdf8c5c0ab4b3d8e39475ec89d5c727 Mon Sep 17 00:00:00 2001 From: sven-ola Date: Thu, 14 Oct 2010 15:28:12 +0000 Subject: git-svn-id: https://map66.svn.sourceforge.net/svnroot/map66@30 3484d885-4da6-438d-b19d-107d078dd756 --- TODO | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 796c918..2cf35cf 100644 --- a/TODO +++ b/TODO @@ -5,5 +5,34 @@ gateway Check compat with tcpdump. Linux2.4 needs to copy skb() for that, but it oopses -Update csum, see http://www.firstpr.com.au/ip/ivip/checksums/ and -http://www.faqs.org/rfcs/rfc1624.html \ No newline at end of file +Update csum, see http://www.faqs.org/rfcs/rfc1624.html for these +protos (see http://www.firstpr.com.au/ip/ivip/checksums/ ): + +IPPROTO_TCP, IPPROTO_UDP, IPPROTO_DCCP, IPPROTO_AH?, IPPROTO_ICMPV6, IPPROTO_UDPLITE +break NEXTHDR_NONE + +Evnt mit ipv6_gso_pull_exthdrs() oder ipv6_skip_exthdr() oder ipv6_find_hdr() oder nf_ct_ipv6_skip_exthdr() + +unsigned int ptr = skb_network_offset(skb) + sizeof(struct ipv6hdr); +u_int8_t c = ipv6hdr.nexthdr; +while (c != NEXTHDR_NONE && ip6t_ext_hdr(currenthdr)) { + const struct ipv6_opt_hdr *hp = skb_header_pointer(skb, ptr, sizeof(_hdr), &_hdr); + switch(c) { + case IPPROTO_FRAGMENT: + hdrlen = 8; + break; + case IPPROTO_DSTOPTS: + case IPPROTO_ROUTING: + case IPPROTO_HOPOPTS: + hdrlen = ipv6_optlen(hp); + break; + case IPPROTO_AH: + hdrlen = (hp->hdrlen+2)<<2; + break; + default: + return; + } + c = hp->nexthdr; + ptr += hdrlen; +} + -- cgit v1.2.3