Volker Poplawski wrote:
Hi all.
Could s.o. please have a look at my (short) code at
http://pastie.org/534637
(maybe compile it with g++ -Wall test.c -o test -I ... -L ... -lnl -lnl-genl -
lnl-nf -lnl-route)
What the code does is to listen to changes in the ct-table using libnl. It
keeps score of reported ctId in a lookup table.
Problem is: I'm getting a lot of NL_ACT_CHANGE & NL_ACT_DEL without having
seen a matching NL_ACT_NEW. (Also there seems to be no initial cache fill)
kernel 2.6.27 (opensuse 11.1), libnl 2.0 (git master)
I think I know whats happening - the ct objects don't define the
attribute(s) distinguishing different entries, so cache_include()
doesn't recognize them as new.
Does this patch make any difference?
diff --git a/lib/netfilter/ct_obj.c b/lib/netfilter/ct_obj.c
index ae14c0d..48a7abe 100644
--- a/lib/netfilter/ct_obj.c
+++ b/lib/netfilter/ct_obj.c
@@ -779,6 +779,7 @@ struct nl_object_ops ct_obj_ops = {
[NL_DUMP_STATS] = ct_dump_stats,
},
.oo_compare = ct_compare,
+ .oo_id_attrs = CT_ATTR_ID,
.oo_attrs2str = ct_attrs2str,
};