On Sun, Dec 10, 2017 at 10:38:30AM +0100, [email protected] wrote:
> icmp_input_if(1,2,ffff800014a50a6c,ffff800014a50a70,ffff800000067290) at
> icmp_input_if+0x111
Could you try this diff?
bluhm
Index: netinet/ip_icmp.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip_icmp.c,v
retrieving revision 1.173
diff -u -p -r1.173 ip_icmp.c
--- netinet/ip_icmp.c 18 Oct 2017 17:01:14 -0000 1.173
+++ netinet/ip_icmp.c 12 Dec 2017 01:09:39 -0000
@@ -386,12 +386,14 @@ icmp_input_if(struct ifnet *ifp, struct
case ICMP_TIMXCEED:
case ICMP_PARAMPROB:
case ICMP_SOURCEQUENCH:
+ m->m_pkthdr.pf.flags &=~ PF_TAG_DIVERTED;
break;
/*
* Although pf_icmp_mapping() considers redirects belonging
* to a diverted connection, we must process it here anyway.
*/
case ICMP_REDIRECT:
+ m->m_pkthdr.pf.flags &=~ PF_TAG_DIVERTED;
break;
default:
goto raw;
@@ -585,10 +587,6 @@ reflect:
&ip->ip_dst.s_addr, 1))
goto freeit;
#endif
- /* Free packet atttributes */
- if (m->m_flags & M_PKTHDR)
- m_tag_delete_chain(m);
-
icmpstat_inc(icps_reflect);
icmpstat_inc(icps_outhist + icp->icmp_type);
if (!icmp_reflect(m, &opts, NULL)) {
Index: netinet6/icmp6.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/icmp6.c,v
retrieving revision 1.220
diff -u -p -r1.220 icmp6.c
--- netinet6/icmp6.c 3 Nov 2017 14:28:57 -0000 1.220
+++ netinet6/icmp6.c 12 Dec 2017 01:12:36 -0000
@@ -431,6 +431,7 @@ icmp6_input(struct mbuf **mp, int *offp,
case ICMP6_PACKET_TOO_BIG:
case ICMP6_TIME_EXCEEDED:
case ICMP6_PARAM_PROB:
+ m->m_pkthdr.pf.flags &=~ PF_TAG_DIVERTED;
break;
default:
goto raw;