Hello community, here is the log from the commit of package xtables-addons for openSUSE:Factory checked in at 2015-11-26 17:01:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xtables-addons (Old) and /work/SRC/openSUSE:Factory/.xtables-addons.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xtables-addons" Changes: -------- --- /work/SRC/openSUSE:Factory/xtables-addons/xtables-addons.changes 2015-10-20 00:09:07.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xtables-addons.new/xtables-addons.changes 2015-11-26 17:02:07.000000000 +0100 @@ -1,0 +2,6 @@ +Fri Nov 20 22:40:17 UTC 2015 - [email protected] + +- Update to new upstream release 2.10 +* Support for Linux 4.4 + +------------------------------------------------------------------- Old: ---- xtables-addons-2.9.tar.asc xtables-addons-2.9.tar.xz New: ---- xtables-addons-2.10.tar.asc xtables-addons-2.10.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xtables-addons.spec ++++++ --- /var/tmp/diff_new_pack.5ELPzm/_old 2015-11-26 17:02:08.000000000 +0100 +++ /var/tmp/diff_new_pack.5ELPzm/_new 2015-11-26 17:02:08.000000000 +0100 @@ -17,7 +17,7 @@ Name: xtables-addons -Version: 2.9 +Version: 2.10 Release: 0 Summary: IP Packet Filter Administration Extensions License: GPL-2.0 and GPL-2.0+ @@ -68,26 +68,26 @@ %setup -q %build -pushd ../; +pushd ../ for flavor in %flavors_to_build; do - cp -a "%name-%version" "%name-$flavor-%version"; - pushd "%name-$flavor-%version/"; - %configure --with-kbuild="/usr/src/linux-obj/%_target_cpu/$flavor"; - make %{?_smp_mflags} V=1; - popd; -done; + cp -a "%name-%version" "%name-$flavor-%version" + pushd "%name-$flavor-%version/" + %configure --with-kbuild="/usr/src/linux-obj/%_target_cpu/$flavor" + make %{?_smp_mflags} V=1 + popd +done %install -b="%buildroot"; -pushd ../; +b="%buildroot" +pushd ../ for flavor in %flavors_to_build; do - pushd "%name-$flavor-%version/"; - make install DESTDIR="$b"; - popd; -done; + pushd "%name-$flavor-%version/" + make install DESTDIR="$b" + popd +done # There is no -devel package. So no need for these files. -find "$b/%_prefix" -iname "*.la" -delete; -find "$b/%_libdir" -maxdepth 1 -type l -iname "*.so" -delete; +find "$b/%_prefix" -iname "*.la" -delete +find "$b/%_libdir" -maxdepth 1 -type l -iname "*.so" -delete %post -p /sbin/ldconfig %postun -p /sbin/ldconfig ++++++ xtables-addons-2.9.tar.xz -> xtables-addons-2.10.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/configure new/xtables-addons-2.10/configure --- old/xtables-addons-2.9/configure 2015-10-12 16:41:15.000000000 +0200 +++ new/xtables-addons-2.10/configure 2015-11-20 23:35:53.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xtables-addons 2.9. +# Generated by GNU Autoconf 2.69 for xtables-addons 2.10. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='xtables-addons' PACKAGE_TARNAME='xtables-addons' -PACKAGE_VERSION='2.9' -PACKAGE_STRING='xtables-addons 2.9' +PACKAGE_VERSION='2.10' +PACKAGE_STRING='xtables-addons 2.10' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1325,7 +1325,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xtables-addons 2.9 to adapt to many kinds of systems. +\`configure' configures xtables-addons 2.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1395,7 +1395,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xtables-addons 2.9:";; + short | recursive ) echo "Configuration of xtables-addons 2.10:";; esac cat <<\_ACEOF @@ -1519,7 +1519,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xtables-addons configure 2.9 +xtables-addons configure 2.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1884,7 +1884,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xtables-addons $as_me 2.9, which was +It was created by xtables-addons $as_me 2.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2750,7 +2750,7 @@ # Define the identity of the package. PACKAGE='xtables-addons' - VERSION='2.9' + VERSION='2.10' cat >>confdefs.h <<_ACEOF @@ -12957,7 +12957,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xtables-addons $as_me 2.9, which was +This file was extended by xtables-addons $as_me 2.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13023,7 +13023,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xtables-addons config.status 2.9 +xtables-addons config.status 2.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/configure.ac new/xtables-addons-2.10/configure.ac --- old/xtables-addons-2.9/configure.ac 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/configure.ac 2015-11-20 23:30:33.000000000 +0100 @@ -1,4 +1,4 @@ -AC_INIT([xtables-addons], [2.9]) +AC_INIT([xtables-addons], [2.10]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/doc/changelog.txt new/xtables-addons-2.10/doc/changelog.txt --- old/xtables-addons-2.9/doc/changelog.txt 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/doc/changelog.txt 2015-11-20 23:30:33.000000000 +0100 @@ -3,6 +3,14 @@ ==== +v2.10 (2015-11-20) +================== +Enhancements: +- Support for Linux 4.4 +Fixes: +- xt_ACCOUNT: call free_page with the right amount of pages + + v2.9 (2015-10-12) ================= Enhancements: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/ACCOUNT/xt_ACCOUNT.c new/xtables-addons-2.10/extensions/ACCOUNT/xt_ACCOUNT.c --- old/xtables-addons-2.9/extensions/ACCOUNT/xt_ACCOUNT.c 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/ACCOUNT/xt_ACCOUNT.c 2015-11-20 23:30:33.000000000 +0100 @@ -115,10 +115,8 @@ // Don't use get_zeroed_page until it's fixed in the kernel. // get_zeroed_page(GFP_ATOMIC) void *mem = (void *)__get_free_pages(GFP_ATOMIC, 2); - if (mem) { + if (mem != NULL) memset(mem, 0, 2 *PAGE_SIZE); - } - return mem; } @@ -139,11 +137,9 @@ if (depth == 1) { struct ipt_acc_mask_16 *mask_16 = data; unsigned int b; - for (b = 0; b <= 255; b++) { - if (mask_16->mask_24[b]) { - free_page((unsigned long)mask_16->mask_24[b]); - } - } + for (b = 0; b <= 255; ++b) + if (mask_16->mask_24[b]) + free_pages((unsigned long)mask_16->mask_24[b], 2); free_pages((unsigned long)data, 2); return; } @@ -156,12 +152,10 @@ struct ipt_acc_mask_16 *mask_16 = ((struct ipt_acc_mask_8 *)data)->mask_16[a]; - for (b = 0; b <= 255; b++) { - if (mask_16->mask_24[b]) { - free_page((unsigned long)mask_16->mask_24[b]); - } - } - free_page((unsigned long)mask_16); + for (b = 0; b <= 255; ++b) + if (mask_16->mask_24[b]) + free_pages((unsigned long)mask_16->mask_24[b], 2); + free_pages((unsigned long)mask_16, 2); } } free_pages((unsigned long)data, 2); @@ -631,18 +625,18 @@ unsigned int b; for (b = 0; b <= 255; b++) { - if (src_16->mask_24[b]) { - if ((network_16->mask_24[b] = - ipt_acc_zalloc_page()) == NULL) { - printk("ACCOUNT: out of memory during copy of 16 bit " - "network in ipt_acc_handle_prepare_read()\n"); - ipt_acc_data_free(dest->data, depth); - return -1; - } - - memcpy(network_16->mask_24[b], src_16->mask_24[b], - sizeof(struct ipt_acc_mask_24)); + if (src_16->mask_24[b] == NULL) + continue; + if ((network_16->mask_24[b] = + ipt_acc_zalloc_page()) == NULL) { + printk("ACCOUNT: out of memory during copy of 16 bit " + "network in ipt_acc_handle_prepare_read()\n"); + ipt_acc_data_free(dest->data, depth); + return -1; } + + memcpy(network_16->mask_24[b], src_16->mask_24[b], + sizeof(struct ipt_acc_mask_24)); } } else if (depth == 2) { struct ipt_acc_mask_8 *src_8 = @@ -652,35 +646,35 @@ unsigned int a, b; for (a = 0; a <= 255; a++) { - if (src_8->mask_16[a]) { - if ((network_8->mask_16[a] = + if (src_8->mask_16[a] == NULL) + continue; + if ((network_8->mask_16[a] = + ipt_acc_zalloc_page()) == NULL) { + printk("ACCOUNT: out of memory during copy of 24 bit network" + " in ipt_acc_handle_prepare_read()\n"); + ipt_acc_data_free(dest->data, depth); + return -1; + } + + memcpy(network_8->mask_16[a], src_8->mask_16[a], + sizeof(struct ipt_acc_mask_16)); + + src_16 = src_8->mask_16[a]; + network_16 = network_8->mask_16[a]; + + for (b = 0; b <= 255; b++) { + if (src_16->mask_24[b] == NULL) + continue; + if ((network_16->mask_24[b] = ipt_acc_zalloc_page()) == NULL) { - printk("ACCOUNT: out of memory during copy of 24 bit network" - " in ipt_acc_handle_prepare_read()\n"); + printk("ACCOUNT: out of memory during copy of 16 bit" + " network in ipt_acc_handle_prepare_read()\n"); ipt_acc_data_free(dest->data, depth); return -1; } - memcpy(network_8->mask_16[a], src_8->mask_16[a], - sizeof(struct ipt_acc_mask_16)); - - src_16 = src_8->mask_16[a]; - network_16 = network_8->mask_16[a]; - - for (b = 0; b <= 255; b++) { - if (src_16->mask_24[b]) { - if ((network_16->mask_24[b] = - ipt_acc_zalloc_page()) == NULL) { - printk("ACCOUNT: out of memory during copy of 16 bit" - " network in ipt_acc_handle_prepare_read()\n"); - ipt_acc_data_free(dest->data, depth); - return -1; - } - - memcpy(network_16->mask_24[b], src_16->mask_24[b], - sizeof(struct ipt_acc_mask_24)); - } - } + memcpy(network_16->mask_24[b], src_16->mask_24[b], + sizeof(struct ipt_acc_mask_24)); } } } @@ -742,25 +736,26 @@ unsigned int i; for (i = 0; i <= 255; i++) { - if (data->ip[i].src_packets || data->ip[i].dst_packets) { - handle_ip.ip = net_ip | net_OR_mask | i; - - handle_ip.src_packets = data->ip[i].src_packets; - handle_ip.src_bytes = data->ip[i].src_bytes; - handle_ip.dst_packets = data->ip[i].dst_packets; - handle_ip.dst_bytes = data->ip[i].dst_bytes; - - /* Temporary buffer full? Flush to userspace */ - if (*tmpbuf_pos + handle_ip_size >= PAGE_SIZE) { - if (copy_to_user(to_user + *to_user_pos, ipt_acc_tmpbuf, - *tmpbuf_pos)) - return -EFAULT; - *to_user_pos = *to_user_pos + *tmpbuf_pos; - *tmpbuf_pos = 0; - } - memcpy(ipt_acc_tmpbuf + *tmpbuf_pos, &handle_ip, handle_ip_size); - *tmpbuf_pos += handle_ip_size; + if (data->ip[i].src_packets == 0 && + data->ip[i].dst_packets == 0) + continue; + + handle_ip.ip = net_ip | net_OR_mask | i; + handle_ip.src_packets = data->ip[i].src_packets; + handle_ip.src_bytes = data->ip[i].src_bytes; + handle_ip.dst_packets = data->ip[i].dst_packets; + handle_ip.dst_bytes = data->ip[i].dst_bytes; + + /* Temporary buffer full? Flush to userspace */ + if (*tmpbuf_pos + handle_ip_size >= PAGE_SIZE) { + if (copy_to_user(to_user + *to_user_pos, ipt_acc_tmpbuf, + *tmpbuf_pos)) + return -EFAULT; + *to_user_pos = *to_user_pos + *tmpbuf_pos; + *tmpbuf_pos = 0; } + memcpy(ipt_acc_tmpbuf + *tmpbuf_pos, &handle_ip, handle_ip_size); + *tmpbuf_pos += handle_ip_size; } return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/compat_xtables.h new/xtables-addons-2.10/extensions/compat_xtables.h --- old/xtables-addons-2.9/extensions/compat_xtables.h 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/compat_xtables.h 2015-11-20 23:30:33.000000000 +0100 @@ -73,4 +73,20 @@ } #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0) +# define ip6_local_out(xnet, xsk, xskb) ip6_local_out(xskb) +# define ip6_route_me_harder(xnet, xskb) ip6_route_me_harder(xskb) +# define ip_local_out(xnet, xsk, xskb) ip_local_out(xskb) +# define ip_route_me_harder(xnet, xskb, xaddrtype) ip_route_me_harder((xskb), (xaddrtype)) +#endif + +static inline struct net *par_net(const struct xt_action_param *par) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + return par->net; +#else + return dev_net((par->in != NULL) ? par->in : par->out); +#endif +} + #endif /* _XTABLES_COMPAT_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/xt_DELUDE.c new/xtables-addons-2.10/extensions/xt_DELUDE.c --- old/xtables-addons-2.9/extensions/xt_DELUDE.c 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/xt_DELUDE.c 2015-11-20 23:30:33.000000000 +0100 @@ -25,7 +25,8 @@ #include "compat_xtables.h" #define PFX KBUILD_MODNAME ": " -static void delude_send_reset(struct sk_buff *oldskb, unsigned int hook) +static void delude_send_reset(struct net *net, struct sk_buff *oldskb, + unsigned int hook) { struct tcphdr _otcph, *tcph; const struct tcphdr *oth; @@ -121,7 +122,7 @@ /* ip_route_me_harder expects skb->dst to be set */ skb_dst_set(nskb, dst_clone(skb_dst(oldskb))); - if (ip_route_me_harder(nskb, addr_type)) + if (ip_route_me_harder(net, nskb, addr_type)) goto free_nskb; else niph = ip_hdr(nskb); @@ -135,7 +136,7 @@ nf_ct_attach(nskb, oldskb); - ip_local_out(nskb); + ip_local_out(net, nskb->sk, nskb); return; free_nskb: @@ -150,7 +151,7 @@ * a problem, as that is supported since Linux 2.6.35. But since we do not * actually want to have a connection open, we are still going to drop it. */ - delude_send_reset(skb, par->hooknum); + delude_send_reset(par_net(par), skb, par->hooknum); return NF_DROP; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/xt_ECHO.c new/xtables-addons-2.10/extensions/xt_ECHO.c --- old/xtables-addons-2.9/extensions/xt_ECHO.c 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/xt_ECHO.c 2015-11-20 23:30:33.000000000 +0100 @@ -112,7 +112,7 @@ goto free_nskb; nf_ct_attach(newskb, oldskb); - ip6_local_out(newskb); + ip6_local_out(par_net(par), newskb->sk, newskb); return NF_DROP; free_nskb: @@ -190,7 +190,7 @@ /* ip_route_me_harder expects the skb's dst to be set */ skb_dst_set(newskb, dst_clone(skb_dst(oldskb))); - if (ip_route_me_harder(newskb, RTN_UNSPEC) != 0) + if (ip_route_me_harder(par_net(par), newskb, RTN_UNSPEC) != 0) goto free_nskb; newip->ttl = ip4_dst_hoplimit(skb_dst(newskb)); @@ -201,7 +201,7 @@ goto free_nskb; nf_ct_attach(newskb, oldskb); - ip_local_out(newskb); + ip_local_out(par_net(par), newskb->sk, newskb); return NF_DROP; free_nskb: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/xt_TARPIT.c new/xtables-addons-2.10/extensions/xt_TARPIT.c --- old/xtables-addons-2.9/extensions/xt_TARPIT.c 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/xt_TARPIT.c 2015-11-20 23:30:33.000000000 +0100 @@ -170,8 +170,8 @@ return true; } -static void tarpit_tcp4(struct sk_buff *oldskb, unsigned int hook, - unsigned int mode) +static void tarpit_tcp4(struct net *net, struct sk_buff *oldskb, + unsigned int hook, unsigned int mode) { struct tcphdr _otcph, *tcph; const struct tcphdr *oth; @@ -261,7 +261,7 @@ #endif addr_type = RTN_LOCAL; - if (ip_route_me_harder(nskb, addr_type)) + if (ip_route_me_harder(net, nskb, addr_type)) goto free_nskb; else niph = ip_hdr(nskb); @@ -284,8 +284,11 @@ nf_ct_attach(nskb, oldskb); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, NULL, nskb, NULL, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, net, nskb->sk, nskb, NULL, + skb_dst(nskb)->dev, dst_output); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) + NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, nskb->sk, nskb, NULL, skb_dst(nskb)->dev, dst_output_sk); #else NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, nskb, NULL, @@ -298,8 +301,8 @@ } #ifdef WITH_IPV6 -static void tarpit_tcp6(struct sk_buff *oldskb, unsigned int hook, - unsigned int mode) +static void tarpit_tcp6(struct net *net, struct sk_buff *oldskb, + unsigned int hook, unsigned int mode) { struct sk_buff *nskb; struct tcphdr *tcph, oth; @@ -397,15 +400,18 @@ IPPROTO_TCP, csum_partial(tcph, sizeof(struct tcphdr), 0)); - if (ip6_route_me_harder(nskb)) + if (ip6_route_me_harder(net, nskb)) goto free_nskb; nskb->ip_summed = CHECKSUM_NONE; nf_ct_attach(nskb, oldskb); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_OUT, NULL, nskb, NULL, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_OUT, net, nskb->sk, nskb, NULL, + skb_dst(nskb)->dev, dst_output); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) + NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_OUT, nskb->sk, nskb, NULL, skb_dst(nskb)->dev, dst_output_sk); #else NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_OUT, nskb, NULL, @@ -449,7 +455,7 @@ if (iph->frag_off & htons(IP_OFFSET)) return NF_DROP; - tarpit_tcp4(skb, par->hooknum, info->variant); + tarpit_tcp4(par_net(par), skb, par->hooknum, info->variant); return NF_DROP; } @@ -491,7 +497,7 @@ return NF_DROP; } - tarpit_tcp6(skb, par->hooknum, info->variant); + tarpit_tcp6(par_net(par), skb, par->hooknum, info->variant); return NF_DROP; } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/extensions/xt_quota2.c new/xtables-addons-2.10/extensions/xt_quota2.c --- old/xtables-addons-2.9/extensions/xt_quota2.c 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/extensions/xt_quota2.c 2015-11-20 23:30:33.000000000 +0100 @@ -64,7 +64,6 @@ static int quota_proc_show(struct seq_file *m, void *data) { struct xt_quota_counter *e = m->private; - int ret; spin_lock_bh(&e->lock); seq_printf(m, "%llu\n", e->quota); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-2.9/xtables-addons.8.in new/xtables-addons-2.10/xtables-addons.8.in --- old/xtables-addons-2.9/xtables-addons.8.in 2015-10-12 16:27:59.000000000 +0200 +++ new/xtables-addons-2.10/xtables-addons.8.in 2015-11-20 23:30:33.000000000 +0100 @@ -1,4 +1,4 @@ -.TH xtables-addons 8 "" "" "v2.9 (2015-10-12)" +.TH xtables-addons 8 "" "" "v2.10 (2015-11-20)" .SH Name Xtables-addons \(em additional extensions for iptables, ip6tables, etc. .SH Targets
