struct ip *ip;
struct icmp *icmp;
struct udphdr *udp;
+ const unsigned char *payload;
ssize_t n;
/* An ICMP packet: see what's inside. */
goto skip_icmp;
n -= sizeof(*udp);
+ payload = (const unsigned char *)(udp + 1);
+ if (!mypacketp(ps, payload, n)) goto skip_icmp;
+
if (icmp->icmp_code == ICMP_UNREACH_PORT) return (RC_HIGHER);
else if (icmp->icmp_code != ICMP_UNREACH_NEEDFRAG) goto skip_icmp;
else if (icmp->icmp_nextmtu) return (htons(icmp->icmp_nextmtu));