rem: void icmp_error(struct mbuf *n, int type, int code, n_long dest,
add: static void icmp_error(struct mbuf *n, int type, int code, n_long dest,
context: void icmp_error(struct mbuf *n, int type, int code, n_long dest,                 struct ifnet *destifp){	struct ip *oip = mtod(n, struct ip*), *nip;	uint oiplen = oip->ip_hl << 2;	struct icmp *icp;	struct mbuf *m;	uint icmplen;	if (type != ICMP_REDIRECT)		icmpstat.icps_error++;	if (oip->ip_off & ~(IP_MF | IP_DF))		goto freeit;	if (oip->ip_p == IPPROTO_ICMP && type != ICMP_REDIRECT &&	    n->m_len >= oiplen + ICMP_MINLEN &&	    ICMP_INFOTYPE(((struct icmp*)((void*)(oip + oiplen)))->icmp_type)) {		icmpstat.icps_oldicmp++;		goto freeit;	}	/* don't send icmp errors in response to multi or broad cast */	if (n->m_flags & (M_BCAST | M_MCAST))		goto freeit;			m = m_gethdr(MT_HEADER);	if (!m)		goto freeit;	icmplen = oiplen + min(8, oip->ip_len);	m->m_len = icmplen + ICMP_MINLEN;	MH_ALIGN(m, m->m_len);	icp = mtod(m, struct icmp*);	if ((uint)type > ICMP_MAXTYPE) {		/* PANIC */		printf("PANIC: icmp_error! type outside of range\n");		return;	}	icmpstat.icps_outhist[type]++;	icp->icmp_type = type;	if (type == ICMP_REDIRECT)		icp->icmp_gwaddr.s_addr = dest;	else {		icp->icmp_void = 0;		if (type == ICMP_PARAMPROB) {			icp->icmp_pptr = code;		} else if (type == ICMP_UNREACH && 		           code == ICMP_UNREACH_NEEDFRAG && 		           destifp) {			icp->icmp_nextmtu = htons(destifp->if_mtu);		}	}	icp->icmp_code = code;	memcpy((void*)&icp->icmp_ip, (void*)oip, icmplen);	nip = &icp->icmp_ip;	nip->ip_len = htons((nip->ip_len + oiplen));	if (m->m_data - sizeof(struct ip) < m->m_pktdat) {		/* PANIC */		printf("PANIC: icmp_error: icmp len\n");		return;	}	m->m_data -= sizeof(struct ip);	m->m_len += sizeof(struct ip);	m->m_pkthdr.len = m->m_len;	m->m_pkthdr.rcvif = n->m_pkthdr.rcvif;	nip = mtod(m, struct ip*);	memcpy((void*)nip, (void*)oip, sizeof(struct ip));	nip->ip_len = m->m_len;	nip->ip_hl = sizeof(struct ip) >> 2;	nip->ip_p = IPPROTO_ICMP;	nip->ip_tos = 0;	icmp_reflect(m);freeit:	m_freem(n);}