Made ping work with libc5 and libc6.
-Erik
This commit is contained in:
parent
e1e23eecab
commit
9ca57d377e
@ -1,6 +1,6 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* $Id: ping.c,v 1.16 2000/06/07 20:38:15 proski Exp $
|
||||
* $Id: ping.c,v 1.17 2000/06/19 18:51:53 andersen Exp $
|
||||
* Mini ping implementation for busybox
|
||||
*
|
||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||
@ -48,6 +48,88 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
/* It turns out that libc5 doesn't have proper icmp support
|
||||
* built into it header files, so we have to supplement it */
|
||||
#if __GNU_LIBRARY__ < 5
|
||||
typedef unsigned int socklen_t;
|
||||
|
||||
#define ICMP_MINLEN 8 /* abs minimum */
|
||||
|
||||
struct icmp_ra_addr
|
||||
{
|
||||
u_int32_t ira_addr;
|
||||
u_int32_t ira_preference;
|
||||
};
|
||||
|
||||
|
||||
struct icmp
|
||||
{
|
||||
u_int8_t icmp_type; /* type of message, see below */
|
||||
u_int8_t icmp_code; /* type sub code */
|
||||
u_int16_t icmp_cksum; /* ones complement checksum of struct */
|
||||
union
|
||||
{
|
||||
u_char ih_pptr; /* ICMP_PARAMPROB */
|
||||
struct in_addr ih_gwaddr; /* gateway address */
|
||||
struct ih_idseq /* echo datagram */
|
||||
{
|
||||
u_int16_t icd_id;
|
||||
u_int16_t icd_seq;
|
||||
} ih_idseq;
|
||||
u_int32_t ih_void;
|
||||
|
||||
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
|
||||
struct ih_pmtu
|
||||
{
|
||||
u_int16_t ipm_void;
|
||||
u_int16_t ipm_nextmtu;
|
||||
} ih_pmtu;
|
||||
|
||||
struct ih_rtradv
|
||||
{
|
||||
u_int8_t irt_num_addrs;
|
||||
u_int8_t irt_wpa;
|
||||
u_int16_t irt_lifetime;
|
||||
} ih_rtradv;
|
||||
} icmp_hun;
|
||||
#define icmp_pptr icmp_hun.ih_pptr
|
||||
#define icmp_gwaddr icmp_hun.ih_gwaddr
|
||||
#define icmp_id icmp_hun.ih_idseq.icd_id
|
||||
#define icmp_seq icmp_hun.ih_idseq.icd_seq
|
||||
#define icmp_void icmp_hun.ih_void
|
||||
#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
|
||||
#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
|
||||
#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
|
||||
#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
|
||||
#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u_int32_t its_otime;
|
||||
u_int32_t its_rtime;
|
||||
u_int32_t its_ttime;
|
||||
} id_ts;
|
||||
struct
|
||||
{
|
||||
struct ip idi_ip;
|
||||
/* options and then 64 bits of data */
|
||||
} id_ip;
|
||||
struct icmp_ra_addr id_radv;
|
||||
u_int32_t id_mask;
|
||||
u_int8_t id_data[1];
|
||||
} icmp_dun;
|
||||
#define icmp_otime icmp_dun.id_ts.its_otime
|
||||
#define icmp_rtime icmp_dun.id_ts.its_rtime
|
||||
#define icmp_ttime icmp_dun.id_ts.its_ttime
|
||||
#define icmp_ip icmp_dun.id_ip.idi_ip
|
||||
#define icmp_radv icmp_dun.id_radv
|
||||
#define icmp_mask icmp_dun.id_mask
|
||||
#define icmp_data icmp_dun.id_data
|
||||
};
|
||||
#endif
|
||||
|
||||
#define DEFDATALEN 56
|
||||
#define MAXIPLEN 60
|
||||
#define MAXICMPLEN 76
|
||||
@ -477,7 +559,7 @@ extern int ping_main(int argc, char **argv)
|
||||
|
||||
myid = getpid() & 0xFFFF;
|
||||
ping(*argv);
|
||||
exit(TRUE);
|
||||
return(TRUE);
|
||||
}
|
||||
#endif /* ! BB_SIMPLE_PING */
|
||||
|
||||
|
86
ping.c
86
ping.c
@ -1,6 +1,6 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* $Id: ping.c,v 1.16 2000/06/07 20:38:15 proski Exp $
|
||||
* $Id: ping.c,v 1.17 2000/06/19 18:51:53 andersen Exp $
|
||||
* Mini ping implementation for busybox
|
||||
*
|
||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||
@ -48,6 +48,88 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
/* It turns out that libc5 doesn't have proper icmp support
|
||||
* built into it header files, so we have to supplement it */
|
||||
#if __GNU_LIBRARY__ < 5
|
||||
typedef unsigned int socklen_t;
|
||||
|
||||
#define ICMP_MINLEN 8 /* abs minimum */
|
||||
|
||||
struct icmp_ra_addr
|
||||
{
|
||||
u_int32_t ira_addr;
|
||||
u_int32_t ira_preference;
|
||||
};
|
||||
|
||||
|
||||
struct icmp
|
||||
{
|
||||
u_int8_t icmp_type; /* type of message, see below */
|
||||
u_int8_t icmp_code; /* type sub code */
|
||||
u_int16_t icmp_cksum; /* ones complement checksum of struct */
|
||||
union
|
||||
{
|
||||
u_char ih_pptr; /* ICMP_PARAMPROB */
|
||||
struct in_addr ih_gwaddr; /* gateway address */
|
||||
struct ih_idseq /* echo datagram */
|
||||
{
|
||||
u_int16_t icd_id;
|
||||
u_int16_t icd_seq;
|
||||
} ih_idseq;
|
||||
u_int32_t ih_void;
|
||||
|
||||
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
|
||||
struct ih_pmtu
|
||||
{
|
||||
u_int16_t ipm_void;
|
||||
u_int16_t ipm_nextmtu;
|
||||
} ih_pmtu;
|
||||
|
||||
struct ih_rtradv
|
||||
{
|
||||
u_int8_t irt_num_addrs;
|
||||
u_int8_t irt_wpa;
|
||||
u_int16_t irt_lifetime;
|
||||
} ih_rtradv;
|
||||
} icmp_hun;
|
||||
#define icmp_pptr icmp_hun.ih_pptr
|
||||
#define icmp_gwaddr icmp_hun.ih_gwaddr
|
||||
#define icmp_id icmp_hun.ih_idseq.icd_id
|
||||
#define icmp_seq icmp_hun.ih_idseq.icd_seq
|
||||
#define icmp_void icmp_hun.ih_void
|
||||
#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
|
||||
#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
|
||||
#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
|
||||
#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
|
||||
#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u_int32_t its_otime;
|
||||
u_int32_t its_rtime;
|
||||
u_int32_t its_ttime;
|
||||
} id_ts;
|
||||
struct
|
||||
{
|
||||
struct ip idi_ip;
|
||||
/* options and then 64 bits of data */
|
||||
} id_ip;
|
||||
struct icmp_ra_addr id_radv;
|
||||
u_int32_t id_mask;
|
||||
u_int8_t id_data[1];
|
||||
} icmp_dun;
|
||||
#define icmp_otime icmp_dun.id_ts.its_otime
|
||||
#define icmp_rtime icmp_dun.id_ts.its_rtime
|
||||
#define icmp_ttime icmp_dun.id_ts.its_ttime
|
||||
#define icmp_ip icmp_dun.id_ip.idi_ip
|
||||
#define icmp_radv icmp_dun.id_radv
|
||||
#define icmp_mask icmp_dun.id_mask
|
||||
#define icmp_data icmp_dun.id_data
|
||||
};
|
||||
#endif
|
||||
|
||||
#define DEFDATALEN 56
|
||||
#define MAXIPLEN 60
|
||||
#define MAXICMPLEN 76
|
||||
@ -477,7 +559,7 @@ extern int ping_main(int argc, char **argv)
|
||||
|
||||
myid = getpid() & 0xFFFF;
|
||||
ping(*argv);
|
||||
exit(TRUE);
|
||||
return(TRUE);
|
||||
}
|
||||
#endif /* ! BB_SIMPLE_PING */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user