OpenWrt

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/branches/18.06.1/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
@@ -44,7 +44,7 @@
* @sk_lingertime: %SO_LINGER l_linger setting
* @sk_backlog: always used with the per-socket spinlock held
* @sk_callback_lock: used with the callbacks in the end of this struct
@@ -446,6 +447,8 @@ struct sock {
@@ -445,6 +446,8 @@ struct sock {
sk_type : 16;
#define SK_PROTOCOL_MAX U8_MAX
u16 sk_gso_max_segs;
@@ -55,7 +55,7 @@
rwlock_t sk_callback_lock;
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2743,6 +2743,7 @@ void sock_init_data(struct socket *sock,
@@ -2739,6 +2739,7 @@ void sock_init_data(struct socket *sock,
sk->sk_max_pacing_rate = ~0U;
sk->sk_pacing_rate = ~0U;
@@ -74,7 +74,7 @@
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
/* Goal is to send at least one packet per ms,
@@ -2200,7 +2200,7 @@ static bool tcp_small_queue_check(struct
@@ -2184,7 +2184,7 @@ static bool tcp_small_queue_check(struct
{
unsigned int limit;
/branches/18.06.1/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch
@@ -30,7 +30,7 @@
 
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1934,7 +1934,8 @@ static const struct usb_device_id option
@@ -1919,7 +1919,8 @@ static const struct usb_device_id option
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) },
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) },
/branches/18.06.1/target/linux/generic/backport-4.14/301-v4.16-netfilter-core-only-allow-one-nat-hook-per-hook-poin.patch
@@ -120,7 +120,7 @@
.priority = NF_IP6_PRI_NAT_SRC,
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
@@ -160,6 +160,12 @@ nf_hook_entries_grow(const struct nf_hoo
@@ -135,6 +135,12 @@ nf_hook_entries_grow(const struct nf_hoo
++i;
continue;
}
/branches/18.06.1/target/linux/generic/backport-4.14/303-v4.16-netfilter-nf_tables-remove-multihook-chains-and-fami.patch
@@ -228,7 +228,7 @@
err1:
nf_tables_chain_destroy(chain);
@@ -1478,13 +1469,12 @@ static int nf_tables_updchain(struct nft
@@ -1478,14 +1469,13 @@ static int nf_tables_updchain(struct nft
const struct nlattr * const *nla = ctx->nla;
struct nft_table *table = ctx->table;
struct nft_chain *chain = ctx->chain;
@@ -236,6 +236,7 @@
struct nft_base_chain *basechain;
struct nft_stats *stats = NULL;
struct nft_chain_hook hook;
const struct nlattr *name;
struct nf_hook_ops *ops;
struct nft_trans *trans;
- int err, i;
@@ -243,7 +244,7 @@
if (nla[NFTA_CHAIN_HOOK]) {
if (!nft_is_base_chain(chain))
@@ -1501,14 +1491,12 @@ static int nf_tables_updchain(struct nft
@@ -1502,14 +1492,12 @@ static int nf_tables_updchain(struct nft
return -EBUSY;
}
@@ -264,7 +265,7 @@
}
nft_chain_release_hook(&hook);
}
@@ -5129,10 +5117,9 @@ static int nf_tables_commit(struct net *
@@ -5113,10 +5101,9 @@ static int nf_tables_commit(struct net *
case NFT_MSG_DELCHAIN:
list_del_rcu(&trans->ctx.chain->list);
nf_tables_chain_notify(&trans->ctx, NFT_MSG_DELCHAIN);
@@ -278,7 +279,7 @@
break;
case NFT_MSG_NEWRULE:
nft_clear(trans->ctx.net, nft_trans_rule(trans));
@@ -5269,10 +5256,9 @@ static int nf_tables_abort(struct net *n
@@ -5253,10 +5240,9 @@ static int nf_tables_abort(struct net *n
} else {
trans->ctx.table->use--;
list_del_rcu(&trans->ctx.chain->list);
@@ -292,7 +293,7 @@
}
break;
case NFT_MSG_DELCHAIN:
@@ -5375,7 +5361,7 @@ int nft_chain_validate_hooks(const struc
@@ -5359,7 +5345,7 @@ int nft_chain_validate_hooks(const struc
if (nft_is_base_chain(chain)) {
basechain = nft_base_chain(chain);
@@ -301,7 +302,7 @@
return 0;
return -EOPNOTSUPP;
@@ -5857,8 +5843,7 @@ int __nft_release_basechain(struct nft_c
@@ -5841,8 +5827,7 @@ int __nft_release_basechain(struct nft_c
BUG_ON(!nft_is_base_chain(ctx->chain));
@@ -311,7 +312,7 @@
list_for_each_entry_safe(rule, nr, &ctx->chain->rules, list) {
list_del(&rule->list);
ctx->chain->use--;
@@ -5887,8 +5872,7 @@ static void __nft_release_afinfo(struct
@@ -5871,8 +5856,7 @@ static void __nft_release_afinfo(struct
list_for_each_entry_safe(table, nt, &afi->tables, list) {
list_for_each_entry(chain, &table->chains, list)
@@ -379,7 +380,7 @@
par->hook_mask = 1 << ops->hooknum;
} else {
@@ -565,7 +565,7 @@ static int nft_match_validate(const stru
@@ -564,7 +564,7 @@ static int nft_match_validate(const stru
if (nft_is_base_chain(ctx->chain)) {
const struct nft_base_chain *basechain =
nft_base_chain(ctx->chain);
/branches/18.06.1/target/linux/generic/backport-4.14/304-v4.16-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch
@@ -18,7 +18,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -311,8 +311,6 @@ struct nf_queue_entry;
@@ -274,8 +274,6 @@ struct nf_queue_entry;
struct nf_afinfo {
unsigned short family;
@@ -27,7 +27,7 @@
__sum16 (*checksum_partial)(struct sk_buff *skb,
unsigned int hook,
unsigned int dataoff,
@@ -333,20 +331,9 @@ static inline const struct nf_afinfo *nf
@@ -296,20 +294,9 @@ static inline const struct nf_afinfo *nf
return rcu_dereference(nf_afinfo[family]);
}
@@ -116,7 +116,7 @@
.saveroute = nf_ip_saveroute,
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -194,12 +194,12 @@ static __sum16 nf_ip6_checksum_partial(s
@@ -193,12 +193,12 @@ static __sum16 nf_ip6_checksum_partial(s
static const struct nf_ipv6_ops ipv6ops = {
.chk_addr = ipv6_chk_addr,
.route_input = ip6_route_input,
/branches/18.06.1/target/linux/generic/backport-4.14/305-v4.16-netfilter-move-checksum_partial-indirection-to-struc.patch
@@ -18,7 +18,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -311,11 +311,6 @@ struct nf_queue_entry;
@@ -274,11 +274,6 @@ struct nf_queue_entry;
struct nf_afinfo {
unsigned short family;
@@ -30,7 +30,7 @@
int (*route)(struct net *net, struct dst_entry **dst,
struct flowi *fl, bool strict);
void (*saveroute)(const struct sk_buff *skb,
@@ -335,22 +330,9 @@ __sum16 nf_checksum(struct sk_buff *skb,
@@ -298,22 +293,9 @@ __sum16 nf_checksum(struct sk_buff *skb,
unsigned int dataoff, u_int8_t protocol,
unsigned short family);
@@ -151,7 +151,7 @@
.reroute = nf_ip_reroute,
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -192,15 +192,15 @@ static __sum16 nf_ip6_checksum_partial(s
@@ -191,15 +191,15 @@ static __sum16 nf_ip6_checksum_partial(s
};
static const struct nf_ipv6_ops ipv6ops = {
/branches/18.06.1/target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch
@@ -11,7 +11,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -313,8 +313,6 @@ struct nf_afinfo {
@@ -276,8 +276,6 @@ struct nf_afinfo {
unsigned short family;
int (*route)(struct net *net, struct dst_entry **dst,
struct flowi *fl, bool strict);
@@ -125,7 +125,7 @@
};
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -70,31 +70,6 @@ int ip6_route_me_harder(struct net *net,
@@ -69,31 +69,6 @@ int ip6_route_me_harder(struct net *net,
}
EXPORT_SYMBOL(ip6_route_me_harder);
@@ -157,7 +157,7 @@
static int nf_ip6_reroute(struct net *net, struct sk_buff *skb,
const struct nf_queue_entry *entry)
{
@@ -202,7 +177,6 @@ static const struct nf_ipv6_ops ipv6ops
@@ -201,7 +176,6 @@ static const struct nf_ipv6_ops ipv6ops
static const struct nf_afinfo nf_ip6_afinfo = {
.family = AF_INET6,
.route = nf_ip6_route,
@@ -176,7 +176,7 @@
#include <linux/netfilter_bridge.h>
#include <linux/seq_file.h>
#include <linux/rcupdate.h>
@@ -108,6 +110,35 @@ void nf_queue_nf_hook_drop(struct net *n
@@ -111,6 +113,35 @@ unsigned int nf_queue_nf_hook_drop(struc
}
EXPORT_SYMBOL_GPL(nf_queue_nf_hook_drop);
@@ -212,7 +212,7 @@
static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
const struct nf_hook_entries *entries,
unsigned int index, unsigned int queuenum)
@@ -144,7 +175,16 @@ static int __nf_queue(struct sk_buff *sk
@@ -147,7 +178,16 @@ static int __nf_queue(struct sk_buff *sk
nf_queue_entry_get_refs(entry);
skb_dst_force(skb);
/branches/18.06.1/target/linux/generic/backport-4.14/307-v4.16-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch
@@ -17,7 +17,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -311,8 +311,6 @@ struct nf_queue_entry;
@@ -274,8 +274,6 @@ struct nf_queue_entry;
struct nf_afinfo {
unsigned short family;
@@ -26,7 +26,7 @@
int (*reroute)(struct net *net, struct sk_buff *skb,
const struct nf_queue_entry *entry);
int route_key_size;
@@ -331,6 +329,8 @@ __sum16 nf_checksum(struct sk_buff *skb,
@@ -294,6 +292,8 @@ __sum16 nf_checksum(struct sk_buff *skb,
__sum16 nf_checksum_partial(struct sk_buff *skb, unsigned int hook,
unsigned int dataoff, unsigned int len,
u_int8_t protocol, unsigned short family);
@@ -114,7 +114,7 @@
};
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -172,11 +172,11 @@ static const struct nf_ipv6_ops ipv6ops
@@ -171,11 +171,11 @@ static const struct nf_ipv6_ops ipv6ops
.fragment = ip6_fragment,
.checksum = nf_ip6_checksum,
.checksum_partial = nf_ip6_checksum_partial,
/branches/18.06.1/target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch
@@ -17,7 +17,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -311,8 +311,6 @@ struct nf_queue_entry;
@@ -274,8 +274,6 @@ struct nf_queue_entry;
struct nf_afinfo {
unsigned short family;
@@ -26,7 +26,7 @@
int route_key_size;
};
@@ -331,6 +329,7 @@ __sum16 nf_checksum_partial(struct sk_bu
@@ -294,6 +292,7 @@ __sum16 nf_checksum_partial(struct sk_bu
u_int8_t protocol, unsigned short family);
int nf_route(struct net *net, struct dst_entry **dst, struct flowi *fl,
bool strict, unsigned short family);
@@ -138,7 +138,7 @@
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -70,7 +70,7 @@ int ip6_route_me_harder(struct net *net,
@@ -69,7 +69,7 @@ int ip6_route_me_harder(struct net *net,
}
EXPORT_SYMBOL(ip6_route_me_harder);
@@ -147,7 +147,7 @@
const struct nf_queue_entry *entry)
{
struct ip6_rt_info *rt_info = nf_queue_entry_reroute(entry);
@@ -80,7 +80,7 @@ static int nf_ip6_reroute(struct net *ne
@@ -79,7 +79,7 @@ static int nf_ip6_reroute(struct net *ne
if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) ||
!ipv6_addr_equal(&iph->saddr, &rt_info->saddr) ||
skb->mark != rt_info->mark)
@@ -156,7 +156,7 @@
}
return 0;
}
@@ -173,11 +173,11 @@ static const struct nf_ipv6_ops ipv6ops
@@ -172,11 +172,11 @@ static const struct nf_ipv6_ops ipv6ops
.checksum = nf_ip6_checksum,
.checksum_partial = nf_ip6_checksum_partial,
.route = nf_ip6_route,
@@ -171,7 +171,7 @@
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
@@ -266,7 +266,6 @@ void nf_reinject(struct nf_queue_entry *
@@ -250,7 +250,6 @@ void nf_reinject(struct nf_queue_entry *
const struct nf_hook_entry *hook_entry;
const struct nf_hook_entries *hooks;
struct sk_buff *skb = entry->skb;
@@ -179,7 +179,7 @@
const struct net *net;
unsigned int i;
int err;
@@ -293,8 +292,7 @@ void nf_reinject(struct nf_queue_entry *
@@ -277,8 +276,7 @@ void nf_reinject(struct nf_queue_entry *
verdict = nf_hook_entry_hookfn(hook_entry, skb, &entry->state);
if (verdict == NF_ACCEPT) {
/branches/18.06.1/target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch
@@ -9,7 +9,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -311,7 +311,6 @@ struct nf_queue_entry;
@@ -274,7 +274,6 @@ struct nf_queue_entry;
struct nf_afinfo {
unsigned short family;
@@ -29,7 +29,7 @@
static int __init ipv4_netfilter_init(void)
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -178,7 +178,6 @@ static const struct nf_ipv6_ops ipv6ops
@@ -177,7 +177,6 @@ static const struct nf_ipv6_ops ipv6ops
static const struct nf_afinfo nf_ip6_afinfo = {
.family = AF_INET6,
@@ -48,7 +48,7 @@
#include <net/protocol.h>
#include <net/netfilter/nf_queue.h>
#include <net/dst.h>
@@ -145,9 +147,9 @@ static int __nf_queue(struct sk_buff *sk
@@ -148,9 +150,9 @@ static int __nf_queue(struct sk_buff *sk
{
int status = -ENOENT;
struct nf_queue_entry *entry = NULL;
@@ -59,7 +59,7 @@
/* QUEUE == DROP if no one is waiting, to be safe. */
qh = rcu_dereference(net->nf.queue_handler);
@@ -156,11 +158,19 @@ static int __nf_queue(struct sk_buff *sk
@@ -159,11 +161,19 @@ static int __nf_queue(struct sk_buff *sk
goto err;
}
@@ -83,7 +83,7 @@
if (!entry) {
status = -ENOMEM;
goto err;
@@ -170,7 +180,7 @@ static int __nf_queue(struct sk_buff *sk
@@ -173,7 +183,7 @@ static int __nf_queue(struct sk_buff *sk
.skb = skb,
.state = *state,
.hook_index = index,
/branches/18.06.1/target/linux/generic/backport-4.14/310-v4.16-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch
@@ -12,7 +12,7 @@
 
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -309,16 +309,6 @@ int skb_make_writable(struct sk_buff *sk
@@ -272,16 +272,6 @@ int skb_make_writable(struct sk_buff *sk
struct flowi;
struct nf_queue_entry;
@@ -29,7 +29,7 @@
__sum16 nf_checksum(struct sk_buff *skb, unsigned int hook,
unsigned int dataoff, u_int8_t protocol,
unsigned short family);
@@ -330,9 +320,6 @@ int nf_route(struct net *net, struct dst
@@ -293,9 +283,6 @@ int nf_route(struct net *net, struct dst
bool strict, unsigned short family);
int nf_reroute(struct sk_buff *skb, struct nf_queue_entry *entry);
@@ -102,7 +102,7 @@
-subsys_initcall(ipv4_netfilter_init);
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -176,14 +176,10 @@ static const struct nf_ipv6_ops ipv6ops
@@ -175,14 +175,10 @@ static const struct nf_ipv6_ops ipv6ops
.reroute = nf_ip6_reroute,
};
@@ -118,7 +118,7 @@
}
/* This can be called from inet6_init() on errors, so it cannot
@@ -192,5 +188,4 @@ int __init ipv6_netfilter_init(void)
@@ -191,5 +187,4 @@ int __init ipv6_netfilter_init(void)
void ipv6_netfilter_fini(void)
{
RCU_INIT_POINTER(nf_ipv6_ops, NULL);
/branches/18.06.1/target/linux/generic/backport-4.14/320-v4.16-netfilter-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch
@@ -57,7 +57,7 @@
if (nf_ct_is_expired(tmp)) {
nf_ct_gc_expired(tmp);
continue;
@@ -978,6 +981,18 @@ static bool gc_worker_can_early_drop(con
@@ -975,6 +978,18 @@ static bool gc_worker_can_early_drop(con
return false;
}
@@ -76,7 +76,7 @@
static void gc_worker(struct work_struct *work)
{
unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u);
@@ -1014,6 +1029,11 @@ static void gc_worker(struct work_struct
@@ -1011,6 +1026,11 @@ static void gc_worker(struct work_struct
tmp = nf_ct_tuplehash_to_ctrack(h);
scanned++;
@@ -90,7 +90,7 @@
expired_count++;
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1120,6 +1120,14 @@ static const struct nla_policy ct_nla_po
@@ -1105,6 +1105,14 @@ static const struct nla_policy ct_nla_po
.len = NF_CT_LABELS_MAX_SIZE },
};
@@ -105,7 +105,7 @@
static int ctnetlink_flush_conntrack(struct net *net,
const struct nlattr * const cda[],
u32 portid, int report)
@@ -1132,7 +1140,7 @@ static int ctnetlink_flush_conntrack(str
@@ -1117,7 +1125,7 @@ static int ctnetlink_flush_conntrack(str
return PTR_ERR(filter);
}
@@ -114,7 +114,7 @@
portid, report);
kfree(filter);
@@ -1178,6 +1186,11 @@ static int ctnetlink_del_conntrack(struc
@@ -1163,6 +1171,11 @@ static int ctnetlink_del_conntrack(struc
ct = nf_ct_tuplehash_to_ctrack(h);
/branches/18.06.1/target/linux/generic/backport-4.14/321-v4.16-netfilter-nf_tables-add-flow-table-netlink-frontend.patch
@@ -292,7 +292,7 @@
list_for_each_entry_safe(obj, ne, &ctx->table->objects, list) {
err = nft_delobj(ctx, obj);
if (err < 0)
@@ -4829,6 +4873,605 @@ static void nf_tables_obj_notify(const s
@@ -4818,6 +4862,605 @@ static void nf_tables_obj_notify(const s
ctx->afi->family, ctx->report, GFP_KERNEL);
}
@@ -898,7 +898,7 @@
static int nf_tables_fill_gen_info(struct sk_buff *skb, struct net *net,
u32 portid, u32 seq)
{
@@ -4859,6 +5502,49 @@ nla_put_failure:
@@ -4848,6 +5491,49 @@ nla_put_failure:
return -EMSGSIZE;
}
@@ -948,7 +948,7 @@
static void nf_tables_gen_notify(struct net *net, struct sk_buff *skb,
int event)
{
@@ -5011,6 +5697,21 @@ static const struct nfnl_callback nf_tab
@@ -5000,6 +5686,21 @@ static const struct nfnl_callback nf_tab
.attr_count = NFTA_OBJ_MAX,
.policy = nft_obj_policy,
},
@@ -970,7 +970,7 @@
};
static void nft_chain_commit_update(struct nft_trans *trans)
@@ -5059,6 +5760,9 @@ static void nf_tables_commit_release(str
@@ -5045,6 +5746,9 @@ static void nf_tables_commit_release(str
case NFT_MSG_DELOBJ:
nft_obj_destroy(nft_trans_obj(trans));
break;
@@ -980,7 +980,7 @@
}
kfree(trans);
}
@@ -5178,6 +5882,21 @@ static int nf_tables_commit(struct net *
@@ -5162,6 +5866,21 @@ static int nf_tables_commit(struct net *
nf_tables_obj_notify(&trans->ctx, nft_trans_obj(trans),
NFT_MSG_DELOBJ);
break;
@@ -1002,7 +1002,7 @@
}
}
@@ -5215,6 +5934,9 @@ static void nf_tables_abort_release(stru
@@ -5199,6 +5918,9 @@ static void nf_tables_abort_release(stru
case NFT_MSG_NEWOBJ:
nft_obj_destroy(nft_trans_obj(trans));
break;
@@ -1012,7 +1012,7 @@
}
kfree(trans);
}
@@ -5306,6 +6028,17 @@ static int nf_tables_abort(struct net *n
@@ -5290,6 +6012,17 @@ static int nf_tables_abort(struct net *n
nft_clear(trans->ctx.net, nft_trans_obj(trans));
nft_trans_destroy(trans);
break;
@@ -1030,7 +1030,7 @@
}
}
@@ -5856,6 +6589,7 @@ EXPORT_SYMBOL_GPL(__nft_release_basechai
@@ -5840,6 +6573,7 @@ EXPORT_SYMBOL_GPL(__nft_release_basechai
/* Called by nft_unregister_afinfo() from __net_exit path, nfnl_lock is held. */
static void __nft_release_afinfo(struct net *net, struct nft_af_info *afi)
{
@@ -1038,7 +1038,7 @@
struct nft_table *table, *nt;
struct nft_chain *chain, *nc;
struct nft_object *obj, *ne;
@@ -5869,6 +6603,9 @@ static void __nft_release_afinfo(struct
@@ -5853,6 +6587,9 @@ static void __nft_release_afinfo(struct
list_for_each_entry_safe(table, nt, &afi->tables, list) {
list_for_each_entry(chain, &table->chains, list)
nf_tables_unregister_hook(net, table, chain);
@@ -1048,7 +1048,7 @@
/* No packets are walking on these chains anymore. */
ctx.table = table;
list_for_each_entry(chain, &table->chains, list) {
@@ -5879,6 +6616,11 @@ static void __nft_release_afinfo(struct
@@ -5863,6 +6600,11 @@ static void __nft_release_afinfo(struct
nf_tables_rule_release(&ctx, rule);
}
}
@@ -1060,7 +1060,7 @@
list_for_each_entry_safe(set, ns, &table->sets, list) {
list_del(&set->list);
table->use--;
@@ -5922,6 +6664,8 @@ static int __init nf_tables_module_init(
@@ -5906,6 +6648,8 @@ static int __init nf_tables_module_init(
if (err < 0)
goto err3;
@@ -1069,7 +1069,7 @@
pr_info("nf_tables: (c) 2007-2009 Patrick McHardy <kaber@trash.net>\n");
return register_pernet_subsys(&nf_tables_net_ops);
err3:
@@ -5936,6 +6680,7 @@ static void __exit nf_tables_module_exit
@@ -5920,6 +6664,7 @@ static void __exit nf_tables_module_exit
{
unregister_pernet_subsys(&nf_tables_net_ops);
nfnetlink_subsys_unregister(&nf_tables_subsys);
/branches/18.06.1/target/linux/generic/backport-4.14/322-v4.16-netfilter-add-generic-flow-table-infrastructure.patch
@@ -126,7 +126,7 @@
#endif /* _FLOW_OFFLOAD_H */
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -667,6 +667,13 @@ endif # NF_TABLES_NETDEV
@@ -661,6 +661,13 @@ endif # NF_TABLES_NETDEV
endif # NF_TABLES
/branches/18.06.1/target/linux/generic/backport-4.14/323-v4.16-netfilter-flow-table-support-for-IPv4.patch
@@ -19,7 +19,7 @@
 
--- a/net/ipv4/netfilter/Kconfig
+++ b/net/ipv4/netfilter/Kconfig
@@ -78,6 +78,14 @@ config NF_TABLES_ARP
@@ -77,6 +77,14 @@ config NF_TABLES_ARP
endif # NF_TABLES
/branches/18.06.1/target/linux/generic/backport-4.14/324-v4.16-netfilter-flow-table-support-for-IPv6.patch
@@ -15,7 +15,7 @@
 
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -889,6 +889,8 @@ static inline struct sk_buff *ip6_finish
@@ -918,6 +918,8 @@ static inline struct sk_buff *ip6_finish
&inet6_sk(sk)->cork);
}
@@ -26,7 +26,7 @@
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -381,7 +381,7 @@ static inline int ip6_forward_finish(str
@@ -383,7 +383,7 @@ static inline int ip6_forward_finish(str
return dst_output(net, sk, skb);
}
@@ -35,7 +35,7 @@
{
unsigned int mtu;
struct inet6_dev *idev;
@@ -401,6 +401,7 @@ static unsigned int ip6_dst_mtu_forward(
@@ -403,6 +403,7 @@ static unsigned int ip6_dst_mtu_forward(
return mtu;
}
/branches/18.06.1/target/linux/generic/backport-4.14/325-v4.16-netfilter-flow-table-support-for-the-mixed-IPv4-IPv6.patch
@@ -63,7 +63,7 @@
.family = NFPROTO_IPV6,
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -667,6 +667,14 @@ endif # NF_TABLES_NETDEV
@@ -661,6 +661,14 @@ endif # NF_TABLES_NETDEV
endif # NF_TABLES
/branches/18.06.1/target/linux/generic/backport-4.14/326-v4.16-netfilter-nf_tables-flow-offload-expression.patch
@@ -39,7 +39,7 @@
NFT_LIMIT_PKT_BYTES
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -515,6 +515,13 @@ config NFT_CT
@@ -509,6 +509,13 @@ config NFT_CT
This option adds the "ct" expression that you can use to match
connection tracking information such as the flow state.
/branches/18.06.1/target/linux/generic/backport-4.14/327-v4.16-netfilter-nf_tables-remove-nhooks-field-from-struct-.patch
@@ -82,7 +82,7 @@
hook->priority = ntohl(nla_get_be32(ha[NFTA_HOOK_PRIORITY]));
type = chain_type[afi->family][NFT_CHAIN_T_DEFAULT];
@@ -4981,7 +4978,7 @@ static int nf_tables_flowtable_parse_hoo
@@ -4970,7 +4967,7 @@ static int nf_tables_flowtable_parse_hoo
return -EINVAL;
hooknum = ntohl(nla_get_be32(tb[NFTA_FLOWTABLE_HOOK_NUM]));
/branches/18.06.1/target/linux/generic/backport-4.14/328-v4.16-netfilter-nf_tables-fix-a-typo-in-nf_tables_getflowt.patch
@@ -11,7 +11,7 @@
 
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -5405,7 +5405,7 @@ static int nf_tables_getflowtable(struct
@@ -5394,7 +5394,7 @@ static int nf_tables_getflowtable(struct
flowtable = nf_tables_flowtable_lookup(table, nla[NFTA_FLOWTABLE_NAME],
genmask);
/branches/18.06.1/target/linux/generic/backport-4.14/329-v4.16-netfilter-improve-flow-table-Kconfig-dependencies.patch
@@ -59,7 +59,7 @@
 
--- a/net/ipv4/netfilter/Kconfig
+++ b/net/ipv4/netfilter/Kconfig
@@ -79,8 +79,9 @@ config NF_TABLES_ARP
@@ -78,8 +78,9 @@ config NF_TABLES_ARP
endif # NF_TABLES
config NF_FLOW_TABLE_IPV4
@@ -85,7 +85,7 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -675,8 +675,9 @@ endif # NF_TABLES_NETDEV
@@ -669,8 +669,9 @@ endif # NF_TABLES_NETDEV
endif # NF_TABLES
config NF_FLOW_TABLE_INET
@@ -96,7 +96,7 @@
help
This option adds the flow table mixed IPv4/IPv6 support.
@@ -684,6 +685,7 @@ config NF_FLOW_TABLE_INET
@@ -678,6 +679,7 @@ config NF_FLOW_TABLE_INET
config NF_FLOW_TABLE
tristate "Netfilter flow table module"
/branches/18.06.1/target/linux/generic/backport-4.14/331-v4.16-netfilter-nf_tables-no-need-for-struct-nft_af_info-t.patch
@@ -62,7 +62,7 @@
if (ret >= 0) {
ctx->table->flags &= ~NFT_TABLE_F_DORMANT;
nft_trans_table_enable(trans) = true;
@@ -5786,7 +5779,6 @@ static int nf_tables_commit(struct net *
@@ -5772,7 +5765,6 @@ static int nf_tables_commit(struct net *
if (nft_trans_table_update(trans)) {
if (!nft_trans_table_enable(trans)) {
nf_tables_table_disable(net,
@@ -70,7 +70,7 @@
trans->ctx.table);
trans->ctx.table->flags |= NFT_TABLE_F_DORMANT;
}
@@ -5950,7 +5942,6 @@ static int nf_tables_abort(struct net *n
@@ -5934,7 +5926,6 @@ static int nf_tables_abort(struct net *n
if (nft_trans_table_update(trans)) {
if (nft_trans_table_enable(trans)) {
nf_tables_table_disable(net,
/branches/18.06.1/target/linux/generic/backport-4.14/334-v4.15-netfilter-nf_tables-fix-potential-NULL-ptr-deref-in-.patch
@@ -15,7 +15,7 @@
 
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -5324,8 +5324,10 @@ static int nf_tables_dump_flowtable_done
@@ -5313,8 +5313,10 @@ static int nf_tables_dump_flowtable_done
if (!filter)
return 0;
/branches/18.06.1/target/linux/generic/backport-4.14/335-v4.16-netfilter-nf_tables-add-single-table-list-for-all-fa.patch
@@ -467,7 +467,7 @@
if (err < 0)
return err;
@@ -1508,7 +1503,7 @@ static int nf_tables_updchain(struct nft
@@ -1509,7 +1504,7 @@ static int nf_tables_updchain(struct nft
if (!nft_is_base_chain(chain))
return -EBUSY;
@@ -476,7 +476,7 @@
create);
if (err < 0)
return err;
@@ -1618,7 +1613,8 @@ static int nf_tables_newchain(struct net
@@ -1602,7 +1597,8 @@ static int nf_tables_newchain(struct net
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -486,7 +486,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1658,7 +1654,7 @@ static int nf_tables_newchain(struct net
@@ -1642,7 +1638,7 @@ static int nf_tables_newchain(struct net
}
}
@@ -495,7 +495,7 @@
if (chain != NULL) {
if (nlh->nlmsg_flags & NLM_F_EXCL)
@@ -1692,7 +1688,8 @@ static int nf_tables_delchain(struct net
@@ -1676,7 +1672,8 @@ static int nf_tables_delchain(struct net
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -505,7 +505,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1704,7 +1701,7 @@ static int nf_tables_delchain(struct net
@@ -1688,7 +1685,7 @@ static int nf_tables_delchain(struct net
chain->use > 0)
return -EBUSY;
@@ -514,7 +514,7 @@
use = chain->use;
list_for_each_entry(rule, &chain->rules, list) {
@@ -1869,7 +1866,7 @@ static int nf_tables_expr_parse(const st
@@ -1853,7 +1850,7 @@ static int nf_tables_expr_parse(const st
if (err < 0)
return err;
@@ -523,7 +523,7 @@
if (IS_ERR(type))
return PTR_ERR(type);
@@ -2093,7 +2090,7 @@ static void nf_tables_rule_notify(const
@@ -2077,7 +2074,7 @@ static void nf_tables_rule_notify(const
goto err;
err = nf_tables_fill_rule_info(skb, ctx->net, ctx->portid, ctx->seq,
@@ -532,7 +532,7 @@
ctx->chain, rule);
if (err < 0) {
kfree_skb(skb);
@@ -2117,7 +2114,6 @@ static int nf_tables_dump_rules(struct s
@@ -2101,7 +2098,6 @@ static int nf_tables_dump_rules(struct s
{
const struct nfgenmsg *nfmsg = nlmsg_data(cb->nlh);
const struct nft_rule_dump_ctx *ctx = cb->data;
@@ -540,7 +540,7 @@
const struct nft_table *table;
const struct nft_chain *chain;
const struct nft_rule *rule;
@@ -2128,39 +2124,37 @@ static int nf_tables_dump_rules(struct s
@@ -2112,39 +2108,37 @@ static int nf_tables_dump_rules(struct s
rcu_read_lock();
cb->seq = net->nft.base_seq;
@@ -605,7 +605,7 @@
}
}
}
@@ -2238,7 +2232,8 @@ static int nf_tables_getrule(struct net
@@ -2222,7 +2216,8 @@ static int nf_tables_getrule(struct net
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -615,7 +615,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2323,7 +2318,8 @@ static int nf_tables_newrule(struct net
@@ -2306,7 +2301,8 @@ static int nf_tables_newrule(struct net
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -625,7 +625,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2362,7 +2358,7 @@ static int nf_tables_newrule(struct net
@@ -2345,7 +2341,7 @@ static int nf_tables_newrule(struct net
return PTR_ERR(old_rule);
}
@@ -634,7 +634,7 @@
n = 0;
size = 0;
@@ -2495,7 +2491,8 @@ static int nf_tables_delrule(struct net
@@ -2485,7 +2481,8 @@ static int nf_tables_delrule(struct net
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -644,7 +644,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2506,7 +2503,7 @@ static int nf_tables_delrule(struct net
@@ -2496,7 +2493,7 @@ static int nf_tables_delrule(struct net
return PTR_ERR(chain);
}
@@ -653,7 +653,7 @@
if (chain) {
if (nla[NFTA_RULE_HANDLE]) {
@@ -2704,13 +2701,13 @@ static int nft_ctx_init_from_setattr(str
@@ -2694,13 +2691,13 @@ static int nft_ctx_init_from_setattr(str
if (afi == NULL)
return -EAFNOSUPPORT;
@@ -670,7 +670,7 @@
return 0;
}
@@ -2838,7 +2835,7 @@ static int nf_tables_fill_set(struct sk_
@@ -2828,7 +2825,7 @@ static int nf_tables_fill_set(struct sk_
goto nla_put_failure;
nfmsg = nlmsg_data(nlh);
@@ -679,7 +679,7 @@
nfmsg->version = NFNETLINK_V0;
nfmsg->res_id = htons(ctx->net->nft.base_seq & 0xffff);
@@ -2930,10 +2927,8 @@ static int nf_tables_dump_sets(struct sk
@@ -2920,10 +2917,8 @@ static int nf_tables_dump_sets(struct sk
{
const struct nft_set *set;
unsigned int idx, s_idx = cb->args[0];
@@ -690,7 +690,7 @@
struct nft_ctx *ctx = cb->data, ctx_set;
if (cb->args[1])
@@ -2942,51 +2937,44 @@ static int nf_tables_dump_sets(struct sk
@@ -2932,51 +2927,44 @@ static int nf_tables_dump_sets(struct sk
rcu_read_lock();
cb->seq = net->nft.base_seq;
@@ -771,7 +771,7 @@
}
cb->args[1] = 1;
done:
@@ -3196,11 +3184,12 @@ static int nf_tables_newset(struct net *
@@ -3186,11 +3174,12 @@ static int nf_tables_newset(struct net *
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -786,7 +786,7 @@
set = nf_tables_set_lookup(table, nla[NFTA_SET_NAME], genmask);
if (IS_ERR(set)) {
@@ -3469,12 +3458,12 @@ static int nft_ctx_init_from_elemattr(st
@@ -3459,12 +3448,12 @@ static int nft_ctx_init_from_elemattr(st
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -802,7 +802,7 @@
return 0;
}
@@ -3579,7 +3568,6 @@ static int nf_tables_dump_set(struct sk_
@@ -3569,7 +3558,6 @@ static int nf_tables_dump_set(struct sk_
{
struct nft_set_dump_ctx *dump_ctx = cb->data;
struct net *net = sock_net(skb->sk);
@@ -810,7 +810,7 @@
struct nft_table *table;
struct nft_set *set;
struct nft_set_dump_args args;
@@ -3591,21 +3579,19 @@ static int nf_tables_dump_set(struct sk_
@@ -3581,21 +3569,19 @@ static int nf_tables_dump_set(struct sk_
int event;
rcu_read_lock();
@@ -841,7 +841,7 @@
}
break;
}
@@ -3625,7 +3611,7 @@ static int nf_tables_dump_set(struct sk_
@@ -3615,7 +3601,7 @@ static int nf_tables_dump_set(struct sk_
goto nla_put_failure;
nfmsg = nlmsg_data(nlh);
@@ -850,7 +850,7 @@
nfmsg->version = NFNETLINK_V0;
nfmsg->res_id = htons(net->nft.base_seq & 0xffff);
@@ -3727,7 +3713,7 @@ static int nf_tables_fill_setelem_info(s
@@ -3717,7 +3703,7 @@ static int nf_tables_fill_setelem_info(s
goto nla_put_failure;
nfmsg = nlmsg_data(nlh);
@@ -859,7 +859,7 @@
nfmsg->version = NFNETLINK_V0;
nfmsg->res_id = htons(ctx->net->nft.base_seq & 0xffff);
@@ -3971,7 +3957,7 @@ static int nft_add_set_elem(struct nft_c
@@ -3961,7 +3947,7 @@ static int nft_add_set_elem(struct nft_c
list_for_each_entry(binding, &set->bindings, list) {
struct nft_ctx bind_ctx = {
.net = ctx->net,
@@ -868,7 +868,7 @@
.table = ctx->table,
.chain = (struct nft_chain *)binding->chain,
};
@@ -4521,7 +4507,8 @@ static int nf_tables_newobj(struct net *
@@ -4510,7 +4496,8 @@ static int nf_tables_newobj(struct net *
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -878,7 +878,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4539,7 +4526,7 @@ static int nf_tables_newobj(struct net *
@@ -4528,7 +4515,7 @@ static int nf_tables_newobj(struct net *
return 0;
}
@@ -887,7 +887,7 @@
type = nft_obj_type_get(objtype);
if (IS_ERR(type))
@@ -4616,7 +4603,6 @@ struct nft_obj_filter {
@@ -4605,7 +4592,6 @@ struct nft_obj_filter {
static int nf_tables_dump_obj(struct sk_buff *skb, struct netlink_callback *cb)
{
const struct nfgenmsg *nfmsg = nlmsg_data(cb->nlh);
@@ -895,7 +895,7 @@
const struct nft_table *table;
unsigned int idx = 0, s_idx = cb->args[0];
struct nft_obj_filter *filter = cb->data;
@@ -4631,38 +4617,37 @@ static int nf_tables_dump_obj(struct sk_
@@ -4620,38 +4606,37 @@ static int nf_tables_dump_obj(struct sk_
rcu_read_lock();
cb->seq = net->nft.base_seq;
@@ -960,7 +960,7 @@
}
}
done:
@@ -4749,7 +4734,8 @@ static int nf_tables_getobj(struct net *
@@ -4738,7 +4723,8 @@ static int nf_tables_getobj(struct net *
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -970,7 +970,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4809,7 +4795,8 @@ static int nf_tables_delobj(struct net *
@@ -4798,7 +4784,8 @@ static int nf_tables_delobj(struct net *
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -980,7 +980,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4820,7 +4807,7 @@ static int nf_tables_delobj(struct net *
@@ -4809,7 +4796,7 @@ static int nf_tables_delobj(struct net *
if (obj->use > 0)
return -EBUSY;
@@ -989,7 +989,7 @@
return nft_delobj(&ctx, obj);
}
@@ -4858,7 +4845,7 @@ static void nf_tables_obj_notify(const s
@@ -4847,7 +4834,7 @@ static void nf_tables_obj_notify(const s
struct nft_object *obj, int event)
{
nft_obj_notify(ctx->net, ctx->table, obj, ctx->portid, ctx->seq, event,
@@ -998,7 +998,7 @@
}
/*
@@ -5048,7 +5035,7 @@ void nft_flow_table_iterate(struct net *
@@ -5037,7 +5024,7 @@ void nft_flow_table_iterate(struct net *
rcu_read_lock();
list_for_each_entry_rcu(afi, &net->nft.af_info, list) {
@@ -1007,7 +1007,7 @@
list_for_each_entry_rcu(flowtable, &table->flowtables, list) {
iter(&flowtable->data, data);
}
@@ -5096,7 +5083,8 @@ static int nf_tables_newflowtable(struct
@@ -5085,7 +5072,8 @@ static int nf_tables_newflowtable(struct
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -1017,7 +1017,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -5113,7 +5101,7 @@ static int nf_tables_newflowtable(struct
@@ -5102,7 +5090,7 @@ static int nf_tables_newflowtable(struct
return 0;
}
@@ -1026,7 +1026,7 @@
flowtable = kzalloc(sizeof(*flowtable), GFP_KERNEL);
if (!flowtable)
@@ -5194,7 +5182,8 @@ static int nf_tables_delflowtable(struct
@@ -5183,7 +5171,8 @@ static int nf_tables_delflowtable(struct
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -1036,7 +1036,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -5205,7 +5194,7 @@ static int nf_tables_delflowtable(struct
@@ -5194,7 +5183,7 @@ static int nf_tables_delflowtable(struct
if (flowtable->use > 0)
return -EBUSY;
@@ -1045,7 +1045,7 @@
return nft_delflowtable(&ctx, flowtable);
}
@@ -5274,40 +5263,37 @@ static int nf_tables_dump_flowtable(stru
@@ -5263,40 +5252,37 @@ static int nf_tables_dump_flowtable(stru
struct net *net = sock_net(skb->sk);
int family = nfmsg->nfgen_family;
struct nft_flowtable *flowtable;
@@ -1107,7 +1107,7 @@
}
}
done:
@@ -5392,7 +5378,8 @@ static int nf_tables_getflowtable(struct
@@ -5381,7 +5367,8 @@ static int nf_tables_getflowtable(struct
if (IS_ERR(afi))
return PTR_ERR(afi);
@@ -1117,7 +1117,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -5435,7 +5422,7 @@ static void nf_tables_flowtable_notify(s
@@ -5424,7 +5411,7 @@ static void nf_tables_flowtable_notify(s
err = nf_tables_fill_flowtable_info(skb, ctx->net, ctx->portid,
ctx->seq, event, 0,
@@ -1126,7 +1126,7 @@
if (err < 0) {
kfree_skb(skb);
goto err;
@@ -5513,17 +5500,14 @@ static int nf_tables_flowtable_event(str
@@ -5502,17 +5489,14 @@ static int nf_tables_flowtable_event(str
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
struct nft_flowtable *flowtable;
struct nft_table *table;
@@ -1147,7 +1147,7 @@
}
}
nfnl_unlock(NFNL_SUBSYS_NFTABLES);
@@ -6549,6 +6533,7 @@ EXPORT_SYMBOL_GPL(nft_data_dump);
@@ -6533,6 +6517,7 @@ EXPORT_SYMBOL_GPL(nft_data_dump);
static int __net_init nf_tables_init_net(struct net *net)
{
INIT_LIST_HEAD(&net->nft.af_info);
@@ -1155,7 +1155,7 @@
INIT_LIST_HEAD(&net->nft.commit_list);
net->nft.base_seq = 1;
return 0;
@@ -6585,10 +6570,10 @@ static void __nft_release_afinfo(struct
@@ -6569,10 +6554,10 @@ static void __nft_release_afinfo(struct
struct nft_set *set, *ns;
struct nft_ctx ctx = {
.net = net,
@@ -1255,7 +1255,7 @@
par->nft_compat = true;
}
@@ -503,7 +503,7 @@ __nft_match_destroy(const struct nft_ctx
@@ -502,7 +502,7 @@ __nft_match_destroy(const struct nft_ctx
par.net = ctx->net;
par.match = match;
par.matchinfo = info;
@@ -1264,7 +1264,7 @@
if (par.match->destroy != NULL)
par.match->destroy(&par);
@@ -733,7 +733,7 @@ nft_match_select_ops(const struct nft_ct
@@ -732,7 +732,7 @@ nft_match_select_ops(const struct nft_ct
mt_name = nla_data(tb[NFTA_MATCH_NAME]);
rev = ntohl(nla_get_be32(tb[NFTA_MATCH_REV]));
@@ -1273,7 +1273,7 @@
/* Re-use the existing match if it's already loaded. */
list_for_each_entry(nft_match, &nft_match_list, head) {
@@ -824,7 +824,7 @@ nft_target_select_ops(const struct nft_c
@@ -823,7 +823,7 @@ nft_target_select_ops(const struct nft_c
tg_name = nla_data(tb[NFTA_TARGET_NAME]);
rev = ntohl(nla_get_be32(tb[NFTA_TARGET_REV]));
@@ -1280,8 +1280,8 @@
- family = ctx->afi->family;
+ family = ctx->family;
if (strcmp(tg_name, XT_ERROR_TARGET) == 0 ||
strcmp(tg_name, XT_STANDARD_TARGET) == 0 ||
/* Re-use the existing target if it's already loaded. */
list_for_each_entry(nft_target, &nft_target_list, head) {
--- a/net/netfilter/nft_ct.c
+++ b/net/netfilter/nft_ct.c
@@ -405,7 +405,7 @@ static int nft_ct_get_init(const struct
/branches/18.06.1/target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch
@@ -11,7 +11,7 @@
 
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
@@ -835,6 +835,7 @@ static void clusterip_net_exit(struct ne
@@ -834,6 +834,7 @@ static void clusterip_net_exit(struct ne
cn->procdir = NULL;
#endif
nf_unregister_net_hook(net, &cip_arp_ops);
@@ -21,7 +21,7 @@
static struct pernet_operations clusterip_net_ops = {
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -6539,6 +6539,12 @@ static int __net_init nf_tables_init_net
@@ -6523,6 +6523,12 @@ static int __net_init nf_tables_init_net
return 0;
}
@@ -34,7 +34,7 @@
int __nft_release_basechain(struct nft_ctx *ctx)
{
struct nft_rule *rule, *nr;
@@ -6616,6 +6622,7 @@ static void __nft_release_afinfo(struct
@@ -6600,6 +6606,7 @@ static void __nft_release_afinfo(struct
static struct pernet_operations nf_tables_net_ops = {
.init = nf_tables_init_net,
@@ -62,7 +62,7 @@
static struct pernet_operations nfnl_log_net_ops = {
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -1510,10 +1510,15 @@ static int __net_init nfnl_queue_net_ini
@@ -1515,10 +1515,15 @@ static int __net_init nfnl_queue_net_ini
static void __net_exit nfnl_queue_net_exit(struct net *net)
{
/branches/18.06.1/target/linux/generic/backport-4.14/337-v4.16-netfilter-nf_tables-get-rid-of-pernet-families.patch
@@ -364,7 +364,7 @@
if (afi->family == family)
return afi;
}
@@ -5030,15 +5028,12 @@ void nft_flow_table_iterate(struct net *
@@ -5019,15 +5017,12 @@ void nft_flow_table_iterate(struct net *
void *data)
{
struct nft_flowtable *flowtable;
@@ -383,7 +383,7 @@
}
}
rcu_read_unlock();
@@ -6530,21 +6525,6 @@ int nft_data_dump(struct sk_buff *skb, i
@@ -6514,21 +6509,6 @@ int nft_data_dump(struct sk_buff *skb, i
}
EXPORT_SYMBOL_GPL(nft_data_dump);
@@ -405,7 +405,7 @@
int __nft_release_basechain(struct nft_ctx *ctx)
{
struct nft_rule *rule, *nr;
@@ -6565,8 +6545,7 @@ int __nft_release_basechain(struct nft_c
@@ -6549,8 +6529,7 @@ int __nft_release_basechain(struct nft_c
}
EXPORT_SYMBOL_GPL(__nft_release_basechain);
@@ -415,7 +415,7 @@
{
struct nft_flowtable *flowtable, *nf;
struct nft_table *table, *nt;
@@ -6576,10 +6555,11 @@ static void __nft_release_afinfo(struct
@@ -6560,10 +6539,11 @@ static void __nft_release_afinfo(struct
struct nft_set *set, *ns;
struct nft_ctx ctx = {
.net = net,
@@ -428,7 +428,7 @@
list_for_each_entry(chain, &table->chains, list)
nf_tables_unregister_hook(net, table, chain);
list_for_each_entry(flowtable, &table->flowtables, list)
@@ -6620,6 +6600,21 @@ static void __nft_release_afinfo(struct
@@ -6604,6 +6584,21 @@ static void __nft_release_afinfo(struct
}
}
/branches/18.06.1/target/linux/generic/backport-4.14/338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch
@@ -540,7 +540,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1597,7 +1505,6 @@ static int nf_tables_newchain(struct net
@@ -1581,7 +1489,6 @@ static int nf_tables_newchain(struct net
const struct nlattr * uninitialized_var(name);
u8 genmask = nft_genmask_next(net);
int family = nfmsg->nfgen_family;
@@ -548,7 +548,7 @@
struct nft_table *table;
struct nft_chain *chain;
u8 policy = NF_ACCEPT;
@@ -1607,11 +1514,7 @@ static int nf_tables_newchain(struct net
@@ -1591,11 +1498,7 @@ static int nf_tables_newchain(struct net
create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
@@ -561,7 +561,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1652,7 +1555,7 @@ static int nf_tables_newchain(struct net
@@ -1636,7 +1539,7 @@ static int nf_tables_newchain(struct net
}
}
@@ -570,7 +570,7 @@
if (chain != NULL) {
if (nlh->nlmsg_flags & NLM_F_EXCL)
@@ -1673,7 +1576,6 @@ static int nf_tables_delchain(struct net
@@ -1657,7 +1560,6 @@ static int nf_tables_delchain(struct net
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_next(net);
@@ -578,7 +578,7 @@
struct nft_table *table;
struct nft_chain *chain;
struct nft_rule *rule;
@@ -1682,11 +1584,7 @@ static int nf_tables_delchain(struct net
@@ -1666,11 +1568,7 @@ static int nf_tables_delchain(struct net
u32 use;
int err;
@@ -591,7 +591,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1699,7 +1597,7 @@ static int nf_tables_delchain(struct net
@@ -1683,7 +1581,7 @@ static int nf_tables_delchain(struct net
chain->use > 0)
return -EBUSY;
@@ -600,7 +600,7 @@
use = chain->use;
list_for_each_entry(rule, &chain->rules, list) {
@@ -2123,7 +2021,7 @@ static int nf_tables_dump_rules(struct s
@@ -2107,7 +2005,7 @@ static int nf_tables_dump_rules(struct s
cb->seq = net->nft.base_seq;
list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -609,7 +609,7 @@
continue;
if (ctx && ctx->table && strcmp(ctx->table, table->name) != 0)
@@ -2146,7 +2044,7 @@ static int nf_tables_dump_rules(struct s
@@ -2130,7 +2028,7 @@ static int nf_tables_dump_rules(struct s
cb->nlh->nlmsg_seq,
NFT_MSG_NEWRULE,
NLM_F_MULTI | NLM_F_APPEND,
@@ -618,7 +618,7 @@
table, chain, rule) < 0)
goto done;
@@ -2182,7 +2080,6 @@ static int nf_tables_getrule(struct net
@@ -2166,7 +2064,6 @@ static int nf_tables_getrule(struct net
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_cur(net);
@@ -626,7 +626,7 @@
const struct nft_table *table;
const struct nft_chain *chain;
const struct nft_rule *rule;
@@ -2226,11 +2123,7 @@ static int nf_tables_getrule(struct net
@@ -2210,11 +2107,7 @@ static int nf_tables_getrule(struct net
return netlink_dump_start(nlsk, skb, nlh, &c);
}
@@ -639,7 +639,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2296,7 +2189,7 @@ static int nf_tables_newrule(struct net
@@ -2279,7 +2172,7 @@ static int nf_tables_newrule(struct net
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_next(net);
@@ -648,7 +648,7 @@
struct nft_table *table;
struct nft_chain *chain;
struct nft_rule *rule, *old_rule = NULL;
@@ -2312,11 +2205,7 @@ static int nf_tables_newrule(struct net
@@ -2295,11 +2188,7 @@ static int nf_tables_newrule(struct net
create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
@@ -661,7 +661,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2356,7 +2245,7 @@ static int nf_tables_newrule(struct net
@@ -2339,7 +2228,7 @@ static int nf_tables_newrule(struct net
return PTR_ERR(old_rule);
}
@@ -670,7 +670,7 @@
n = 0;
size = 0;
@@ -2478,18 +2367,13 @@ static int nf_tables_delrule(struct net
@@ -2468,18 +2357,13 @@ static int nf_tables_delrule(struct net
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_next(net);
@@ -690,7 +690,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -2501,7 +2385,7 @@ static int nf_tables_delrule(struct net
@@ -2491,7 +2375,7 @@ static int nf_tables_delrule(struct net
return PTR_ERR(chain);
}
@@ -699,7 +699,7 @@
if (chain) {
if (nla[NFTA_RULE_HANDLE]) {
@@ -2686,26 +2570,17 @@ static int nft_ctx_init_from_setattr(str
@@ -2676,26 +2560,17 @@ static int nft_ctx_init_from_setattr(str
u8 genmask)
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
@@ -729,7 +729,7 @@
return 0;
}
@@ -2937,7 +2812,7 @@ static int nf_tables_dump_sets(struct sk
@@ -2927,7 +2802,7 @@ static int nf_tables_dump_sets(struct sk
list_for_each_entry_rcu(table, &net->nft.tables, list) {
if (ctx->family != NFPROTO_UNSPEC &&
@@ -738,7 +738,7 @@
continue;
if (ctx->table && ctx->table != table)
@@ -2958,7 +2833,7 @@ static int nf_tables_dump_sets(struct sk
@@ -2948,7 +2823,7 @@ static int nf_tables_dump_sets(struct sk
ctx_set = *ctx;
ctx_set.table = table;
@@ -747,7 +747,7 @@
if (nf_tables_fill_set(skb, &ctx_set, set,
NFT_MSG_NEWSET,
@@ -3070,8 +2945,8 @@ static int nf_tables_newset(struct net *
@@ -3060,8 +2935,8 @@ static int nf_tables_newset(struct net *
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_next(net);
@@ -757,7 +757,7 @@
struct nft_table *table;
struct nft_set *set;
struct nft_ctx ctx;
@@ -3178,16 +3053,12 @@ static int nf_tables_newset(struct net *
@@ -3168,16 +3043,12 @@ static int nf_tables_newset(struct net *
create = nlh->nlmsg_flags & NLM_F_CREATE ? true : false;
@@ -776,7 +776,7 @@
set = nf_tables_set_lookup(table, nla[NFTA_SET_NAME], genmask);
if (IS_ERR(set)) {
@@ -3449,19 +3320,15 @@ static int nft_ctx_init_from_elemattr(st
@@ -3439,19 +3310,15 @@ static int nft_ctx_init_from_elemattr(st
u8 genmask)
{
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
@@ -799,7 +799,7 @@
return 0;
}
@@ -3579,7 +3446,7 @@ static int nf_tables_dump_set(struct sk_
@@ -3569,7 +3436,7 @@ static int nf_tables_dump_set(struct sk_
rcu_read_lock();
list_for_each_entry_rcu(table, &net->nft.tables, list) {
if (dump_ctx->ctx.family != NFPROTO_UNSPEC &&
@@ -808,7 +808,7 @@
continue;
if (table != dump_ctx->ctx.table)
@@ -3609,7 +3476,7 @@ static int nf_tables_dump_set(struct sk_
@@ -3599,7 +3466,7 @@ static int nf_tables_dump_set(struct sk_
goto nla_put_failure;
nfmsg = nlmsg_data(nlh);
@@ -817,7 +817,7 @@
nfmsg->version = NFNETLINK_V0;
nfmsg->res_id = htons(net->nft.base_seq & 0xffff);
@@ -4489,7 +4356,6 @@ static int nf_tables_newobj(struct net *
@@ -4478,7 +4345,6 @@ static int nf_tables_newobj(struct net *
const struct nft_object_type *type;
u8 genmask = nft_genmask_next(net);
int family = nfmsg->nfgen_family;
@@ -825,7 +825,7 @@
struct nft_table *table;
struct nft_object *obj;
struct nft_ctx ctx;
@@ -4501,11 +4367,7 @@ static int nf_tables_newobj(struct net *
@@ -4490,11 +4356,7 @@ static int nf_tables_newobj(struct net *
!nla[NFTA_OBJ_DATA])
return -EINVAL;
@@ -838,7 +838,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4524,7 +4386,7 @@ static int nf_tables_newobj(struct net *
@@ -4513,7 +4375,7 @@ static int nf_tables_newobj(struct net *
return 0;
}
@@ -847,7 +847,7 @@
type = nft_obj_type_get(objtype);
if (IS_ERR(type))
@@ -4616,7 +4478,7 @@ static int nf_tables_dump_obj(struct sk_
@@ -4605,7 +4467,7 @@ static int nf_tables_dump_obj(struct sk_
cb->seq = net->nft.base_seq;
list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -856,7 +856,7 @@
continue;
list_for_each_entry_rcu(obj, &table->objects, list) {
@@ -4639,7 +4501,7 @@ static int nf_tables_dump_obj(struct sk_
@@ -4628,7 +4490,7 @@ static int nf_tables_dump_obj(struct sk_
cb->nlh->nlmsg_seq,
NFT_MSG_NEWOBJ,
NLM_F_MULTI | NLM_F_APPEND,
@@ -865,7 +865,7 @@
obj, reset) < 0)
goto done;
@@ -4697,7 +4559,6 @@ static int nf_tables_getobj(struct net *
@@ -4686,7 +4548,6 @@ static int nf_tables_getobj(struct net *
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_cur(net);
int family = nfmsg->nfgen_family;
@@ -873,7 +873,7 @@
const struct nft_table *table;
struct nft_object *obj;
struct sk_buff *skb2;
@@ -4728,11 +4589,7 @@ static int nf_tables_getobj(struct net *
@@ -4717,11 +4578,7 @@ static int nf_tables_getobj(struct net *
!nla[NFTA_OBJ_TYPE])
return -EINVAL;
@@ -886,7 +886,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4779,7 +4636,6 @@ static int nf_tables_delobj(struct net *
@@ -4768,7 +4625,6 @@ static int nf_tables_delobj(struct net *
const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
u8 genmask = nft_genmask_next(net);
int family = nfmsg->nfgen_family;
@@ -894,7 +894,7 @@
struct nft_table *table;
struct nft_object *obj;
struct nft_ctx ctx;
@@ -4789,11 +4645,7 @@ static int nf_tables_delobj(struct net *
@@ -4778,11 +4634,7 @@ static int nf_tables_delobj(struct net *
!nla[NFTA_OBJ_NAME])
return -EINVAL;
@@ -907,7 +907,7 @@
genmask);
if (IS_ERR(table))
return PTR_ERR(table);
@@ -4805,7 +4657,7 @@ static int nf_tables_delobj(struct net *
@@ -4794,7 +4646,7 @@ static int nf_tables_delobj(struct net *
if (obj->use > 0)
return -EBUSY;
@@ -916,7 +916,7 @@
return nft_delobj(&ctx, obj);
}
@@ -4990,33 +4842,31 @@ err1:
@@ -4979,33 +4831,31 @@ err1:
return err;
}
@@ -956,7 +956,7 @@
return ERR_PTR(-EAGAIN);
}
#endif
@@ -5064,7 +4914,6 @@ static int nf_tables_newflowtable(struct
@@ -5053,7 +4903,6 @@ static int nf_tables_newflowtable(struct
u8 genmask = nft_genmask_next(net);
int family = nfmsg->nfgen_family;
struct nft_flowtable *flowtable;
@@ -964,7 +964,7 @@
struct nft_table *table;
struct nft_ctx ctx;
int err, i, k;
@@ -5074,12 +4923,8 @@ static int nf_tables_newflowtable(struct
@@ -5063,12 +4912,8 @@ static int nf_tables_newflowtable(struct
!nla[NFTA_FLOWTABLE_HOOK])
return -EINVAL;
@@ -978,7 +978,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -5096,7 +4941,7 @@ static int nf_tables_newflowtable(struct
@@ -5085,7 +4930,7 @@ static int nf_tables_newflowtable(struct
return 0;
}
@@ -987,7 +987,7 @@
flowtable = kzalloc(sizeof(*flowtable), GFP_KERNEL);
if (!flowtable)
@@ -5109,7 +4954,7 @@ static int nf_tables_newflowtable(struct
@@ -5098,7 +4943,7 @@ static int nf_tables_newflowtable(struct
goto err1;
}
@@ -996,7 +996,7 @@
if (IS_ERR(type)) {
err = PTR_ERR(type);
goto err2;
@@ -5169,16 +5014,11 @@ static int nf_tables_delflowtable(struct
@@ -5158,16 +5003,11 @@ static int nf_tables_delflowtable(struct
u8 genmask = nft_genmask_next(net);
int family = nfmsg->nfgen_family;
struct nft_flowtable *flowtable;
@@ -1014,7 +1014,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -5189,7 +5029,7 @@ static int nf_tables_delflowtable(struct
@@ -5178,7 +5018,7 @@ static int nf_tables_delflowtable(struct
if (flowtable->use > 0)
return -EBUSY;
@@ -1023,7 +1023,7 @@
return nft_delflowtable(&ctx, flowtable);
}
@@ -5264,7 +5104,7 @@ static int nf_tables_dump_flowtable(stru
@@ -5253,7 +5093,7 @@ static int nf_tables_dump_flowtable(stru
cb->seq = net->nft.base_seq;
list_for_each_entry_rcu(table, &net->nft.tables, list) {
@@ -1032,7 +1032,7 @@
continue;
list_for_each_entry_rcu(flowtable, &table->flowtables, list) {
@@ -5283,7 +5123,7 @@ static int nf_tables_dump_flowtable(stru
@@ -5272,7 +5112,7 @@ static int nf_tables_dump_flowtable(stru
cb->nlh->nlmsg_seq,
NFT_MSG_NEWFLOWTABLE,
NLM_F_MULTI | NLM_F_APPEND,
@@ -1041,7 +1041,7 @@
goto done;
nl_dump_check_consistent(cb, nlmsg_hdr(skb));
@@ -5343,7 +5183,6 @@ static int nf_tables_getflowtable(struct
@@ -5332,7 +5172,6 @@ static int nf_tables_getflowtable(struct
u8 genmask = nft_genmask_cur(net);
int family = nfmsg->nfgen_family;
struct nft_flowtable *flowtable;
@@ -1049,7 +1049,7 @@
const struct nft_table *table;
struct sk_buff *skb2;
int err;
@@ -5369,12 +5208,8 @@ static int nf_tables_getflowtable(struct
@@ -5358,12 +5197,8 @@ static int nf_tables_getflowtable(struct
if (!nla[NFTA_FLOWTABLE_NAME])
return -EINVAL;
@@ -1063,7 +1063,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -6545,7 +6380,7 @@ int __nft_release_basechain(struct nft_c
@@ -6529,7 +6364,7 @@ int __nft_release_basechain(struct nft_c
}
EXPORT_SYMBOL_GPL(__nft_release_basechain);
@@ -1072,7 +1072,7 @@
{
struct nft_flowtable *flowtable, *nf;
struct nft_table *table, *nt;
@@ -6558,7 +6393,7 @@ static void __nft_release_afinfo(struct
@@ -6542,7 +6377,7 @@ static void __nft_release_afinfo(struct
};
list_for_each_entry_safe(table, nt, &net->nft.tables, list) {
@@ -1081,7 +1081,7 @@
list_for_each_entry(chain, &table->chains, list)
nf_tables_unregister_hook(net, table, chain);
@@ -6610,7 +6445,7 @@ static int __net_init nf_tables_init_net
@@ -6594,7 +6429,7 @@ static int __net_init nf_tables_init_net
static void __net_exit nf_tables_exit_net(struct net *net)
{
/branches/18.06.1/target/linux/generic/backport-4.14/339-v4.16-netfilter-nft_flow_offload-wait-for-garbage-collecto.patch
@@ -17,7 +17,7 @@
 
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -4880,13 +4880,13 @@ void nft_flow_table_iterate(struct net *
@@ -4869,13 +4869,13 @@ void nft_flow_table_iterate(struct net *
struct nft_flowtable *flowtable;
const struct nft_table *table;
/branches/18.06.1/target/linux/generic/backport-4.14/342-v4.16-netfilter-nf_tables-fix-flowtable-free.patch
@@ -118,7 +118,7 @@
};
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -5265,17 +5265,12 @@ err:
@@ -5254,17 +5254,12 @@ err:
nfnetlink_set_err(ctx->net, ctx->portid, NFNLGRP_NFTABLES, -ENOBUFS);
}
/branches/18.06.1/target/linux/generic/backport-4.14/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch
@@ -244,7 +244,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1581,6 +1623,7 @@ static int nf_tables_delchain(struct net
@@ -1565,6 +1607,7 @@ static int nf_tables_delchain(struct net
struct nft_rule *rule;
int family = nfmsg->nfgen_family;
struct nft_ctx ctx;
@@ -252,7 +252,7 @@
u32 use;
int err;
@@ -1589,7 +1632,12 @@ static int nf_tables_delchain(struct net
@@ -1573,7 +1616,12 @@ static int nf_tables_delchain(struct net
if (IS_ERR(table))
return PTR_ERR(table);
@@ -266,7 +266,7 @@
if (IS_ERR(chain))
return PTR_ERR(chain);
@@ -2557,6 +2605,7 @@ static const struct nla_policy nft_set_p
@@ -2547,6 +2595,7 @@ static const struct nla_policy nft_set_p
[NFTA_SET_USERDATA] = { .type = NLA_BINARY,
.len = NFT_USERDATA_MAXLEN },
[NFTA_SET_OBJ_TYPE] = { .type = NLA_U32 },
@@ -274,7 +274,7 @@
};
static const struct nla_policy nft_set_desc_policy[NFTA_SET_DESC_MAX + 1] = {
@@ -2600,6 +2649,22 @@ static struct nft_set *nf_tables_set_loo
@@ -2590,6 +2639,22 @@ static struct nft_set *nf_tables_set_loo
return ERR_PTR(-ENOENT);
}
@@ -297,7 +297,7 @@
static struct nft_set *nf_tables_set_lookup_byid(const struct net *net,
const struct nlattr *nla,
u8 genmask)
@@ -2716,6 +2781,9 @@ static int nf_tables_fill_set(struct sk_
@@ -2706,6 +2771,9 @@ static int nf_tables_fill_set(struct sk_
goto nla_put_failure;
if (nla_put_string(skb, NFTA_SET_NAME, set->name))
goto nla_put_failure;
@@ -307,7 +307,7 @@
if (set->flags != 0)
if (nla_put_be32(skb, NFTA_SET_FLAGS, htonl(set->flags)))
goto nla_put_failure;
@@ -3124,6 +3192,7 @@ static int nf_tables_newset(struct net *
@@ -3114,6 +3182,7 @@ static int nf_tables_newset(struct net *
set->udata = udata;
set->timeout = timeout;
set->gc_int = gc_int;
@@ -315,7 +315,7 @@
err = ops->init(set, &desc, nla);
if (err < 0)
@@ -3183,7 +3252,10 @@ static int nf_tables_delset(struct net *
@@ -3173,7 +3242,10 @@ static int nf_tables_delset(struct net *
if (err < 0)
return err;
@@ -327,7 +327,7 @@
if (IS_ERR(set))
return PTR_ERR(set);
@@ -4244,6 +4316,21 @@ struct nft_object *nf_tables_obj_lookup(
@@ -4233,6 +4305,21 @@ struct nft_object *nf_tables_obj_lookup(
}
EXPORT_SYMBOL_GPL(nf_tables_obj_lookup);
@@ -349,7 +349,7 @@
static const struct nla_policy nft_obj_policy[NFTA_OBJ_MAX + 1] = {
[NFTA_OBJ_TABLE] = { .type = NLA_STRING,
.len = NFT_TABLE_MAXNAMELEN - 1 },
@@ -4251,6 +4338,7 @@ static const struct nla_policy nft_obj_p
@@ -4240,6 +4327,7 @@ static const struct nla_policy nft_obj_p
.len = NFT_OBJ_MAXNAMELEN - 1 },
[NFTA_OBJ_TYPE] = { .type = NLA_U32 },
[NFTA_OBJ_DATA] = { .type = NLA_NESTED },
@@ -357,7 +357,7 @@
};
static struct nft_object *nft_obj_init(const struct nft_ctx *ctx,
@@ -4398,6 +4486,8 @@ static int nf_tables_newobj(struct net *
@@ -4387,6 +4475,8 @@ static int nf_tables_newobj(struct net *
goto err1;
}
obj->table = table;
@@ -366,7 +366,7 @@
obj->name = nla_strdup(nla[NFTA_OBJ_NAME], GFP_KERNEL);
if (!obj->name) {
err = -ENOMEM;
@@ -4444,7 +4534,9 @@ static int nf_tables_fill_obj_info(struc
@@ -4433,7 +4523,9 @@ static int nf_tables_fill_obj_info(struc
nla_put_string(skb, NFTA_OBJ_NAME, obj->name) ||
nla_put_be32(skb, NFTA_OBJ_TYPE, htonl(obj->ops->type->type)) ||
nla_put_be32(skb, NFTA_OBJ_USE, htonl(obj->use)) ||
@@ -377,7 +377,7 @@
goto nla_put_failure;
nlmsg_end(skb, nlh);
@@ -4642,7 +4734,7 @@ static int nf_tables_delobj(struct net *
@@ -4631,7 +4723,7 @@ static int nf_tables_delobj(struct net *
u32 objtype;
if (!nla[NFTA_OBJ_TYPE] ||
@@ -386,7 +386,7 @@
return -EINVAL;
table = nf_tables_table_lookup(net, nla[NFTA_OBJ_TABLE], family,
@@ -4651,7 +4743,12 @@ static int nf_tables_delobj(struct net *
@@ -4640,7 +4732,12 @@ static int nf_tables_delobj(struct net *
return PTR_ERR(table);
objtype = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE]));
@@ -400,7 +400,7 @@
if (IS_ERR(obj))
return PTR_ERR(obj);
if (obj->use > 0)
@@ -4723,6 +4820,7 @@ static const struct nla_policy nft_flowt
@@ -4712,6 +4809,7 @@ static const struct nla_policy nft_flowt
[NFTA_FLOWTABLE_NAME] = { .type = NLA_STRING,
.len = NFT_NAME_MAXLEN - 1 },
[NFTA_FLOWTABLE_HOOK] = { .type = NLA_NESTED },
@@ -408,7 +408,7 @@
};
struct nft_flowtable *nf_tables_flowtable_lookup(const struct nft_table *table,
@@ -4740,6 +4838,20 @@ struct nft_flowtable *nf_tables_flowtabl
@@ -4729,6 +4827,20 @@ struct nft_flowtable *nf_tables_flowtabl
}
EXPORT_SYMBOL_GPL(nf_tables_flowtable_lookup);
@@ -429,7 +429,7 @@
#define NFT_FLOWTABLE_DEVICE_MAX 8
static int nf_tables_parse_devices(const struct nft_ctx *ctx,
@@ -4948,6 +5060,8 @@ static int nf_tables_newflowtable(struct
@@ -4937,6 +5049,8 @@ static int nf_tables_newflowtable(struct
return -ENOMEM;
flowtable->table = table;
@@ -438,7 +438,7 @@
flowtable->name = nla_strdup(nla[NFTA_FLOWTABLE_NAME], GFP_KERNEL);
if (!flowtable->name) {
err = -ENOMEM;
@@ -5022,8 +5136,14 @@ static int nf_tables_delflowtable(struct
@@ -5011,8 +5125,14 @@ static int nf_tables_delflowtable(struct
if (IS_ERR(table))
return PTR_ERR(table);
@@ -455,7 +455,7 @@
if (IS_ERR(flowtable))
return PTR_ERR(flowtable);
if (flowtable->use > 0)
@@ -5056,7 +5176,9 @@ static int nf_tables_fill_flowtable_info
@@ -5045,7 +5165,9 @@ static int nf_tables_fill_flowtable_info
if (nla_put_string(skb, NFTA_FLOWTABLE_TABLE, flowtable->table->name) ||
nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||
/branches/18.06.1/target/linux/generic/backport-4.14/346-v4.16-netfilter-flowtable-infrastructure-depends-on-NETFIL.patch
@@ -25,7 +25,7 @@
 
--- a/net/ipv4/netfilter/Kconfig
+++ b/net/ipv4/netfilter/Kconfig
@@ -80,8 +80,7 @@ endif # NF_TABLES
@@ -79,8 +79,7 @@ endif # NF_TABLES
config NF_FLOW_TABLE_IPV4
tristate "Netfilter flow table IPv4 module"
@@ -49,7 +49,7 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -676,8 +676,8 @@ endif # NF_TABLES
@@ -670,8 +670,8 @@ endif # NF_TABLES
config NF_FLOW_TABLE_INET
tristate "Netfilter flow table mixed IPv4/IPv6 module"
@@ -60,7 +60,7 @@
help
This option adds the flow table mixed IPv4/IPv6 support.
@@ -685,7 +685,9 @@ config NF_FLOW_TABLE_INET
@@ -679,7 +679,9 @@ config NF_FLOW_TABLE_INET
config NF_FLOW_TABLE
tristate "Netfilter flow table module"
/branches/18.06.1/target/linux/generic/backport-4.14/350-v4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch
@@ -38,7 +38,7 @@
#endif
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -889,8 +889,6 @@ static inline struct sk_buff *ip6_finish
@@ -918,8 +918,6 @@ static inline struct sk_buff *ip6_finish
&inet6_sk(sk)->cork);
}
@@ -49,7 +49,7 @@
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -381,28 +381,6 @@ static inline int ip6_forward_finish(str
@@ -383,28 +383,6 @@ static inline int ip6_forward_finish(str
return dst_output(net, sk, skb);
}
/branches/18.06.1/target/linux/generic/backport-4.14/356-v4.18-netfilter-nf_flow_table-relax-mixed-ipv4-ipv6-flowta.patch
@@ -11,7 +11,7 @@
 
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -676,8 +676,7 @@ endif # NF_TABLES
@@ -670,8 +670,7 @@ endif # NF_TABLES
config NF_FLOW_TABLE_INET
tristate "Netfilter flow table mixed IPv4/IPv6 module"
/branches/18.06.1/target/linux/generic/backport-4.14/357-v4.18-netfilter-nf_flow_table-move-init-code-to-nf_flow_ta.patch
@@ -236,7 +236,7 @@
.owner = THIS_MODULE,
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -5075,40 +5075,38 @@ static int nf_tables_newflowtable(struct
@@ -5064,40 +5064,38 @@ static int nf_tables_newflowtable(struct
}
flowtable->data.type = type;
@@ -285,7 +285,7 @@
err3:
module_put(type->owner);
err2:
@@ -5389,10 +5387,8 @@ err:
@@ -5378,10 +5376,8 @@ err:
static void nf_tables_flowtable_destroy(struct nft_flowtable *flowtable)
{
/branches/18.06.1/target/linux/generic/backport-4.14/358-v4.18-netfilter-nf_flow_table-fix-priv-pointer-for-netdev-.patch
@@ -11,7 +11,7 @@
 
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -4941,7 +4941,7 @@ static int nf_tables_flowtable_parse_hoo
@@ -4930,7 +4930,7 @@ static int nf_tables_flowtable_parse_hoo
flowtable->ops[i].pf = NFPROTO_NETDEV;
flowtable->ops[i].hooknum = hooknum;
flowtable->ops[i].priority = priority;
/branches/18.06.1/target/linux/generic/backport-4.14/359-v4.18-netfilter-nf_flow_table-track-flow-tables-in-nf_flow.patch
@@ -88,7 +88,7 @@
WARN_ON(!nf_flow_offload_gc_step(flow_table));
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -4985,23 +4985,6 @@ static const struct nf_flowtable_type *n
@@ -4974,23 +4974,6 @@ static const struct nf_flowtable_type *n
return ERR_PTR(-ENOENT);
}
/branches/18.06.1/target/linux/generic/backport-4.14/370-netfilter-nf_flow_table-fix-offloaded-connection-tim.patch
@@ -21,7 +21,7 @@
 
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -981,18 +981,6 @@ static bool gc_worker_can_early_drop(con
@@ -978,18 +978,6 @@ static bool gc_worker_can_early_drop(con
return false;
}
@@ -40,7 +40,7 @@
static void gc_worker(struct work_struct *work)
{
unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u);
@@ -1029,10 +1017,8 @@ static void gc_worker(struct work_struct
@@ -1026,10 +1014,8 @@ static void gc_worker(struct work_struct
tmp = nf_ct_tuplehash_to_ctrack(h);
scanned++;