123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- diff --git a/ping6.c b/ping6.c
- index c5ff881..ef2243f 100644
- --- a/ping6.c
- +++ b/ping6.c
- @@ -71,9 +71,11 @@ char copyright[] =
- #include <linux/filter.h>
- #include <netinet/ip6.h>
- #include <netinet/icmp6.h>
- +#ifndef __UCLIBC__
- #include <resolv.h>
-
- #include "ping6_niquery.h"
- +#endif /* __UCLIBC__ */
-
- #ifndef SOL_IPV6
- #define SOL_IPV6 IPPROTO_IPV6
- @@ -154,6 +156,7 @@ int pmtudisc=-1;
-
- static int icmp_sock;
-
- +#ifndef __UCLIBC__
- #include <openssl/md5.h>
-
- /* Node Information query */
- @@ -165,6 +168,7 @@ int ni_subject_type = 0;
- char *ni_group;
-
- __u8 ni_nonce[8];
- +#endif /* __UCLIBC__ */
-
- static struct in6_addr in6_anyaddr;
- static __inline__ int ipv6_addr_any(struct in6_addr *addr)
- @@ -223,6 +227,7 @@ unsigned int if_name2index(const char *ifname)
- return i;
- }
-
- +#ifndef __UCLIBC__
- struct niquery_option {
- char *name;
- int namelen;
- @@ -512,6 +517,7 @@ char *ni_groupaddr(const char *name)
- strcat(nigroup_buf, q);
- return nigroup_buf;
- }
- +#endif /* __UCLIBC__ */
-
- int main(int argc, char *argv[])
- {
- @@ -595,12 +601,14 @@ int main(int argc, char *argv[])
- case 'V':
- printf("ping6 utility, iputils-ss%s\n", SNAPSHOT);
- exit(0);
- +#ifndef __UCLIBC__
- case 'N':
- if (niquery_option_handler(optarg) < 0) {
- usage();
- break;
- }
- break;
- +#endif /* __UCLIBC__ */
- COMMON_OPTIONS
- common_options(ch);
- break;
- @@ -663,6 +671,7 @@ int main(int argc, char *argv[])
- argc--;
- }
-
- +#ifndef __UCLIBC__
- if (ni_query >= 0) {
- int i;
- for (i = 0; i < 8; i++)
- @@ -674,15 +683,20 @@ int main(int argc, char *argv[])
- ni_subject_type = NI_SUBJ_IPV6;
- }
- }
- +#endif /* __UCLIBC__ */
-
- if (argc > 1)
- usage();
- else if (argc == 1) {
- target = *argv;
- } else {
- +#ifndef __UCLIBC__
- if (ni_query < 0 && ni_subject_type != NI_SUBJ_NAME)
- +#endif /* __UCLIBC__ */
- usage();
- +#ifndef __UCLIBC__
- target = ni_group;
- +#endif /* __UCLIBC__ */
- }
-
- memset(&hints, 0, sizeof(hints));
- @@ -817,7 +831,11 @@ int main(int argc, char *argv[])
- exit(2);
- }
-
- +#ifndef __UCLIBC__
- if (datalen >= sizeof(struct timeval) && (ni_query < 0)) {
- +#else
- + if (datalen >= sizeof(struct timeval)) {
- +#endif /* __UCLIBC__ */
- /* can we time transfer */
- timing = 1;
- }
- @@ -866,9 +884,11 @@ int main(int argc, char *argv[])
- ICMP6_FILTER_SETPASS(ICMP6_PARAM_PROB, &filter);
- }
-
- +#ifndef __UCLIBC__
- if (ni_query >= 0)
- ICMP6_FILTER_SETPASS(ICMPV6_NI_REPLY, &filter);
- else
- +#endif /* __UCLIBC__ */
- ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &filter);
-
- err = setsockopt(icmp_sock, IPPROTO_ICMPV6, ICMP6_FILTER, &filter,
- @@ -1100,6 +1120,7 @@ int build_echo(__u8 *_icmph)
- return cc;
- }
-
- +#ifndef __UCLIBC__
- int build_niquery(__u8 *_nih)
- {
- struct ni_hdr *nih;
- @@ -1125,6 +1146,7 @@ int build_niquery(__u8 *_nih)
-
- return cc;
- }
- +#endif /* __UCLIBC__ */
-
- int send_probe(void)
- {
- @@ -1132,9 +1154,11 @@ int send_probe(void)
-
- CLR((ntransmitted+1) % mx_dup_ck);
-
- +#ifndef __UCLIBC__
- if (ni_query >= 0)
- len = build_niquery(outpack);
- else
- +#endif /* __UCLIBC__ */
- len = build_echo(outpack);
-
- if (cmsglen == 0) {
- @@ -1176,6 +1200,7 @@ static void putchar_safe(char c)
- printf("\\%03o", c);
- }
-
- +#ifndef __UCLIBC__
- void pr_niquery_reply_name(struct ni_hdr *nih, int len)
- {
- __u8 *h = (__u8 *)(nih + 1);
- @@ -1304,6 +1329,7 @@ void pr_niquery_reply(__u8 *_nih, int len)
- }
- putchar(';');
- }
- +#endif /* __UCLIBC__ */
-
- /*
- * parse_reply --
- @@ -1353,6 +1379,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
- hops, 0, tv, pr_addr(&from->sin6_addr),
- pr_echo_reply))
- return 0;
- +#ifndef __UCLIBC__
- } else if (icmph->icmp6_type == ICMPV6_NI_REPLY) {
- struct ni_hdr *nih = (struct ni_hdr *)icmph;
- __u16 seq = ntohs(*(__u16 *)nih->ni_nonce);
- @@ -1363,6 +1390,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
- hops, 0, tv, pr_addr(&from->sin6_addr),
- pr_niquery_reply))
- return 0;
- +#endif /* __UCLIBC__ */
- } else {
- int nexthdr;
- struct ip6_hdr *iph1 = (struct ip6_hdr*)(icmph+1);
- @@ -1557,7 +1585,9 @@ void usage(void)
- "Usage: ping6 [-LUdfnqrvVaAD] [-c count] [-i interval] [-w deadline]\n"
- " [-p pattern] [-s packetsize] [-t ttl] [-I interface]\n"
- " [-M pmtudisc-hint] [-S sndbuf] [-F flowlabel] [-Q tclass]\n"
- +#ifndef __UCLIBC__
- " [[-N nodeinfo-option] ...]\n"
- +#endif /* __UCLIBC__ */
- " [hop1 ...] destination\n");
- exit(2);
- }
- diff --git a/ping6_niquery.h b/ping6_niquery.h
- index 61a5cfa..34c31f8 100644
- --- a/ping6_niquery.h
- +++ b/ping6_niquery.h
- @@ -1,3 +1,4 @@
- +#ifndef __UCLIBC__
- #include <asm/byteorder.h>
-
- /* Node Information Query */
- @@ -45,3 +46,4 @@ struct ni_hdr {
- #define NI_IPV4ADDR_F_TRUNCATE NI_IPV6ADDR_F_TRUNCATE
- #define NI_IPV4ADDR_F_ALL NI_IPV6ADDR_F_ALL
-
- +#endif /* __UCLIBC__ */
|