summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openwrt/package/Config.in1
-rw-r--r--openwrt/package/Makefile1
-rw-r--r--openwrt/package/parprouted/Config.in11
-rw-r--r--openwrt/package/parprouted/Makefile42
-rwxr-xr-xopenwrt/package/parprouted/files/parprouted.default3
-rwxr-xr-xopenwrt/package/parprouted/files/parprouted.init16
-rw-r--r--openwrt/package/parprouted/ipkg/parprouted.conffiles1
-rw-r--r--openwrt/package/parprouted/ipkg/parprouted.control9
-rw-r--r--openwrt/package/parprouted/patches/parprouted.patch33
9 files changed, 117 insertions, 0 deletions
diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in
index 93e55e73a..3f5ff99bf 100644
--- a/openwrt/package/Config.in
+++ b/openwrt/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/openwrt/package/Makefile b/openwrt/package/Makefile
index b00287613..f579f3505 100644
--- a/openwrt/package/Makefile
+++ b/openwrt/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/openwrt/package/parprouted/Config.in b/openwrt/package/parprouted/Config.in
new file mode 100644
index 000000000..16a8f2e35
--- /dev/null
+++ b/openwrt/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/openwrt/package/parprouted/Makefile b/openwrt/package/parprouted/Makefile
new file mode 100644
index 000000000..fc37e100f
--- /dev/null
+++ b/openwrt/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/openwrt/package/parprouted/files/parprouted.default b/openwrt/package/parprouted/files/parprouted.default
new file mode 100755
index 000000000..17169c4b3
--- /dev/null
+++ b/openwrt/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/openwrt/package/parprouted/files/parprouted.init b/openwrt/package/parprouted/files/parprouted.init
new file mode 100755
index 000000000..2422657ee
--- /dev/null
+++ b/openwrt/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/openwrt/package/parprouted/ipkg/parprouted.conffiles b/openwrt/package/parprouted/ipkg/parprouted.conffiles
new file mode 100644
index 000000000..4446a8e99
--- /dev/null
+++ b/openwrt/package/parprouted/ipkg/parprouted.conffiles
@@ -0,0 +1 @@
+/etc/default/parprouted
diff --git a/openwrt/package/parprouted/ipkg/parprouted.control b/openwrt/package/parprouted/ipkg/parprouted.control
new file mode 100644
index 000000000..12bfd1255
--- /dev/null
+++ b/openwrt/package/parprouted/ipkg/parprouted.control
@@ -0,0 +1,9 @@
+Package: parprouted
+Priority: optional
+Section: net
+Version: [TBDL]
+Architecture: [TBDL]
+Maintainer: OpenWrt Developers Team <bugs@openwrt.org>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/parprouted/
+Description: a proxy ARP daemon
+Depends: libpthread
diff --git a/openwrt/package/parprouted/patches/parprouted.patch b/openwrt/package/parprouted/patches/parprouted.patch
new file mode 100644
index 000000000..17fbdecec
--- /dev/null
+++ b/openwrt/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!");