diff --git a/docs/changes.txt b/docs/changes.txt
index 4859d99..6860d19 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -111,3 +111,4 @@ v0.7.3
* nfqws2, zapret-lib : check tcp sequence range overflow
* zapret-lib : seq compare functions
+* nfqws2: add l3_len, l4_len to dissect
diff --git a/docs/manual.md b/docs/manual.md
index dd43238..b96294e 100644
--- a/docs/manual.md
+++ b/docs/manual.md
@@ -1323,6 +1323,7 @@ mss дублируется в поле `desync.tcp_mss` независимо о
| IP6F_MORE_FRAG | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 |
| IPPROTO_IP
IPPROTO_IPV6
IPPROTO_ICMP
IPPROTO_TCP
IPPROTO_UDP
IPPROTO_ICMPV6
IPPROTO_HOPOPTS
IPPROTO_ROUTING
IPPROTO_FRAGMENT
IPPROTO_AH
IPPROTO_ESP
IPPROTO_DSTOPTS
IPPROTO_MH
IPPROTO_HIP
IPPROTO_SHIM6
IPPROTO_NONE | number | [номера IP протоколов](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) | используются в ipv4 и ipv6 |
+
## C функции
### Логгинг
@@ -1472,7 +1473,7 @@ function parse_hex(hex_string)
Но завязываться на внешние модули нельзя - LUA обычно линкуется статически без возможности загрузки внешних модулей.
Не должно быть лишних зависимостей и дополнительных файлов. openssl имеет размер несколько Mb, что критично для embedded систем.
-nfqws2 уже имеет минимальный набор криптографических операций для работы с некоторыми протоколами (QUIC).
+nfqws2 не использует никакие криптобиблиотеки, но имеет минимальный набор криптографических операций для работы с некоторыми протоколами (QUIC).
Эти функции выставляются в LUA и могут использоваться для любых целей.
```
@@ -1535,3 +1536,4 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на
* info - raw строка произвольного размера, может быть nil. аналогично salt, но salt подмешивается на extraction phase, а info - на expansion. если nil, то используется info нулевого размера.
* okm_len - требуемая длина okm - output keying material
* возвращается raw строка - okm
+
diff --git a/nfq2/lua.c b/nfq2/lua.c
index 803b390..a1de53a 100644
--- a/nfq2/lua.c
+++ b/nfq2/lua.c
@@ -1251,13 +1251,15 @@ void lua_push_dissect(const struct dissect *dis)
if (dis)
{
- lua_createtable(params.L, 0, 7);
+ lua_createtable(params.L, 0, 9);
lua_pushf_iphdr(dis->ip, dis->len_l3);
lua_pushf_ip6hdr(dis->ip6, dis->len_l3);
lua_pushf_tcphdr(dis->tcp, dis->len_l4);
lua_pushf_udphdr(dis->udp, dis->len_l4);
lua_pushf_int("l4proto",dis->proto);
lua_pushf_int("transport_len",dis->transport_len);
+ lua_pushf_int("l3_len",dis->len_l3);
+ lua_pushf_int("l4_len",dis->len_l4);
lua_pushf_raw("payload",dis->data_payload,dis->len_payload);
}
else