diff --git a/repos/libports/recipes/api/libyaml/content.mk b/repos/libports/recipes/api/libyaml/content.mk
new file mode 100644
index 0000000000..5492679a6c
--- /dev/null
+++ b/repos/libports/recipes/api/libyaml/content.mk
@@ -0,0 +1,26 @@
+MIRROR_FROM_REP_DIR := lib/import/import-libyaml.mk lib/mk/libyaml.mk
+
+content: $(MIRROR_FROM_REP_DIR)
+
+$(MIRROR_FROM_REP_DIR):
+ $(mirror_from_rep_dir)
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/libyaml)
+
+MIRROR_FROM_PORT_DIR := src/lib/yaml
+
+content: $(MIRROR_FROM_PORT_DIR)
+
+$(MIRROR_FROM_PORT_DIR):
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/$@ $@
+
+content: include
+
+include:
+ cp -r $(PORT_DIR)/include/yaml $@
+
+content: LICENSE
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/yaml/LICENSE $@
diff --git a/repos/libports/recipes/api/libyaml/hash b/repos/libports/recipes/api/libyaml/hash
new file mode 100644
index 0000000000..50423bfde2
--- /dev/null
+++ b/repos/libports/recipes/api/libyaml/hash
@@ -0,0 +1 @@
+2018-03-21 d42d4203200d7a9eb379d0bc31e2e46dce5f9662
diff --git a/repos/ports/recipes/api/libgetdns/content.mk b/repos/ports/recipes/api/libgetdns/content.mk
new file mode 100644
index 0000000000..2c34c6d965
--- /dev/null
+++ b/repos/ports/recipes/api/libgetdns/content.mk
@@ -0,0 +1,18 @@
+content: include lib/symbols/libgetdns LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/getdns)
+
+include:
+ cp -r $(PORT_DIR)/$@ $@
+
+lib/symbols/libgetdns:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/getdns/$@ $@
+
+content: include/config.h
+
+include/config.h:
+ mkdir -p $(dir $@)
+ cp $(REP_DIR)/src/lib/getdns/config.h $@
diff --git a/repos/ports/recipes/api/libgetdns/hash b/repos/ports/recipes/api/libgetdns/hash
new file mode 100644
index 0000000000..345278fda9
--- /dev/null
+++ b/repos/ports/recipes/api/libgetdns/hash
@@ -0,0 +1 @@
+2018-03-21 4dab6fa890082e371da5b160aba6e2ee12d1d36f
diff --git a/repos/ports/recipes/pkg/nic_router-nat-dns/README b/repos/ports/recipes/pkg/nic_router-nat-dns/README
new file mode 100644
index 0000000000..9d0a501cab
--- /dev/null
+++ b/repos/ports/recipes/pkg/nic_router-nat-dns/README
@@ -0,0 +1,2 @@
+
+ Runtime for using the NIC router for NAT and DNS
diff --git a/repos/ports/recipes/pkg/nic_router-nat-dns/archives b/repos/ports/recipes/pkg/nic_router-nat-dns/archives
new file mode 100644
index 0000000000..e104c97f9d
--- /dev/null
+++ b/repos/ports/recipes/pkg/nic_router-nat-dns/archives
@@ -0,0 +1,9 @@
+_/src/nic_router
+_/src/stubby
+_/src/libc
+_/src/libssl
+_/src/libgetdns
+_/src/libcrypto
+_/src/posix
+_/src/vfs_lxip
+_/src/vfs_jitterentropy
diff --git a/repos/ports/recipes/pkg/nic_router-nat-dns/hash b/repos/ports/recipes/pkg/nic_router-nat-dns/hash
new file mode 100644
index 0000000000..b3867690c3
--- /dev/null
+++ b/repos/ports/recipes/pkg/nic_router-nat-dns/hash
@@ -0,0 +1 @@
+2018-03-21 2634e2c0f5fe4a46a195e938490b7639a27bad4f
diff --git a/repos/ports/recipes/pkg/nic_router-nat-dns/runtime b/repos/ports/recipes/pkg/nic_router-nat-dns/runtime
new file mode 100644
index 0000000000..a27aacc0ed
--- /dev/null
+++ b/repos/ports/recipes/pkg/nic_router-nat-dns/runtime
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nameserver 9.9.9.9
+
+
+
+
+
+
+
+
+listen_addresses:
+ - 10.0.1.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/repos/ports/recipes/src/libgetdns/content.mk b/repos/ports/recipes/src/libgetdns/content.mk
new file mode 100644
index 0000000000..1f52cf80e7
--- /dev/null
+++ b/repos/ports/recipes/src/libgetdns/content.mk
@@ -0,0 +1,24 @@
+MIRROR_FROM_REP_DIR = lib/import/import-libgetdns.mk lib/mk/libgetdns.mk
+
+content: $(MIRROR_FROM_REP_DIR)
+
+$(MIRROR_FROM_REP_DIR):
+ $(mirror_from_rep_dir)
+
+MIRROR_FROM_PORT_DIR = src/lib/getdns
+content: $(MIRROR_FROM_PORT_DIR)
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/getdns)
+
+$(MIRROR_FROM_PORT_DIR):
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/$@ $@
+
+content: src/lib/getdns/target.mk LICENSE
+
+src/lib/getdns/target.mk:
+ mkdir -p $(dir $@)
+ echo 'LIBS=libgetdns' > $@
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/getdns/$@ $@
diff --git a/repos/ports/recipes/src/libgetdns/hash b/repos/ports/recipes/src/libgetdns/hash
new file mode 100644
index 0000000000..8c1f1fe8dc
--- /dev/null
+++ b/repos/ports/recipes/src/libgetdns/hash
@@ -0,0 +1 @@
+2018-03-21 5035aeac59355db341aaa33f97427c402db86737
diff --git a/repos/ports/recipes/src/libgetdns/used_apis b/repos/ports/recipes/src/libgetdns/used_apis
new file mode 100644
index 0000000000..5cf6456af7
--- /dev/null
+++ b/repos/ports/recipes/src/libgetdns/used_apis
@@ -0,0 +1,8 @@
+base
+libc
+libcrypto
+libssl
+os
+vfs
+libyaml
+libgetdns
diff --git a/repos/ports/recipes/src/stubby/content.mk b/repos/ports/recipes/src/stubby/content.mk
new file mode 100644
index 0000000000..215956f6a7
--- /dev/null
+++ b/repos/ports/recipes/src/stubby/content.mk
@@ -0,0 +1,39 @@
+content: src/lib/getdns/stubby LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/getdns)
+
+STUBBY_SRC_DIR := $(PORT_DIR)/src/lib/getdns/stubby
+
+MIRROR_FROM_PORT_DIR = src/lib/getdns/stubby include/sldns src/lib/getdns/src/gldns
+content: $(MIRROR_FROM_PORT_DIR)
+
+include/sldns:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/src/lib/getdns/src/util/auxiliary/sldns $@
+
+src/lib/getdns/src/gldns:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/$@ $@
+
+src/lib/getdns/stubby:
+ mkdir -p $(dir $@)
+ cp -r $(STUBBY_SRC_DIR) $@
+
+LICENSE:
+ cp $(STUBBY_SRC_DIR)/COPYING $@
+
+MIRROR_FROM_REP_DIR := \
+ src/app/stubby \
+ lib/mk/getdns-gldns.mk lib/import/import-libgetdns.mk \
+ src/app/stubby/config.h \
+
+content: $(MIRROR_FROM_REP_DIR)
+
+$(MIRROR_FROM_REP_DIR):
+ $(mirror_from_rep_dir)
+
+content: include/config.h
+
+include/config.h:
+ mkdir -p $(dir $@)
+ cp $(REP_DIR)/src/app/stubby/config.h $@
diff --git a/repos/ports/recipes/src/stubby/hash b/repos/ports/recipes/src/stubby/hash
new file mode 100644
index 0000000000..a4349e79f9
--- /dev/null
+++ b/repos/ports/recipes/src/stubby/hash
@@ -0,0 +1 @@
+2018-03-21 042582be3689afb77603b9bf940054a022094e8f
diff --git a/repos/ports/recipes/src/stubby/used_apis b/repos/ports/recipes/src/stubby/used_apis
new file mode 100644
index 0000000000..800c41502d
--- /dev/null
+++ b/repos/ports/recipes/src/stubby/used_apis
@@ -0,0 +1,11 @@
+base
+os
+vfs
+libc
+timer_session
+report_session
+posix
+libgetdns
+libcrypto
+libyaml
+libssl
diff --git a/repos/ports/run/stubby_deploy.run b/repos/ports/run/stubby_deploy.run
new file mode 100644
index 0000000000..6fd64d5430
--- /dev/null
+++ b/repos/ports/run/stubby_deploy.run
@@ -0,0 +1,202 @@
+source ${genode_dir}/repos/base/run/platform_drv.inc
+
+create_boot_directory
+proc depot_user {} { return [get_cmd_arg --depot-user genodelabs] }
+
+proc current_pkg { pkg } { return $pkg/[_current_depot_archive_version pkg $pkg] }
+
+import_from_depot genodelabs/src/[base_src] \
+ genodelabs/src/report_rom \
+ genodelabs/src/fs_rom \
+ genodelabs/src/ram_fs \
+ genodelabs/src/vfs \
+ genodelabs/src/init \
+ genodelabs/src/ipxe_nic_drv \
+ genodelabs/src/acpi_drv \
+ genodelabs/src/platform_drv \
+ genodelabs/src/rtc_drv \
+ genodelabs/src/posix \
+ genodelabs/src/libc \
+ genodelabs/src/vfs_lxip \
+
+create_tar_from_depot_binaries [run_dir]/genode/depot.tar \
+ [depot_user]/pkg/nic_router-nat-dns \
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+append_platform_drv_config
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nameserver 10.0.1.2
+
+
+
+
+
+
+
+
+
+
+
+}
+
+install_config $config
+
+append qemu_args -nographic
+
+build { app/depot_query app/depot_deploy test/libc_getaddrinfo }
+
+build_boot_image { depot_query depot_deploy test-libc_getaddrinfo }
+
+run_genode_until "child \"test-libc_getaddrinfo\" exited with exit value 0.*\n" 120