On Fri, Mar 31, 2017 at 06:38:20PM +0800, gfree.wind@xxxxxxxxxxx wrote: > +static struct nf_ct_nat_helper pptp_nat = { > + .name = "pptp_nat", Why all these with "xyz_nat" names? This is going to break ctnetlink, as this is the name that identifies the NAT helper to be used. > + .expectfn = pptp_expectfn, > +}; > + > static void pptp_expectfn(struct nf_conn *ct, > struct nf_conntrack_expect *exp) > { > @@ -221,7 +229,7 @@ static int exp_gre(struct nf_conn *ct, __be16 callid, __be16 peer_callid) > &ct->tuplehash[dir].tuple.src.u3, > &ct->tuplehash[dir].tuple.dst.u3, > IPPROTO_GRE, &peer_callid, &callid); > - exp_orig->expectfn = pptp_expectfn; > + exp_orig->nat_helper = &pptp_nat; > > /* reply direction, PAC->PNS */ > dir = IP_CT_DIR_REPLY; > @@ -230,7 +238,7 @@ static int exp_gre(struct nf_conn *ct, __be16 callid, __be16 peer_callid) > &ct->tuplehash[dir].tuple.src.u3, > &ct->tuplehash[dir].tuple.dst.u3, > IPPROTO_GRE, &callid, &peer_callid); > - exp_reply->expectfn = pptp_expectfn; > + exp_reply->nat_helper = &pptp_nat; Why do we need to attach nat_helper instead of expectfn? I would prefer we do not. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html