Upstream: http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html Upstream-Status: Pending Signed-off-by: Jackie Huang --- ping/ping_common.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ping/ping_common.h b/ping/ping_common.h index 1dfd1b5..3bfbd12 100644 --- a/ping/ping_common.h +++ b/ping/ping_common.h @@ -17,10 +17,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see `http://www.gnu.org/licenses/'. */ +#include + #include #include #include +#ifdef HAVE_IPV6 #include +#endif #include #include #include @@ -62,7 +66,12 @@ struct ping_stat want to follow the traditional behaviour of ping. */ #define DEFAULT_PING_COUNT 0 +#ifdef HAVE_IPV6 #define PING_HEADER_LEN (USE_IPV6 ? sizeof (struct icmp6_hdr) : ICMP_MINLEN) +#else +#define PING_HEADER_LEN (ICMP_MINLEN) +#endif + #define PING_TIMING(s) ((s) >= sizeof (struct timeval)) #define PING_DATALEN (64 - PING_HEADER_LEN) /* default data length */ @@ -74,13 +83,20 @@ struct ping_stat (t).tv_usec = ((i)%PING_PRECISION)*(1000000/PING_PRECISION) ;\ } while (0) +#ifdef HAVE_IPV6 /* FIXME: Adjust IPv6 case for options and their consumption. */ #define _PING_BUFLEN(p, u) ((u)? ((p)->ping_datalen + sizeof (struct icmp6_hdr)) : \ (MAXIPLEN + (p)->ping_datalen + ICMP_TSLEN)) +#else +#define _PING_BUFLEN(p, u) (MAXIPLEN + (p)->ping_datalen + ICMP_TSLEN) +#endif + +#ifdef HAVE_IPV6 typedef int (*ping_efp6) (int code, void *closure, struct sockaddr_in6 * dest, struct sockaddr_in6 * from, struct icmp6_hdr * icmp, int datalen); +#endif typedef int (*ping_efp) (int code, void *closure, @@ -89,13 +105,17 @@ typedef int (*ping_efp) (int code, struct ip * ip, icmphdr_t * icmp, int datalen); union event { +#ifdef HAVE_IPV6 ping_efp6 handler6; +#endif ping_efp handler; }; union ping_address { struct sockaddr_in ping_sockaddr; +#ifdef HAVE_IPV6 struct sockaddr_in6 ping_sockaddr6; +#endif }; typedef struct ping_data PING; -- 2.8.3