add parprouted

git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1542 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Nicolas Thill 2005-07-24 23:44:19 +00:00
parent 8304dfdace
commit a3cc684888
9 changed files with 117 additions and 0 deletions

View File

@ -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"

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -0,0 +1,3 @@
LAN_IF=$(nvram get lan_ifname)
WIFI_IF=$(nvram get wifi_ifname)
OPTIONS="$LAN_IF $WIFI_IF"

View File

@ -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 $?

View File

@ -0,0 +1 @@
/etc/default/parprouted

View File

@ -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

View File

@ -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!");