diff --git a/.gitignore b/.gitignore
index ac19b23..24ca677 100644
--- a/.gitignore
+++ b/.gitignore
@@ -68,6 +68,7 @@
 tests/gb/bssgp_fc_test
 tests/gsm0408/gsm0408_test
 tests/logging/logging_test
+tests/fr/fr_test
 
 utils/osmo-arfcn
 utils/osmo-auc-gen
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b60f675..be0b5f4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -4,7 +4,7 @@
                  smscb/smscb_test bits/bitrev_test a5/a5_test		\
                  conv/conv_test auth/milenage_test lapd/lapd_test	\
                  gsm0808/gsm0808_test gsm0408/gsm0408_test		\
-		 gb/bssgp_fc_test logging/logging_test
+		 gb/bssgp_fc_test logging/logging_test fr/fr_test
 if ENABLE_MSGFILE
 check_PROGRAMS += msgfile/msgfile_test
 endif
@@ -51,6 +51,10 @@
 logging_logging_test_SOURCES = logging/logging_test.c
 logging_logging_test_LDADD = $(top_builddir)/src/libosmocore.la
 
+fr_fr_test_SOURCES = fr/fr_test.c
+fr_fr_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gb/libosmogb.la
+
+
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	:;{ \
@@ -77,7 +81,8 @@
              gsm0808/gsm0808_test.ok gb/bssgp_fc_tests.err		\
              gb/bssgp_fc_tests.ok gb/bssgp_fc_tests.sh			\
              msgfile/msgfile_test.ok msgfile/msgconfig.cfg		\
-             logging/logging_test.ok logging/logging_test.err
+             logging/logging_test.ok logging/logging_test.err		\
+             fr/fr_test.ok
 
 DISTCLEANFILES = atconfig
 
diff --git a/tests/fr/fr_test.c b/tests/fr/fr_test.c
new file mode 100644
index 0000000..c09ce7b
--- /dev/null
+++ b/tests/fr/fr_test.c
@@ -0,0 +1,76 @@
+/*
+ * (C) 2012 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#define _GNU_SOURCE
+#include <osmocom/core/application.h>
+
+#include <osmocom/gprs/gprs_ns.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <dlfcn.h>
+
+int (*real_socket)(int, int, int);
+
+static int GR_SOCKET = -1;
+
+static void resolve_real(void)
+{
+	if (real_socket)
+		return;
+	real_socket = dlsym(RTLD_NEXT, "socket");
+}
+
+int socket(int domain, int type, int protocol)
+{
+	int fd;
+
+	resolve_real();
+	if (domain != AF_INET || type != SOCK_RAW || protocol != IPPROTO_GRE)
+		return (*real_socket)(domain, type, protocol);
+
+	/* Now call socket with a normal UDP/IP socket and assign to GR_SOCKET */
+	fd = (*real_socket)(domain, SOCK_DGRAM, IPPROTO_UDP);
+	GR_SOCKET = fd;
+	return fd;
+}
+
+void bssgp_prim_cb()
+{
+}
+
+static const struct log_info log_info = {};
+
+int main(int argc, char **argv)
+{
+	int rc;
+	struct gprs_ns_inst *nsi;
+
+	log_init(&log_info, NULL);
+
+	nsi = gprs_ns_instantiate(NULL, NULL);
+	nsi->frgre.enabled = 1;
+
+	rc = gprs_ns_frgre_listen(nsi);
+	printf("Result: %s\n", rc == GR_SOCKET ? "PASSED" : "FAILED");
+	return rc == GR_SOCKET ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+
diff --git a/tests/fr/fr_test.err b/tests/fr/fr_test.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/fr/fr_test.err
diff --git a/tests/fr/fr_test.ok b/tests/fr/fr_test.ok
new file mode 100644
index 0000000..6a92884
--- /dev/null
+++ b/tests/fr/fr_test.ok
@@ -0,0 +1 @@
+Result: PASSED
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 1cfae03..5029b9e 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -91,3 +91,11 @@
 cat $abs_srcdir/logging/logging_test.err > experr
 AT_CHECK([$abs_top_builddir/tests/logging/logging_test], [], [expout], [experr])
 AT_CLEANUP
+
+AT_SETUP([fr])
+AT_KEYWORDS([fr])
+cat $abs_srcdir/fr/fr_test.ok > expout
+cat $abs_srcdir/fr/fr_test.err > experr
+AT_CHECK([$abs_top_builddir/tests/fr/fr_test], [], [expout], [experr])
+
+AT_CLEANUP
