diff --git a/iptables-module/compat_xtables.c b/iptables-module/compat_xtables.c index c5b67a4..40f83c8 100644 --- a/iptables-module/compat_xtables.c +++ b/iptables-module/compat_xtables.c @@ -464,6 +464,7 @@ struct xt_match *xtnu_request_find_match(unsigned int af, const char *name, } EXPORT_SYMBOL_GPL(xtnu_request_find_match); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) int xtnu_ip_route_me_harder(struct sk_buff **pskb, unsigned int addr_type) { #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 17) @@ -476,6 +477,7 @@ int xtnu_ip_route_me_harder(struct sk_buff **pskb, unsigned int addr_type) #endif } EXPORT_SYMBOL_GPL(xtnu_ip_route_me_harder); +#endif int xtnu_skb_make_writable(struct sk_buff **pskb, unsigned int len) { diff --git a/iptables-module/compat_xtnu.h b/iptables-module/compat_xtnu.h index 02b6575..253e3df 100644 --- a/iptables-module/compat_xtnu.h +++ b/iptables-module/compat_xtnu.h @@ -143,7 +143,9 @@ static inline __wsum csum_unfold(__sum16 n) #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) extern int xtnu_ip_local_out(struct sk_buff *); extern int xtnu_ip_route_me_harder(struct sk_buff **, unsigned int); +#endif extern int xtnu_skb_make_writable(struct sk_buff **, unsigned int); extern int xtnu_register_match(struct xtnu_match *); extern int xtnu_ip_route_output_key(void *, struct rtable **, struct flowi *); diff --git a/iptables-module/xt_mpeg2ts.c b/iptables-module/xt_mpeg2ts.c index 91ae4a0..87cfb17 100644 --- a/iptables-module/xt_mpeg2ts.c +++ b/iptables-module/xt_mpeg2ts.c @@ -99,7 +99,7 @@ static const struct file_operations dl_file_ops; #endif static int debug = -1; -static int msg_level; +static int msg_level = MPEG2TS_MSG_DEFAULT; module_param(debug, int, 0); module_param(msg_level, int, 0664); MODULE_PARM_DESC(debug, "Set low N bits of message level"); @@ -1299,14 +1299,12 @@ static void mpeg2ts_seq_stop(struct seq_file *s, void *v) static int mpeg2ts_seq_show_real(struct mpeg2ts_stream *stream, struct seq_file *s, unsigned int bucket) { - int res; - if (!atomic_inc_not_zero(&stream->use)) { /* If "use" is zero, then we about to be free'd */ return 0; } - res = seq_printf(s, "bucket:%d dst:%pI4 src:%pI4 dport:%u sport:%u " + seq_printf(s, "bucket:%d dst:%pI4 src:%pI4 dport:%u sport:%u " "pids:%d skips:%llu discontinuity:%llu " "payload_bytes:%llu packets:%llu\n", bucket, @@ -1323,7 +1321,7 @@ static int mpeg2ts_seq_show_real(struct mpeg2ts_stream *stream, atomic_dec(&stream->use); - return res; + return seq_has_overflowed(s); } static int mpeg2ts_seq_show(struct seq_file *s, void *v) @@ -1434,7 +1432,7 @@ static int __init mpeg2ts_mt_init(void) */ INIT_LIST_HEAD(&conn_htables); - msg_level = netif_msg_init(debug, MPEG2TS_MSG_DEFAULT); + msg_level = netif_msg_init(debug, msg_level); msg_info(DRV, "Loading: %s", version); msg_dbg(DRV, "Message level (msg_level): 0x%X", msg_level);