114 |
|
case ICMP_ECHO: |
115 |
|
icp->icmp_type = ICMP_ECHOREPLY; |
116 |
|
ip->ip_len += hlen; /* since ip_input subtracts this */ |
117 |
< |
if (ip->ip_dst.s_addr == our_addr.s_addr || |
118 |
< |
(ip->ip_dst.s_addr == (special_addr.s_addr|htonl(CTL_ALIAS))) ) { |
117 |
> |
if (ip->ip_dst.s_addr == alias_addr.s_addr) { |
118 |
|
icmp_reflect(m); |
119 |
|
} else { |
120 |
|
struct socket *so; |
160 |
|
icmp_error(m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno)); |
161 |
|
udp_detach(so); |
162 |
|
} |
163 |
< |
} /* if ip->ip_dst.s_addr == our_addr.s_addr */ |
163 |
> |
} /* if ip->ip_dst.s_addr == alias_addr.s_addr */ |
164 |
|
break; |
165 |
|
case ICMP_UNREACH: |
166 |
|
/* XXX? report error? close socket? */ |
310 |
|
ip->ip_ttl = MAXTTL; |
311 |
|
ip->ip_p = IPPROTO_ICMP; |
312 |
|
ip->ip_dst = ip->ip_src; /* ip adresses */ |
313 |
< |
ip->ip_src = our_addr; |
313 |
> |
ip->ip_src = alias_addr; |
314 |
|
|
315 |
|
(void ) ip_output((struct socket *)NULL, m); |
316 |
|
|