diff --git a/tests/Makefile.am b/tests/Makefile.am
index b9eb8f2..5731bf8 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -14,7 +14,7 @@
 		 smscb/gsm0341_test stats/stats_test			\
 		 bitvec/bitvec_test msgb/msgb_test bits/bitcomp_test	\
 		 tlv/tlv_test gsup/gsup_test oap/oap_test fsm/fsm_test	\
-		 write_queue/wqueue_test
+		 write_queue/wqueue_test socket/socket_test
 
 if ENABLE_MSGFILE
 check_PROGRAMS += msgfile/msgfile_test
@@ -140,6 +140,9 @@
 write_queue_wqueue_test_SOURCES = write_queue/wqueue_test.c
 write_queue_wqueue_test_LDADD = $(top_builddir)/src/libosmocore.la
 
+socket_socket_test_SOURCES = socket/socket_test.c
+socket_socket_test_LDADD = $(top_builddir)/src/libosmocore.la
+
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	:;{ \
@@ -176,7 +179,8 @@
 	     bitvec/bitvec_test.ok msgb/msgb_test.ok bits/bitcomp_test.ok \
 	     sim/sim_test.ok tlv/tlv_test.ok gsup/gsup_test.ok		\
 	     oap/oap_test.ok fsm/fsm_test.ok fsm/fsm_test.err		\
-	     write_queue/wqueue_test.ok
+	     write_queue/wqueue_test.ok socket/socket_test.ok		\
+	     socket/socket_test.err
 
 DISTCLEANFILES = atconfig atlocal
 
diff --git a/tests/socket/socket_test.c b/tests/socket/socket_test.c
new file mode 100644
index 0000000..75088e5
--- /dev/null
+++ b/tests/socket/socket_test.c
@@ -0,0 +1,78 @@
+/*
+ * (C) 2017 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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 General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/socket.h>
+
+#include "../config.h"
+
+static int test_sockinit(void)
+{
+	int fd, rc;
+	char *name;
+
+	printf("Checking osmo_sock_init() with bind to a random local UDP port\n");
+	fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP,
+			    "0.0.0.0", 0, OSMO_SOCK_F_BIND);
+	OSMO_ASSERT(fd >= 0);
+	name = osmo_sock_get_name(NULL, fd);
+	/* expect it to be not connected. We cannot match on INADDR_ANY,
+	 * as apparently that won't work on FreeBSD if there's only one
+	 * address (e.g. 127.0.0.1) assigned to the entire system, like
+	 * the Osmocom FreeBSD build slaves */
+	OSMO_ASSERT(!strncmp(name, "(NULL<->", 7));
+	talloc_free(name);
+	/* expect it to be blocking */
+	rc = fcntl(fd, F_GETFL);
+	OSMO_ASSERT(!(rc & O_NONBLOCK));
+	close(fd);
+
+	printf("Checking for OSMO_SOCK_F_NONBLOCK\n");
+	fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP,
+			    "0.0.0.0", 0, OSMO_SOCK_F_BIND|OSMO_SOCK_F_NONBLOCK);
+	OSMO_ASSERT(fd >= 0);
+	/* expect it to be blocking */
+	rc = fcntl(fd, F_GETFL);
+	OSMO_ASSERT(rc & O_NONBLOCK);
+	close(fd);
+
+	printf("Checking for invalid flags\n");
+	fd = osmo_sock_init(AF_INET, SOCK_DGRAM, IPPROTO_UDP,
+			    "0.0.0.0", 0, OSMO_SOCK_F_BIND|OSMO_SOCK_F_CONNECT);
+	OSMO_ASSERT(fd < 0);
+
+	return 0;
+}
+
+int main(int argc, char *argv[])
+{
+	test_sockinit();
+	return 0;
+}
diff --git a/tests/socket/socket_test.err b/tests/socket/socket_test.err
new file mode 100644
index 0000000..5367239
--- /dev/null
+++ b/tests/socket/socket_test.err
@@ -0,0 +1 @@
+invalid: both bind and connect flags set: 0.0.0.0:0
diff --git a/tests/socket/socket_test.ok b/tests/socket/socket_test.ok
new file mode 100644
index 0000000..d6ec40e
--- /dev/null
+++ b/tests/socket/socket_test.ok
@@ -0,0 +1,3 @@
+Checking osmo_sock_init() with bind to a random local UDP port
+Checking for OSMO_SOCK_F_NONBLOCK
+Checking for invalid flags
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 426c74c..d6181c9 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -228,3 +228,11 @@
 touch experr
 AT_CHECK([$abs_top_builddir/tests/oap/oap_test], [0], [expout], [experr])
 AT_CLEANUP
+
+AT_SETUP([socket])
+AT_KEYWORDS([socket])
+cat $abs_srcdir/socket/socket_test.ok > expout
+cat $abs_srcdir/socket/socket_test.err > experr
+touch experr
+AT_CHECK([$abs_top_builddir/tests/socket/socket_test], [0], [expout], [experr])
+AT_CLEANUP
