From: nico Date: Sun, 24 Jul 2005 23:44:19 +0000 (+0000) Subject: add parprouted X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/5b66d8eb1a6570798c2c3735e59a3f3e0b19c52b?ds=inline add parprouted git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1542 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/package/Config.in b/package/Config.in index 93e55e73a..3f5ff99bf 100644 --- a/package/Config.in +++ b/package/Config.in @@ -69,6 +69,7 @@ source "package/openntpd/Config.in" source "package/openssh/Config.in" source "package/openswan/Config.in" source "package/openvpn/Config.in" +source "package/parprouted/Config.in" source "package/pmacct/Config.in" source "package/portmap/Config.in" source "package/portsentry/Config.in" diff --git a/package/Makefile b/package/Makefile index b00287613..f579f3505 100644 --- a/package/Makefile +++ b/package/Makefile @@ -93,6 +93,7 @@ package-$(BR2_PACKAGE_OPENSSL) += openssl package-$(BR2_PACKAGE_OPENSWAN) += openswan package-$(BR2_PACKAGE_OPENVPN) += openvpn package-$(BR2_PACKAGE_OSIRIS) += osiris +package-$(BR2_PACKAGE_PARPROUTED) += parprouted package-$(BR2_PACKAGE_PCRE) += pcre package-$(BR2_PACKAGE_PHP4) += php4 package-$(BR2_PACKAGE_PICOCOM) += picocom diff --git a/package/parprouted/Config.in b/package/parprouted/Config.in new file mode 100644 index 000000000..16a8f2e35 --- /dev/null +++ b/package/parprouted/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PARPROUTED + tristate "parprouted - Proxy ARP daemon" +# default m if CONFIG_DEVEL + default n + help + parprouted is a daemon for transparent IP (Layer 3) proxy ARP bridging. + This is useful for creation of transparent firewalls and bridging networks + with different MAC protocols. Also, unlike standard bridging, proxy ARP + bridging allows to bridge Ethernet networks behind wireless nodes without + using WDS or layer 2 bridging. + diff --git a/package/parprouted/Makefile b/package/parprouted/Makefile new file mode 100644 index 000000000..fc37e100f --- /dev/null +++ b/package/parprouted/Makefile @@ -0,0 +1,42 @@ +# $Id$ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=parprouted +PKG_VERSION:=0.63 +PKG_RELEASE:=1 +PKG_MD5SUM:=12753098a22e82997d1941d6d2284750 + +PKG_SOURCE_URL:=http://www.hazard.maks.net/parprouted/ +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_CAT:=zcat + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) + +include $(TOPDIR)/package/rules.mk + +$(eval $(call PKG_template,PARPROUTED,parprouted,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH))) + +$(PKG_BUILD_DIR)/.configured: + touch $@ + +$(PKG_BUILD_DIR)/.built: + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + all + touch $@ + +$(IPKG_PARPROUTED): + install -d -m0755 $(IDIR_PARPROUTED)/etc/default + install -m0755 ./files/parprouted.default $(IDIR_PARPROUTED)/etc/default/parprouted + install -d -m0755 $(IDIR_PARPROUTED)/etc/init.d + install -m0755 ./files/parprouted.init $(IDIR_PARPROUTED)/etc/init.d/parprouted + ln -sf parprouted $(IDIR_PARPROUTED)/etc/init.d/S50parpouted + install -d -m0755 $(IDIR_PARPROUTED)/usr/sbin + install -m0755 $(PKG_BUILD_DIR)/parprouted $(IDIR_PARPROUTED)/usr/sbin/ + $(RSTRIP) $(IDIR_PARPROUTED) + $(IPKG_BUILD) $(IDIR_PARPROUTED) $(PACKAGE_DIR) + +mostlyclean: + -$(MAKE) -C $(PKG_BUILD_DIR) clean + rm -f $(PKG_BUILD_DIR)/.built diff --git a/package/parprouted/files/parprouted.default b/package/parprouted/files/parprouted.default new file mode 100755 index 000000000..17169c4b3 --- /dev/null +++ b/package/parprouted/files/parprouted.default @@ -0,0 +1,3 @@ +LAN_IF=$(nvram get lan_ifname) +WIFI_IF=$(nvram get wifi_ifname) +OPTIONS="$LAN_IF $WIFI_IF" diff --git a/package/parprouted/files/parprouted.init b/package/parprouted/files/parprouted.init new file mode 100755 index 000000000..2422657ee --- /dev/null +++ b/package/parprouted/files/parprouted.init @@ -0,0 +1,16 @@ +#!/bin/sh + +BIN=parprouted +DEFAULT=/etc/default/$BIN +[ -f $DEFAULT ] && . $DEFAULT + +case $1 in + start) + $BIN $OPTIONS + ;; + *) + echo "usage: $0 (start)" + exit 1 +esac + +exit $? diff --git a/package/parprouted/ipkg/parprouted.conffiles b/package/parprouted/ipkg/parprouted.conffiles new file mode 100644 index 000000000..4446a8e99 --- /dev/null +++ b/package/parprouted/ipkg/parprouted.conffiles @@ -0,0 +1 @@ +/etc/default/parprouted diff --git a/package/parprouted/ipkg/parprouted.control b/package/parprouted/ipkg/parprouted.control new file mode 100644 index 000000000..12bfd1255 --- /dev/null +++ b/package/parprouted/ipkg/parprouted.control @@ -0,0 +1,9 @@ +Package: parprouted +Priority: optional +Section: net +Version: [TBDL] +Architecture: [TBDL] +Maintainer: OpenWrt Developers Team +Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/parprouted/ +Description: a proxy ARP daemon +Depends: libpthread diff --git a/package/parprouted/patches/parprouted.patch b/package/parprouted/patches/parprouted.patch new file mode 100644 index 000000000..17fbdecec --- /dev/null +++ b/package/parprouted/patches/parprouted.patch @@ -0,0 +1,33 @@ +diff -rupw parprouted-0.63/arp.c parprouted-0.63-1/arp.c +--- parprouted-0.63/arp.c 2004-05-23 14:06:31.000000000 +0200 ++++ parprouted-0.63-1/arp.c 2005-03-13 16:10:18.000000000 +0100 +@@ -366,7 +366,7 @@ void *arp(char *ifname) + do { + pthread_testcancel(); + /* Sleep a bit in order not to overload the system */ +- usleep(300); ++ usleep(3000); + + if (arp_recv(sock, &frame) <= 0) + continue; +diff -rupw parprouted-0.63/parprouted.c parprouted-0.63-1/parprouted.c +--- parprouted-0.63/parprouted.c 2004-01-30 02:45:43.000000000 +0100 ++++ parprouted-0.63-1/parprouted.c 2005-03-20 09:14:35.000000000 +0100 +@@ -93,7 +93,7 @@ void processarp(int cleanup) + + /* added route to the kernel */ + if (snprintf(routecmd_str, ROUTE_CMD_LEN-1, +- "/sbin/ip route add %s/32 metric 50 dev %s scope link", ++ "/sbin/route add -host %s metric 50 dev %s", + inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1) + { + syslog(LOG_INFO, "ip route command too large to fit in buffer!"); +@@ -112,7 +112,7 @@ void processarp(int cleanup) + + /* remove entry from arp table and remove route from kernel */ + if (snprintf(routecmd_str, ROUTE_CMD_LEN-1, +- "/sbin/ip route del %s/32 metric 50 dev %s scope link", ++ "/sbin/route del -host %s metric 50 dev %s", + inet_ntoa(cur_entry->ipaddr_ia), cur_entry->ifname) > ROUTE_CMD_LEN-1) + { + syslog(LOG_INFO, "ip route command too large to fit in buffer!");