On 08/02/16(Mon) 01:55, Alexandr Nedvedicky wrote:
> Hello,
>
> I don't expect to see O.K. to patch below.
>
> The patch is the part of the change, which has been backed out last weekend.
> Too many things were wrong so I'm trying to untangle the code a bit.
>
> Patch below is for brave hearts, who don't mind to see KASSERT() to fire:
Any progress with this diff? Now would be the good time to get it in.
> Index: net/if_etherip.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_etherip.c,v
> retrieving revision 1.5
> diff -u -p -r1.5 if_etherip.c
> --- net/if_etherip.c 25 Jan 2016 05:12:34 -0000 1.5
> +++ net/if_etherip.c 7 Feb 2016 23:38:09 -0000
> @@ -499,6 +499,10 @@ ip_etherip_input(struct mbuf *m, ...)
> }
> m->m_flags &= ~(M_BCAST|M_MCAST);
>
> +#if NPF > 0
> + pf_pkt_addr_changed(m);
> +#endif
> +
> ml_enqueue(&ml, m);
> if_input(ifp, &ml);
> }
> @@ -641,6 +645,10 @@ ip6_etherip_input(struct mbuf **mp, int
> }
>
> m->m_flags &= ~(M_BCAST|M_MCAST);
> +
> +#if NPF > 0
> + pf_pkt_addr_changed(m);
> +#endif
>
> ml_enqueue(&ml, m);
> if_input(ifp, &ml);
> Index: net/pf.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pf.c,v
> retrieving revision 1.965
> diff -u -p -r1.965 pf.c
> --- net/pf.c 31 Jan 2016 00:18:07 -0000 1.965
> +++ net/pf.c 7 Feb 2016 23:38:16 -0000
> @@ -6534,6 +6534,12 @@ done:
> if (action == PF_PASS && qid)
> pd.m->m_pkthdr.pf.qid = qid;
> if (pd.dir == PF_IN && s && s->key[PF_SK_STACK]) {
> + /*
> + * ASSERT() below fires whenever caller forgets to call
> + * pf_pkt_addr_changed(). This might happen when we deal with
> + * IP tunnels.
> + */
> + KASSERT(pd.m->m_pkthdr.pf.statekey == NULL);
> pd.m->m_pkthdr.pf.statekey = s->key[PF_SK_STACK];
> }
> if (pd.dir == PF_OUT &&
> Index: net/pipex.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pipex.c,v
> retrieving revision 1.84
> diff -u -p -r1.84 pipex.c
> --- net/pipex.c 3 Nov 2015 21:33:56 -0000 1.84
> +++ net/pipex.c 7 Feb 2016 23:38:18 -0000
> @@ -1139,6 +1139,10 @@ pipex_ip_input(struct mbuf *m0, struct p
> goto drop;
> }
>
> +#if NPF > 0
> + pf_pkt_addr_changed(m0);
> +#endif
> +
> len = m0->m_pkthdr.len;
>
> #if NBPFILTER > 0
> Index: netinet/ip_gre.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/ip_gre.c,v
> retrieving revision 1.58
> diff -u -p -r1.58 ip_gre.c
> --- netinet/ip_gre.c 2 Dec 2015 08:47:00 -0000 1.58
> +++ netinet/ip_gre.c 7 Feb 2016 23:38:20 -0000
> @@ -337,6 +337,10 @@ gre_mobile_input(struct mbuf *m, ...)
> bpf_mtap_af(sc->sc_if.if_bpf, AF_INET, m, BPF_DIRECTION_IN);
> #endif
>
> +#if NPF > 0
> + pf_pkt_addr_changed(m);
> +#endif
> +
> niq_enqueue(&ipintrq, m);
> }
>
>