AUX 021109-uclibc-no-ether_ntohost.patch 635 RMD160 234010cd5aadc5086beb638c19514659974939f8 SHA1 8e7fda98a1cc1fae5b8f75f9aec200fcb3afee49 SHA256 cf8135fd380918890a1da8de438d5283111f1e9ea0754b4f5c78bb703fcf617b
AUX iputils-20070202-idn.patch 3303 RMD160 77cc510e77956cdb3b598297756998ed9728775d SHA1 aad5d04fbe861f049d58ecfc3d6efebb92b63f10 SHA256 449e356a14aee6ad27ac4581055d489da764403447df8f2a50ecb1c4ac71e533
AUX iputils-20070202-makefile.patch 982 RMD160 1b245b116eb9ede2698e7a37122cd1e6fb4c4dfd SHA1 aef3be153f43179c09289028ad945669bd19a0f5 SHA256 10da0ffbbf0d3df72f0a7218cd94a2668eff318e12f402ae3279fec090462b4a
+AUX iputils-20071127-infiniband.patch 7748 RMD160 343761bf50becbab90a570a879a536f49b0bb6ab SHA1 03e58876fe4cced3a0a2fcbac2cdabf49245914b SHA256 98336a7656f2b0e1f080223395658ac57f545ef47644d68e989664a184c769d5
AUX iputils-20071127-kernel-ifaddr.patch 1467 RMD160 25082fb7976aaefdd6f4da753871d7d744fc171d SHA1 8ea5c4fe3aeed984bd6f6e377b4e304f38127c5d SHA256 24d24c86676c8d6febb52650e53f202051ec9f185932b87d8400eee0f77f569e
AUX iputils-20071127-nonroot-floodping.patch 497 RMD160 7dddcb6e07c67620a83ff4a9d827270404e3fc32 SHA1 337b226525895f5b02463597d95efc7ea204f399 SHA256 f0c7c2d4843873da96f795fb766a65ed39b6d8ab74ae4aa5a47444c9a3db0e52
AUX iputils-20100418-aliasing.patch 2897 RMD160 210d763dbae8d31485a5bf1f1792cd9183e93c54 SHA1 de370b6fa6ff56c557741f4edbc4fb70c22f3c35 SHA256 8df8b1c510a1630d06d71f801d57c9182729f0308545026b999868ad55469914
DIST iputils-s20101006-manpages.tar.bz2 21638 RMD160 3568e7b294cd6dbe167745573b883f4ea83fe35f SHA1 63132b3c98cd76f72d2f2928f6f29ded420a410d SHA256 071b13a9154070168204ff49fa2564b56e4a1706020a2923ba9d3198f317d954
DIST iputils-s20101006.tar.bz2 94386 RMD160 d97c5c51f88db6e39d79812dfbc88efdc329305f SHA1 a08cc5423a7bf940205f2353fe3d129cd39ff242 SHA256 fd3af46c80ebb99607c2ca1f2a3608b6fe828e25bbec6e54f2afd25f6ddb6ee7
EBUILD iputils-20100418-r1.ebuild 2446 RMD160 a0e6a5e1cc293d18a21461f43d50e7a7164efa21 SHA1 f83389a256745b7cb38b0c7c70728f386e7aa61a SHA256 be5ba47a48829aba8776fb0069f28c5b21e308bf43161f09912adc997e0004a1
+EBUILD iputils-20101006-r1.ebuild 2819 RMD160 04836e2c79d036b61801a1ac2dfd6ad4f0c22b3f SHA1 1e7a72b14382305409a750191df1cfbab710242e SHA256 5d6bf64ed3e3847abb8bfa828bfa7be616748752ad3dd8c23b2573b730ea61b9
EBUILD iputils-20101006.ebuild 2835 RMD160 7ce7328b02e13bea6229d5932d44562eeaaca313 SHA1 d05172502a4a848cea6b3b99d327ebcd0baba387 SHA256 c7c8db63108aab90a72d221c35962dd6ef1d02a6d8618df522c70ed9672a060b
-EBUILD iputils-99999999.ebuild 2835 RMD160 c14faad44a22af53995a4c10f0461e19ed6ee358 SHA1 d2ae56dd9feb8e825fc39987efd66c6cd0286c1e SHA256 175ffeb10a92ba622951d030f96d9ed03a1b66a3505edff331a60b6ce6c23b07
-MISC ChangeLog 14136 RMD160 4fe8ee5741420577e1c548809120ad3f7f9fc4e4 SHA1 8c94fb55c4e9f14e5ac80356dec7d80846fa2e21 SHA256 816152e197106f1c7b01666f34d27d20702896c44c8ba7c9c98184d5295ab518
+EBUILD iputils-99999999.ebuild 2816 RMD160 43783fd9b608149f30b566dd5334af3ea4589964 SHA1 93e93b02689efb3cde2c6666855a5db505a02144 SHA256 2ce6811b1857a258990572d4178e518750ed1b3f90bd61c524231515c1795e82
+MISC ChangeLog 14426 RMD160 8c9a692e04d6665203abecdd2d704f7fb4517cec SHA1 c48804ffe21ebe5663aaac015123bf9d2b975f8b SHA256 09db7f7f37e371078dce1920a00fbca389419aa2b870afb608a812299c9b4126
MISC metadata.xml 299 RMD160 44839875595bd58f9d7f5245d366eb3d0e1ffb1f SHA1 224a2c26c04621e6277b1d887902911e4a9bc2eb SHA256 d028d4ba25f3ed29afbbf77abd924a617098bff71e6a0c37b7d6c0a24cd65a78
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
-iF4EAREIAAYFAk1gB3IACgkQaC/OocHi7Ja8uwEAkmF5aVCBH2A0gYNc2B5rXUBS
-6mHuUzoDf3F7hrL3yEkA/jqniioYUu6ZPujMnX3J2SfZRyhlKd8wKTVnYR/XM+BF
-=/0b5
+iF4EAREIAAYFAk4+8DMACgkQXkR9YqOcLPFSaQD9GXZ45fvxffOvHQDr9PwZUnpS
+3ioZPaIJxjOSx7qpY30A/0txn419OK6+mbK9V2NIYn5nYtsIWFJ3kcD9pdNYYUfY
+=p/Ht
-----END PGP SIGNATURE-----
--- /dev/null
+Otherwise same as Fedora patch except for the Makefile part
+
+http://bugs.gentoo.org/show_bug.cgi?id=377687
+http://pkgs.fedoraproject.org/gitweb/?p=iputils.git;a=blob_plain;f=iputils-20071127-infiniband.patch;hb=HEAD
+
+--- arping.c
++++ arping.c
+@@ -32,8 +32,6 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+
+-#include <sysfs/libsysfs.h>
+-
+ #include "SNAPSHOT.h"
+
+ static void usage(void) __attribute__((noreturn));
+@@ -52,14 +50,22 @@ int unicasting;
+ int s;
+ int broadcast_only;
+
+-struct sockaddr_storage me;
+-struct sockaddr_storage he;
++struct sockaddr_ll *me=NULL;
++struct sockaddr_ll *he=NULL;
+
+ struct timeval start, last;
+
+ int sent, brd_sent;
+ int received, brd_recv, req_recv;
+
++#define SYSFS_MNT_PATH "/sys"
++#define SYSFS_CLASS "class"
++#define SYSFS_NET "net"
++#define SYSFS_BROADCAST "broadcast"
++#define SYSFS_PATH_ENV "SYSFS_PATH"
++#define SYSFS_PATH_LEN 256
++#define SOCKADDR_LEN (2 * sizeof(struct sockaddr_ll))
++
+ #define MS_TDIFF(tv1,tv2) ( ((tv1).tv_sec-(tv2).tv_sec)*1000 + \
+ ((tv1).tv_usec-(tv2).tv_usec)/1000 )
+
+@@ -166,6 +172,10 @@ void finish(void)
+ printf("\n");
+ fflush(stdout);
+ }
++
++ free(me);
++ free(he);
++
+ if (dad)
+ exit(!!received);
+ if (unsolicited)
+@@ -186,8 +196,7 @@ void catcher(void)
+ finish();
+
+ if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
+- send_pack(s, src, dst,
+- (struct sockaddr_ll *)&me, (struct sockaddr_ll *)&he);
++ send_pack(s, src, dst, me, he);
+ if (count == 0 && unsolicited)
+ finish();
+ }
+@@ -234,7 +243,7 @@ int recv_pack(unsigned char *buf, int le
+ return 0;
+ if (ah->ar_pln != 4)
+ return 0;
+- if (ah->ar_hln != ((struct sockaddr_ll *)&me)->sll_halen)
++ if (ah->ar_hln != me->sll_halen)
+ return 0;
+ if (len < sizeof(*ah) + 2*(4 + ah->ar_hln))
+ return 0;
+@@ -245,7 +254,7 @@ int recv_pack(unsigned char *buf, int le
+ return 0;
+ if (src.s_addr != dst_ip.s_addr)
+ return 0;
+- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln))
++ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln))
+ return 0;
+ } else {
+ /* DAD packet was:
+@@ -263,7 +272,7 @@ int recv_pack(unsigned char *buf, int le
+ */
+ if (src_ip.s_addr != dst.s_addr)
+ return 0;
+- if (memcmp(p, ((struct sockaddr_ll *)&me)->sll_addr, ((struct sockaddr_ll *)&me)->sll_halen) == 0)
++ if (memcmp(p, me->sll_addr, me->sll_halen) == 0)
+ return 0;
+ if (src.s_addr && src.s_addr != dst_ip.s_addr)
+ return 0;
+@@ -279,7 +288,7 @@ int recv_pack(unsigned char *buf, int le
+ printf("for %s ", inet_ntoa(dst_ip));
+ s_printed = 1;
+ }
+- if (memcmp(p+ah->ar_hln+4, ((struct sockaddr_ll *)&me)->sll_addr, ah->ar_hln)) {
++ if (memcmp(p+ah->ar_hln+4, me->sll_addr, ah->ar_hln)) {
+ if (!s_printed)
+ printf("for ");
+ printf("[");
+@@ -305,40 +314,67 @@ int recv_pack(unsigned char *buf, int le
+ if (quit_on_reply)
+ finish();
+ if(!broadcast_only) {
+- memcpy(((struct sockaddr_ll *)&he)->sll_addr, p, ((struct sockaddr_ll *)&me)->sll_halen);
++ memcpy(he->sll_addr, p, me->sll_halen);
+ unicasting=1;
+ }
+ return 1;
+ }
+
+-void set_device_broadcast(char *device, unsigned char *ba, size_t balen)
++int get_sysfs_mnt_path(char *mnt_path, size_t len)
+ {
+- struct sysfs_class_device *dev;
+- struct sysfs_attribute *brdcast;
+- unsigned char *p;
+- int ch;
++ const char *sysfs_path_env;
++ int pth_len=0;
+
+- dev = sysfs_open_class_device("net", device);
+- if (!dev) {
+- perror("sysfs_open_class_device(net)");
+- exit(2);
+- }
++ if (len == 0 || mnt_path == NULL)
++ return -1;
+
+- brdcast = sysfs_get_classdev_attr(dev, "broadcast");
+- if (!brdcast) {
+- perror("sysfs_get_classdev_attr(broadcast)");
+- exit(2);
+- }
++ /* possible overrride of real mount path */
++ sysfs_path_env = getenv(SYSFS_PATH_ENV);
++ memset(mnt_path, 0, len);
++ strncpy(mnt_path,
++ sysfs_path_env != NULL ? sysfs_path_env : SYSFS_MNT_PATH,
++ len-1);
+
+- if (sysfs_read_attribute(brdcast)) {
+- perror("sysfs_read_attribute");
+- exit(2);
+- }
++ if ((pth_len = strlen(mnt_path)) > 0 && mnt_path[pth_len-1] == '/')
++ mnt_path[pth_len-1] = '\0';
++
++ return 0;
++}
++
++int make_sysfs_broadcast_path(char *broadcast_path, size_t len)
++{
++ char mnt_path[SYSFS_PATH_LEN];
++
++ if (get_sysfs_mnt_path(mnt_path, len) != 0)
++ return -1;
+
+- for (p = ba, ch = 0; p < ba + balen; p++, ch += 3)
+- *p = strtoul(brdcast->value + ch, NULL, 16);
++ snprintf(broadcast_path, len,
++ "%s/" SYSFS_CLASS "/" SYSFS_NET "/%s/" SYSFS_BROADCAST,
++ mnt_path, device);
+
+- return;
++ return 0;
++}
++
++char * read_sysfs_broadcast(char *brdcast_path)
++{
++ int fd;
++ int len_to_read;
++ char *brdcast = NULL;
++
++ if ((fd = open(brdcast_path, O_RDONLY)) > -1) {
++ len_to_read = lseek(fd, 0L, SEEK_END);
++ if ((brdcast = malloc(len_to_read+1)) != NULL) {
++ lseek(fd, 0L, SEEK_SET);
++ memset(brdcast, 0, len_to_read+1);
++ if (read(fd, brdcast, len_to_read) == -1) {
++ free(brdcast);
++ brdcast = NULL;
++ }
++ }
++ close(fd);
++ }
++
++ return brdcast;
+ }
+
+ int
+@@ -356,6 +392,17 @@ main(int argc, char **argv)
+ exit(-1);
+ }
+
++ me = malloc(SOCKADDR_LEN);
++ if (!me) {
++ fprintf(stderr, "arping: could not allocate memory\n");
++ exit(1);
++ }
++ he = malloc(SOCKADDR_LEN);
++ if (!he) {
++ fprintf(stderr, "arping: could not allocate memory\n");
++ exit(1);
++ }
++
+ while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I:V")) != EOF) {
+ switch(ch) {
+ case 'b':
+@@ -504,34 +551,51 @@ main(int argc, char **argv)
+ close(probe_fd);
+ };
+
+- ((struct sockaddr_ll *)&me)->sll_family = AF_PACKET;
+- ((struct sockaddr_ll *)&me)->sll_ifindex = ifindex;
+- ((struct sockaddr_ll *)&me)->sll_protocol = htons(ETH_P_ARP);
+- if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) {
++ me->sll_family = AF_PACKET;
++ me->sll_ifindex = ifindex;
++ me->sll_protocol = htons(ETH_P_ARP);
++ if (bind(s, (struct sockaddr*)me, SOCKADDR_LEN) == -1) {
+ perror("bind");
+ exit(2);
+ }
+
+ if (1) {
+- socklen_t alen = sizeof(me);
+- if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) {
++ socklen_t alen = SOCKADDR_LEN;
++ if (getsockname(s, (struct sockaddr*)me, &alen) == -1) {
+ perror("getsockname");
+ exit(2);
+ }
+ }
+- if (((struct sockaddr_ll *)&me)->sll_halen == 0) {
++ if (me->sll_halen == 0) {
+ if (!quiet)
+ printf("Interface \"%s\" is not ARPable (no ll address)\n", device);
+ exit(dad?0:2);
+ }
+
+- he = me;
++ memcpy(he, me, SOCKADDR_LEN);
+
+ #if 1
+- set_device_broadcast(device, ((struct sockaddr_ll *)&he)->sll_addr,
+- ((struct sockaddr_ll *)&he)->sll_halen);
++ char brdcast_path[SYSFS_PATH_LEN];
++ char *brdcast_val=NULL;
++ char *next_ch;
++
++ if (make_sysfs_broadcast_path(brdcast_path, sizeof brdcast_path) != 0) {
++ perror("sysfs attribute broadcast");
++ exit(2);
++ }
++
++ if ((brdcast_val = read_sysfs_broadcast(brdcast_path)) == NULL) {
++ perror("sysfs read broadcast value");
++ exit(2);
++ }
++
++ for (ch=0; ch<he->sll_halen; ch++) {
++ he->sll_addr[ch] = strtol(brdcast_val + (ch*3), &next_ch, 16);
++ }
++
++ free(brdcast_val);
+ #else
+- memset(((struct sockaddr_ll *)&he)->sll_addr, -1, ((struct sockaddr_ll *)&he)->sll_halen);
++ memset(he->sll_addr, -1, he->sll_halen);
+ #endif
+
+ if (!quiet) {
+--- Makefile
++++ Makefile
+@@ -28,7 +28,6 @@
+ ping6: LDLIBS += -lidn
+ endif
+
+-arping: LDLIBS += -lsysfs
+ ping6: LDLIBS += -lresolv -lcrypto
+
+ tftpd: tftpd.o tftpsubs.o
--- /dev/null
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-20101006-r1.ebuild,v 1.1 2011/08/07 20:09:31 ssuominen Exp $
+
+# For released versions, we precompile the man/html pages and store
+# them in a tarball on our mirrors. This avoids ugly issues while
+# building stages, and when the jade/sgml packages are broken (which
+# seems to be more common than would be nice).
+
+EAPI="2"
+
+inherit flag-o-matic eutils toolchain-funcs
+if [[ ${PV} == "99999999" ]] ; then
+ EGIT_REPO_URI="git://www.linux-ipv6.org/gitroot/iputils"
+ inherit git
+else
+ SRC_URI="http://www.skbuff.net/iputils/iputils-s${PV}.tar.bz2
+ mirror://gentoo/iputils-s${PV}-manpages.tar.bz2"
+ KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-linux ~x86-linux"
+fi
+
+DESCRIPTION="Network monitoring tools including ping and ping6"
+HOMEPAGE="http://www.linux-foundation.org/en/Net:Iputils"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc idn ipv6 SECURITY_HAZARD ssl static"
+
+RDEPEND="!net-misc/rarpd
+ ssl? ( dev-libs/openssl )
+ idn? ( net-dns/libidn )"
+DEPEND="${RDEPEND}
+ virtual/os-headers"
+if [[ ${PV} == "99999999" ]] ; then
+ DEPEND+="
+ app-text/openjade
+ dev-perl/SGMLSpm
+ app-text/docbook-sgml-dtd
+ app-text/docbook-sgml-utils
+ "
+fi
+
+S=${WORKDIR}/${PN}-s${PV}
+
+src_prepare() {
+ epatch "${FILESDIR}"/021109-uclibc-no-ether_ntohost.patch
+ epatch "${FILESDIR}"/${PN}-20100418-openssl.patch #335436
+ epatch "${FILESDIR}"/${PN}-20100418-so_mark.patch #335347
+ epatch "${FILESDIR}"/${PN}-20100418-makefile.patch
+ epatch "${FILESDIR}"/${PN}-20100418-proper-libs.patch #332703
+ epatch "${FILESDIR}"/${PN}-20100418-printf-size.patch
+ epatch "${FILESDIR}"/${PN}-20100418-aliasing.patch
+ epatch "${FILESDIR}"/${PN}-20071127-kernel-ifaddr.patch
+ epatch "${FILESDIR}"/${PN}-20070202-idn.patch #218638
+ epatch "${FILESDIR}"/${PN}-20071127-infiniband.patch #377687
+ use SECURITY_HAZARD && epatch "${FILESDIR}"/${PN}-20071127-nonroot-floodping.patch
+ use static && append-ldflags -static
+ use ssl && append-cppflags -DHAVE_OPENSSL
+ use ipv6 || sed -i -e 's:IPV6_TARGETS=:#IPV6_TARGETS=:' Makefile
+ export IDN=$(use idn && echo yes)
+}
+
+src_compile() {
+ tc-export CC
+ emake || die
+
+ if [[ ${PV} == "99999999" ]] ; then
+ emake -j1 html man || die
+ fi
+}
+
+src_install() {
+ into /
+ dobin ping || die
+ use ipv6 && dobin ping6
+ dosbin arping || die
+ into /usr
+ dosbin tracepath || die
+ use ipv6 && dosbin trace{path,route}6
+ dosbin clockdiff rarpd rdisc ipg tftpd || die
+
+ fperms 4711 /bin/ping
+ use ipv6 && fperms 4711 /bin/ping6 /usr/sbin/traceroute6
+
+ dodoc INSTALL RELNOTES
+ use ipv6 \
+ && dosym ping.8 /usr/share/man/man8/ping6.8 \
+ || rm -f doc/*6.8
+ rm -f doc/setkey.8
+ doman doc/*.8
+
+ use doc && dohtml doc/*.html
+}