diff --git a/openbsc/tests/Makefile.am b/openbsc/tests/Makefile.am
index 99ec296..1968119 100644
--- a/openbsc/tests/Makefile.am
+++ b/openbsc/tests/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = debug gsm0408 db channel
+SUBDIRS = debug gsm0408 db channel mgcp
 
 if BUILD_NAT
 SUBDIRS += bsc-nat
diff --git a/openbsc/tests/mgcp/Makefile.am b/openbsc/tests/mgcp/Makefile.am
new file mode 100644
index 0000000..7595e3b
--- /dev/null
+++ b/openbsc/tests/mgcp/Makefile.am
@@ -0,0 +1,12 @@
+INCLUDES = $(all_includes) -I$(top_srcdir)/include
+AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(COVERAGE_CFLAGS)
+AM_LDFLAGS = $(COVERAGE_LDFLAGS)
+
+EXTRA_DIST = bsc_data.c
+
+noinst_PROGRAMS = mgcp_test
+
+mgcp_test_SOURCES = mgcp_test.c \
+			$(top_srcdir)/src/mgcp/mgcp_protocol.c \
+			$(top_srcdir)/src/mgcp/mgcp_network.c
+mgcp_test_LDADD = $(top_builddir)/src/libbsc.a $(LIBOSMOCORE_LIBS) -lrt $(LIBOSMOSCCP_LIBS) $(LIBOSMOVTY_LIBS)
diff --git a/openbsc/tests/mgcp/mgcp_test.c b/openbsc/tests/mgcp/mgcp_test.c
new file mode 100644
index 0000000..558fbff
--- /dev/null
+++ b/openbsc/tests/mgcp/mgcp_test.c
@@ -0,0 +1,82 @@
+/*
+ * (C) 2011 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * (C) 2011 by On-Waves
+ * 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 Affero 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/>.
+ */
+
+#include <openbsc/mgcp.h>
+
+#include <osmocore/talloc.h>
+#include <string.h>
+
+static struct msgb *create_auep1()
+{
+	struct msgb *msg;
+
+	msg = msgb_alloc_headroom(4096, 128, "MGCP msg");
+	int len = sprintf((char *)msg->data, "AUEP 158663169 ds/e1-0/2@172.16.6.66 MGCP 1.0\r\n");
+	msg->l2h = msgb_put(msg, len);
+	return msg;
+}
+
+static struct msgb *create_auep2()
+{
+	struct msgb *msg;
+
+	msg = msgb_alloc_headroom(4096, 128, "MGCP msg");
+	int len = sprintf((char *)msg->data, "AUEP 18983213 ds/e1-1/1@172.16.6.66 MGCP 1.0\r\n");
+	msg->l2h = msgb_put(msg, len);
+	return msg;
+}
+
+static void test_auep(void)
+{
+	struct msgb *inp;
+	struct msgb *msg;
+	struct mgcp_config *cfg = mgcp_config_alloc();
+	cfg->number_endpoints = 64;
+	mgcp_endpoints_allocate(cfg);
+
+	inp = create_auep1();
+	msg = mgcp_handle_message(cfg, inp);
+	msgb_free(inp);
+	if (strcmp((char *) msg->data, "200 158663169 OK\r\n") != 0)
+		printf("Result1 failed '%s'\n", (char *) msg->data);
+	/* Verify that the endpoint is fine */
+	msgb_free(msg);
+
+	inp = create_auep2();
+	msg = mgcp_handle_message(cfg, inp);
+	msgb_free(inp);
+	/* Verify that the endpoint is not fine */
+	if (strcmp((char *) msg->data, "500 18983213 FAIL\r\n") != 0)
+		printf("Result2 failed '%s'\n", (char *) msg->data);
+	msgb_free(msg);
+
+	talloc_free(cfg);
+}
+
+int main(int argc, char **argv)
+{
+	struct log_target *stderr_target;
+	log_init(&log_info);
+	stderr_target = log_target_create_stderr();
+	log_add_target(stderr_target);
+	log_set_all_filter(stderr_target, 1);
+
+	test_auep();
+	return 0;
+}
