diff -r -C 3 fping-2.4b2_1/fping.c fping-2.4b2_to-ipv6/fping.c  
*** fping-2.4b2_1/fping.c       Sat Jun 12 00:58:29 2010
--- fping-2.4b2_to-ipv6/fping.c Sat Jun 12 01:05:19 2010
***************
*** 125,131 ****
--- 125,133 ----
  
  extern char *optarg;
  extern int optind,opterr;
+ #ifndef h_errno
  extern int h_errno;
+ #endif
  
  #ifdef __cplusplus
  }
***************
*** 456,499 ****
         */
  #ifdef IPV6_RECVHOPOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPOPTS, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_RECVHOPOPTS)");
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPOPTS, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_HOPOPTS)");
  #endif
  #ifdef IPV6_RECVDSTOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVDSTOPTS, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_RECVDSTOPTS)");
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_DSTOPTS, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_DSTOPTS)");
  #endif
  #ifdef IPV6_RECVRTHDRDSTOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDRDSTOPTS, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_RECVRTHDRDSTOPTS)");
  #endif
  #ifdef IPV6_RECVRTHDR
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDR, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_RECVRTHDR)");
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RTHDR, &opton, sizeof(opton)))
!               err(1, "setsockopt(IPV6_RTHDR)");
  #endif
  #ifndef USE_SIN6_SCOPE_ID
  #ifdef IPV6_RECVPKTINFO
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &opton, sizeof(opton)) < 0)
!               warn("setsockopt(IPV6_RECVPKTINFO)"); /* XXX err? */
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_PKTINFO, &opton, sizeof(opton)) < 0)
!               warn("setsockopt(IPV6_PKTINFO)"); /* XXX err? */
  #endif
  #endif /* USE_SIN6_SCOPE_ID */
  #ifdef IPV6_RECVHOPLIMIT
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &opton, sizeof(opton)) < 0)
!               warn("setsockopt(IPV6_RECVHOPLIMIT)"); /* XXX err? */
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPLIMIT, &opton, sizeof(opton)) < 0)
!               warn("setsockopt(IPV6_HOPLIMIT)"); /* XXX err? */
  #endif
  #ifdef IPV6_CHECKSUM
  #ifndef SOL_RAW
--- 458,501 ----
         */
  #ifdef IPV6_RECVHOPOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPOPTS, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_RECVHOPOPTS)");*/
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPOPTS, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_HOPOPTS)");*/
  #endif
  #ifdef IPV6_RECVDSTOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVDSTOPTS, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_RECVDSTOPTS)");*/
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_DSTOPTS, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_DSTOPTS)");*/
  #endif
  #ifdef IPV6_RECVRTHDRDSTOPTS
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDRDSTOPTS, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_RECVRTHDRDSTOPTS)");*/
  #endif
  #ifdef IPV6_RECVRTHDR
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVRTHDR, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_RECVRTHDR)");*/
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RTHDR, &opton, sizeof(opton)))
!               /*err(1, "setsockopt(IPV6_RTHDR)");*/
  #endif
  #ifndef USE_SIN6_SCOPE_ID
  #ifdef IPV6_RECVPKTINFO
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &opton, sizeof(opton)) < 0)
!               /*warn("setsockopt(IPV6_RECVPKTINFO)");*/ /* XXX err? */
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_PKTINFO, &opton, sizeof(opton)) < 0)
!               /*warn("setsockopt(IPV6_PKTINFO)");*/ /* XXX err? */
  #endif
  #endif /* USE_SIN6_SCOPE_ID */
  #ifdef IPV6_RECVHOPLIMIT
        if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &opton, sizeof(opton)) < 0)
!               /*warn("setsockopt(IPV6_RECVHOPLIMIT)");*/ /* XXX err? */
  #else  /* old adv. API */
        if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPLIMIT, &opton, sizeof(opton)) < 0)
!               /*warn("setsockopt(IPV6_HOPLIMIT)");*/ /* XXX err? */
  #endif
  #ifdef IPV6_CHECKSUM
  #ifndef SOL_RAW
***************
*** 501,507 ****
  #endif
        opton = 2;
        if (setsockopt(s, SOL_RAW, IPV6_CHECKSUM, &opton, sizeof(opton)) < 0)
!               err(1, "setsockopt(SOL_RAW,IPV6_CHECKSUM)");
  #endif
  #endif
  
--- 503,509 ----
  #endif
        opton = 2;
        if (setsockopt(s, SOL_RAW, IPV6_CHECKSUM, &opton, sizeof(opton)) < 0)
!               /*err(1, "setsockopt(SOL_RAW,IPV6_CHECKSUM)");*/
  #endif
  #endif
  
***************
*** 824,831 ****
                hints.ai_family = AF_INET6;
  #endif
                ret_ga = getaddrinfo(sourceip, NULL, &hints, &res);
!               if (ret_ga) errx(1, "%s: %s", gai_strerror(ret_ga), sourceip);
!               if (!res->ai_addr) errx(2, "invalid source address %s; getaddrinfo failed", sourceip);
                (void)memcpy(&src, res->ai_addr, res->ai_addrlen < sizeof(FPING_SOCKADDR) ? res->ai_addrlen : sizeof(FPING_SOCKADDR));
                if (bind(s, (struct sockaddr *)&src, sizeof(FPING_SOCKADDR)) == 0)
                {
--- 826,833 ----
                hints.ai_family = AF_INET6;
  #endif
                ret_ga = getaddrinfo(sourceip, NULL, &hints, &res);
!               if (ret_ga) printf("%s: %s", gai_strerror(ret_ga), sourceip);
!               if (!res->ai_addr) printf("invalid source address %s; getaddrinfo failed", sourceip);
                (void)memcpy(&src, res->ai_addr, res->ai_addrlen < sizeof(FPING_SOCKADDR) ? res->ai_addrlen : sizeof(FPING_SOCKADDR));
                if (bind(s, (struct sockaddr *)&src, sizeof(FPING_SOCKADDR)) == 0)
                {
***************
*** 840,846 ****
                                printf("Pinging from %s (%s)\n", sourceip, buf);
                        }
                }
!               else errx(2, "Couldn't bind to interface %s...", sourceip);
        }
  
        /* handle host names supplied on command line or in a file */
--- 842,848 ----
                                printf("Pinging from %s (%s)\n", sourceip, buf);
                        }
                }
!               else printf("Couldn't bind to interface %s...", sourceip);
        }
  
        /* handle host names supplied on command line or in a file */
***************
*** 2232,2241 ****
        hints.ai_protocol = IPPROTO_ICMPV6;
  
        ret_ga = getaddrinfo(name, NULL, &hints, &res);
!       if (ret_ga) errx(1, "%s", gai_strerror(ret_ga));
        if (res->ai_canonname) hostname = res->ai_canonname;
        else hostname = name;
!       if (!res->ai_addr) errx(1, "getaddrinfo failed");
        (void)memcpy(&dst, res->ai_addr, res->ai_addrlen < sizeof(FPING_SOCKADDR) ? res->ai_addrlen : sizeof(FPING_SOCKADDR));
        add_addr(name, name, &dst);
  #endif
--- 2234,2243 ----
        hints.ai_protocol = IPPROTO_ICMPV6;
  
        ret_ga = getaddrinfo(name, NULL, &hints, &res);
!       if (ret_ga) printf("%s", gai_strerror(ret_ga));
        if (res->ai_canonname) hostname = res->ai_canonname;
        else hostname = name;
!       if (!res->ai_addr) printf("getaddrinfo failed");
        (void)memcpy(&dst, res->ai_addr, res->ai_addrlen < sizeof(FPING_SOCKADDR) ? res->ai_addrlen : sizeof(FPING_SOCKADDR));
        add_addr(name, name, &dst);
  #endif