Nest TCP protocol private info
Subsystems (2)
PATCH 1/3 Nest TCP protocol private info
To keep consistency, the TCP private protocol information is nested attributes under CTA_PROTOINFO_TCP. This way the sequence of attributes to access the TCP state information looks like here below:
CTA_PROTOINFOCTA_PROTOINFO_TCPCTA_PROTOINFO_TCP_STATE
instead of:
CTA_PROTOINFOCTA_PROTOINFO_TCP_STATE
Signed-off-by Pablo Neira Ayuso <[email protected]>
include/linux/netfilter/nfnetlink_conntrack.h +8 -1
@@ -70,11 +70,18 @@enum ctattr_protoinfo {CTA_PROTOINFO_UNSPEC , -CTA_PROTOINFO_TCP_STATE , +CTA_PROTOINFO_TCP , __CTA_PROTOINFO_MAX };#define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1) +enum ctattr_protoinfo_tcp { +CTA_PROTOINFO_TCP_UNSPEC , +CTA_PROTOINFO_TCP_STATE , + __CTA_PROTOINFO_TCP_MAX +}; +#define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1) +enum ctattr_counters {CTA_COUNTERS_UNSPEC ,CTA_COUNTERS_PACKETS ,
net/ipv4/netfilter/ip_conntrack_proto_tcp.c +4 -0
@@ -341,11 +341,15 @@static int tcp_to_nfattr (struct sk_buff *skb,struct nfattr *nfa,const struct ip_conntrack *ct) { +struct nfattr *nest_parms =NFA_NEST (skb,CTA_PROTOINFO_TCP ); +read_lock_bh (&tcp_lock);NFA_PUT (skb,CTA_PROTOINFO_TCP_STATE ,sizeof (u_int8_t), &ct->proto.tcp.state);read_unlock_bh (&tcp_lock); +NFA_NEST_END (skb, nest_parms); +return 0 ; nfattr_failure: