mirror of
https://github.com/sheumann/hush.git
synced 2025-01-14 12:30:40 +00:00
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: */
|
/* 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
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||||
@ -48,6 +48,88 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.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 DEFDATALEN 56
|
||||||
#define MAXIPLEN 60
|
#define MAXIPLEN 60
|
||||||
#define MAXICMPLEN 76
|
#define MAXICMPLEN 76
|
||||||
@ -477,7 +559,7 @@ extern int ping_main(int argc, char **argv)
|
|||||||
|
|
||||||
myid = getpid() & 0xFFFF;
|
myid = getpid() & 0xFFFF;
|
||||||
ping(*argv);
|
ping(*argv);
|
||||||
exit(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
#endif /* ! BB_SIMPLE_PING */
|
#endif /* ! BB_SIMPLE_PING */
|
||||||
|
|
||||||
|
86
ping.c
86
ping.c
@ -1,6 +1,6 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* 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
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||||
@ -48,6 +48,88 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.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 DEFDATALEN 56
|
||||||
#define MAXIPLEN 60
|
#define MAXIPLEN 60
|
||||||
#define MAXICMPLEN 76
|
#define MAXICMPLEN 76
|
||||||
@ -477,7 +559,7 @@ extern int ping_main(int argc, char **argv)
|
|||||||
|
|
||||||
myid = getpid() & 0xFFFF;
|
myid = getpid() & 0xFFFF;
|
||||||
ping(*argv);
|
ping(*argv);
|
||||||
exit(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
#endif /* ! BB_SIMPLE_PING */
|
#endif /* ! BB_SIMPLE_PING */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user