Import Fedora patch to remove sysfsutils depend from arping.c wrt #377687
authorSamuli Suominen <ssuominen@gentoo.org>
Sun, 7 Aug 2011 20:09:31 +0000 (20:09 +0000)
committerSamuli Suominen <ssuominen@gentoo.org>
Sun, 7 Aug 2011 20:09:31 +0000 (20:09 +0000)
Package-Manager: portage-2.2.0_alpha47/cvs/Linux x86_64

net-misc/iputils/ChangeLog
net-misc/iputils/Manifest
net-misc/iputils/files/iputils-20071127-infiniband.patch [new file with mode: 0644]
net-misc/iputils/iputils-20101006-r1.ebuild [new file with mode: 0644]
net-misc/iputils/iputils-99999999.ebuild

index 06ef82030b9fb77d29bd33f81b360f6af0a95ea9..04b21caa66f935d33444a2f42584187cb66eaf96 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for net-misc/iputils
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.96 2011/02/19 18:09:48 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/ChangeLog,v 1.97 2011/08/07 20:09:31 ssuominen Exp $
+
+*iputils-20101006-r1 (07 Aug 2011)
+
+  07 Aug 2011; Samuli Suominen <ssuominen@gentoo.org>
+  +files/iputils-20071127-infiniband.patch, +iputils-20101006-r1.ebuild,
+  iputils-99999999.ebuild:
+  Import Fedora patch to remove sysfsutils depend from arping.c wrt #377687 by
+  Anthony Basile
 
 *iputils-20101006 (19 Feb 2011)
 
index da41c71753b57532947ae09764e919c5c93b78bb..1c939b97f199529676e603fd154d25871781fcee 100644 (file)
@@ -4,6 +4,7 @@ Hash: SHA256
 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
@@ -20,14 +21,15 @@ DIST iputils-s20100418.tar.bz2 94237 RMD160 64ea24bb57ae2b8d666b4bf5d35c2d372368
 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-----
diff --git a/net-misc/iputils/files/iputils-20071127-infiniband.patch b/net-misc/iputils/files/iputils-20071127-infiniband.patch
new file mode 100644 (file)
index 0000000..2bf06a2
--- /dev/null
@@ -0,0 +1,280 @@
+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
diff --git a/net-misc/iputils/iputils-20101006-r1.ebuild b/net-misc/iputils/iputils-20101006-r1.ebuild
new file mode 100644 (file)
index 0000000..4a24f98
--- /dev/null
@@ -0,0 +1,93 @@
+# 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
+}
index 7a153577ce29ebcdf84edcca4bdb459034c3d52c..833aef7c9023e53af49ecaa23ab8f3ca98332826 100644 (file)
@@ -1,6 +1,6 @@
 # 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-99999999.ebuild,v 1.3 2011/02/19 18:09:49 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/iputils/iputils-99999999.ebuild,v 1.4 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
@@ -26,11 +26,9 @@ LICENSE="BSD"
 SLOT="0"
 IUSE="doc idn ipv6 SECURITY_HAZARD ssl static"
 
-# sysfsutils is needed for libsysfs which is used by arping only
 RDEPEND="!net-misc/rarpd
        ssl? ( dev-libs/openssl )
-       idn? ( net-dns/libidn )
-       sys-fs/sysfsutils"
+       idn? ( net-dns/libidn )"
 DEPEND="${RDEPEND}
        virtual/os-headers"
 if [[ ${PV} == "99999999" ]] ; then
@@ -54,6 +52,7 @@ src_prepare() {
        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