diff options
Diffstat (limited to 'net-analyzer/dhcpdump')
-rw-r--r-- | net-analyzer/dhcpdump/Manifest | 1 | ||||
-rw-r--r-- | net-analyzer/dhcpdump/dhcpdump-1.8.ebuild | 36 | ||||
-rw-r--r-- | net-analyzer/dhcpdump/files/dhcpdump-1.8-Makefile.patch | 22 | ||||
-rw-r--r-- | net-analyzer/dhcpdump/files/dhcpdump-1.8-debian.patch | 103 | ||||
-rw-r--r-- | net-analyzer/dhcpdump/files/dhcpdump-1.8-endianness.patch | 12 | ||||
-rw-r--r-- | net-analyzer/dhcpdump/metadata.xml | 9 |
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> |