diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in
index f3d0ea35c1a9444d39683eba6b4016a86554b3ea..ca51d0569eb37deb35a439c8d84b1d48dcaa7818 100644
--- a/openwrt/package/Config.in
+++ b/openwrt/package/Config.in
@@ -23,6 +23,7 @@ source "package/pptpd/Config.in"
 
 comment "Libraries"
 source "package/zlib/Config.in"
+source "package/libpcap/Config.in"
 source "package/libelf/Config.in"
 source "package/matrixssl/Config.in"
 source "package/lzo/Config.in"
diff --git a/openwrt/package/libpcap/Config.in b/openwrt/package/libpcap/Config.in
new file mode 100644
index 0000000000000000000000000000000000000000..7aa6a5b5b1fe8039b9ae8dd8ae8670c864ab968e
--- /dev/null
+++ b/openwrt/package/libpcap/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_LIBPCAP
+	bool "libpcap"
+	default n
+	help
+	  A system-independent library for user-level network packet capture.
+
+	  http://www.tcpdump.org/
diff --git a/openwrt/package/libpcap/Makefile b/openwrt/package/libpcap/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..279190c02ad3b72079dabceaca86f445b4046ed4
--- /dev/null
+++ b/openwrt/package/libpcap/Makefile
@@ -0,0 +1,60 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME := libpcap
+PKG_VERSION := 0.8.3
+PKG_RELEASE := 1
+
+PKG_SOURCE_SITE := http://www.tcpdump.org/release
+PKG_SOURCE_FILE := $(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_CAT := zcat
+PKG_SOURCE_DIR := $(PKG_NAME)-$(PKG_VERSION)
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_SOURCE_DIR)
+
+
+$(DL_DIR)/$(PKG_SOURCE_FILE):
+	mkdir -p $(DL_DIR)
+	$(WGET) -P $(DL_DIR) $(PKG_SOURCE_SITE)/$(PKG_SOURCE_FILE)
+
+$(PKG_BUILD_DIR)/.patched: $(DL_DIR)/$(PKG_SOURCE_FILE)
+	mkdir -p $(TOOL_BUILD_DIR)
+	$(PKG_SOURCE_CAT) $(DL_DIR)/$(PKG_SOURCE_FILE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+	$(PATCH) $(PKG_BUILD_DIR) . ./patches
+	touch $(PKG_BUILD_DIR)/.patched
+
+$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.patched
+	(cd $(PKG_BUILD_DIR); rm -rf config.cache; \
+		ac_cv_linux_vers=$(BR2_DEFAULT_KERNEL_HEADERS) \
+		BUILD_CC=$(TARGET_CC) HOSTCC=$(HOSTCC) \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		./configure \
+		--target=$(GNU_TARGET_NAME) \
+		--host=$(GNU_TARGET_NAME) \
+		--build=$(GNU_HOST_NAME) \
+		--with-build-cc=$(HOSTCC) \
+		--disable-yydebug \
+		--prefix=/usr \
+		--with-pcap=linux \
+	);
+	touch $(PKG_BUILD_DIR)/.configured
+
+$(PKG_BUILD_DIR)/libpcap.a: $(PKG_BUILD_DIR)/.configured
+	$(MAKE) AR="$(TARGET_CROSS)ar" -C $(PKG_BUILD_DIR)
+
+$(STAGING_DIR)/lib/libpcap.a: $(PKG_BUILD_DIR)/libpcap.a
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		prefix=$(STAGING_DIR) \
+		exec_prefix=$(STAGING_DIR) \
+		bindir=$(STAGING_DIR)/bin \
+		datadir=$(STAGING_DIR)/share \
+		install
+
+source: $(DL_DIR)/$(PKG_SOURCE_FILE)
+prepare: $(PKG_BUILD_DIR)/.patched
+compile: $(STAGING_DIR)/lib/libpcap.a
+install:
+
+clean:
+	rm -rf $(PKG_BUILD_DIR)
+	rm -f $(STAGING_DIR)/lib/libpcap*
+
diff --git a/openwrt/package/libpcap/patches/cross-compile-fix.patch b/openwrt/package/libpcap/patches/cross-compile-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..196ee34eb3a293976bd3d76e33c99b990710477d
--- /dev/null
+++ b/openwrt/package/libpcap/patches/cross-compile-fix.patch
@@ -0,0 +1,11 @@
+--- libpcap-0.8.3/Makefile.in.orig	2005-01-17 19:04:41.291056960 -0500
++++ libpcap-0.8.3/Makefile.in	2005-01-17 19:04:47.836061968 -0500
+@@ -100,7 +100,7 @@
+ 
+ libpcap.a: $(OBJ)
+ 	@rm -f $@
+-	ar rc $@ $(OBJ) $(LIBS)
++	$(AR) rc $@ $(OBJ) $(LIBS)
+ 	$(RANLIB) $@
+ 
+ scanner.c: $(srcdir)/scanner.l