TCP normalizations are enabled with:
preprocessor normalize_tcp: \ [ips], [urp], [trim], \ [ecn <ecn_type>], \ [opts [allow <allowed_opt>+]] <ecn_type> ::= stream | packet <allowed_opt> ::= \ sack | echo | partial_order | conn_count | alt_checksum | md5 | <num> <sack> ::= { 4, 5 } <echo> ::= { 6, 7 } <partial_order> ::= { 9, 10 } <conn_count> ::= { 11, 12, 13 } <alt_checksum> ::= { 14, 15 } <md5> ::= { 19 } <num> ::= (3..255)
Base normalizations enabled with "preprocessor normalize_tcp" include:
Optional normalizations include:
ensure consistency in retransmitted data (also forces reassembly policy to "first"). Any segments that can't be properly reassembled will be dropped.
urgent pointer: don't adjust the urgent pointer if it is greater than payload length.
clear ECN flags on a per packet basis (regardless of negotiation).
clear ECN flags if usage wasn't negotiated. Should also enable require_3whs.
NOP all option bytes other than maximum segment size, window scaling, timestamp, and any explicitly allowed with the allow keyword. You can allow options to pass by name or number.
if timestamp is present but invalid, or valid but not negotiated, NOP the timestamp octets.
if timestamp was negotiated but not present, block the packet.
clear TS ECR if ACK flag is not set.
MSS and window scale options are NOP'd if SYN flag is not set.