kernel: fix xtables flow offload issues
- avoid using garbage stack values as dst pointer if lookup fails - provide the source address for ipv6 dst lookup Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		| @@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	help | ||||
|  	  This option adds the flow table core infrastructure. | ||||
|   | ||||
| @@ -959,6 +958,15 @@ config NETFILTER_XT_TARGET_NOTRACK | ||||
| @@ -968,6 +967,15 @@ config NETFILTER_XT_TARGET_NOTRACK | ||||
|  	depends on NETFILTER_ADVANCED | ||||
|  	select NETFILTER_XT_TARGET_CT | ||||
|   | ||||
| @@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  	depends on NETFILTER_ADVANCED | ||||
| --- a/net/netfilter/Makefile | ||||
| +++ b/net/netfilter/Makefile | ||||
| @@ -133,6 +133,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF | ||||
| @@ -134,6 +134,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF | ||||
|  obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o | ||||
|  obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o | ||||
|  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o | ||||
| @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
|  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o | ||||
| --- /dev/null | ||||
| +++ b/net/netfilter/xt_FLOWOFFLOAD.c | ||||
| @@ -0,0 +1,364 @@ | ||||
| @@ -0,0 +1,365 @@ | ||||
| +/* | ||||
| + * Copyright (C) 2018 Felix Fietkau <nbd@nbd.name> | ||||
| + * | ||||
| @@ -295,7 +295,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
| +xt_flowoffload_dst(const struct nf_conn *ct, enum ip_conntrack_dir dir, | ||||
| +		   const struct xt_action_param *par) | ||||
| +{ | ||||
| +	struct dst_entry *dst; | ||||
| +	struct dst_entry *dst = NULL; | ||||
| +	struct flowi fl; | ||||
| + | ||||
| +	memset(&fl, 0, sizeof(fl)); | ||||
| @@ -304,6 +304,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
| +		fl.u.ip4.daddr = ct->tuplehash[dir].tuple.src.u3.ip; | ||||
| +		break; | ||||
| +	case NFPROTO_IPV6: | ||||
| +		fl.u.ip6.saddr = ct->tuplehash[dir].tuple.dst.u3.in6; | ||||
| +		fl.u.ip6.daddr = ct->tuplehash[dir].tuple.src.u3.in6; | ||||
| +		break; | ||||
| +	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau