icmp_ip
#define ICMP_SIZE offsetof(struct icmp, icmp_ip)
if (!nbuf_advance(nbuf, offsetof(struct icmp, icmp_ip), 0)) {
mtu = ntohs(icp->icmp_ip.ip_len);
mtu -= (icp->icmp_ip.ip_hl << 2);
m_copydata(n, 0, datalen, (void *)&icp->icmp_ip);
icp->icmp_ip.ip_hl < (sizeof(struct ip) >> 2)) {
if (IN_MULTICAST(icp->icmp_ip.ip_dst.s_addr))
icmpsrc.sin_addr = icp->icmp_ip.ip_dst;
ctlfunc = inetsw[ip_protox[icp->icmp_ip.ip_p]].pr_ctlinput;
&icp->icmp_ip);
icp->icmp_ip.ip_hl < (sizeof(struct ip) >> 2)) {
icmpsrc.sin_addr = icp->icmp_ip.ip_dst;
IN_PRINT(buf, &icp->icmp_ip.ip_dst), i);
#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
offsetof(struct icmp, icmp_ip));
tp->t_pmtud_ip_len = icp->icmp_ip.ip_len;
tp->t_pmtud_ip_hl = icp->icmp_ip.ip_hl;
icmp.icmp_ip.ip_len = tp->t_pmtud_ip_len;
icmp.icmp_ip.ip_hl = tp->t_pmtud_ip_hl;
offsetof(struct icmp, icmp_ip));
offsetof(struct icmp, icmp_ip));
packetlen = sizeof(struct ip) + offsetof(struct icmp, icmp_ip) +
memset(&icp->icmp_ip, 0, ICMP_EXT_OFFSET);
m_copydata(n, 0, icmplen, (char *)&icp->icmp_ip);
memcpy(((char*)&icp->icmp_ip) + ICMP_EXT_OFFSET,
memcpy(&ic->icmp_ip, mtod(m_orig, struct ip *), addlen);
hip = &icp->icmp_ip;
u_int32_t *lp = (u_int32_t *)&icp->icmp_ip;