175 |
icmp_echo_encode (p->ping_buffer, buflen, p->ping_ident, |
icmp_echo_encode (p->ping_buffer, buflen, p->ping_ident, |
176 |
p->ping_num_xmit); |
p->ping_num_xmit); |
177 |
break; |
break; |
178 |
|
|
179 |
case ICMP_TIMESTAMP: |
case ICMP_TIMESTAMP: |
180 |
icmp_timestamp_encode (p->ping_buffer, buflen, p->ping_ident, |
icmp_timestamp_encode (p->ping_buffer, buflen, p->ping_ident, |
181 |
p->ping_num_xmit); |
p->ping_num_xmit); |
182 |
break; |
break; |
183 |
|
|
184 |
case ICMP_ADDRESS: |
case ICMP_ADDRESS: |
185 |
icmp_address_encode (p->ping_buffer, buflen, p->ping_ident, |
icmp_address_encode (p->ping_buffer, buflen, p->ping_ident, |
186 |
p->ping_num_xmit); |
p->ping_num_xmit); |
187 |
break; |
break; |
188 |
|
|
189 |
default: |
default: |
190 |
icmp_generic_encode (p->ping_buffer, buflen, p->ping_type, p->ping_ident, |
icmp_generic_encode (p->ping_buffer, buflen, p->ping_type, p->ping_ident, |
191 |
p->ping_num_xmit); |
p->ping_num_xmit); |
233 |
return -1; |
return -1; |
234 |
} |
} |
235 |
|
|
236 |
|
if (icmp->icmp_id != p->ping_ident) |
237 |
|
return -1; |
238 |
|
if (rc) |
239 |
|
{ |
240 |
|
fprintf (stderr, "checksum mismatch from %s\n", |
241 |
|
inet_ntoa (p->ping_from.sin_addr)); |
242 |
|
} |
243 |
|
|
244 |
switch (icmp->icmp_type) |
switch (icmp->icmp_type) |
245 |
{ |
{ |
246 |
case ICMP_ECHOREPLY: |
case ICMP_ECHOREPLY: |
247 |
case ICMP_TIMESTAMPREPLY: |
case ICMP_TIMESTAMPREPLY: |
248 |
case ICMP_ADDRESSREPLY: |
case ICMP_ADDRESSREPLY: |
249 |
/* case ICMP_ROUTERADV:*/ |
/* case ICMP_ROUTERADV:*/ |
|
if (icmp->icmp_id != p->ping_ident) |
|
|
return -1; |
|
|
if (rc) |
|
|
{ |
|
|
fprintf (stderr, "checksum mismatch from %s\n", |
|
|
inet_ntoa (p->ping_from.sin_addr)); |
|
|
} |
|
|
|
|
250 |
p->ping_num_recv++; |
p->ping_num_recv++; |
251 |
if (_PING_TST (p, icmp->icmp_seq % p->ping_cktab_size)) |
if (_PING_TST (p, icmp->icmp_seq % p->ping_cktab_size)) |
252 |
{ |
{ |
268 |
ip, icmp, n); |
ip, icmp, n); |
269 |
break; |
break; |
270 |
|
|
271 |
|
case ICMP_ECHO: |
272 |
|
case ICMP_TIMESTAMP: |
273 |
|
case ICMP_ADDRESS: |
274 |
|
return -1; |
275 |
|
|
276 |
default: |
default: |
277 |
if (p->ping_event) |
if (p->ping_event) |
278 |
(*p->ping_event)(PEV_NOECHO, |
(*p->ping_event)(PEV_NOECHO, |