diff --git a/package/Config.in b/package/Config.in
index 9cf104b7eb62f442092e0ff1fa568939f9d7639a..f68ac9e021c99c3cc360166d187dff115f559107 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -108,6 +108,7 @@ source "package/shat/Config.in"
 source "package/siproxd/Config.in"
 source "package/sipsak/Config.in"
 source "package/snort/Config.in"
+source "package/socat/Config.in"
 source "package/ssmtp/Config.in"
 source "package/srelay/Config.in"
 source "package/tcpdump/Config.in"
diff --git a/package/Makefile b/package/Makefile
index fbb3de8e860519bfc8ab9d490a1366e54277f8ee..0c4d04831080861e81e464a94ee2c51170ac0c1b 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -166,6 +166,7 @@ package-$(BR2_PACKAGE_SHFS) += shfs
 package-$(BR2_PACKAGE_SIPROXD) += siproxd
 package-$(BR2_PACKAGE_SIPSAK) += sipsak
 package-$(BR2_PACKAGE_SNORT) += snort
+package-$(BR2_PACKAGE_SOCAT) += socat
 package-$(BR2_PACKAGE_SPEEX) += speex
 package-$(BR2_PACKAGE_SQLITE) += sqlite
 package-$(BR2_PACKAGE_SQLITE2) += sqlite2
@@ -270,10 +271,10 @@ endif
 rrdtool-compile: cgilib-compile freetype-compile libart-compile libpng-compile
 rrdtool1-compile: zlib-compile
 rsync-compile: popt-compile
-samba-compile: cups-compile
 screen-compile: ncurses-compile
 siproxd-compile: libosip2-compile
 sipsak-compile: openssl-compile
+socat-compile: openssl-compile
 sqlite-compile: ncurses-compile readline-compile
 sqlite2-compile: ncurses-compile readline-compile
 tcpdump-compile: libpcap-compile
diff --git a/package/socat/Config.in b/package/socat/Config.in
new file mode 100644
index 0000000000000000000000000000000000000000..7eea9aec435e78239fd51f9456b84b4d371ec11b
--- /dev/null
+++ b/package/socat/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_SIPSAK
+	tristate "socat - A multipurpose relay (SOcket CAT)"
+	default m if CONFIG_DEVEL
+	select BR2_PACKAGE_LIBOPENSSL
+	select BR2_PACKAGE_LIBPTHREAD
+	help
+	  SoCat (for SOcket CAT) establishes two bidirectional byte streams and 
+	  transfers data between them.
+	  Data channels may be files, pipes, devices (terminal or modem, etc.), or 
+	  sockets (Unix, IPv4, IPv6, raw, UDP, TCP, SSL). It provides forking, 
+	  logging and tracing, different modes for interprocess communication and 
+	  many more options.
+	  
+	  http://www.dest-unreach.org/socat/
+	  
+	  Depends: openssl
+	  
diff --git a/package/socat/Makefile b/package/socat/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..791b71f610f0bf65dd8d4de3a7952160955815fa
--- /dev/null
+++ b/package/socat/Makefile
@@ -0,0 +1,65 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=socat
+PKG_VERSION:=1.4.3.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=ce574e75c2fda4456e8efd4efb86ec5e
+
+PKG_SOURCE_URL:=http://www.dest-unreach.org/socat/download/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_CAT:=bzcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.4
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(TOPDIR)/package/rules.mk
+
+$(eval $(call PKG_template,SOCAT,socat,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+$(PKG_BUILD_DIR)/.configured:
+	(cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
+		LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
+		./configure \
+			--target=$(GNU_TARGET_NAME) \
+			--host=$(GNU_TARGET_NAME) \
+			--build=$(GNU_HOST_NAME) \
+			--program-prefix="" \
+			--program-suffix="" \
+			--prefix=/usr \
+			--exec-prefix=/usr \
+			--bindir=/usr/bin \
+			--datadir=/usr/share \
+			--includedir=/usr/include \
+			--infodir=/usr/share/info \
+			--libdir=/usr/lib \
+			--libexecdir=/usr/lib \
+			--localstatedir=/var \
+			--mandir=/usr/share/man \
+			--sbindir=/usr/sbin \
+			--sysconfdir=/etc \
+			$(DISABLE_LARGEFILE) \
+			$(DISABLE_NLS) \
+			--disable-libwrap \
+			--disable-readline \
+	)
+	touch $@
+
+$(PKG_BUILD_DIR)/.built:
+	rm -rf $(PKG_INSTALL_DIR)
+	mkdir -p $(PKG_INSTALL_DIR)
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		DESTDIR="$(PKG_INSTALL_DIR)" \
+		all install
+	touch $@
+
+$(IPKG_SOCAT):
+	install -d -m0755 $(IDIR_SOCAT)/usr/bin
+	cp -fpR $(PKG_INSTALL_DIR)/usr/bin/socat $(IDIR_SOCAT)/usr/bin/
+	$(RSTRIP) $(IDIR_SOCAT)
+	$(IPKG_BUILD) $(IDIR_SOCAT) $(PACKAGE_DIR)
+
diff --git a/package/socat/ipkg/socat.control b/package/socat/ipkg/socat.control
new file mode 100644
index 0000000000000000000000000000000000000000..efee73518edde478845e12175172516577fdb35b
--- /dev/null
+++ b/package/socat/ipkg/socat.control
@@ -0,0 +1,13 @@
+Package: socat
+Priority: optional
+Section: net
+Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>, Florian Fainelli <florian@alphacore.net>
+Source: http://openwrt.org/cgi-bin/viewcvs.cgi/openwrt/package/socat/
+Depends: libpthread, libopenssl
+Description: A multipurpose relay (SOcket CAT). 
+ SoCat (for SOcket CAT) establishes two bidirectional byte streams and 
+ transfers data between them.
+ Data channels may be files, pipes, devices (terminal or modem, etc.), or 
+ sockets (Unix, IPv4, IPv6, raw, UDP, TCP, SSL). It provides forking, 
+ logging and tracing, different modes for interprocess communication and 
+ many more options.
diff --git a/package/socat/patches/501-honor_ldflags.patch b/package/socat/patches/501-honor_ldflags.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a41a929f1e8344856ff0f28af2cfb50378d84318
--- /dev/null
+++ b/package/socat/patches/501-honor_ldflags.patch
@@ -0,0 +1,13 @@
+diff -ruN socat-1.4-old/Makefile.in socat-1.4-new/Makefile.in
+--- socat-1.4-old/Makefile.in	2005-09-10 22:09:11.000000000 +0200
++++ socat-1.4-new/Makefile.in	2005-10-08 17:12:45.000000000 +0200
+@@ -36,7 +36,8 @@
+ 
+ #0 CFLAGS = @CFLAGS@ $(CCOPTS) $(DEFS) $(INCLS)
+ CFLAGS = @CFLAGS@ $(CCOPTS) $(DEFS) $(CPPFLAGS)
+-CLIBS = $(LIBS)
++LDFLAGS = @LDFLAGS@
++CLIBS = $(LDFLAGS) $(LIBS)
+ #CLIBS = $(LIBS) -lm -lefence
+ XIOSRCS = xioinitialize.c xiohelp.c xioparam.c xiodiag.c xioopen.c xioopts.c \
+ 	xiosignal.c xiosigchld.c xioread.c xiowrite.c \