rem: icmpp->icmp_cksum = in_cksum((u_short *)icmpp,
add: icmpp->icmp_cksum = compute_in_cksum((u_short *)icmpp,
context: send_probe(seq, ttl, iflag, to)	int seq, ttl, iflag;	struct sockaddr_in *to;{	struct ip *ip = (struct ip *)outpacket;	u_char *p = (u_char *)(ip + 1);	struct udphdr *up = (struct udphdr *)(p + lsrrlen);	struct icmp *icmpp = (struct icmp *)(p + lsrrlen);	struct packetdata *op;	int i;	struct timeval tv;	ip->ip_len = htons(datalen);	ip->ip_ttl = ttl;	ip->ip_id = htons(ident+seq);		switch(proto) {	   case IPPROTO_ICMP:		icmpp->icmp_type = icmp_type;		icmpp->icmp_code = icmp_code;		icmpp->icmp_seq = htons(seq);		icmpp->icmp_id = htons(ident);		op = (struct packetdata *)(icmpp + 1);		break;	   case IPPROTO_UDP:		up->uh_sport = htons(ident);		if (iflag)			up->uh_dport = htons(port+seq);		else			up->uh_dport = htons(port);		up->uh_ulen = htons((u_short)(datalen - sizeof(struct ip) -		    lsrrlen));		up->uh_sum = 0;		op = (struct packetdata *)(up + 1);		break;	default:		op = (struct packetdata *)(ip + 1);		break;	}	op->seq = seq;	op->ttl = ttl;	(void) gettimeofday(&tv, &tz);	/*	 * We don't want hostiles snooping the net to get any useful	 * information about us. Send the timestamp in network byte order,	 * and perturb the timestamp enough that they won't know our	 * real clock ticker. We don't want to perturb the time by too	 * much: being off by a suspiciously large amount might indicate	 * OpenBSD.	 *	 * The timestamps in the packet are currently unused. If future	 * work wants to use them they will have to subtract out the	 * perturbation first.	 */	(void) gettimeofday(&tv, &tz);	op->sec = htonl(tv.tv_sec + sec_perturb);	op->usec = htonl((tv.tv_usec + usec_perturb) % 1000000);	if (proto == IPPROTO_ICMP && icmp_type == ICMP_ECHO) {		icmpp->icmp_cksum = 0;		icmpp->icmp_cksum = in_cksum((u_short *)icmpp,					datalen - sizeof(struct ip) - lsrrlen);		if (icmpp->icmp_cksum == 0) icmpp->icmp_cksum = 0xffff;	}	if (dump)		dump_packet();	i = sendto(sndsock, outpacket, datalen, 0, (struct sockaddr *)to,		   sizeof(struct sockaddr_in));	if (i < 0 || i != datalen)  {		if (i<0)			perror("sendto");		//Printf("traceroute: wrote %s %d chars, ret=%d\n", hostname,		//	datalen, i);		(void) fflush(stdout);	}}