diff --git a/tests/Makefile.am b/tests/Makefile.am
index 58ad51fb..c5dd7d53 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,11 +19,22 @@ dist_check_SCRIPTS = test-pass test-pass-cert test-cert test-iroute test-pass-sc
radius-test test-gssapi kerberos-test pam-test test-ban test-sighup \
test-cookie-invalidation
+
+ipv4_prefix_CPPFLAGS = \
+ -I$(top_srcdir)/src/ \
+ -I$(top_builddir)/src/ \
+ -I$(top_srcdir)/gl/ \
+ -I$(top_builddir)/gl/
+ipv4_prefix_SOURCES = ../src/common.c ../src/common.h ipv4-prefix.c
+ipv4_prefix_LDADD = ../gl/libgnu.a $(LIBTALLOC_LIBS)
+
+check_PROGRAMS = ipv4-prefix
+
TESTS = test-pass test-pass-cert test-cert test-iroute test-pass-script \
test-multi-cookie full-test test-group-pass test-pass-group-cert \
ocpasswd-test test-pass-group-cert-no-pass unix-test test-pass-opt-cert \
test-cookie-timeout test-cookie-timeout-2 test-explicit-ip radius-test \
- test-gssapi kerberos-test pam-test test-ban test-sighup
+ test-gssapi kerberos-test pam-test test-ban test-sighup ipv4-prefix
TESTS_ENVIRONMENT = srcdir="$(srcdir)" \
top_builddir="$(top_builddir)"
diff --git a/tests/ipv4-prefix.c b/tests/ipv4-prefix.c
new file mode 100644
index 00000000..d2b8be47
--- /dev/null
+++ b/tests/ipv4-prefix.c
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2015 Red Hat, Inc.
+ *
+ * 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, see .
+ */
+
+#include
+#include
+#include
+
+#include "../src/common.h"
+
+int main()
+{
+ char *p;
+
+ p = ipv4_prefix_to_mask(NULL, 32);
+ if (p == NULL || strcmp(p, "255.255.255.255") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 30);
+ if (p == NULL || strcmp(p, "255.255.255.252") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 27);
+ if (p == NULL || strcmp(p, "255.255.255.224") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 24);
+ if (p == NULL || strcmp(p, "255.255.255.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 22);
+ if (p == NULL || strcmp(p, "255.255.252.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 20);
+ if (p == NULL || strcmp(p, "255.255.240.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 18);
+ if (p == NULL || strcmp(p, "255.255.192.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 16);
+ if (p == NULL || strcmp(p, "255.255.0.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 8);
+ if (p == NULL || strcmp(p, "255.0.0.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 5);
+ if (p == NULL || strcmp(p, "248.0.0.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ p = ipv4_prefix_to_mask(NULL, 3);
+ if (p == NULL || strcmp(p, "224.0.0.0") != 0) {
+ fprintf(stderr, "error in %d: %s\n", __LINE__, p);
+ exit(1);
+ }
+ talloc_free(p);
+
+ return 0;
+}