diff options
Diffstat (limited to 'src/internal_bypass.c')
| -rw-r--r-- | src/internal_bypass.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/src/internal_bypass.c b/src/internal_bypass.c index 5c83c21..61988c7 100644 --- a/src/internal_bypass.c +++ b/src/internal_bypass.c @@ -49,7 +49,7 @@ internal_bypass_ct_dump_cb(enum nf_conntrack_msg_type type,  static void internal_bypass_ct_dump(int fd, int type)  {  	struct nfct_handle *h; -	u_int32_t family = AF_UNSPEC; +	uint32_t family = AF_UNSPEC;  	int ret;  	h = nfct_open(CONFIG(netlink).subsys_id, 0); @@ -67,7 +67,7 @@ static void internal_bypass_ct_dump(int fd, int type)  static void internal_bypass_ct_flush(void)  { -	nl_flush_conntrack_table(STATE(flush)); +	nl_flush_conntrack_table_selective();  }  struct { @@ -180,7 +180,7 @@ internal_bypass_exp_dump_cb(enum nf_conntrack_msg_type type,  static void internal_bypass_exp_dump(int fd, int type)  {  	struct nfct_handle *h; -	u_int32_t family = AF_UNSPEC; +	uint32_t family = AF_UNSPEC;  	int ret;  	h = nfct_open(CONFIG(netlink).subsys_id, 0); @@ -283,6 +283,11 @@ static int internal_bypass_exp_event_del(struct nf_expect *exp, int origin)  	return 1;  } +static int internal_bypass_exp_master_find(const struct nf_conntrack *master) +{ +	return nl_get_conntrack(STATE(get), master) == 0; +} +  struct internal_handler internal_bypass = {  	.init			= internal_bypass_init,  	.close			= internal_bypass_close, @@ -309,5 +314,6 @@ struct internal_handler internal_bypass = {  		.new			= internal_bypass_exp_event_new,  		.upd			= internal_bypass_exp_event_upd,  		.del			= internal_bypass_exp_event_del, +		.find			= internal_bypass_exp_master_find,  	},  }; | 
