 a992ca2a04
			
		
	
	
	a992ca2a04
	
	
	
		
			
			This patch adds flow-based timestamping for conntracks. This conntrack extension is disabled by default. Basically, we use two 64-bits variables to store the creation timestamp once the conntrack has been confirmed and the other to store the deletion time. This extension is disabled by default, to enable it, you have to: echo 1 > /proc/sys/net/netfilter/nf_conntrack_timestamp This patch allows to save memory for user-space flow-based loogers such as ulogd2. In short, ulogd2 does not need to keep a hashtable with the conntrack in user-space to know when they were created and destroyed, instead we use the kernel timestamp. If we want to have a sane IPFIX implementation in user-space, this nanosecs resolution timestamps are also useful. Other custom user-space applications can benefit from this via libnetfilter_conntrack. This patch modifies the /proc output to display the delta time in seconds since the flow start. You can also obtain the flow-start date by means of the conntrack-tools. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Patrick McHardy <kaber@trash.net>
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			933 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			933 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __NETNS_CONNTRACK_H
 | |
| #define __NETNS_CONNTRACK_H
 | |
| 
 | |
| #include <linux/list.h>
 | |
| #include <linux/list_nulls.h>
 | |
| #include <asm/atomic.h>
 | |
| 
 | |
| struct ctl_table_header;
 | |
| struct nf_conntrack_ecache;
 | |
| 
 | |
| struct netns_ct {
 | |
| 	atomic_t		count;
 | |
| 	unsigned int		expect_count;
 | |
| 	unsigned int		htable_size;
 | |
| 	struct kmem_cache	*nf_conntrack_cachep;
 | |
| 	struct hlist_nulls_head	*hash;
 | |
| 	struct hlist_head	*expect_hash;
 | |
| 	struct hlist_nulls_head	unconfirmed;
 | |
| 	struct hlist_nulls_head	dying;
 | |
| 	struct ip_conntrack_stat __percpu *stat;
 | |
| 	int			sysctl_events;
 | |
| 	unsigned int		sysctl_events_retry_timeout;
 | |
| 	int			sysctl_acct;
 | |
| 	int			sysctl_tstamp;
 | |
| 	int			sysctl_checksum;
 | |
| 	unsigned int		sysctl_log_invalid; /* Log invalid packets */
 | |
| #ifdef CONFIG_SYSCTL
 | |
| 	struct ctl_table_header	*sysctl_header;
 | |
| 	struct ctl_table_header	*acct_sysctl_header;
 | |
| 	struct ctl_table_header	*tstamp_sysctl_header;
 | |
| 	struct ctl_table_header	*event_sysctl_header;
 | |
| #endif
 | |
| 	char			*slabname;
 | |
| };
 | |
| #endif
 |