summaryrefslogtreecommitdiff
path: root/dns
diff options
context:
space:
mode:
authorJohn Marino <marino@FreeBSD.org>2014-02-17 11:27:10 +0000
committerJohn Marino <marino@FreeBSD.org>2014-02-17 11:27:10 +0000
commit51ca8026e74de6e29e25bc0ac60c09a99c708360 (patch)
treebf4fd896c2b0fa6fb386bbc6706c7da9f68a5401 /dns
parent780c307545616a166ffdc0a95e1dc58fb18db6df (diff)
downloadfreebsd-ports-51ca8026e74de6e29e25bc0ac60c09a99c708360.zip
Add new Ada-based DNS server port: dns/ironsides
IRONSIDES is an authoritative DNS server that is provably invulnerable to many of the problems that plague other servers. It achieves this property through the use of formal methods in its design, in particular the language Ada and the SPARK formal methods tool set. Code validated in this way is provably exception-free, contains no data flow errors, and terminates only in the ways that its programmers explicitly say that it can. These are very desirable properties from a computer security perspective. IRONSIDES is not a complete implementation of DNS. In particular, it does not support zone transfers or recursive queries. It does, however, support a sufficient number of DNS records to be useful as an authoritative DNS server for an enterprise.
Diffstat (limited to 'dns')
-rw-r--r--dns/Makefile1
-rw-r--r--dns/ironsides/Makefile29
-rw-r--r--dns/ironsides/distinfo2
-rw-r--r--dns/ironsides/files/Makefile11
-rw-r--r--dns/ironsides/files/ironsides.gpr13
-rw-r--r--dns/ironsides/pkg-descr14
-rw-r--r--dns/ironsides/pkg-plist3
7 files changed, 73 insertions, 0 deletions
diff --git a/dns/Makefile b/dns/Makefile
index c777e81b7752..354c1470bcf2 100644
--- a/dns/Makefile
+++ b/dns/Makefile
@@ -61,6 +61,7 @@
SUBDIR += inadyn
SUBDIR += inadyn-mt
SUBDIR += ipcheck
+ SUBDIR += ironsides
SUBDIR += knot
SUBDIR += ldapdns
SUBDIR += ldns
diff --git a/dns/ironsides/Makefile b/dns/ironsides/Makefile
new file mode 100644
index 000000000000..5f0aceab53cd
--- /dev/null
+++ b/dns/ironsides/Makefile
@@ -0,0 +1,29 @@
+# Created by: John Marino <marino@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= ironsides
+PORTVERSION= 20130315
+CATEGORIES= dns
+MASTER_SITES= http://ironsides.martincarlisle.com/
+DISTFILES= trunk${PORTVERSION}.zip
+
+MAINTAINER= marino@FreeBSD.org
+COMMENT= Authoritative DNS server formally verified by SPARK/Ada
+
+LICENSE= Ironsides
+LICENSE_NAME= IRONSIDES - Free software, unlimited redistribution
+LICENSE_FILE= ${WRKSRC}/COPYRIGHT.txt
+LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+BUILD_DEPENDS= ${LOCALBASE}/include/spark2012/spark.ads:${PORTSDIR}/devel/libspark2012
+
+USES= ada dos2unix
+DOS2UNIX_FILES= dfcs.usafa.edu.zonefile
+
+post-extract:
+ @${MV} ${WRKDIR}/trunk ${WRKSRC}
+ @(cd ${WRKSRC}; ${RM} *.bak *.bk.[0-9])
+ @(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} gnatclean -q spark_dns_main)
+ @${CP} ${FILESDIR}/ironsides.gpr ${FILESDIR}/Makefile ${WRKSRC}/
+
+.include <bsd.port.mk>
diff --git a/dns/ironsides/distinfo b/dns/ironsides/distinfo
new file mode 100644
index 000000000000..c8e142085219
--- /dev/null
+++ b/dns/ironsides/distinfo
@@ -0,0 +1,2 @@
+SHA256 (trunk20130315.zip) = 40c1c84022da3a0995c866f83186a45d104b6149f3732bbc1ad13426cd89b5f1
+SIZE (trunk20130315.zip) = 7853757
diff --git a/dns/ironsides/files/Makefile b/dns/ironsides/files/Makefile
new file mode 100644
index 000000000000..9487eca28fe4
--- /dev/null
+++ b/dns/ironsides/files/Makefile
@@ -0,0 +1,11 @@
+all: build
+
+build:
+ gnatmake -p -P ironsides
+
+install:
+ mkdir -p ${DESTDIR}${PREFIX}/share/examples/ironsides
+ ${BSD_INSTALL_PROGRAM} final/spark_dns_main \
+ ${DESTDIR}${PREFIX}/sbin/ironsides
+ ${BSD_INSTALL_DATA} dfcs.usafa.edu.zonefile \
+ ${DESTDIR}${PREFIX}/share/examples/ironsides/
diff --git a/dns/ironsides/files/ironsides.gpr b/dns/ironsides/files/ironsides.gpr
new file mode 100644
index 000000000000..1182641fd29d
--- /dev/null
+++ b/dns/ironsides/files/ironsides.gpr
@@ -0,0 +1,13 @@
+with "spark2012.gpr";
+
+project Ironsides is
+ for Source_Dirs use (".");
+ for Object_Dir use "build";
+ for Exec_Dir use "final";
+ for Main use ("spark_dns_main.adb");
+
+ package Compiler is
+ for Default_Switches ("Ada") use ("-gnat05", "-gnatp", "-O3");
+ end Compiler;
+
+end Ironsides;
diff --git a/dns/ironsides/pkg-descr b/dns/ironsides/pkg-descr
new file mode 100644
index 000000000000..b13b3adcacaa
--- /dev/null
+++ b/dns/ironsides/pkg-descr
@@ -0,0 +1,14 @@
+IRONSIDES is an authoritative DNS server that is provably invulnerable to
+many of the problems that plague other servers. It achieves this property
+through the use of formal methods in its design, in particular the language
+Ada and the SPARK formal methods tool set. Code validated in this way is
+provably exception-free, contains no data flow errors, and terminates only
+in the ways that its programmers explicitly say that it can. These are very
+desirable properties from a computer security perspective.
+
+IRONSIDES is not a complete implementation of DNS. In particular, it does
+not support zone transfers or recursive queries. It does, however, support
+a sufficient number of DNS records to be useful as an authoritative DNS
+server for an enterprise.
+
+WWW: http://ironsides.martincarlisle.com
diff --git a/dns/ironsides/pkg-plist b/dns/ironsides/pkg-plist
new file mode 100644
index 000000000000..84b21c0f7ab8
--- /dev/null
+++ b/dns/ironsides/pkg-plist
@@ -0,0 +1,3 @@
+sbin/ironsides
+%%EXAMPLESDIR%%/dfcs.usafa.edu.zonefile
+@dirrm %%EXAMPLESDIR%%