summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2007-05-05 05:49:40 +0000
committerMike Frysinger <vapier@gentoo.org>2007-05-05 05:49:40 +0000
commitf00639d104957ac1ccd097facdd0545138f61330 (patch)
tree8bc1d8185abdff5f5575101866f37f9e0436d209 /net-misc/rarpd
parentVersion bump #176600 by Nuno Lopes. (diff)
downloadgentoo-2-f00639d104957ac1ccd097facdd0545138f61330.tar.gz
gentoo-2-f00639d104957ac1ccd097facdd0545138f61330.tar.bz2
gentoo-2-f00639d104957ac1ccd097facdd0545138f61330.zip
Grab a bunch of fixes from SuSE #176558.
(Portage version: 2.1.2.5)
Diffstat (limited to 'net-misc/rarpd')
-rw-r--r--net-misc/rarpd/ChangeLog13
-rw-r--r--net-misc/rarpd/files/digest-rarpd-1.1-r33
-rw-r--r--net-misc/rarpd/files/rarpd-1.1-daemon.patch29
-rw-r--r--net-misc/rarpd/files/rarpd-1.1-fix-packet-growth-bug246891.diff15
-rw-r--r--net-misc/rarpd/files/rarpd-1.1-libnet.diff155
-rw-r--r--net-misc/rarpd/files/rarpd-1.1-printf.diff13
-rw-r--r--net-misc/rarpd/rarpd-1.1-r3.ebuild34
7 files changed, 260 insertions, 2 deletions
diff --git a/net-misc/rarpd/ChangeLog b/net-misc/rarpd/ChangeLog
index c79ead3f245e..d813b4e6cb0d 100644
--- a/net-misc/rarpd/ChangeLog
+++ b/net-misc/rarpd/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for net-misc/rarpd
-# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/rarpd/ChangeLog,v 1.14 2006/11/26 19:49:44 corsair Exp $
+# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rarpd/ChangeLog,v 1.15 2007/05/05 05:49:40 vapier Exp $
+
+*rarpd-1.1-r3 (05 May 2007)
+
+ 05 May 2007; Mike Frysinger <vapier@gentoo.org>
+ +files/rarpd-1.1-daemon.patch,
+ +files/rarpd-1.1-fix-packet-growth-bug246891.diff,
+ +files/rarpd-1.1-libnet.diff, +files/rarpd-1.1-printf.diff,
+ +rarpd-1.1-r3.ebuild:
+ Grab a bunch of fixes from SuSE #176558.
26 Nov 2006; Markus Rothe <corsair@gentoo.org> rarpd-1.1-r2.ebuild:
Stable on ppc64
diff --git a/net-misc/rarpd/files/digest-rarpd-1.1-r3 b/net-misc/rarpd/files/digest-rarpd-1.1-r3
new file mode 100644
index 000000000000..db382189f425
--- /dev/null
+++ b/net-misc/rarpd/files/digest-rarpd-1.1-r3
@@ -0,0 +1,3 @@
+MD5 04e2ca849e758d0b88c8281775ec3b58 rarpd-1.1.tar.gz 32053
+RMD160 107c38c5d349885c838a756552ff553b0f7a9390 rarpd-1.1.tar.gz 32053
+SHA256 936dc37422b658a8db98cd1d4d6b9fac63e13ac3fdc036e33dde996843baeba6 rarpd-1.1.tar.gz 32053
diff --git a/net-misc/rarpd/files/rarpd-1.1-daemon.patch b/net-misc/rarpd/files/rarpd-1.1-daemon.patch
new file mode 100644
index 000000000000..7a2d68b856f8
--- /dev/null
+++ b/net-misc/rarpd/files/rarpd-1.1-daemon.patch
@@ -0,0 +1,29 @@
+--- rarpd.c.orig 2003-11-03 22:10:41.000304928 -0500
++++ rarpd.c 2003-11-03 22:13:52.683164704 -0500
+@@ -429,12 +429,25 @@
+ openlog(program_name, syslogflags, LOG_LOCAL1);
+
+ if (!nofork) {
++ FILE *pidfile;
+ pid = fork();
+- if (pid > 0) exit(0);
+ if (pid < 0) {
+ syslog(LOG_ERR, "%s: fork failed: %s", program_name, strerror(errno));
+ exit(1);
+ }
++ if (pid) {
++ pidfile = fopen("/var/run/rarpd.pid", "w");
++ if (pidfile) {
++ fprintf(pidfile, "%i", pid);
++ fclose(pidfile);
++ } else
++ perror("Could not write pidfile");
++ exit(0);
++ }
++ chdir("/");
++ close(0);
++ close(1);
++ close(2);
+ }
+
+ if (ethers == NULL) ethers = _PATH_ETHERS;
diff --git a/net-misc/rarpd/files/rarpd-1.1-fix-packet-growth-bug246891.diff b/net-misc/rarpd/files/rarpd-1.1-fix-packet-growth-bug246891.diff
new file mode 100644
index 000000000000..a020a0974d2c
--- /dev/null
+++ b/net-misc/rarpd/files/rarpd-1.1-fix-packet-growth-bug246891.diff
@@ -0,0 +1,15 @@
+http://bugs.gentoo.org/176558
+
+ripped from suse's rarpd-1.1-631.src.rpm:
+* Wed Apr 18 2007 - nadvornik@suse.cz
+- fixed unlimited packet growth [#246891]
+
+--- rarpd.c.orig 2007-02-21 11:41:25.099136000 +0100
++++ rarpd.c 2007-02-21 12:39:49.837404920 +0100
+@@ -307,6 +307,8 @@ void send_rarpreply(unsigned char *dest_
+ syslog(LOG_ERR, "%s: Write error: %s", program_name, libnet_geterror(ld));
+ exit(1);
+ }
++
++ libnet_clear_packet(ld);
+ }
diff --git a/net-misc/rarpd/files/rarpd-1.1-libnet.diff b/net-misc/rarpd/files/rarpd-1.1-libnet.diff
new file mode 100644
index 000000000000..c395309b130f
--- /dev/null
+++ b/net-misc/rarpd/files/rarpd-1.1-libnet.diff
@@ -0,0 +1,155 @@
+ripped from suse
+
+--- rarpd.c
++++ rarpd.c
+@@ -65,18 +65,12 @@
+ #define ETHERSTRLEN sizeof("00:00:00:00:00:00")
+ #define IPSTRLEN sizeof(".xxx.xxx.xxx.xxx")
+
+-#ifdef NEW_LIBNET_INTERFACE
+-#define open_link_interface libnet_open_link_interface
+-#define link_int libnet_link_int
+-#define build_arp libnet_build_arp
+-#define get_ipaddr libnet_get_ipaddr
+-#define get_hwaddr libnet_get_hwaddr
+-#define build_ethernet libnet_build_ethernet
+-#define write_link_layer libnet_write_link_layer
+-
+-/* Temporary workaround */
+-#define ARP_H LIBNET_ARP_H
+-#endif
++struct _ipv4_arp_data_ {
++ u_char ar_sha[6]; /* sender hardware address */
++ u_char ar_spa[4]; /* sender protocol address */
++ u_char ar_tha[6]; /* target hardware address */
++ u_char ar_tpa[4]; /* target protocol address */
++};
+
+ extern char pcap_version[];
+ extern int optind;
+@@ -88,7 +82,7 @@
+ static char *program_name;
+
+ static pcap_t *pd;
+-static struct link_int *ln;
++static libnet_t *ld;
+ static char *device, *ethers;
+ struct in_addr my_ipaddr;
+ static u_char my_hwaddr[ETHERADDRLEN];
+@@ -285,23 +279,34 @@
+ void send_rarpreply(unsigned char *dest_hwaddr,
+ unsigned char *her_hwaddr, struct in_addr *her_ipaddr)
+ {
+- char ebuf[PCAP_ERRBUF_SIZE];
+- u_char buf[ARP_H+ETH_H];
+-
+- memset(buf, 0, ARP_H + ETH_H);
+-
+- /* Ethernet header */
+- build_ethernet(dest_hwaddr, my_hwaddr, ETHERTYPE_REVARP, NULL, 0, buf);
++ int c;
++ libnet_ptag_t t;
+
+ /* ARP header */
+- build_arp(ARPHRD_ETHER, ETHERTYPE_IP,
++ t = libnet_build_arp(ARPHRD_ETHER, ETHERTYPE_IP,
+ ETHERADDRLEN, IPADDRLEN,
+ ARPOP_REVREPLY,
+ my_hwaddr, (u_char *)&(my_ipaddr.s_addr),
+ her_hwaddr, (u_char *)&(her_ipaddr->s_addr),
+- NULL, 0, buf + ETH_H);
++ NULL, 0, ld, 0);
++ if (t == -1) {
++ syslog(LOG_ERR, "%s: Can't build ARP header: %s", program_name, libnet_geterror(ld));
++ exit(1);
++ }
+
+- write_link_layer(ln, (const u_char *)device, buf, ARP_H + ETH_H);
++ /* Ethernet header */
++ t = libnet_build_ethernet(dest_hwaddr, my_hwaddr, ETHERTYPE_REVARP, NULL, 0, ld, 0);
++ if (t == -1) {
++ syslog(LOG_ERR, "%s: Can't build ethernet header: %s", program_name,
++ libnet_geterror(ld));
++ exit(1);
++ }
++
++ c = libnet_write(ld);
++ if (c == -1) {
++ syslog(LOG_ERR, "%s: Write error: %s", program_name, libnet_geterror(ld));
++ exit(1);
++ }
+ }
+
+
+@@ -314,11 +319,13 @@
+ unsigned short pro, hrd, op;
+ struct in_addr her_ipaddr;
+ struct libnet_arp_hdr *ap;
++ struct _ipv4_arp_data_ *ad;
+ struct hostent *hp;
+ char *ipp;
+
+ bp += sizeof(struct libnet_ethernet_hdr);
+ ap = (struct libnet_arp_hdr *)bp;
++ ad = (struct _ipv4_arp_data_ *)(bp + sizeof(*ap));
+
+ pro = EXTRACT_16BITS (&ap->ar_pro);
+ hrd = EXTRACT_16BITS (&ap->ar_hrd);
+@@ -331,10 +338,10 @@
+ /* We only answer RARP requests */
+ if (op != ARPOP_REVREQUEST) return;
+
+- sha = ap->ar_sha;
+- spa = ap->ar_spa;
+- tha = ap->ar_tha;
+- tpa = ap->ar_tpa;
++ sha = ad->ar_sha;
++ spa = ad->ar_spa;
++ tha = ad->ar_tha;
++ tpa = ad->ar_tpa;
+
+ if (my_ether_ntohost(toret, tha)) {
+ if (vflag) {
+@@ -399,6 +406,7 @@
+ int nofork, op, pid, syslogflags;
+ bpf_u_int32 localnet, netmask;
+ char ebuf[PCAP_ERRBUF_SIZE];
++ char errbuf[LIBNET_ERRBUF_SIZE];
+ char *cmdbuf;
+ struct bpf_program fcode;
+
+@@ -446,9 +454,9 @@
+ }
+ }
+
+- ln = open_link_interface(device, ebuf);
+- if (ln == NULL) {
+- syslog(LOG_ERR, "%s: %s", program_name, ebuf);
++ ld = libnet_init(LIBNET_LINK, device, errbuf);
++ if (ld == NULL) {
++ syslog(LOG_ERR, "%s: %s", program_name, errbuf);
+ exit(1);
+ }
+
+@@ -465,8 +473,8 @@
+ }
+
+ memset(&my_ipaddr, 0, sizeof(my_ipaddr));
+- my_ipaddr.s_addr = htonl(get_ipaddr(ln, device, ebuf));
+- memcpy(my_hwaddr, (char *)get_hwaddr(ln, device, ebuf), ETHERADDRLEN);
++ my_ipaddr.s_addr = libnet_get_ipaddr4(ld);
++ memcpy(my_hwaddr, (char *) libnet_get_hwaddr(ld), ETHERADDRLEN);
+
+ setuid(getuid());
+
+--- configure
++++ configure
+@@ -1734,7 +1734,7 @@
+ #include "confdefs.h"
+
+ int main() {
+-libnet_open_link_interface("","");
++libnet_open_link("","");
+ ; return 0; }
+ EOF
+ if { (eval echo configure:1741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
diff --git a/net-misc/rarpd/files/rarpd-1.1-printf.diff b/net-misc/rarpd/files/rarpd-1.1-printf.diff
new file mode 100644
index 000000000000..76e49469e0e5
--- /dev/null
+++ b/net-misc/rarpd/files/rarpd-1.1-printf.diff
@@ -0,0 +1,13 @@
+ripped from suse
+
+--- rarpd.c
++++ rarpd.c
+@@ -238,7 +238,7 @@
+ }
+
+ fclose(f);
+- if (dflag) fprintf(stderr, "Not found\n", hostname);
++ if (dflag) fprintf(stderr, "Not found: %s\n", hostname);
+ errno = ENOENT;
+ return -1;
+ }
diff --git a/net-misc/rarpd/rarpd-1.1-r3.ebuild b/net-misc/rarpd/rarpd-1.1-r3.ebuild
new file mode 100644
index 000000000000..e47d9a1d1588
--- /dev/null
+++ b/net-misc/rarpd/rarpd-1.1-r3.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rarpd/rarpd-1.1-r3.ebuild,v 1.1 2007/05/05 05:49:40 vapier Exp $
+
+inherit eutils
+
+DESCRIPTION="Reverse Address Resolution Protocol Daemon"
+HOMEPAGE="ftp://ftp.dementia.org/pub/net-tools"
+SRC_URI="ftp://ftp.dementia.org/pub/net-tools/${P}.tar.gz"
+
+LICENSE="as-is"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE=""
+
+DEPEND=">=net-libs/libnet-1.1
+ net-libs/libpcap"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-daemon.patch
+ epatch "${FILESDIR}"/${P}-libnet.diff
+ epatch "${FILESDIR}"/${P}-fix-packet-growth-bug246891.diff #176558
+ epatch "${FILESDIR}"/${P}-printf.diff
+}
+
+src_install() {
+ dosbin rarpd || die
+ doman rarpd.8
+ dodoc AUTHORS README TODO VERSION INSTALL
+ newconfd "${FILESDIR}"/rarpd.conf.d rarpd
+ newinitd "${FILESDIR}"/rarpd.init.d rarpd
+}