On Thu, Jun 23, 2022 at 07:49:56PM +0200, Mikhail Sennikovsky wrote: > Withouth reply l4 protocol being set consistently the mnl_cb_run > (in fact the kernel) would return EINVAL. > > Make sure the reply l4 protocol is set properly for unknown > protocols. > > Signed-off-by: Mikhail Sennikovsky <mikhail.sennikovskii@xxxxxxxxx> > --- > extensions/libct_proto_unknown.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/extensions/libct_proto_unknown.c b/extensions/libct_proto_unknown.c > index 2a47704..992b1ed 100644 > --- a/extensions/libct_proto_unknown.c > +++ b/extensions/libct_proto_unknown.c > @@ -21,10 +21,21 @@ static void help(void) > fprintf(stdout, " no options (unsupported)\n"); > } > > +static void final_check(unsigned int flags, > + unsigned int cmd, > + struct nf_conntrack *ct) > +{ > + if (nfct_attr_is_set(ct, ATTR_REPL_L3PROTO) && > + nfct_attr_is_set(ct, ATTR_L4PROTO) && > + !nfct_attr_is_set(ct, ATTR_REPL_L4PROTO)) > + nfct_set_attr_u8(ct, ATTR_REPL_L4PROTO, nfct_get_attr_u8(ct, ATTR_L4PROTO)); > +} > + > struct ctproto_handler ct_proto_unknown = { > .name = "unknown", > .help = help, > .opts = opts, > + .final_check = final_check, missing indent to align it with other C99 initializers (coding style nitpick) .final_check = final_check, > .version = VERSION, > }; > > -- > 2.25.1 >