summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-analyzer/dhcpdump')
-rw-r--r--net-analyzer/dhcpdump/Manifest1
-rw-r--r--net-analyzer/dhcpdump/dhcpdump-1.8.ebuild36
-rw-r--r--net-analyzer/dhcpdump/files/dhcpdump-1.8-Makefile.patch22
-rw-r--r--net-analyzer/dhcpdump/files/dhcpdump-1.8-debian.patch103
-rw-r--r--net-analyzer/dhcpdump/files/dhcpdump-1.8-endianness.patch12
-rw-r--r--net-analyzer/dhcpdump/metadata.xml9
6 files changed, 183 insertions, 0 deletions
diff --git a/net-analyzer/dhcpdump/Manifest b/net-analyzer/dhcpdump/Manifest
new file mode 100644
index 000000000000..613f1eb11ba0
--- /dev/null
+++ b/net-analyzer/dhcpdump/Manifest
@@ -0,0 +1 @@
+DIST dhcpdump-1.8.tar.gz 10740 SHA256 6d5eb9418162fb738bc56e4c1682ce7f7392dd96e568cc996e44c28de7f77190 SHA512 52cd63d581a3c530c2f5baa66808d5b0241853651c720bd513b769b8301b4dff9c87243787014aea98a5b3ebed86ec317b58d262bf5031015141a4da50fb76e6 WHIRLPOOL 4741d6242a16c45beb84c5d5e29d0245954703d40a688cc35af41c42bfc09d8977f01a7e1c96879004ab7b230097457d251ed1c2bb6b15c506cf5fe913e75ccf
diff --git a/net-analyzer/dhcpdump/dhcpdump-1.8.ebuild b/net-analyzer/dhcpdump/dhcpdump-1.8.ebuild
new file mode 100644
index 000000000000..300ea0d09bad
--- /dev/null
+++ b/net-analyzer/dhcpdump/dhcpdump-1.8.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils toolchain-funcs
+
+DESCRIPTION="DHCP Packet Analyzer/tcpdump postprocessor"
+HOMEPAGE="http://www.mavetju.org/unix/general.php"
+SRC_URI="http://www.mavetju.org/download/${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~x86 ~amd64 ~mips"
+
+RDEPEND="net-libs/libpcap"
+DEPEND="
+ ${RDEPEND}
+ dev-lang/perl
+"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-Makefile.patch
+ epatch "${FILESDIR}"/${P}-debian.patch
+ epatch "${FILESDIR}"/${P}-endianness.patch
+}
+
+src_compile() {
+ emake CC=$(tc-getCC)
+}
+
+src_install () {
+ dobin ${PN}
+ doman ${PN}.8
+ dodoc CHANGES CONTACT
+}
diff --git a/net-analyzer/dhcpdump/files/dhcpdump-1.8-Makefile.patch b/net-analyzer/dhcpdump/files/dhcpdump-1.8-Makefile.patch
new file mode 100644
index 000000000000..690f60779b87
--- /dev/null
+++ b/net-analyzer/dhcpdump/files/dhcpdump-1.8-Makefile.patch
@@ -0,0 +1,22 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+-CFLAGS= -Wall -g
+-LDFLAGS= -g
+-LIBS= -lpcap
++#CFLAGS = -Wall -g
++#LDFLAGS = -g
++LIBS = -lpcap
+
+ all: dhcpdump dhcpdump.8
+
+@@ -15,7 +15,7 @@
+ dhcpdump.pod dhcpdump.8
+
+ dhcpdump: dhcpdump.o
+- ${CC} ${LDFLAGS} -o $@ dhcpdump.o ${LIBS}
++ $(CC) -DHAVE_STRSEP $(LDFLAGS) -o $@ dhcpdump.o $(LIBS)
+
+ dhcpdump.o: dhcpdump.c dhcp_options.h Makefile
+- ${CC} ${CFLAGS} -c -o $@ dhcpdump.c
++ $(CC) -DHAVE_STRSEP $(CFLAGS) -c -o $@ dhcpdump.c
diff --git a/net-analyzer/dhcpdump/files/dhcpdump-1.8-debian.patch b/net-analyzer/dhcpdump/files/dhcpdump-1.8-debian.patch
new file mode 100644
index 000000000000..7c5304bb0bca
--- /dev/null
+++ b/net-analyzer/dhcpdump/files/dhcpdump-1.8-debian.patch
@@ -0,0 +1,103 @@
+--- a/dhcpdump.c
++++ b/dhcpdump.c
+@@ -16,11 +16,13 @@
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
+ #include <netinet/udp.h>
++#include <netinet/ether.h>
+ #include <arpa/inet.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <ctype.h>
++#include <time.h>
+ #include <pcap.h>
+ #include <err.h>
+ #include <regex.h>
+@@ -38,11 +40,11 @@
+ #define LARGESTRING 1024
+
+ // header variables
+-u_char timestamp[40]; // timestamp on header
+-u_char mac_origin[40]; // mac address of origin
+-u_char mac_destination[40]; // mac address of destination
+-u_char ip_origin[40]; // ip address of origin
+-u_char ip_destination[40]; // ip address of destination
++char timestamp[40]; // timestamp on header
++char mac_origin[40]; // mac address of origin
++char mac_destination[40]; // mac address of destination
++char ip_origin[40]; // ip address of origin
++char ip_destination[40]; // ip address of destination
+ int max_data_len; // maximum size of a packet
+
+ int tcpdump_style = -1;
+@@ -160,13 +162,21 @@
+ strcpy(mac_destination,
+ ether_ntoa((struct ether_addr *)eh->ether_dhost));
+
+- strcpy(ip_origin, (u_char *)inet_ntoa(ip->ip_src));
+- strcpy(ip_destination, (u_char *)inet_ntoa(ip->ip_dst));
++ strcpy(ip_origin, (char *)inet_ntoa(ip->ip_src));
++ strcpy(ip_destination, (char *)inet_ntoa(ip->ip_dst));
+
++#ifdef __linux__
++ if (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->len)))
++ return;
++
++ printdata((u_char *)(sp + offset), ntohs(udp->len));
++#else
+ if (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->uh_ulen)))
+ return;
+
+ printdata((u_char *)(sp + offset), ntohs(udp->uh_ulen));
++#endif
++
+ }
+
+ // check for matching CHADDR (Peter Apian-Bennewitz <apian@ise.fhg.de>)
+@@ -301,7 +311,7 @@
+ // print the header and the options.
+ int printdata(u_char *data, int data_len) {
+ int j, i;
+- u_char buf[LARGESTRING];
++ char buf[LARGESTRING];
+
+ if (data_len == 0)
+ return 0;
+@@ -364,7 +374,7 @@
+ case 60: // Domain name
+ case 86: // NDS Tree name
+ case 87: // NDS context
+- strncpy(buf, &data[j + 2], data[j + 1]);
++ strncpy(buf, (char *)&data[j + 2], data[j + 1]);
+ buf[data[j + 1]] = 0;
+ printf("%s", buf);
+ break;
+@@ -510,7 +520,7 @@
+ printf("-");
+ print8bits(data + j + 4);
+ printf(" ");
+- strncpy(buf, &data[j + 5], data[j + 1] - 3);
++ strncpy(buf, (char *)&data[j + 5], data[j + 1] - 3);
+ buf[data[j + 1] - 3]=0;
+ printf("%s", buf);
+ break;
+@@ -518,6 +528,9 @@
+ case 82: // Relay Agent Information
+ printf("\n");
+ for (i = j + 2; i < j + data[j + 1]; ) {
++ if (i != j+2) {
++ printf("\n");
++ }
+ printf("%-17s %-13s ", " ",
+ data[i] > sizeof(relayagent_suboptions) ?
+ "*wrong value*" :
+@@ -527,7 +540,7 @@
+ break;
+ }
+ printHexColon(data + i + 2, data[i + 1]);
+- i += data[i + 1];
++ i += data[i + 1] + 2;
+ }
+ break;
+
diff --git a/net-analyzer/dhcpdump/files/dhcpdump-1.8-endianness.patch b/net-analyzer/dhcpdump/files/dhcpdump-1.8-endianness.patch
new file mode 100644
index 000000000000..2a6f7822c2b3
--- /dev/null
+++ b/net-analyzer/dhcpdump/files/dhcpdump-1.8-endianness.patch
@@ -0,0 +1,12 @@
+--- a/dhcpdump.c
++++ b/dhcpdump.c
+@@ -130,7 +130,7 @@
+ offset += ETHER_HDR_LEN;
+
+ // Check for IPv4 packets
+- if (eh->ether_type != 8) {
++ if (eh->ether_type != htons(0x0800)) {
+ printf("Ignored non IPv4 packet: %d\n", eh->ether_type);
+ return;
+ }
+
diff --git a/net-analyzer/dhcpdump/metadata.xml b/net-analyzer/dhcpdump/metadata.xml
new file mode 100644
index 000000000000..6eaa764e301a
--- /dev/null
+++ b/net-analyzer/dhcpdump/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>netmon</herd>
+<longdescription>
+This command parses the output of tcpdump to display the
+dhcp-packets for easier checking and debugging.
+</longdescription>
+</pkgmetadata>