From 883a3d6233645c48b67effd72ec648dfdb327cd6 Mon Sep 17 00:00:00 2001 From: bol-van Date: Sun, 28 Dec 2025 15:14:01 +0300 Subject: [PATCH] update docs --- docs/manual.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/manual.md b/docs/manual.md index 6f619f1..fb1a56c 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1944,18 +1944,20 @@ function gettid() | :---------------- | :----- | :-------------------------------------------------------------------------------------------- | | badsum | bool | испортить L4 checksum. посчитать чексумму и сделать xor со случайным значением от 1 до 0xFFFF | | ip6_preserve_next | bool | использовать значения "next" из ip6.exthdr | -| ip6_last_proto | number | если ip6_preserve_next=true, IP протокол последнего exthdr | +| ip6_last_proto | number | если ip6_preserve_next=false, IP протокол последнего exthdr | При сборке ipv6 по умолчанию цепочка ip протоколов в exthdr собирается автоматически. У каждого exthdr есть поле type, поэтому понятно что вписывать в предыдущий exthdr, либо в основной ip6 хедер. next протокол последнего exthdr устанавливатеся как IPPROTO_TCP или IPPROTO_UDP в зависимости от наличия в диссекте таблиц tcp или udp. В большинстве случаев это удобно, поскольку вам при вставлении exthdr не надо реконструировать -всю цепочку next протоколов. За вас это сделает реконструктор диссекта. +всю цепочку next протоколов и не надо заполнять поля next. За вас это сделает реконструктор диссекта. Режим ip6_preserve_next используется, если у вас специальная цель, требующая ручной крафтинг полей next protocol. -В этом случае невозможно автоматически узнать что вы хотите вписать в последний exthdr. Туда вписывается ip6_last_proto, -либо IPPROTO_NONE, если ip6_last_proto не задан. +В этом случае поля next в exthdr и ip6.ip6_nxt оставляются как есть. + +Если вы реконструируете отдельно ipv6 header и не используете вариант ip6_preserve_next, невозможно автоматически узнать что вы хотите вписать в последний exthdr. +Туда вписывается ip6_last_proto, либо IPPROTO_NONE, если ip6_last_proto не задан. badsum вынесен в реконструкцию, поскольку чексуммы tcp и udp считаются на базе всего IP пакета. В сумме участвуют элементы хедера ip/ip6, весь хедер tcp и сам пейлоад.