diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b27df1c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,88 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the makefile for the base configuration files to
+#      support TCP/IP- and RPC-based network protocols and services.
+#
+
+BuildConfigSpecialized	:= No
+BuildProductSpecialized	:= No
+
+include pre.mak
+
+PackageName		:= netbase
+
+PackageExtension	:= tar.gz
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(PackageName).$(PackageExtension)
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageSourceDir)/debian/copyright: source
+
+$(PackageLicenseFile): $(PackageSourceDir)/debian/copyright
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: build
+build: configure
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+	$(Verbose)$(INSTALL) $(INSTALLFLAGS) -d $(call GenerateResultPaths,,etc)
+	$(Verbose)$(INSTALL) $(INSTALLFLAGS) -m 644 $(PackageSourceDir)/etc-protocols $(call GenerateResultPaths,,etc/protocols)
+	$(Verbose)$(INSTALL) $(INSTALLFLAGS) -m 644 $(PackageSourceDir)/etc-rpc $(call GenerateResultPaths,,etc/rpc)
+	$(Verbose)$(INSTALL) $(INSTALLFLAGS) -m 644 $(PackageSourceDir)/etc-services $(call GenerateResultPaths,,etc/services)
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/netbase-4.42/debian/README.Debian b/netbase-4.42/debian/README.Debian
new file mode 100644
index 0000000..9902489
--- /dev/null
+++ b/netbase-4.42/debian/README.Debian
@@ -0,0 +1,22 @@
+README for netbase
+==================
+
+ * ifup(8), ifdown(8), and interfaces(5)
+
+The ifup and ifdown commands configure network interfaces as specified
+in the /etc/network/interfaces configuration file.
+
+ifup -a is called from /etc/init.d/networking as part of the bootup
+process, or for specific interfaces by the hotplug subsystem.
+
+ * /etc/network/options
+
+This file is deprecated, and if present should be replaced by values
+in /etc/sysctl.conf or equivalent custom scripts.
+The relevant sysctl values are:
+
+ip_forward=yes:	  net.ipv4.ip_forward = 1 
+spoofprotect=yes: net.ipv4.conf.default.rp_filter = 1
+                  net.ipv4.conf.all.rp_filter = 1
+syncookies=yes:   net.ipv4.tcp_syncookies = 1
+
diff --git a/netbase-4.42/debian/changelog b/netbase-4.42/debian/changelog
new file mode 100644
index 0000000..2230ea7
--- /dev/null
+++ b/netbase-4.42/debian/changelog
@@ -0,0 +1,477 @@
+netbase (4.42) unstable; urgency=low
+
+  * Stop setting net.ipv6.bindv6only=1 by default. (Closes: #560238)
+  * Remove /etc/hosts and /etc/networks on purge to please mindless
+    nitpickers and piuparts. (Closes: #585708)
+  * Do not add IPv6-related names to /etc/hosts on upgrades to allow
+    people to remove them and break their own systems. (Closes: #579752)
+  * Create /etc/hosts and /etc/networks if missing on the first install
+    (e.g. when installing with debootstrap).
+  * etc-services: added dcap (22125/tcp), gsidcap (22128/tcp).
+    (Closes: #586396)
+
+ -- Marco d'Itri <md@linux.it>  Fri, 25 Jun 2010 22:17:24 +0200
+
+netbase (4.41) unstable; urgency=low
+
+  * Do not disable networking on shutdown if the root file system is
+    mounted over iSCSI. (Closes: #576785)
+  * etc-protocols: added shim6 (140), wesp (141), rohc (142).
+
+ -- Marco d'Itri <md@linux.it>  Mon, 19 Apr 2010 00:41:46 +0200
+
+netbase (4.40) unstable; urgency=low
+
+  * Fixed removal of /etc/sysctl.d/ on purge. (Closes: #560164)
+  * etc-services: added zabbix-agent (10050), zabbix-trapper (10051).
+    (Closes: #560175)
+
+ -- Marco d'Itri <md@linux.it>  Thu, 10 Dec 2009 13:33:47 +0100
+
+netbase (4.39) unstable; urgency=low
+
+  * Create /etc/sysctl.d/ if it does not exist and do nothing on non-Linux
+    systems. (Closes: #559754)
+
+ -- Marco d'Itri <md@linux.it>  Mon, 07 Dec 2009 19:02:29 +0100
+
+netbase (4.38) unstable; urgency=low
+
+  * Create /etc/sysctl.d/bindv6only.conf on upgrades and new installs
+    to set net.ipv6.bindv6only=1.
+  * Made the init script check for swap over the network. (Closes: #540697)
+  * Temporarily depend on initscripts to work around a bug in multistrap.
+    (Closes: #556399)
+  * etc-services: added sieve (4190/tcp). 
+  * etc-services: removed sieve (2000/tcp). (Closes: #555664)
+  * Made the init script warn that using the force-reload and restart
+    parameters is not a good idea. (Closes: #550240)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 06 Dec 2009 17:09:41 +0100
+
+netbase (4.37) unstable; urgency=high
+
+  * Use Should-Start/Should-Stop instead of Start/Stop since nowadays
+    ifupdown now is only a Recommends. (Closes: #538948)
+  * etc-services: added dhcpv6-client (546), dhcpv6-server (547), idfp (549).
+    (Closes: #533001)
+
+ -- Marco d'Itri <md@linux.it>  Wed, 29 Jul 2009 12:20:21 +0200
+
+netbase (4.36) unstable; urgency=medium
+
+  * postinst: run update-rc.d only if the init script is executable.
+    (Closes: #533499)
+  * etc-services: added svrloc (427). (Closes: #350521)
+
+ -- Marco d'Itri <md@linux.it>  Sat, 04 Jul 2009 16:26:30 +0200
+
+netbase (4.35) unstable; urgency=low
+
+  * Do not add ff02::3 to /etc/hosts because it is not actually assigned.
+    (Closes: #499800)
+  * etc-services: added gsigatekeeper (2119), gris (2135), gsiftp (2811),
+    amqp (5672/tcp,udp,sctp), xmms2 (9667).
+    (Closes: #514226, #527893, #533001)
+  * etc-services: updated the description of mon. (Closes: #525322)
+
+ -- Marco d'Itri <md@linux.it>  Wed, 17 Jun 2009 02:34:11 +0200
+
+netbase (4.34) unstable; urgency=medium
+
+  * etc-services: added gnunet (2086). (Closes: #495732)
+
+ -- Marco d'Itri <md@linux.it>  Thu, 28 Aug 2008 03:59:05 +0200
+
+netbase (4.33) unstable; urgency=medium
+
+  * etc-services: added cisco-sccp (2000). (Closes: #479999)
+  * etc-services: s/RFC2476/RFC4409/. (Closes: #480658)
+  * Added fuse.httpfs and fuse.curlftpfs to the list of network filesystems
+    in the init script. (Closes: #476424)
+  * Recommends ifupdown instead of depending on it. (Closes: #484329)
+
+ -- Marco d'Itri <md@linux.it>  Sat, 26 Jul 2008 00:59:20 +0200
+
+netbase (4.32) unstable; urgency=low
+
+  * etc-services: renamed suucp from 4013 to 4031 which is the correct
+    port number assigned by IANA. For real, this time. (Closes: #472686)
+
+ -- Marco d'Itri <md@linux.it>  Fri, 04 Apr 2008 19:07:11 +0200
+
+netbase (4.31) unstable; urgency=low
+
+  * Removed processing of /etc/network/options from the init script, only
+    a warning is left.
+  * Improved the init script to check for NBD/eNBD/AoE devices too,
+    thanks to Toni Mueller and Tilman Koschnick for the code.
+    What about iSCSI? (Closes: #453062)
+  * etc-protocols: added mpls-in-ip (137), manet (138), hip (139).
+    (Closes: #459506)
+  * etc-services: added alias http-alt (8080), qmqp (628), ndtp (2010),
+    freeciv (5556), remctl (4373).
+    (Closes: #442304, #450828, #457136, #461393, #470103)
+  * etc-services: removed rplay (5555/tcp), rptp (5556/udp).
+
+ -- Marco d'Itri <md@linux.it>  Sun, 23 Mar 2008 23:19:18 +0100
+
+netbase (4.30) unstable; urgency=low
+
+  * On new installs add localhost as an alias for ::1. (Closes: #427067)
+  * Removed the obsolete debconf notes (all of them) and the dependency on
+    debconf. (Closes: #428598).
+  * Removed the dependencies on inet-superserver and ping. (Closes: #87240)
+  * Removed the obsolete conflicts with xinetd, netstd, nfs-common,
+    nfs-user-server, nis, rstatd, rwalld, rusersd, ugidd.
+  * Removed from the maintainers scripts code needed for upgrades from
+    packages released in the past century.
+  * etc-protocols: added udplite (136). (Closes: #411926)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 29 Jul 2007 00:25:17 +0200
+
+netbase (4.29) unstable; urgency=high
+
+  * Make /etc/networks a regular file created by postinst because nowadays
+    the netcfg package too creates it. (Closes: #407538)
+
+ -- Marco d'Itri <md@linux.it>  Fri,  2 Feb 2007 03:07:09 +0100
+
+netbase (4.28) unstable; urgency=medium
+
+  * Added /etc/networks. (Closes: #399293)
+  * etc-services: removed alias nameserver (53) because it is a duplicate.
+    (Closes: #392739)
+  * etc-services: added sge_qmaster (6444), sge_execd (6445), git (9418/tcp).
+    (Closes: #401955, #402741)
+  * etc-services: renamed suucp from 4013 to 4031 which is the correct
+    port number assigned by IANA.
+
+ -- Marco d'Itri <md@linux.it>  Sat,  6 Jan 2007 16:54:34 +0100
+
+netbase (4.27) unstable; urgency=medium
+
+  * Depend on inet-superserver instead of openbsd-inetd and tcpd.
+  * update-inetd moved to its own package.
+  * etc-services: added suucp (4013), ggz (5688). (Closes: #383993, #388446)
+  * The init script depends on mountkernfs, not mountvirtfs. (Closes: #386342)
+  * Added the Required-Stop field to the init script. (Closes: #388422)
+
+ -- Marco d'Itri <md@linux.it>  Sun,  1 Oct 2006 23:19:40 +0200
+
+netbase (4.26) unstable; urgency=medium
+
+  * Removed the dependency on netkit-inetd. (Closes: #382687)
+  * New debconf translation: gl, pt_PT. (Closes: #362094, #373735)
+  * etc-services: added webmin (10000/tcp), mdns (5353), sysrqd (4094).
+    (Closes: #360880, #375370, #377788)
+
+ -- Marco d'Itri <md@linux.it>  Sat, 19 Aug 2006 23:46:17 +0200
+
+netbase (4.25) unstable; urgency=medium
+
+  * etc-services: added msnp (1863), mmcc (5050), aol (5190),
+    csync2 (30865/tcp). (Closes: #346094, #353835)
+  * etc-services: changed kpasswd (761/tcp, alias kpwd) to 464.
+    (Closes: #355066)
+  * Added openbsd-inetd as an alternative to netkit-inetd.
+
+ -- Marco d'Itri <md@linux.it>  Fri, 24 Mar 2006 20:34:54 +0100
+
+netbase (4.24) unstable; urgency=medium
+
+  * etc-services: added nfs (2049). (Closes: #345836)
+  * New debconf translation: sv. (Closes: #338806)
+  * Do not make the init script fail when options are missing from
+    /etc/network/options. (Closes: #335471)
+
+ -- Marco d'Itri <md@linux.it>  Tue,  3 Jan 2006 23:09:34 +0100
+
+netbase (4.23) unstable; urgency=medium
+
+  * Added the LSB data to the init script.
+  * etc-services: converted some spaces to tabs. (Closes: #331691)
+  * etc-protocols: fixed the IPSEC ESP RFC number. (Closes: #330498)
+  * Document in README.Debian which sysctl values replace
+    /etc/network/options. (Closes: #330830)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 23 Oct 2005 12:47:40 +0200
+
+netbase (4.22) unstable; urgency=medium
+
+  * /etc/network/options is now deprecated and will not be created anymore
+    on new installs. (Closes: #70724, #104569, #252096, #256919, #322548)
+  * Converted the init script to lsb-base.
+  * Updated the de debconf translation. (Closes: #313953)
+  * Added the vi debconf translation. (Closes: #315810)
+
+ -- Marco d'Itri <md@linux.it>  Sat, 24 Sep 2005 18:20:29 +0200
+
+netbase (4.21) unstable; urgency=medium
+
+  * etc-rpc: renamed ypxfrd (600100069) to fypxfrd. (Closes: #280546)
+  * etc-services: added clc-build-daemon (8990/tcp), daap (3689),
+    openvpn (1194), proofd (1093), rootd (1094), iax (4569), sip (5060),
+    sip-tls (5061), bprd (13720), bpdbm (13721), bpjava-msvc (13722),
+    vnetd (13724), bpcd (13782), vopied (13783).
+    (Closes: #295044, #295827, #296260, #296517, #296956, #298676
+  * etc-services: svnserve renamed to svn. (Closes: #300649)
+  * Updated the es template translation. (Closes: #298622)
+  * Added cifs, nfs4 and ncpfs to the list of file systems in the init
+    script. (Closes: #296902)
+  * Anchored some regexps used in update-inetd. (See #296795)
+
+ -- Marco d'Itri <md@linux.it>  Mon, 21 Mar 2005 20:35:38 +0100
+
+netbase (4.20) unstable; urgency=medium
+
+  * Do not ifdown lo. (Closes: #208700)
+  * etc-services: added acr-nema (104), gpsd (2947), l2f (1701).
+    (Closes: #284527, #286389)
+  * etc-services: sane renamed to sane-port. (Closes: #284317)
+
+ -- Marco d'Itri <md@linux.it>  Thu, 27 Jan 2005 01:16:00 +0100
+
+netbase (4.19) unstable; urgency=medium
+
+  * etc-services: added rtsp (554), hkp (11371), ospfapi (2607/tcp) and
+    isisd (2608/tcp). lrrd renamed to munin.
+    (Closes: #266047, #267115, #278435, #270617)
+  * etc-rpc: added ypxfrd (600100069). (Closes: #275244)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 31 Oct 2004 16:51:02 +0100
+
+netbase (4.18) unstable; urgency=high
+
+  * etc-services: added snmp (161/tcp) and snmp-trap (162/tcp).
+    (Closes: #254103)
+  * New debconf translation: cs. (Closes: #260364)
+
+ -- Marco d'Itri <md@linux.it>  Wed, 28 Jul 2004 00:46:53 +0200
+
+netbase (4.17) unstable; urgency=medium
+
+  * etc-services: added enbd-cstatd (5051/tcp), enbd-sstatd (5052/tcp),
+    nsca (5667/tcp), xinetd (9098/tcp), updated 5222 and 5269.
+    (Closes: #232936, #241404, #242642, #243559, #234279, #238647)
+  * New template translations: da uk tr el de ca.
+    (Closes: #235351, #236839, #239146, #243557, #244534, #248731)
+
+ -- Marco d'Itri <md@linux.it>  Sat, 22 May 2004 14:42:42 +0200
+
+netbase (4.16) unstable; urgency=medium
+
+  * Process /etc/network/options on reloads. (Closes: #223481)
+  * etc-protocols: added hopopt (0, commented), igp (9), eigrp (88),
+    ax.25 (93), etherip (97), l2tp (115). (Many thanks to J.H.M. Dassen)
+  * etc-services: added tacacs (49), tacacs-ds (65), loc-srv (135),
+    isakmp (500), kazaa (1214), nessus (1241), ms-sql-s (1433),
+    ms-sql-m (1434), kermit (1649), nut (3493), radmin-port (4899),
+    rplay (5555), rptp (5556), bacula-dir (9101), bacula-fd (9102),
+    bacula-sd (9103).
+    (Closes: #225540, #226512, #228554, #229064, #231182)
+  * etc-services: renamed svn to svnserve. (Closes: #226842)
+  * Cleaned up the /etc/services comments.
+  * Added zh_CN.po. (Closes: #231911)
+  * Updated po.po. (Closes: #228334)
+
+ -- Marco d'Itri <md@linux.it>  Fri, 13 Feb 2004 12:11:41 +0100
+
+netbase (4.15) unstable; urgency=medium
+
+  * etc-services: added gnutella-svc (6346), gnutella-rtr (6347).
+    (Closes: #217706)
+  * Updated ru.po. (Closes: #219229)
+  * Remove extraneous spaces from init script messages. (Closes: #219203)
+
+ -- Marco d'Itri <md@linux.it>  Mon,  1 Dec 2003 13:45:44 +0100
+
+netbase (4.14) unstable; urgency=medium
+
+  * etc-services: added unix-status (1957/tcp), log-server (1958/tcp),
+    remoteping (1959/tcp). (Closes: #203047)
+  * etc-services: added distmp3 (4600/tcp). (Closes: #213525)
+  * Added dependency on virtual package ping. (Closes: #206433)
+  * Added es.po and ja.po. (Closes: #120147, #210435)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 12 Oct 2003 15:29:46 +0200
+
+netbase (4.13) unstable; urgency=medium
+
+  * Partially revert the patch from #183960 because it was applied
+    incorrectly and anyway is broken and will cause update-inetd to
+    fail as soon as it asks a question, as the default is "no".
+    There is no good fix at least with the current code and autobuilders
+    should replace update-inetd with a dummy program like they already
+    do for start-stop-daemon. (Closes: #205845)
+    This serves me right for trying to update the evil update-inetd.
+
+ -- Marco d'Itri <md@linux.it>  Sun, 17 Aug 2003 04:23:41 +0200
+
+netbase (4.12) unstable; urgency=medium
+
+  * Brown paper bag bug: fix grep command line in postinst. (Closes: #205759)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 17 Aug 2003 02:13:17 +0200
+
+netbase (4.11) unstable; urgency=medium
+
+  * etc-services: added lrrd (4949/tcp). (Closes: #199395)
+  * etc-services: fixed postgresql name. (Closes: #199867)
+  * etc-services: added unix-status (1957/tcp), log-server (1958/tcp),
+    remoteping (1959/tcp). (Closes: #203047)
+  * etc-protocols: added ipcomp (108). (Closes: #204776)
+  * update-inetd: make it cooperate with debconf, patch by Robert Jordens.
+    (Closes: #183960)
+  * update-inetd: updated the message about xinetd documentation.
+    (Closes: #199184)
+  * Updated nl.po and fr.po. (Closes: #198632, #204575)
+  * IPv6 entries will be always added to /etc/hosts from now on.
+
+ -- Marco d'Itri <md@linux.it>  Sat, 16 Aug 2003 18:24:25 +0200
+
+netbase (4.10) unstable; urgency=medium
+
+  * etc-services: added spamd (783/tcp). (Closes: #193724)
+  * etc-services: added svn (3690/tcp,udp). (Closes: #185216)
+  * etc-services: added clearcase (371/tcp,udp). (Closes: #176001)
+  * etc-services: fix typos. (Closes: #174746, #175505, #175684)
+  * etc-protocols: added vrrp (112). (Closes: #187274)
+  * etc-protocols: fix typo. (Closes: #177706)
+  * Switch to po-debconf, patch by Andre Luis Lopes. (Closes: #183996)
+  * Fix typo in po.de. (Closes: #175510)
+  * Use chomp instead of chop in DebianNet.pm. (Closes: #53733)
+
+ -- Marco d'Itri <md@linux.it>  Sun, 15 Jun 2003 18:54:51 +0200
+
+netbase (4.09) unstable; urgency=low
+
+  * etc-services: added microsoft-ds (445/tcp,udp) (Closes: #166566).
+  * etc-services: added distcc (3632/tcp,udp) (Closes: #170014).
+  * Use unbuffered I/O in update-inetd (Closes: #166853).
+
+ -- Marco d'Itri <md@linux.it>  Sun, 22 Dec 2002 13:31:54 +0100
+
+netbase (4.08) unstable; urgency=low
+
+  * NMU.
+  * Fixed spoofalert option name in resolv+(8). (Closes: #41349)
+  * Delete /etc/cron.daily/netbase when upgrading. (Closes: #78334)
+  * Put a band aid in update-inetd to make it work with debconf.
+    (Closes: #90676, #143393)
+  * Changed the style of /etc/init.d/networking messages to conform to
+    policy. (Closes: #121941)
+  * Set the $PATH in /etc/init.d/networking. (Closes: #131213)
+  * Check for netware and CODA shares in /etc/init.d/networking.
+    (Closes: #122319)
+  * Remove support for 2.0.x kernels from /etc/init.d/networking and
+    the related debconf templates. (Closes: #118110)
+  * Do not create unneeded direcories. (Closes: #122478)
+  * Advertise ifupdown documentation with debconf. (Closes: #63322)
+  * Fixed typo in debconf template. (Closes: #120147)
+  * Added pt_BR debconf template. (Closes: #123001)
+  * /etc/gateways and gateways(5) moved to the routed package. (Closes: #75200)
+  * resolv+(8) moved to the manpages package.
+  * Updated /etc/services, /etc/rpc and /etc/protocols.
+    (Closes: #61905, #85292, #99482, #113512, #145560)
+  * etc-rpc: added ypxfrd (100069). (Closes: #120255)
+  * etc-protocols: added alias CPHB. (Closes: #152300)
+  * etc-services: removed lmtp (2003/tcp). (Closes: #120358)
+  * etc-services: added zope (9673/tcp) and zope-ftp (8021/tcp).
+    (Closes: #121413)
+  * etc-services: added krb5_prop and hprop aliases. (Closes: #121673)
+  * etc-services: mentioned IMAPv4 too. (Closes: #122867)
+  * etc-services: added submission (587/tcp,udp). (Closes: #130300)
+  * etc-services: added iprop (2121/tcp). (Closes: #139845)
+  * etc-services: added frox (2121/tcp). (Closes: #140871)
+  * etc-services: added silc (706/tcp,udp). (Closes: #142712)
+  * etc-services: fixed spelling of X Window System. (Closes: #142927)
+  * etc-services: removed ircd-dalnet (7000/tcp,udp). (Closes: #145982)
+  * etc-services: fixed spelling of PostgreSQL. (Closes: #149363)
+  * etc-services: added sgi-cmsd (17001/udp), sgi-crsd (17002/udp),
+    sgi-gcd (17003/udp) and sgi-cad (17004/tcp). (Closes: #144591)
+  * etc-services: added wipld (1300/tcp) (Closes: #144626).
+  * etc-services: added jabber-client (5222/tcp,udp) and
+    jabber-server (5269/tcp). (Closes: #146925)
+  * etc-services: added pawserv (345/tcp,udp), zserv (346/tcp,udp) and
+    fatserv (347/tcp,udp). (Closes: #159426)
+
+ -- Marco d'Itri <md@linux.it>  Mon, 23 Sep 2002 14:31:54 +0200
+
+netbase (4.07) unstable; urgency=low
+
+  * Add debconf dependency. Make debconf unconditional in postinst.
+  * Change Build-Depends: to Build-Depends-Indep: since netbase is arch: all.
+  * Bump Standards-Version.
+
+  * Fix quoting of backslashes and apostrophes in update-inetd manpage.
+    (Closes: Bug#75792)
+
+  * Fix templates files to be "templates.ll" not "templates-ll" so
+    they actually get used. Got rid of templates.old.
+  * Add Russian, German templates files. Old German translation renamed to
+    .old, just in case. (Closes: Bug#114842, Bug#114571)
+
+  * Remove empty directory /usr/lib/perl5/Debian; move DebianNet.pm from
+    /usr/lib/perl5 to /usr/share/perl5. (Closes: Bug#118425)
+
+  * etc-services: Added dircproxy (57000/tcp). (Closes: Bug#78045)
+  * etc-services: Added imsp (406/tcp,udp), sieve (2000/tcp) and lmtp (alias
+    for 2003/tcp). (Closes: Bug#78522)
+  * etc-services: Added telnets (992/tcp,udp), ftps (990/tcp) and
+    ftps-data (989/tcp). (Closes: Bug#79860)
+  * etc-services: Added predict (1210/udp). (Closes: Bug#81460)
+  * etc-services: Added smsqp (11021/tcp,udp). (Closes: Bug#81504)
+  * etc-services: Added mon (2583/tcp,udp). (Closes: Bug#82745)
+  * etc-services: Added pwdgen (129/tcp,udp). (Closes: Bug#90412)
+  * etc-services: Added xpilot (15345/tcp,udp). (Closes: Bug#94436)
+  * etc-services: Added tinc (655/tcp,udp). (Closes: Bug#100189)
+  * etc-services: Changed radacct (1813/tcp,udp) to radius-acct, radacct
+    remains as alias. (Closes: Bug#103131)
+
+  * etc-rpc: Added sgi_fam 391002. (Closes: Bug#105716)
+
+ -- Anthony Towns <aj@azure.humbug.org.au>  Sun, 18 Nov 2001 23:50:35 +1000
+
+netbase (4.06) unstable; urgency=low
+
+  * init.d/networking: Fix ipchains based spoof protection to do IP
+    addresses other than just 127.0.0.1 properly. Thanks to Chris Osicki
+    for spotting this.
+
+  * etc-services: Remove doubled swat entry. (Closes: Bug#93122)
+  * debian/rules: Add automatic check for doubled entries. Thanks to someone
+    who didn't leave a name, but did file bug 93122. :)
+
+  * etc-services: Add smtps as an alias for ssmtp. (Closes: Bug#72713)
+  * etc-services: Add xtell service (4224/tcp). (Closes: Bug#76161)
+  * etc-services: Correct hostmon udp comment. (Closes: Bug#76696)
+
+  * debian/control: Add conflicts on old nfs-common as well to help
+    ensure portmap gets installed where necessary. (Closes: Bug#98907)
+
+  * debian/config: Drop priority of pre-2.2 spoof protection question to low.
+    (Closes: Bug#82646)
+  * debian/templates: Split into separate templates for each translation.
+    What a nifty feature.
+  * debian/templates.nl: Added Dutch translations, thanks to Ivo Timmermans.
+    (Closes: Bug#93496)
+  * debian/templates.de: Added German translations, thanks to Marc Haber.
+    (Closes: Bug#89499)
+
+ -- Anthony Towns <aj@azure.humbug.org.au>  Fri,  1 Jun 2001 13:30:14 +1000
+
+netbase (4.05) unstable; urgency=low
+
+  * Remove dependency on portmap; change it to suggests. Add conflicts on
+    some packages that used to depend on netbase for portmap. (Closes:
+    Bug#69194)
+
+ -- Anthony Towns <ajt@debian.org>  Mon, 18 Sep 2000 13:10:52 -0700
+
+netbase (4.04) unstable; urgency=low
+
+  * config: Remove reference to inetd-dos-services which is more of an
+    inetd thing.
+
+ -- Anthony Towns <ajt@debian.org>  Thu, 31 Aug 2000 15:45:44 +1000
diff --git a/netbase-4.42/debian/changelog-older b/netbase-4.42/debian/changelog-older
new file mode 100644
index 0000000..8292e1f
--- /dev/null
+++ b/netbase-4.42/debian/changelog-older
@@ -0,0 +1,422 @@
+Sun Sep  1 11:18:41 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.06 released
+
+	* /etc/services: added fsp entry
+
+	* net-tools: fixed route manual page
+
+
+Thu Aug  1 00:22:08 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.05 released
+
+	* net-tools: fixed typo in arp man page
+
+	* net-tools: fixed typo in netstat man page
+
+	* net-tools: added a patch for tulip cards to ifconfig (patch from
+		     Miquel van Smoorenburg <miquels@Q.cistron.nl>)
+
+	* ipfwadm-2.1: replaced by ipfwadm-2.3
+
+
+Thu Jun 13 00:43:16 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.04 released
+
+	* added /etc/cron.daily/netbase (creates a backup of /etc/inetd.conf)
+
+	* added a comment about update-inetd to /etc/inetd.conf (only
+	  new installations!) (Bug#2981)
+
+	* /etc/services: added xtel (french minitel) entry
+
+	* update-inetd: fixed a typo
+
+	* net-tools-1.3.50-BETA6f: replaced by net-tools-1.32-alpha
+
+	* ipfwadm-2.0beta2: replaced by ipfwadm-2.1
+
+
+Mon May  6 21:54:12 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.03 released
+
+	* /etc/services: disabled inetd echo/chargen services (see CERT
+			 advisory CA-96.01)
+
+	* /etc/services: enabled syslog service
+
+	* /etc/services: added SSH entries
+
+	* net-tools-1.3.50-BETA6f: netstat: fixed wrong error message
+
+	* tcp_wrappers_7.3: replaced by tcp_wrappers_7.4
+
+
+Sun Apr 14 10:51:31 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.02 released
+
+	* /etc/protocols: added ddp protocol
+
+	* /etc/services: added rtmp/ddp, nbp/ddp, echo/ddp and
+			 zip/ddp services (Bug#2681)
+
+	* added "CONFLICTS: netstd (<<2.00)" to the control file (Bug#2675)
+
+
+Thu Apr  4 10:35:57 MET DST 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.01 released
+
+	* /etc/services: added re-mail-ck entry (see RFC1339, RFC1700)
+
+
+Mon Mar 18 21:48:47 MET 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 2.00 released
+
+	* DebianNet.pm: small performance enhancements (it should
+			be >100 times faster now) (Bug#2523)
+
+	* ipfwadm-1.2: replaced by ipfwadm-2.0beta2
+
+	* net-tools: fixed slattach man page (Bug#2485)
+
+	* net-tools-1.2.0: don't install arp, rarp, route, ifconfig, netstat
+
+	* net-tools-1.2.0: disabled NLS
+
+	* added net-tools-1.3.50-BETA6f (Bug#2400)
+
+	* net-tools-1.3.50-BETA6f: disabled NLS, enabled netgroups support
+
+	* net-tools-1.3.50-BETA6f: don't install ipfw (it doesn't work
+				   with recent kernels). Use ipfwadm instead.
+
+	* tcp_wrappers_7.2: replaced by tcp_wrappers_7.3
+
+
+Sun Feb  4 22:42:34 MET 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.26 released
+
+	* inetd: set SIG_DFL for child processes (if you use netbase 1.25
+		 please update!!)
+
+	* /etc/services: added kerberos entries (from Mark W. Eichin
+			 <eichin@cygnus.com>)
+
+
+Wed Jan 31 20:04:52 MET 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.25 released
+
+	* inetd: ignore SIGPIPE (sudden death). Patch from Stephen R.
+		 van den Berg <srb@cuci.nl>
+
+
+Wed Jan 24 21:49:20 MET 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.24 released
+
+	* inetd-8.4: changed back to the stable inetd-5.30
+
+
+Tue Jan 23 09:19:46 MET 1996  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.23 released
+
+	* /etc/services: added an entry for ftp-data
+
+	* inetd-5.30: replaced by inetd-8.4
+		      (NOTE: The syntax of the inetd.conf file has
+		      changed! If you use the ".group" extension
+		      for the user name or the ".max" extension of
+		      the wait/nowait entry please look at the
+		      inetd/inetd.conf manpages.)
+
+	* DebianNet.pm: it will print the new and the old entry if
+			an error occurs (this makes it easier to fix
+			inetd.conf entries by hand)
+
+	* DebianNet.pm: the "Continue" prompt will work now
+
+	* DebianNet.pm: ignore parameter of the inetd.conf entry when
+			searching for existing entries (Bug#2189)
+
+
+Thu Nov 30 14:37:11 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.22 released
+
+	* /etc/services: added an entry for Gracilis Packeten remote
+			 config server
+
+	* Makefiles: removed -m486 from CFLAGS (no Makefile changes
+		     for 68k, Sparc or Alpha systems)
+
+	* net-tools: fixed a bug/typo in route.c (patch from
+		     Hartmut Koptein <koptein@et-inf.fho-emden.de>)
+
+	* net-tools: added national language support (French).
+		     To use the NLS just add "export LANG=fr_FR.88591"
+		     to your .profile, .bash_profile or .login file.
+
+
+Wed Nov 15 12:07:00 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.21 released
+
+	* /etc/services: added an entry for mandelspawn
+
+
+Wed Oct 25 00:05:24 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.20 released
+
+	* ping: -l option disabled for non-root users (Bug#1755)
+
+	* /etc/services: disabled syslog service (Bug#1739)
+
+
+Sun Oct 22 13:09:22 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+        * Version 1.19 released
+
+        * ping: drop root privileges after creating the socket
+
+        * ping: added support for broadcast pings
+
+        * /etc/inetd.conf will now be created during the preinst
+          procedure.
+
+
+Tue Oct 10 22:49:36 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.18 released
+
+	* DebianNet.pm: fixed a problem with entries that use "##" as
+			a separator.
+
+	* added /etc/protocols and /etc/services to the netbase package
+
+	* /etc/init.d/netbase: added "reload" keyword (inetd will
+			       reread the /etc/inetd.conf file). NOTE:
+			       the keyword may change in the future.
+
+
+Sun Sep 24 19:28:15 MET 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.17 released
+
+	* DebianNet.pm: fixed a minor problem with entries which are
+			disabled by default (Bug#1476)
+
+
+Fri Sep 22 01:09:49 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.16 released
+
+	* added amd entry to /etc/rpc
+
+	* DebianNet.pm: minor cleanups
+
+	* update-inetd: minor cleanups
+
+	* DebianNet.pm: added manual page for DebianNet.pm
+
+	* update-inetd: added manual page for update-inetd
+
+	* /etc/init.d/netbase: rpc.portmap and inetd will now be started
+			       using start-stop-daemon (Bug#1414)
+
+
+Thu Sep  7 01:36:37 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.15 released
+
+	* inetd-5.30: added a manual page for inetd.conf
+
+	* DebianNet.pm: added a new function (DebianNet::remove_service)
+			to remove entries from /etc/inetd.conf
+
+	* DebianNet.pm: changed enable_service and disable_service. You
+			can now use an optional pattern (in addition to
+			the service) to select an entry.
+
+	* update-inetd: added a new mode (--remove) to remove entries
+			from /etc/inetd.conf
+
+	* update-inetd: added a new option (--pattern). It can be used to
+			select a service (e.g. if you have two services of
+			the same name)
+
+	* net-tools-1.2.0: minor changes (necessary to compile it with
+			   the kernel 1.3.x includes) (Bug#1284)
+
+
+Mon Aug 21 23:02:33 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.14 released
+
+	* create /etc/inetd.conf during postinst procedure
+
+	* added /usr/sbin/update-inetd and /usr/lib/perl/DebianNet.pm
+
+
+Sat Jul 29 18:41:10 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.13 released
+
+	* net-tools-1.1.95: replaced by net-tools-1.2.0
+
+	* net-tools-1.2.0: added support for ax25 (patch from Bruce Perens)
+
+	* net-tools-1.2.0: enabled ARCnet support
+
+	* net-tools-1.2.0: slattach: added support for real ascii lock files
+
+	* tcp_wrappers_7.1: replaced by tcp_wrappers_7.2
+
+
+Mon Jul 17 22:39:31 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.12 released
+
+	* debian.control: added extended description
+
+	* net-tools-1.1.95: slattach: added support for real ascii lock files
+
+	* net-tools-1.1.95: arp: moved from /sbin to /usr/sbin (see current
+			    fsstnd draft)
+
+	* ipfwadm-1.1: replaced by ipfwadm-1.2
+
+	* portmap: added an ELF patch from J.H.M. Dassen
+
+
+Sun May 14 09:21:30 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.11 released
+
+	* net-tools-1.1.95: moved /usr/sbin/ipfw to /sbin/ipfw
+
+
+Thu Apr 27 23:48:55 MET DST 1995  Peter Tobias  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.10 released
+
+	* changed a few permissions
+
+	* net-tools-1.1.95: moved /usr/sbin/ipfw to /sbin/ipfw
+
+	* ipfwadm: added ipfwadm-1.1
+
+
+Tue Mar 21 08:04:27 MET 1995  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.09 released
+
+	* removed /etc/networks from netbase
+
+
+Wed Mar 15 21:01:41 MET 1995  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.08 released
+
+	* debian.{pre|post}{inst|rm}: added support for System V Init
+
+	* net-tools-1.1.79: replaced by net-tools-1.1.95
+
+	* net-tools-1.1.95: added support for ax25 (patch from Bruce Perens)
+
+	* net-tools-1.1.95: enabled ARCnet support
+
+	* tcp_wrapper-7.1: enabled PARANOID mode in /etc/hosts.deny
+			   (this also means that the tcp_wrapper will
+			   log hostnames instead of IP adresses).
+
+
+Tue Jan 24 17:13:46 MET 1995  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.07 released
+
+	* tcp_wrapper-6.3: replaced by tcp_wrapper-7.1
+
+	* tcp_wrapper-7.1: added a note to the hosts_access.5 man page
+			   that Linux is not affected by a well-known
+			   Unix kernel bug (with RFC 931 username lookups).
+
+	* tcp_wrapper-7.1: disabled the PARANOID mode in the makefile. You can
+			   still enable the PARANOID mode with the PARANOID
+			   access control pattern (see hosts_access.5).
+
+
+Sat Jan 14 03:15:41 MET 1995  <tobias@et-inf.fho-emden.de>
+
+	* Version 1.06 released
+
+	* net-tools-1.1.56: replaced by net-tools-1.1.79
+
+	* net-tools-1.1.79: added support for ax25 (patch from Bruce Perens)
+
+	* net-tools-1.1.79: replaced ipfw man page with a better one
+
+	* ping-5.9: fixed a problem with short packets (smaller than 24 bytes)
+
+	* tcp_wrapper-6.3: added a note to the hosts_access.5 man page
+			   that Linux is not affected by a well-known
+			   Unix kernel bug (with RFC 931 username lookups).
+
+
+Fri Nov 18 23:10:27 MET 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.05 released
+
+	* net-tools-1.1.46: replaced by net-tools-1.1.56
+
+	* net-tools-1.1.56: added support for ax25 (patch from Bruce Perens)
+
+
+Mon Oct 31 01:12:22 MET 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.04 released
+
+	* fixed a bug in the debian.preinst script
+
+	* net-tools-1.1.46: arp: added support for proxy arp entries 
+			    with a netmask (patch from Andrew Tridgell)
+
+
+Tue Oct 25 21:49:45 MET 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.03 released
+
+	* added PACKAGE_REVISION to debian.control
+
+
+Wed Sep 21 00:24:35 MET DST 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.02 released
+
+	* added /etc/rc.misc/netbase
+
+	* net-tools-1.1.38: replaced by net-tools-1.1.46
+
+
+Tue Sep 06 09:03:52 MET DST 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.01 released
+
+	* Changed the pre and post installation scripts
+
+
+Wed Aug 24 21:33:28 MET DST 1994  <tobias@server.et-inf.fho-emden.de>
+
+	* Version 1.00 released
+
+	* portmap-5.4: replaced by the 3rd enhanced portmapper release
+                       from Wietse Venema (wietse@wzv.win.tue.nl)
diff --git a/netbase-4.42/debian/changelog.old b/netbase-4.42/debian/changelog.old
new file mode 100644
index 0000000..6c93ff9
--- /dev/null
+++ b/netbase-4.42/debian/changelog.old
@@ -0,0 +1,972 @@
+netbase (4.03) unstable; urgency=low
+
+  * /etc/services: Added lotusnotes service (1352/tcp,udp). IANA name is
+    "lotusnote" for some reason. Added former as an alias to the latter.
+    (Closes: Bug#67778)
+  * /etc/services: Added x11 ports (6000-6007/tcp,udp).
+  * /etc/services: Added xtelw (1314/tcp). (Closes: Bug#66705)
+  * /etc/services: Added pcrd (5151/tcp). (Closes: Bug#61117)
+  * /etc/services: Added gds_db (3050/tcp,udp) for InterBase. (Closes:
+    Bug#60930)
+  * /etc/services: Added imap as alias to imap2. (Closes: Bug#58708)
+  * /etc/services: Added swat (901/tcp).
+  * /etc/services: Added xfstt (7101/tcp). (Closes: Bug#58457)
+
+  * debian/control: Depend on one of ipfwadm, ipchains, iptables instead of
+    both of ipfwadm and ipchains. Only suggest one of ipautofw, ipmasqadm,
+    iptables instead of depending on both of ipautofw and ipmasqadm.
+
+  * debian/templates: Added Italian translation, thanks to Eugenia Franzoni.
+    (Closes: Bug#64219)
+
+ -- Anthony Towns <ajt@debian.org>  Sun, 27 Aug 2000 16:41:52 +1000
+
+netbase (4.02) unstable; urgency=low
+
+  * Correct "smb" to "smbfs" and add a -q to grep in /etc/init.d/networking.
+    (Closes: Bug#65412, Bug#63288, Bug#65384, Bug#64360).
+  * Remove dependency on iputils-tracepath. Nothing should be relying on 
+    that anyway.
+
+ -- Anthony Towns <ajt@debian.org>  Thu, 17 Aug 2000 14:38:04 +1000
+
+netbase (4.01) unstable; urgency=low
+
+  * netkit-ping is standard, iputils-ping is optional: netkit-ping should
+    therefore be listed first in the Depends: line or apt-get doesn't
+    do the right thing.
+
+ -- Anthony Towns <ajt@debian.org>  Sat, 12 Aug 2000 20:44:08 +1000
+
+netbase (4.00) unstable; urgency=low
+
+  * The great netbase split. netbase is now Debian native.
+
+  * Split into:
+        ifupdown, ipautofw, ipchains, ipfwadm, ipmasqadm, iputils, net-tools,
+        netkit-base, portmap
+    netkit-base builds netkit-ping, netkit-inetd and netkit-rpc. iputils
+    builds iputils-ping and iputils-traceroute.
+
+  * hosts.allow and hosts.deny moved to the tcp-wrappers package.
+
+ -- Anthony Towns <ajt@debian.org>  Sun, 16 Jul 2000 12:00:52 +1000
+
+netbase (3.18-4) frozen unstable; urgency=low
+
+  * The ``I'm an idiot'' release.
+
+  * preinst: Add a `mkdir -p /etc/network' so that cat'ing to
+    /etc/network/interfaces (eg) doesn't die horribly. Makes upgrades
+    from slink die. (Closes: Bug#62958)
+
+ -- Anthony Towns <ajt@debian.org>  Tue, 25 Apr 2000 01:53:23 +1000
+
+netbase (3.18-3) frozen unstable; urgency=low
+
+  * frozen rationale: This fixes the somewhat important bug 62538, and
+    reduces the severity of the critical bug 60898 to normal. It also
+    introduces some new functionality into ifupdown, but does so in
+    a way that shouldn't affect existing functionality if the changes
+    are faulty. Various other bugs fixed too.
+
+  * /e/n/interfaces: Move sample to /usr/doc/netbase/examples, where it
+    can be looked at by new installees as well as upgraders. Make it not
+    a conffile. (Closes: Bug#62538)
+  * /e/n/interfaces: Add pre-up/post-down examples. (Closes: Bug#61266)
+  * /e/n/interfaces: If not present, autogenerate a commented out loopback
+    IPv4 definition in preinst.
+
+  * /e/n/options: Make this not a conffile, and autogenerate it from
+    preinst too.
+
+  * /etc/init.d/inetd: Die quietly if inetd isn't available.
+  * /etc/init.d/netwoking: Die quietly if ifup isn't available.
+  * /etc/init.d/networking: Correct check for / as an NFS mount.
+  * /etc/init.d/networking: Don't take networking down if there are
+    still any NFS/SMB mounts about. (Reduces Bug#60898 to normal)
+
+  * ifupdown: Add `provider' as an option for pon/poff in ppp method.
+    Thanks to Itai Zukerman for the patch. (Closes: Bug#62476)
+  * ifupdown: Make the IPX family a little tidier. Thanks to Chris
+    Pimlott for suggestions and a patch. (Closes: Bug#62644)
+  * ifupdown: Added some other options for IPv6.
+  * ifupdown: Act on all stanzas for an interface, not just the first.
+    (Closes: Bug#62628) 
+
+  * README.Debian: Added. Mentions some stuff. (Closes: Bug#61616)
+
+ -- Anthony Towns <ajt@debian.org>  Sat, 22 Apr 2000 15:58:20 +1000
+
+netbase (3.18-2) frozen unstable; urgency=low
+
+  * inetd: For internal services that fork, close everything but
+    stdout/stdin, and make those point to the ctrl socket and so on
+    (as per usual exec()), and reset `ctrl' to 0, so you can still use
+    ctrl legitimately. After this upgrade, inetd isn't vulnerable to this
+    denial of service attack. During it, it is, but that's difficult to
+    fix.
+  * init.d/inetd: Instruct start-stop-daemon to consider the inetd pidfile
+    authoritative when trying to start inetd. Both these fixes are necessary
+    for: (Closes: Bug#60770)
+
+  * init.d/networking: Fixed typo. Ooops. :) (Closes: Bug#61395)
+
+  * ifupdown: Actually *do* the early abort that all that code was there
+    for. (Closes: Bug#50064)
+  * ifupdown: Get rid of "dhclient" in the `kill' command.
+    (Closes: Bug#61269)
+
+ -- Anthony Towns <ajt@debian.org>  Wed,  5 Apr 2000 00:44:00 +1000
+
+netbase (3.18-1) frozen unstable; urgency=low
+
+  * The "What? We're in a freeze? Let's make as many changes as possible!"
+    release. (Subtitled: The "Sorry 'bout this, Richard..." release)
+
+  * netfilter: No longer included even in the .orig.tar.gz. It's actually
+    been this way since 3.17-1. (Closes: Bug#54815)
+
+  * ifupdown: New upstream release (0.5.5).
+  * ifupdown: Added pre-up/post-down commands
+  * ifupdown: Correctly kill dhclient (Closes: Bug#58734)
+  * ifupdown: dhcpcd-sv has been (kind of) merged into dhdcpcd. (Closes:
+    Bug#58924, Bug#60097)
+  * ifupdown: Document /etc/network/interfaces (thanks Joey!) and make
+    ifup(8) and ifdown(8) more informative too. (Closes: Bug#58680, Bug#60419,
+    Bug#60512)
+
+  * init.d/networking: Move rc{0,6}.d S-links to S35, giving plenty of room
+    for killing programs using NFS mounts, and umounting NFS devices and
+    so on. Needs sysvinit changes to actually be particularly useful, but
+    still. See Bug#60898. (Closes: Bug#59282, Bug#59286)
+  * init.d/networking: Check for NFS (or SMB) mounted /, and never shut
+    down of the network if present. (Closes: Bug#60374)
+
+  * /e/n/interfaces: Clarify some of the comments (Closes: Bug#58951,
+    Bug#59004)
+
+  * init.d/inetd: Check for rpc services in inetd, then check the
+    portmapper, to avoid needless pauses/errors even if localhost is down.
+    (Closes: Bug#58951)
+
+  * templates: Give more information on format spec of the "What IP
+    address/ranges?" question. (Closes: Bug#55664, Bug#49548)
+  * templates: Changed the init.d/network deprecated message to be a bit
+    less scary.
+  * config: Only display upgrade messages when *upgrading*. I have no
+    idea what I was thinking when I wrote that bit of .config.
+    (Closes: Bug#59083)
+
+  * postinst: Actually delete the /etc/init.d/netbase symlinks when using
+    debconf.
+  * postinst: Remove the "[kludge]" note about stopping debconf. The
+    kludge itself is still there, though.
+  * preinst: Apparently I didn't actually remove the inetd.conf
+    denial-of-service checks from the preinst like I said. (They're in
+    the postinst now). Fixed that.
+
+  * control: Added a Conflict: against libwrap0 versions 7.6-2 and 7.6-3,
+    which are disgustingly buggy. (Closes: Bug#58916)
+
+  * update-inetd: Clarify the xinetd warning. Thanks to Josip Rodin.
+    (Closes: Bug#60666)
+
+  * ping6: Correct "unkown" misspelling. (Closes: Bug#56132)
+
+  * net-tools: Fix some hwtype structure misdeclarations in
+    lib/*.c. (Closes: Bug#59377)
+
+  * pmap_dump: Made pmap_dump use the 127.0.0.1 address, rather than
+    the result of get_myaddress. This is to cope with broken firewalling
+    setups that try to firewall out the loopback interface, and make the
+    machine unreachable from itself. (Closes: Bug#60517)
+
+  * ipmasqadm.8: Added a `this manpage has tables' code at the top. Thanks
+    to Craig Small.
+
+ -- Anthony Towns <ajt@debian.org>  Fri, 24 Mar 2000 07:42:27 +1000
+
+netbase (3.17-1) frozen unstable; urgency=low
+
+  * New upstream bugfix release of net-tools. (Closes: Bug#55011)
+    (Differences against upstream: got rid of pr_str typo in lib/tr.c)
+  * New upstream release of ifupdown (incorporates changes from
+    previous netbases, adds a manpage). There shouldn't be any
+    semblance of a need for nowebm for rebuilding anymore.
+
+  * postinst: The first bit of the postinst is executed twice if debconf's
+    running. This causes problems for people running slink (ie, using
+    an old netbase that doesn't stop portmap), who don't have psmisc
+    installed (and hence don't have fuser, and hence can't kill portmap,
+    and hence the second run isn't a no-op), because debconf redirects
+    all the echo's to itself, and doesn't understand them. Got all that?
+    Thanks to Adam Heath and Joey Hess for noticing the problem and
+    finding the solution.
+
+  * etc/network/options: Created options file for configuring spoof
+    protection, IPv4 forwarding, and SYN cookies. (Closes: Bug#46579)
+  * init.d/networking: Made SYN cookies not default. (Closes: Bug#57909,
+    Bug#58141)
+
+  * Added Build-Depends line.
+
+  * ipautofw/ipautofw: Remove i386 binary for .orig.tar.gz
+  * ipautofw/Makefile: Make the binary depend on the source.
+
+  * etc/network/interfaces: Remove ALPHA warnings. (Closes: Bug#58019)
+
+  * DebianNet.pm: Take a little more care when matching services.
+    Thanks to Paul Slootman for the patch. (Closes: Bug#56251)
+
+  * debian/templates: Clarify spoof-protection question (wrt 2.0 kernels).
+    (Actually did this in 3.16-10) (Closes: Bug#51657)
+
+  * debian/templates,postinst: Add a note about /etc/init.d/network and
+    /etc/network/interfaces, both via debconf and as comments into
+    /etc/init.d/network. (Closes: Bug#47378,Bug#56883)
+
+ -- Anthony Towns <ajt@debian.org>  Sun, 20 Feb 2000 17:03:00 +1000
+
+netbase (3.16-10) frozen unstable; urgency=low
+  
+  * init.d/networking: Add S15networking links in runlevels 0 and 6 (halt 
+    and reboot) so DHCP and kin are given a chance to die nicely before 
+    being killed. (Closes: Bug#49817)
+  * Also moved portmap to rcS.d and rc[06].d (41 and 10, respectively).
+
+  * preinst; Removed daytime/udp etc question from preinst, moved it to 
+    postinst, so it should only get asked once now.(Closes: Bug#54009, 
+    Bug#51219)
+  * postinst: Make sure the debconf and non-debconf halves both do the
+    same things. (Closes: Bug#57321, Bug#57199)
+  
+  * init.d/networking/Enable SYN Cookies at boot time, if they're compiled 
+    into the kernel. (Closes: Bug#43402)
+  
+  * netkit-base/ping: Got rid of the `timestamp_check' stuff.
+  
+  * cron.daily: Switch to /bin/sh rather than /bin/bash. (Closes: Bug#50525)
+
+  * etc/services: Added font-server 7100 (aka, xfs). (Closes: Bug#50886)
+  * etc/services: Added ndtp 2010/tcp. (Closes: Bug#51119)
+  * etc/services: Added ipp 631. (Closes: Bug#51956)
+  * etc/services: Addes kx 2111/tcp. (Closes: Bug#54183)
+
+ -- Anthony Towns <ajt@debian.org>  Wed,  9 Feb 2000 12:38:20 +1000
+
+netbase (3.16-9) frozen unstable; urgency=medium
+
+  * Make ifup/ifdown use dhclient/pump/dhcpcd/dhcpcd-sv for DHCP,
+    depending on kernel version and/or what's actually installed. This
+    is important for boot-floppies. (Closes: Bug#56020)
+
+  * Fix up -n option (which is missing from getopt(), tsk), and correct
+    the --help display. (Closes: Bug#56910)
+
+  * Remove the m68k-doesn't-have-glibc2 kludge, since it now does
+    have glibc2. (Closes: Bug#56940)
+
+ -- Anthony Towns <ajt@debian.org>  Fri,  4 Feb 2000 01:14:14 +1000
+
+netbase (3.16-8) unstable; urgency=low
+
+  * iputils/ping6.c: Did local defines of clear_bit, set_bit and test_bit,
+    so it no longer needs to include asm/bitops.h. Hopefully this'll fix
+    it for arm and powerpc. (Closes: Bug#46642,Bug#47522)
+
+ -- Anthony Towns <ajt@debian.org>  Tue, 14 Dec 1999 13:09:11 +1000
+
+netbase (3.16-7) unstable; urgency=low
+
+  * Fixed bashism in .config (Closes: Bug#50608, Bug#50675)
+ 
+  * The infinite looping seems to be fixed in debconf (>= 0.2.34). Added
+    a Conflicts: to help with this. (Closes: Bug#50920, Bug#50545,
+    Bug#50753).
+  * Added a missing ||true in .config which seems to be the remaining
+    debconf bug! (Closes: Bug#50968, Bug#50977)
+
+ -- Anthony Towns <ajt@debian.org>  Sat, 20 Nov 1999 07:14:12 +1000
+
+netbase (3.16-6) unstable; urgency=low
+
+  * Update debconf-isms. Should fix the weird crashes and loops on installing,
+    as well as debconf's random whining. (Closes: Bug#49565, Bug#50369,
+    Bug#50397)
+
+  * Added ircs service (tcp/994) for SSL wrapped IRC. (Closes: Bug#49848)
+
+ -- Anthony Towns <ajt@debian.org>  Thu, 18 Nov 1999 17:45:14 +1000
+
+netbase (3.16-5) unstable; urgency=low
+
+  * Remove perlism from postinst. Considering postinst is a /bin/sh
+    script, this seems wise. (Yeesh).
+
+ -- Anthony Towns <ajt@debian.org>  Thu, 18 Nov 1999 17:45:11 +1000
+
+netbase (3.16-4) unstable; urgency=low
+
+  * The `Australia v France' release.
+    Aussie, Aussie, Aussie! Oi! Oi! Oi!
+
+  * netstd no longer exists, no longer recommend it. (Closes: Bug#49325)
+
+  * /etc/services: Added afbackup entry. (Closes: Bug#48519)
+
+  * update-inetd: Add a warning for xinetd people (ie "that didn't work,
+    you'll have to do it manually!"). (Closes: Bug#45174)
+
+ -- Anthony Towns <ajt@debian.org>  Sat,  6 Oct 1999 23:45:30 +1000
+
+netbase (3.16-3) unstable; urgency=low
+
+  * portmap: Statically link _/sbin_/portmap against _/usr_/lib/libwrap.a.
+    Tsk. (Closes: Bug#44090)
+
+  * slattach: Don't buffer stdout, cope with unix98 ptys and cleanup some
+    of the error handling. Thanks to Ian Jackson for the report and
+    patch. (Closes: Bug#45515), (Downgrades: Bug#45944)
+
+  * /etc/init.d/networking: "$LOCAL_IPS", not "LOCAL_IPS". Oddly, I seem
+    to have corrected this locally, but not in the source. Weird. Thanks
+    to Kurt Starsinic for the report and patch. (Closes: Bug#45793)
+
+  * /etc/init.d/inetd: Change usage string to refer to init.d/inetd
+    instead of init.d/netbase. Also changed description from `base
+    networking daemons' to `internet superserver'. (Closes: Bug#45923)
+
+  * postinst: Cope with `hostname -i' failing. (Closes: Bug#45860)
+  * debian/rules: Get ipmasqadm docs from the right place.
+  * TODO.Debian: Update it a bit
+  * Include arping (ARP ping) from iputils. (Closes: Bug#43911)
+
+  * Add (optional) debconf support.
+
+  * Rebuild with new debhelper. Should now be FHS compliant.
+
+ -- Anthony Towns <ajt@debian.org>  Sun,  3 Oct 1999 18:30:26 +1000
+
+netbase (3.16-2) unstable; urgency=low
+
+  * ifconfig: Added note to ifconfig(8) manpage about EAGAIN and IRQ
+    conflicts. (Closes: Bug#43190)
+
+  * net-tools: Moved manpages from man/de_DE/manX to man/de/manX,
+    etc. Should now actually let you view the non-English pages.
+
+  * ifupdown: (debian/rules) touch the various generated source files
+    so that noweb isn't mistakenly required because patch doesn't
+    preserve timestamps. (Closes: Bug#43817)
+
+  * init.d/inetd: Added conflicts: against xinetd's that mess with
+    init.d/netbase -- they should mess with init.d/inetd instead
+    now. (Reassigns Bug#43643 to xinetd)
+
+ -- Anthony Towns <ajt@debian.org>  Sat,  4 Sep 1999 15:14:58 +1000
+
+netbase (3.16-1) unstable; urgency=high
+
+  * New upstream version: ipchains 1.3.9 (was 1.3.8) (Closes: Bug#37005)
+  * New upstream version: ipchains-scripts 1.1.2 (was 1.0.2)
+
+  * Now includes netfilter; but only in the source package for the time
+    being. (So I don't know how to compile it yet. Sue me)
+
+  * Split TCP wrappers to its own packages (libwrap0, libwrap0-dev, tcpd).
+    This creates a shared library (and accompanying -dev package) for
+    TCP wrappers, links the various binaries to that library, adds a
+    dependency from libwrap.so.0 to libnsl.so.1, hopefully compiles
+    better on HURD now, and adds a reference to hosts_options(5) in the
+    hosts_access(5) manpage.
+    (Closes: Bug#15311, Bug#33677, Bug#33085, Bug#37797)
+ 
+  * Recompiled with gcc 2.95-1 (Closes: Bug#38978)
+
+  * /etc/init.d/netbase: Removed.
+
+  * /etc/init.d/inetd: Created /etc/init.d/inetd which handles stopping and
+    starting inetd.
+
+  * /etc/init.d/networking: Created networking startup file: rcS.d,
+    priority 40 (just after /etc/rcS.d/S40network). Sets up spoof
+    protection and runs `ifup -a' on start, and `ifdown -a' on stop.
+    /etc/init.d/netbase now does nothing but start and stop inetd.
+    (Closes: Bug#39118, Bug#43310)
+
+  * /etc/network/spoof-protect: configuration file to encourage people to
+    actually get spoof protection to work. (Closes: Bug#17424, Bug#39265)
+
+  * postinst: Added opportunity to configure /etc/network/spoof-protect.
+
+  * preinst: As well as complaining about chargen and echo, complain about
+    time/udp and daytime/udp also. (Closes: Bug#17424, Bug#39265) (Yes,
+    these two bugs got fixed in two different ways.)
+
+  * copyright: Rearranged the summary in the copyright file and listed
+    the authors, since they are the copyright holders after all.
+
+  * /etc/services:
+        Changed name of pop-2/pop-3 (109,110/tcp,udp) to pop2, pop3, with
+          pop-2, pop-3 as aliases. (Closes: Bug#42108)
+        Added rmiregistry (1099/tcp) service for Java (Closes: Bug#42346)
+        Added nqs (607/tcp) service for generic-nqs (Closes: Bug#42594)
+        Added customs (1001/tcp,udp) service for pmake (Close: Bug#43423)
+
+ -- Anthony Towns <ajt@debian.org>  Fri, 20 Aug 1999 07:11:00 +0000
+
+netbase (3.15-4) unstable; urgency=low
+
+  * ifupdown: chmod *.pl *.sh so they're executable. diff.gz's don't 
+    preserve permissions. 
+  * iputils/ping: changed ENOSUP to EOPNOTSUPP. Thanks to Roman Hodek for
+    both these fixes. Maybe m68k and friends will work *this* time.
+
+ -- Anthony Towns <ajt@debian.org>  Fri, 23 Jul 1999 14:25:48 +1000
+
+netbase (3.15-3) unstable; urgency=low
+
+  * debian/rules: Fixed typo. (Bug#40411)
+  * debian/rules: Converted to debhelper.
+
+  * /etc/services: Added Zebra services
+  * /etc/services: Changed saned/tcp service to sane/tcp (with saned/tcp as
+    an alias). (Bug#36395,36441)
+  * /etc/services: Added rtcm port assignment services (Bug#38884)
+  * /etc/services: Added omniorb port as 8088 (Bug#40598)
+  * /etc/services: Added irc-dalnet port as 7000 (Bug#35225)
+  * /etc/services: Added mrtd ports (Bug#36999)
+
+  * ifupdown: Added ifup and ifdown commands. See /etc/network/interfaces
+    for some info. See the source code for the rest.
+
+ -- Anthony Towns <ajt@debian.org>  Mon, 19 Jul 1999 14:18:27 +1000
+
+netbase (3.15-2) unstable; urgency=low
+
+  * net-tools: Disabled ECONET support for m68k builds. Thanks to Roman
+    Hodek for the report and patch. (Bug#40411)
+  * /etc/gateways: Added gatesways(5) manpage. Thanks to Steve Kostecke.
+    (Bug#23703)
+  * debian/postinst: Changed wording of "ipfwadm -> ipfwadm.real or
+    ipfwadm-wrapper" message to (hopefully) clarify it a bit.
+  * debian/copyright: Bumped the version of net-tools. Oooops.
+
+ -- Anthony Towns <ajt@debian.org>  Mon, 19 Jul 1999 14:18:23 +1000
+
+netbase (3.15-1) unstable; urgency=medium
+
+  * debian/postrm: Fixed typo in postrm (-l != -L). (Bug#37858)
+
+  * iputils/ping: Applied patch to fix bogus errors on 2.0.x kernels, and
+    to call snprintf instead of sprintf. Thanks to Michael Herrman.
+    (Bug#37084)
+  * iputils/ping: Applied patch to fix timeval alignment problems on alpha.
+    Thanks to Bart Warmerdam. (Bug#38137)
+
+  * net-tools/lib/masq_info.c: Applied patch from RedHat to cope with a
+    couple more protocols.
+  * net-tools: Applied patch from RedHat to fix a number of possible
+    buffer overflows.
+
+  * New upstream release of net-tools (1.52).
+
+ -- Anthony Towns <ajt@debian.org>  Wed, 30 Jun 1999 23:21:40 +1000
+
+netbase (3.14-3) unstable; urgency=low
+
+  * ping: Reverted to netkit-base ping for all architectures except alpha.
+    As it turns out the iputils ping doesn't work properly on 2.0 kernels.
+    (Bug#36497)
+  * iputils/ping: Applied patch to add a "-m" option
+    to iputils/ping (to adjust maximum time spent waiting for final
+    packet) and fixes exit values of the program and `-c n' option when
+    destination is down. Thanks to Michael Herrman. (Bug#36432)
+  * iputils: Applied patches to fix some buffer overflow problems. Thanks
+    to Topi Miettinen for finding and fixing the problems.
+  * ping6/traceroute6: Applied patch to make ping6 and traceroute6 think
+    of themselves as ping6/traceroute6 instead of just ping/traceroute.
+    Thanks to Remco van de Meent.
+ 
+  * pmap_set: Fixed fairly implausible buffer overflow. Thanks to Topi
+    Miettinen for the patch. (Bug#29097)
+
+  * tcp_wrappers: Used sigsetjmp/siglongjmp instead of setjmp/longjmp
+    to handle signals properly. Thanks again to Topi Mittinen. (Bug#29105)
+
+  * ipchains: Added a4 and letter refcards to /usr/doc/netbase. (Bug#36659)
+
+  * ifconfig: Applied patch from Philip Blundell to fix strange behaviour
+    of IPv4 interfaces with ifconfig. (Bug#36093, Bug#35457)
+
+  * net-tools: Changed Makefile to make installation of ipmaddr/iptunnel
+    conditional on HAVE_IP_TOOLS.
+
+  * postinst: Made IPv6 /etc/hosts changes only prompt when upgrading from
+    netbase prior to 3.14. (Bug#36289)
+
+  * debian/rules: Fixed m68k patch. (Bug#36324)
+
+ -- Anthony Towns <ajt@debian.org>  Sat,  1 May 1999 13:38:27 +1000
+
+netbase (3.14-2) unstable; urgency=low
+
+  * ping: Replaced netkit-ping w/ iputils ping.
+  * ping/ping6: Applied patches to fix some datasize errors in 
+    iputils/ping{,6}.c . Thanks to Christopher Chimel. (Bug#35311)
+  * ping: Removed egcs' buggy optimisations in iputils and netkit-base.
+    (Bug#35801) Thanks to Horst von Brand for pointing out the problem.
+  
+  * ipfwadm: Fixed up echo ...;... in help text. *grumble* (Bug#35125)
+
+  * arp: Changed .po file to use `\t' instead of `\\t' for tabs. 
+    (Bug#35773)
+
+  * debian/rules: Hacked build target so net-tools isn't built with IPv6
+    support for m68k. (Bug#35553)
+ 
+ -- Anthony Towns <ajt@debian.org>  Thu, 25 Mar 1999 18:14:13 +1000
+
+netbase (3.14-1) unstable; urgency=low
+
+  * Added iputils package. (provides ping6, traceroute6, and
+    tracepath{,6})
+
+  * ipdwadm-wrapper: Fixed thinko in helptext, and added check for
+    /proc/net/ip_acct as well as /proc/net/ip_input to better check
+    some ipfwadm (pre-2.1.x) systems. Thanks to Francesco Portorti.
+    (Bug#34879,#34880,#34912,#35016)
+
+  * /bin/ping: Recompiled with new fakeroot to fix weird group errors.
+    (Bug#34994,#34998)
+
+ -- Anthony Towns <ajt@debian.org>  Wed, 24 Mar 1999 22:30:40 +1000
+
+netbase (3.13-1) unstable; urgency=low
+
+  * New upstream release of net-tools (1.51) (Closes: #14302)
+
+  * Compiled with glibc2.1. Thanks to Joel Klecker for some patches.
+    Should compile much more easily on non-i386 architectures now. 
+    Hopefully.
+
+  * ipfwadm: Made /sbin/ipfwadm point to ipfwadm-wrapper, which copes
+    with running a 2.0 kernel (and calling ipfwadm directly), or a 2.2
+    kernel (and using ipchains instead).
+
+  * /etc/protocols: Correct IDPR-CMTP protocol number to 38, change
+    IPv6-Crypt and IPv6-Auth entries, to the IANA names, ESP and AH
+    (respectively). Added some other IPv6 related protocols.
+
+  * /etc/services: Added swat 901/tcp. (Bug#33964)
+  * /etc/services: Added ldap 389/tcp,udp. (Bug#33944)
+  * /etc/services: Added saned 6566/tcp. (Bug#33654) 
+
+  * /etc/init.d/netbase: Fix spelling mistake. 
+
+  * net-tools: Configured in Internationalization (Bug#34638), and
+    IPv6 support. Compiled in support for the other options on a
+    "What the hell" basis.
+
+  * Changed the layout of the source package to not include version
+    numbers in the directories for each sub package. They're now in
+    /usr/doc/netbase/copyright instead.
+
+ -- Anthony Towns <ajt@debian.org>  Sat, 13 Feb 1999 14:20:32 +1000
+
+netbase (3.12-2) unstable; urgency=low
+
+  * /etc/services: Added moira services (Bug#33027)
+  * /usr/doc/netbase/ipmasqadm: Include ipmasqadm docs.
+  * inetd: Don't lose file descriptors when services fail. (Bug#24707)
+  * netstat: Cope with masqueraded ICMP packets (pings). (Bug#26950)
+
+  * /etc/hosts: Prompt in postinst to add IPv6 host/ips.
+  * /etc/protocols: Add IPv6 protocol names. (Bug#27102)
+
+  * Use "/usr" as the KSRC directory for ipmasqadm. (ipmasqadm-*/Common.mk)
+  * Require linux 2.2 (or recent 2.1) headers in /usr/include/linux
+    for compilation. (Bug#32873)
+
+  * prerm: Swap "portmap stop" and "pmap_dump". Ouch. (You'll need to
+    restart NFS *again*, in other words. This *should* be the last time,
+    though).
+
+  * suidmanager: No changes!! :)
+
+ -- Anthony Towns <ajt@debian.org>  Fri, 29 Jan 1999 02:04:47 +1000
+
+netbase (3.12-1) unstable; urgency=low
+
+  * Fixed some lintian warnings.
+ 
+  * /etc/services: Changed second mailq entry to udp. (Thanks to 
+        Russell Coker)
+  * /etc/services: Added dict 2628/tcp,udp
+
+  * suidmanager: Only call suidregister once. ("Hey, Rocky, watch
+        me pull a working netbase out of my hat!" "Oh, Bullwinkle,
+        you know that trick *never* works") Thanks again to Julian 
+        Gilbey.
+
+  * New upstream versions of:
+        ipautofw (980511)
+        ipchains (1.3.8)
+        net-tools (1.50)
+
+  * Added ipmasqadm.
+
+ -- Anthony Towns <ajt@debian.org>  Wed, 27 Jan 1999 23:24:12 +1000
+
+netbase (3.11-4) unstable; urgency=medium
+
+  * /etc/services: Added linuxconf 98/tcp
+  * ping: change tmin/tmax to unsigned longs (Bug#32196)
+  * postinst, init.d/portmap: Make portmap start read 
+        /var/run/portmap.upgrade-state so registered services don't
+        just disappear over an upgrade. (Bug#32314, #32154)
+  * postinst: Make `killing portmap' message a little bit more sensible.
+        (Bug#32314, #32154)
+  * suidmanager: See if debstd does a better job coping with suidmanager
+        than I have. (Thanks to Julian Gilbey) (Bug#32120,#32168,#32173)
+
+ -- Anthony Towns <ajt@debian.org>  Wed, 20 Jan 1999 13:14:00 +1000
+
+netbase (3.11-3) unstable; urgency=high
+
+  * init.d: Fix `&>' bashism in init.d/netbase. (Bug#32062)
+  * postinst: Cope if suidmanager isn't installed. Yeesh. 
+    (Bugs #32066,#32092,#32093,#32101,#32102,#32105)
+  * postrm: Remember to suidunregister, too.
+
+ -- Anthony Towns <ajt@debian.org>  Tue, 19 Jan 1999 23:44:19 +1000
+
+netbase (3.11-2) unstable; urgency=low
+
+  * /etc/services: canna, wnn6, and skkserv services added (Bug#30693) 
+  * /etc/services: afs services added (Bug#28290)
+ 
+  * rcN.d: Fix stop-priority levels for portmap. 
+  * init.d: Added check for portmap when starting inetd.
+  * init.d: Split portmap section of init.d/netbase into init.d/portmap
+    (Bug#22665, Bug#23610, Bug#24551, Bug#26390)
+
+  * postinst: Register ping with suidmanager (Bug#15701)
+  * prerm: Stop portmapper in prerm, rather than waiting until postinst.
+    (Bug#19678,#23073)
+
+  * /usr/doc/netbase/TODO.debian: added - additions by the bug tracking
+    system are welcome. 
+
+  * 3.11-1.2 and 3.11-1.1 changes merged.
+  * New maintainer.
+
+ -- Anthony Towns <ajt@debian.org>  Mon, 18 Jan 1999 17:02:38 +1000
+
+netbase (3.11-1.2) frozen unstable; urgency=low
+
+  * /etc/services: Added gnats service. (Fixes#18835)
+  * /etc/services: Added GNUstep environment services. (Fixes#30285) 
+  * /etc/services: Added coda services. (Fixes#26450)
+  * /etc/services: Added ssl services. (Fixes#30354)
+  * inetd: correctly resolve "3com-tsmux". (Fixes#16318)
+    (telnet doesn't support this, so /etc/services unchanged)
+  * inetd: Bumped line buffer for reading inetd.conf in inetd.c to 1024
+    characters. Noted limitation in intetd.conf manpage. (Fixes#24116)
+  * inetd: Cleanup inetd.c (thanks to Topi Miettinen) (Bug#29162)
+  * netstat: Change -u|--unix in manpage to -x|--unix in manpage.
+    (Fixes#26263)
+  * ping: Fix broken ping -f localhost behaviour (thanks to Nick Holloway
+    via the linux-kernel list). (Bug#27123)
+  * Incorporate Sparc glibc2.1 patch (thanks to Christian Meder).
+    (Bug#27522)
+  * Non-maintainer release.
+
+ -- Anthony Towns <ajt@debian.org>  Sat, 21 Nov 1998 16:53:00 +1000
+
+netbase (3.11-1.1) unstable; urgency=low
+
+  * non maintainer, no source upload
+  * fixes for glibc2.1, patch forwarded to BTS
+
+ -- Christian Meder <meder@isr.uni-stuttgart.de>  Tue,  6 Oct 1998 14:29:19 +0200
+
+netbase (3.11-1) frozen unstable; urgency=low
+
+  * /etc/services: added rsync entry, fixes: Bug#24464
+  * /etc/services: added ninstall entry, fixes: Bug#24560
+  * /etc/services: added additional check for the radius service
+		   to the preinst script, fixes: Bug#24394, Bug#24187
+  * update-inetd.8: added a short note about the comment-char option
+		    to the ssh example
+  * /etc/inetd.conf: added a short note about how to permanently
+		     disable services in /etc/inetd.conf to the
+		     default /etc/inetd.conf that will be created
+		     by the preinst script.
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed, 15 Jul 1998 23:17:09 +0200
+
+
+netbase (3.10-1) frozen unstable; urgency=high
+
+  * netkit-base: fixed ping signal security problem, fixes: Bug#23303
+  * netkit-base: fixed inetd manual page, fixes: Bug#23705, Bug#23706
+  * ipchains: removed libfw examples (suggestion from the upstream
+	      maintainer Paul Russell <Paul.Russell@rustcorp.com.au>)
+  * ipchains-restore: fixed manual page
+  * /etc/init.d/netbase: changed ipchains commands to match all non "lo"
+			 devices (Paul Russell <Paul.Russell@rustcorp.com.au>)
+			 fixes: Bug#23745
+  * ipchains: replaced by ipchains-1.3.4 and ipchains-scripts 1.0.2
+	      fixes: Bug#24024, Bug#23592
+  * net-tools: added missing include for arp.c
+	       fixes: Bug#22645, Bug#22795, Bug#23335
+  * /etc/services: added socks entry, fixes: Bug#23691
+  * /etc/services: added kamanda entry
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Sun,  5 Jul 1998 21:04:48 +0200
+
+
+netbase (3.09-1) frozen unstable; urgency=medium
+
+  * added ipchains-1.3.3 (for kernel 2.1.102 and above)
+  * ipchains: wrote some simple manual pages for ipfwadm-wrapper,
+	      ipchains-save and ipchains-restore.
+  * /etc/init.d/netbase: changed to use ipchains for kernel 2.1.102 and
+                         above
+  * net-tools: fixed ifconfig (some supported features were not enabled)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Sun, 17 May 1998 16:09:58 +0200
+
+
+netbase (3.08-1) frozen unstable; urgency=low
+
+  * /etc/services: added https entry
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Sat, 16 May 1998 03:55:45 +0200
+
+
+netbase (3.07-1) frozen unstable; urgency=low
+
+  * added "Suggests: cpp" (rpcgen)
+  * net-tools: replaced by net-tools-1.45, fixes: Bug#21520, Bug#21512
+  * /etc/services: fixed postgres entry
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed,  6 May 1998 21:10:12 +0200
+
+
+netbase (3.06-1) frozen unstable; urgency=medium
+
+  * portmapper: moved from /usr/sbin to /sbin, fixes: Bug#16092, Bug#20957
+  * rpcgen: uses /usr/bin/cpp now, fixes: Bug#20638
+  * net-tools: replaced by net-tools-1.44, fixes: Bug#19932, Bug#20652
+  * net-tools: fixed ifconfig output for ARCnet, fixes: Bug#20385
+  * net-tools: fixed command line buffer overflow in ifconfig, Bug#21019
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Thu, 16 Apr 1998 14:01:09 +0200
+
+
+netbase (3.05-1) frozen unstable; urgency=low
+
+  * /etc/services: added mysql entries
+  * /etc/services: added codafs entries
+  * /etc/services: added radius entries
+  * /etc/services: added transparent proxy entries
+  * /etc/services: added dqs alias entries
+  * /etc/services: added kerberos-iv alias entries
+  * update-inetd.8: added description and example for the --add option
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed, 25 Mar 1998 13:49:17 +0100
+
+
+netbase (3.04-1) unstable; urgency=low
+
+  * added patch for sparc architecture, fixes: Bug#17495
+  * /etc/services: added omirr entries
+  * /etc/services: added afbackup entry, fixes: Bug#18336
+  * /etc/services: added afpovertcp entries, fixes: Bug#18268
+  * slattach: added "keepalive" patch, fixes: Bug#17797
+  * update-inetd: fixed help screen
+  * DebianNet.pm: made "multiple entries" warning more verbose
+                  fixes: Bug#18690
+  * /etc/init.d/netbase: changed console message for "IP spoofing protection"
+                         fixes: Bug#18656
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Sat, 28 Feb 1998 11:48:23 +0100
+
+
+netbase (3.03-1) unstable; urgency=low
+
+  * /etc/services: added amanda entries
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Sat, 10 Jan 1998 21:54:46 +0100
+
+
+netbase (3.02-1) unstable; urgency=low
+
+  * /etc/services: added hostmon, noclog entries
+  * net-tools: added missing activate_init() call to slattach (patch from
+               Michael Schmitz <schmitz@lcbvax.cchem.berkeley.edu>)
+  * recompiled with libc6-2.0.6 (should fix the portmapper problem)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Tue, 30 Dec 1997 12:01:09 +0100
+
+
+netbase (3.01-1) unstable; urgency=low
+
+  * /etc/services: added entry for zmailer
+  * /etc/services: fixed poppassd entry
+  * ipfwadm: added support for icmp masquerading entries
+             (patch from Heiko Schlittermann <heiko@datom.de>)
+  * ipfwadm: fixed manual page (masquerading policy)
+  * net-tools: replaced by net-tools-pre1.34
+  * net-tools: fixed netstat -M option
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed, 19 Nov 1997 23:05:11 +0100
+
+
+netbase (3.00-1) unstable; urgency=low
+
+  * /etc/services: added binkp, fido, tfido entries
+  * /etc/init.d/netbase: enable IP spoofing protection if the kernel
+                         has the IP firewall option enabled
+  * netkit-base: ping glibc fixes
+  * net-tools: glibc fixes
+  * tcp_wrappers: added blacklist patch (if the host pattern starts
+		  with a '/' characters it will be interpreted as
+		  filename, this file can contain further host patterns).
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Fri, 19 Sep 1997 20:14:03 +0200
+
+
+netbase (2.17-1) unstable; urgency=low
+
+  * /etc/services: added asp entry
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Mon, 18 Aug 1997 00:49:40 +0200
+
+
+netbase (2.16-1) stable unstable; urgency=high
+
+  * ping: glibc fix
+  * fixed security hole in preinst script (Bug#11789)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed, 13 Aug 1997 21:39:20 +0200
+
+
+netbase (2.15-1) unstable; urgency=low
+
+  * tcp_wrappers: replaced by tcp_wrappers 7.6
+  * tcp_wrappers: wrote manual pages for safe_finger and try-from
+  * portmapper: replaced by secure portmapper 5
+  * portmapper: wrote manual pages for pmap_dump and pmap_set
+  * portmapper: renamed binary from rpc.portmap to portmap
+  * inetd: replaced by netkit-base-0.10
+  * ping: replaced by netkit-base-0.10
+  * rpcinfo: moved from netstd to netbase (netkit-base-0.10)
+  * rpcgen: moved from netstd to netbase (netkit-base-0.10)
+  * added glibc patch from Hartmut Koptein <koptein@et-inf.fho-emden.de>
+  * /etc/services: added cfengine entry
+  * net-tools: moved plipconfig and slattach from /usr/sbin to /sbin
+  * net-tools: moved plipconfig and slattach from net-tools-1.2 to
+               net-tools-1.32-alpha and removed net-tools-1.2
+  * postinst/prerm: changed the scripts so the portmapper will keep its
+                    internal RPC database during the upgrade procedure
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Thu, 24 Jul 1997 19:11:35 +0200
+
+
+netbase (2.14-1) unstable; urgency=low
+
+  * added glibc patch from Michael Alan Dorman <mdorman@lot49.med.miami.edu>
+  * nettools: increased device buffer size from 1024 to 10240 bytes
+	      for ifconfig/netstat. This is enough for the max. number
+	      of ip_alias entries (the kernel supports 256 entries)
+  * cron.daily: changed /bin/sh to /bin/bash (Bug#9907)
+  * net-tools: added FDDI support (Larry Stefani <stefani@lkg.dec.com>)
+  * /etc/services: added isdnlog, vboxd entries
+  * /etc/services: added saft, ircd, webcache and icp entries
+  * /etc/services: added poppassd as an alias for the already assigned
+		   port 106
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Mon, 16 Jun 1997 11:08:44 +0200
+
+
+netbase (2.13-1) frozen unstable; urgency=medium
+
+  * ping: fixed a bug in rtt handling (Bug#8509)
+  * cron.daily: don't copy empty files
+  * cron.daily: rotate the backup files
+  * cron.daily: added the cron.daily script to conffiles
+  * DebianNet.pm: show a warning and ask the user if he wants to continue
+		  if the user tries to remove/disable more than one entry
+		  at a time
+  * DebianNet.pm: added new variable $DebianNet::multi to override the
+		  new behaviour mentioned above
+  * update-inetd: added --multi option (see above)
+  * postinst: restart amd if necessary
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Tue, 22 Apr 1997 13:09:31 +0200
+
+
+netbase (2.12-1) frozen unstable; urgency=low
+
+  * added ipautofw-960628
+  * ipfwadm: enabled ICMP_MASQUERADE in ipfwadm
+  * /etc/services: added qmtp (Quick Mail Transfer Protocol) entries
+  * DebianNet.3pm: added some information about entries that are
+		   commented out (by default)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Thu, 10 Apr 1997 22:04:20 +0200
+
+
+netbase (2.11-1) frozen unstable; urgency=medium
+
+  * inetd: added a patch from David Holland <dholland@eecs.harvard.edu>
+	   that makes sure that inetd only uses the standard group
+	   of the user root if no additional group is specified in
+	   /etc/inetd.conf
+  * /etc/services: added entries for hylafax (snpp/fax/hylafax)
+  * update-inetd: added some information about entries that are
+		  commented out (by default)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Thu, 27 Mar 1997 23:05:56 +0100
+
+
+netbase (2.10-1) unstable; urgency=low
+
+  * portmapper: minor makefile changes
+  * nettools: some bash 2.0 fixes
+  * nettools: fixed ifconfig manual page 
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Tue, 4 Mar 1997 10:38:45 +0100
+
+
+netbase (2.09-1) unstable; urgency=high
+
+  * tcp_wrapper: updated to tcp_wrapper-7.5
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Fri, 14 Feb 1997 00:21:30 +0100
+
+
+netbase (2.08-1) unstable; urgency=low
+
+  * /etc/services: added CVS (cvspserver) entry (Bug#6631)
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Thu, 16 Jan 1997 22:22:15 +0100
+
+
+netbase (2.07-1) unstable; urgency=low
+
+  * converted to packaging standard 2.1.2.2
+  * added some information about the tcpd compile time options
+    to README.debian (Bug#6244)
+  * restart NFS and NIS services on demand (Bug#6433)
+  * update-inetd: added example to manual page (Bug#4925)
+  * ping: fixed exit status for 100% packet loss (Bug#4869)
+  * arp: fixed typo (Bug#5728)
+  * inetd: added the RFC numbers of the internal services to
+	   the inetd and inetd.conf manual pages
+
+ -- Peter Tobias <tobias@et-inf.fho-emden.de>  Wed, 15 Jan 1997 15:13:32 +0100
diff --git a/netbase-4.42/debian/compat b/netbase-4.42/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/netbase-4.42/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/netbase-4.42/debian/control b/netbase-4.42/debian/control
new file mode 100644
index 0000000..e800283
--- /dev/null
+++ b/netbase-4.42/debian/control
@@ -0,0 +1,15 @@
+Source: netbase
+Section: admin
+Priority: important
+Maintainer: Marco d'Itri <md@linux.it>
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>= 7)
+
+Package: netbase
+Architecture: all
+Depends: lsb-base (>= 3.0-6), initscripts, ${misc:Depends}
+Conflicts: openbsd-inetd (<< 0.20050402-3), inetutils-inetd (<< 2:1.4.3+20060719-3)
+Recommends: ifupdown
+Description: Basic TCP/IP networking system
+ This package provides the necessary infrastructure for basic TCP/IP based
+ networking.
diff --git a/netbase-4.42/debian/copyright b/netbase-4.42/debian/copyright
new file mode 100644
index 0000000..2a8e0d1
--- /dev/null
+++ b/netbase-4.42/debian/copyright
@@ -0,0 +1,11 @@
+This package was created by Peter Tobias tobias@et-inf.fho-emden.de on
+Wed, 24 Aug 1994 21:33:28 +0200 and maintained by Anthony Towns
+<ajt@debian.org> until 2001.
+It is currently maintained by Marco d'Itri <md@linux.it>.
+
+Copyright 1994-2010 Peter Tobias, Anthony Towns and Marco d'Itri
+
+The programs in this package are distributed under the terms of the GNU
+General Public License, version 2 as distributed by the Free Software
+Foundation. On Debian systems, a copy of this license may be found in
+/usr/share/common-licenses/GPL-2.
diff --git a/netbase-4.42/debian/netbase.init b/netbase-4.42/debian/netbase.init
new file mode 100644
index 0000000..2d668e9
--- /dev/null
+++ b/netbase-4.42/debian/netbase.init
@@ -0,0 +1,109 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          networking
+# Required-Start:    mountkernfs $local_fs
+# Required-Stop:     $local_fs
+# Should-Start:      ifupdown
+# Should-Stop:       ifupdown
+# Default-Start:     S
+# Default-Stop:      0 6
+# Short-Description: Raise network interfaces.
+### END INIT INFO
+
+PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
+
+[ -x /sbin/ifup ] || exit 0
+
+. /lib/lsb/init-functions
+
+process_options() {
+    [ -e /etc/network/options ] || return 0
+    log_warning_msg "/etc/network/options still exists and it will be IGNORED! Read README.Debian of netbase."
+}
+
+check_network_file_systems() {
+    [ -e /proc/mounts ] || return 0
+
+    if [ -e /etc/iscsi/iscsi.initramfs ]; then
+	log_warning_msg "not deconfiguring network interfaces: iSCSI root is mounted."
+	exit 0
+    fi
+
+    exec 9<&0 < /proc/mounts
+    while read DEV MTPT FSTYPE REST; do
+	case $DEV in
+	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+	    log_warning_msg "not deconfiguring network interfaces: network devices still mounted."
+	    exit 0
+	    ;;
+	esac
+	case $FSTYPE in
+	nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
+	    log_warning_msg "not deconfiguring network interfaces: network file systems still mounted."
+	    exit 0
+	    ;;
+	esac
+    done
+    exec 0<&9 9<&-
+}
+
+check_network_swap() {
+    [ -e /proc/swaps ] || return 0
+
+    exec 9<&0 < /proc/swaps
+    while read DEV MTPT FSTYPE REST; do
+	case $DEV in
+	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+	    log_warning_msg "not deconfiguring network interfaces: network swap still mounted."
+	    exit 0
+	    ;;
+	esac
+    done
+    exec 0<&9 9<&-
+}
+
+case "$1" in
+start)
+	process_options
+
+	log_action_begin_msg "Configuring network interfaces"
+	if ifup -a; then
+	    log_action_end_msg $?
+	else
+	    log_action_end_msg $?
+	fi
+	;;
+
+stop)
+	check_network_file_systems
+	check_network_swap
+
+	log_action_begin_msg "Deconfiguring network interfaces"
+	if ifdown -a --exclude=lo; then
+	    log_action_end_msg $?
+	else
+	    log_action_end_msg $?
+	fi
+	;;
+
+force-reload|restart)
+	process_options
+
+	log_warning_msg "Running $0 $1 is deprecated because it may not enable again some interfaces"
+	log_action_begin_msg "Reconfiguring network interfaces"
+	ifdown -a --exclude=lo || true
+	if ifup -a --exclude=lo; then
+	    log_action_end_msg $?
+	else
+	    log_action_end_msg $?
+	fi
+	;;
+
+*)
+	echo "Usage: /etc/init.d/networking {start|stop}"
+	exit 1
+	;;
+esac
+
+exit 0
+
diff --git a/netbase-4.42/debian/netbase.postinst b/netbase-4.42/debian/netbase.postinst
new file mode 100644
index 0000000..2dfc38d
--- /dev/null
+++ b/netbase-4.42/debian/netbase.postinst
@@ -0,0 +1,80 @@
+#!/bin/sh -e
+
+create_hosts_file() {
+  if [ -e /etc/hosts ]; then return 0; fi
+
+  cat > /etc/hosts <<-EOF
+	127.0.0.1	localhost
+	::1		localhost ip6-localhost ip6-loopback
+	fe00::0		ip6-localnet
+	ff00::0		ip6-mcastprefix
+	ff02::1		ip6-allnodes
+	ff02::2		ip6-allrouters
+
+EOF
+}
+
+create_networks_file() {
+  if [ -e /etc/networks ]; then return 0; fi
+
+  cat > /etc/networks <<-EOF
+	default		0.0.0.0
+	loopback	127.0.0.0
+	link-local	169.254.0.0
+
+EOF
+}
+
+update_rc() {
+  if [ -x /etc/init.d/networking ]; then
+    update-rc.d networking start 40 S . start 35 0 6 . > /dev/null
+  fi
+}
+
+# create bindv6only.conf on new installs and upgrades from << 4.38
+create_bindv6only_conf() {
+  if [ -e /etc/sysctl.d/bindv6only.conf ]; then
+    return 0
+  fi
+  [ "$(uname -s)" = "Linux" ] || return 0
+  [ -d /etc/sysctl.d/ ] || mkdir /etc/sysctl.d/
+  if [ "$2" ] && dpkg --compare-versions "$2" ge "4.38"; then
+    return 0
+  fi
+
+  cat >> /etc/sysctl.d/bindv6only.conf <<-EOF
+# This sysctl sets the default value of the IPV6_V6ONLY socket option.
+#
+# When disabled, IPv6 sockets will also be able to send and receive IPv4
+# traffic with addresses in the form ::ffff:192.0.2.1 and daemons listening
+# on IPv6 sockets will also accept IPv4 connections.
+#
+# When IPV6_V6ONLY is enabled, daemons interested in both IPv4 and IPv6
+# connections must open two listening sockets.
+# This is the default behaviour of almost all modern operating systems.
+
+net.ipv6.bindv6only = 1
+EOF
+}
+
+case "$1" in
+    configure)
+    if [ -z "$2" ]; then
+	create_hosts_file
+	create_networks_file
+    fi
+    update_rc
+    #create_bindv6only_conf "$@"
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+    echo "postinst called with unknown argument '$1'" >&2
+    exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
diff --git a/netbase-4.42/debian/netbase.postrm b/netbase-4.42/debian/netbase.postrm
new file mode 100644
index 0000000..dad2e94
--- /dev/null
+++ b/netbase-4.42/debian/netbase.postrm
@@ -0,0 +1,43 @@
+#!/bin/sh -e
+
+delete_if_md5_matches() {
+  local md5
+
+  if [ -e /etc/hosts ]; then
+  md5="$(md5sum /etc/hosts | sed -e 's/ .*//')"
+  case "$md5" in
+  05e70b0d3ac00a2fbc94781871ae9aa8) rm /etc/hosts ;;
+  esac
+  fi
+
+  if [ -e /etc/networks ]; then
+  md5="$(md5sum /etc/networks | sed -e 's/ .*//')"
+  case "$md5" in
+  d013c6de91b961753d4ba901347aa6c8) rm /etc/networks ;;
+  esac
+  fi
+}
+
+case "$1" in
+    remove)
+    ;;
+
+    purge)
+    update-rc.d networking remove > /dev/null
+    if [ -d /etc/sysctl.d/ ]; then
+	rm -f /etc/sysctl.d/bindv6only.conf
+	rmdir --ignore-fail-on-non-empty /etc/sysctl.d/
+    fi
+    delete_if_md5_matches
+    ;;
+
+    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+    echo "postrm called with unknown argument '$1'" >&2
+    exit 1
+    ;;
+esac
+
+#DEBHELPER#
diff --git a/netbase-4.42/debian/rules b/netbase-4.42/debian/rules
new file mode 100755
index 0000000..26785f7
--- /dev/null
+++ b/netbase-4.42/debian/rules
@@ -0,0 +1,52 @@
+#!/usr/bin/make -f
+
+D := $(CURDIR)/debian/netbase
+
+build:
+	dh_testdir
+
+#	check for duplicate etc-services entries and abort if any found
+	@echo Checking for duplicate services:
+	@if (sed 's/#.*$$//;s/[[:space:]][[:space:]]*/ /g' etc-services | \
+	      while read name serv other; do \
+	        for a in $$name $$other; do echo $$a $$serv; done; \
+              done | sort | uniq -d | sed 's/^/  /' | grep ^); \
+        then \
+	  false; \
+	else \
+	  echo "  None found"; \
+	fi
+
+clean:
+	dh_testdir
+	dh_testroot
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs etc/ etc/network/
+
+	install -o root -g root -m 0644 etc-protocols $D/etc/protocols
+	install -o root -g root -m 0644 etc-rpc $D/etc/rpc
+	install -o root -g root -m 0644 etc-services $D/etc/services
+
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs
+	dh_installdocs
+	dh_installinit --noscripts --init-script=networking
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_builddeb
+
+binary-arch:
+
+binary: binary-indep
+
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/netbase-4.42/debian/source/format b/netbase-4.42/debian/source/format
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/netbase-4.42/debian/source/format
@@ -0,0 +1 @@
+1.0
diff --git a/netbase-4.42/etc-protocols b/netbase-4.42/etc-protocols
new file mode 100644
index 0000000..dcc6392
--- /dev/null
+++ b/netbase-4.42/etc-protocols
@@ -0,0 +1,62 @@
+# Internet (IP) protocols
+#
+# Updated from http://www.iana.org/assignments/protocol-numbers and other
+# sources.
+# New protocols will be added on request if they have been officially
+# assigned by IANA and are not historical.
+# If you need a huge list of used numbers please install the nmap package.
+
+ip	0	IP		# internet protocol, pseudo protocol number
+#hopopt	0	HOPOPT		# IPv6 Hop-by-Hop Option [RFC1883]
+icmp	1	ICMP		# internet control message protocol
+igmp	2	IGMP		# Internet Group Management
+ggp	3	GGP		# gateway-gateway protocol
+ipencap	4	IP-ENCAP	# IP encapsulated in IP (officially ``IP'')
+st	5	ST		# ST datagram mode
+tcp	6	TCP		# transmission control protocol
+egp	8	EGP		# exterior gateway protocol
+igp	9	IGP		# any private interior gateway (Cisco)
+pup	12	PUP		# PARC universal packet protocol
+udp	17	UDP		# user datagram protocol
+hmp	20	HMP		# host monitoring protocol
+xns-idp	22	XNS-IDP		# Xerox NS IDP
+rdp	27	RDP		# "reliable datagram" protocol
+iso-tp4	29	ISO-TP4		# ISO Transport Protocol class 4 [RFC905]
+xtp	36	XTP		# Xpress Transfer Protocol
+ddp	37	DDP		# Datagram Delivery Protocol
+idpr-cmtp 38	IDPR-CMTP	# IDPR Control Message Transport
+ipv6	41	IPv6		# Internet Protocol, version 6
+ipv6-route 43	IPv6-Route	# Routing Header for IPv6
+ipv6-frag 44	IPv6-Frag	# Fragment Header for IPv6
+idrp	45	IDRP		# Inter-Domain Routing Protocol
+rsvp	46	RSVP		# Reservation Protocol
+gre	47	GRE		# General Routing Encapsulation
+esp	50	IPSEC-ESP	# Encap Security Payload [RFC2406]
+ah	51	IPSEC-AH	# Authentication Header [RFC2402]
+skip	57	SKIP		# SKIP
+ipv6-icmp 58	IPv6-ICMP	# ICMP for IPv6
+ipv6-nonxt 59	IPv6-NoNxt	# No Next Header for IPv6
+ipv6-opts 60	IPv6-Opts	# Destination Options for IPv6
+rspf	73	RSPF CPHB	# Radio Shortest Path First (officially CPHB)
+vmtp	81	VMTP		# Versatile Message Transport
+eigrp	88	EIGRP		# Enhanced Interior Routing Protocol (Cisco)
+ospf	89	OSPFIGP		# Open Shortest Path First IGP
+ax.25	93	AX.25		# AX.25 frames
+ipip	94	IPIP		# IP-within-IP Encapsulation Protocol
+etherip	97	ETHERIP		# Ethernet-within-IP Encapsulation [RFC3378]
+encap	98	ENCAP		# Yet Another IP encapsulation [RFC1241]
+#	99			# any private encryption scheme
+pim	103	PIM		# Protocol Independent Multicast
+ipcomp	108	IPCOMP		# IP Payload Compression Protocol
+vrrp	112	VRRP		# Virtual Router Redundancy Protocol
+l2tp	115	L2TP		# Layer Two Tunneling Protocol [RFC2661]
+isis	124	ISIS		# IS-IS over IPv4
+sctp	132	SCTP		# Stream Control Transmission Protocol
+fc	133	FC		# Fibre Channel
+udplite	136	UDPLite		# UDP-Lite [RFC3828]
+mpls-in-ip 137	MPLS-in-IP	# MPLS-in-IP [RFC4023]
+manet	138			# MANET Protocols [RFC5498]
+hip	139	HIP		# Host Identity Protocol
+shim6	140	Shim6		# Shim6 Protocol [RFC5533]
+wesp	141	WESP		# Wrapped Encapsulating Security Payload
+rohc	142	ROHC		# Robust Header Compression
diff --git a/netbase-4.42/etc-rpc b/netbase-4.42/etc-rpc
new file mode 100644
index 0000000..1b30625
--- /dev/null
+++ b/netbase-4.42/etc-rpc
@@ -0,0 +1,40 @@
+# This file contains user readable names that can be used in place of rpc
+# program numbers.
+
+portmapper	100000	portmap sunrpc
+rstatd		100001	rstat rstat_svc rup perfmeter
+rusersd		100002	rusers
+nfs		100003	nfsprog
+ypserv		100004	ypprog
+mountd		100005	mount showmount
+ypbind		100007
+walld		100008	rwall shutdown
+yppasswdd	100009	yppasswd
+etherstatd	100010	etherstat
+rquotad		100011	rquotaprog quota rquota
+sprayd		100012	spray
+3270_mapper	100013
+rje_mapper	100014
+selection_svc	100015	selnsvc
+database_svc	100016
+rexd		100017	rex
+alis		100018
+sched		100019
+llockmgr	100020
+nlockmgr	100021
+x25.inr		100022
+statmon		100023
+status		100024
+bootparam	100026
+ypupdated	100028	ypupdate
+keyserv		100029	keyserver
+tfsd		100037 
+nsed		100038
+nsemntd		100039
+ypxfrd		100069
+pcnfsd		150001
+amd		300019	amq
+sgi_fam		391002
+ugidd		545580417
+fypxfrd		600100069	freebsd-ypxfrd
+bwnfsd          788585389
diff --git a/netbase-4.42/etc-services b/netbase-4.42/etc-services
new file mode 100644
index 0000000..1754689
--- /dev/null
+++ b/netbase-4.42/etc-services
@@ -0,0 +1,591 @@
+# Network services, Internet style
+#
+# Note that it is presently the policy of IANA to assign a single well-known
+# port number for both TCP and UDP; hence, officially ports have two entries
+# even if the protocol doesn't support UDP operations.
+#
+# Updated from http://www.iana.org/assignments/port-numbers and other
+# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
+# New ports will be added on request if they have been officially assigned
+# by IANA and used in the real-world or are needed by a debian package.
+# If you need a huge list of used numbers please install the nmap package.
+
+tcpmux		1/tcp				# TCP port service multiplexer
+echo		7/tcp
+echo		7/udp
+discard		9/tcp		sink null
+discard		9/udp		sink null
+systat		11/tcp		users
+daytime		13/tcp
+daytime		13/udp
+netstat		15/tcp
+qotd		17/tcp		quote
+msp		18/tcp				# message send protocol
+msp		18/udp
+chargen		19/tcp		ttytst source
+chargen		19/udp		ttytst source
+ftp-data	20/tcp
+ftp		21/tcp
+fsp		21/udp		fspd
+ssh		22/tcp				# SSH Remote Login Protocol
+ssh		22/udp
+telnet		23/tcp
+smtp		25/tcp		mail
+time		37/tcp		timserver
+time		37/udp		timserver
+rlp		39/udp		resource	# resource location
+nameserver	42/tcp		name		# IEN 116
+whois		43/tcp		nicname
+tacacs		49/tcp				# Login Host Protocol (TACACS)
+tacacs		49/udp
+re-mail-ck	50/tcp				# Remote Mail Checking Protocol
+re-mail-ck	50/udp
+domain		53/tcp				# name-domain server
+domain		53/udp
+mtp		57/tcp				# deprecated
+tacacs-ds	65/tcp				# TACACS-Database Service
+tacacs-ds	65/udp
+bootps		67/tcp				# BOOTP server
+bootps		67/udp
+bootpc		68/tcp				# BOOTP client
+bootpc		68/udp
+tftp		69/udp
+gopher		70/tcp				# Internet Gopher
+gopher		70/udp
+rje		77/tcp		netrjs
+finger		79/tcp
+www		80/tcp		http		# WorldWideWeb HTTP
+www		80/udp				# HyperText Transfer Protocol
+link		87/tcp		ttylink
+kerberos	88/tcp		kerberos5 krb5 kerberos-sec	# Kerberos v5
+kerberos	88/udp		kerberos5 krb5 kerberos-sec	# Kerberos v5
+supdup		95/tcp
+hostnames	101/tcp		hostname	# usually from sri-nic
+iso-tsap	102/tcp		tsap		# part of ISODE
+acr-nema	104/tcp		dicom		# Digital Imag. & Comm. 300
+acr-nema	104/udp		dicom		# Digital Imag. & Comm. 300
+csnet-ns	105/tcp		cso-ns		# also used by CSO name server
+csnet-ns	105/udp		cso-ns
+rtelnet		107/tcp				# Remote Telnet
+rtelnet		107/udp
+pop2		109/tcp		postoffice pop-2 # POP version 2
+pop2		109/udp		pop-2
+pop3		110/tcp		pop-3		# POP version 3
+pop3		110/udp		pop-3
+sunrpc		111/tcp		portmapper	# RPC 4.0 portmapper
+sunrpc		111/udp		portmapper
+auth		113/tcp		authentication tap ident
+sftp		115/tcp
+uucp-path	117/tcp
+nntp		119/tcp		readnews untp	# USENET News Transfer Protocol
+ntp		123/tcp
+ntp		123/udp				# Network Time Protocol
+pwdgen		129/tcp				# PWDGEN service
+pwdgen		129/udp				# PWDGEN service
+loc-srv		135/tcp		epmap		# Location Service
+loc-srv		135/udp		epmap
+netbios-ns	137/tcp				# NETBIOS Name Service
+netbios-ns	137/udp
+netbios-dgm	138/tcp				# NETBIOS Datagram Service
+netbios-dgm	138/udp
+netbios-ssn	139/tcp				# NETBIOS session service
+netbios-ssn	139/udp
+imap2		143/tcp		imap		# Interim Mail Access P 2 and 4
+imap2		143/udp		imap
+snmp		161/tcp				# Simple Net Mgmt Protocol
+snmp		161/udp				# Simple Net Mgmt Protocol
+snmp-trap	162/tcp		snmptrap	# Traps for SNMP
+snmp-trap	162/udp		snmptrap	# Traps for SNMP
+cmip-man	163/tcp				# ISO mgmt over IP (CMOT)
+cmip-man	163/udp
+cmip-agent	164/tcp
+cmip-agent	164/udp
+mailq		174/tcp			# Mailer transport queue for Zmailer
+mailq		174/udp			# Mailer transport queue for Zmailer
+xdmcp		177/tcp				# X Display Mgr. Control Proto
+xdmcp		177/udp
+nextstep	178/tcp		NeXTStep NextStep	# NeXTStep window
+nextstep	178/udp		NeXTStep NextStep	#  server
+bgp		179/tcp				# Border Gateway Protocol
+bgp		179/udp
+prospero	191/tcp				# Cliff Neuman's Prospero
+prospero	191/udp
+irc		194/tcp				# Internet Relay Chat
+irc		194/udp
+smux		199/tcp				# SNMP Unix Multiplexer
+smux		199/udp
+at-rtmp		201/tcp				# AppleTalk routing
+at-rtmp		201/udp
+at-nbp		202/tcp				# AppleTalk name binding
+at-nbp		202/udp
+at-echo		204/tcp				# AppleTalk echo
+at-echo		204/udp
+at-zis		206/tcp				# AppleTalk zone information
+at-zis		206/udp
+qmtp		209/tcp				# Quick Mail Transfer Protocol
+qmtp		209/udp				# Quick Mail Transfer Protocol
+z3950		210/tcp		wais		# NISO Z39.50 database
+z3950		210/udp		wais
+ipx		213/tcp				# IPX
+ipx		213/udp
+imap3		220/tcp				# Interactive Mail Access
+imap3		220/udp				# Protocol v3
+pawserv		345/tcp				# Perf Analysis Workbench
+pawserv		345/udp
+zserv		346/tcp				# Zebra server
+zserv		346/udp
+fatserv		347/tcp				# Fatmen Server
+fatserv		347/udp
+rpc2portmap	369/tcp
+rpc2portmap	369/udp				# Coda portmapper
+codaauth2	370/tcp
+codaauth2	370/udp				# Coda authentication server
+clearcase	371/tcp		Clearcase
+clearcase	371/udp		Clearcase
+ulistserv	372/tcp				# UNIX Listserv
+ulistserv	372/udp
+ldap		389/tcp			# Lightweight Directory Access Protocol
+ldap		389/udp
+imsp		406/tcp			# Interactive Mail Support Protocol
+imsp		406/udp
+svrloc		427/tcp				# Server Location
+svrloc		427/udp				# Server Location
+https		443/tcp				# http protocol over TLS/SSL
+https		443/udp
+snpp		444/tcp				# Simple Network Paging Protocol
+snpp		444/udp
+microsoft-ds	445/tcp				# Microsoft Naked CIFS
+microsoft-ds	445/udp
+kpasswd		464/tcp
+kpasswd		464/udp
+saft		487/tcp			# Simple Asynchronous File Transfer
+saft		487/udp
+isakmp		500/tcp			# IPsec - Internet Security Association
+isakmp		500/udp			#  and Key Management Protocol
+rtsp		554/tcp			# Real Time Stream Control Protocol
+rtsp		554/udp			# Real Time Stream Control Protocol
+nqs		607/tcp				# Network Queuing system
+nqs		607/udp
+npmp-local	610/tcp		dqs313_qmaster		# npmp-local / DQS
+npmp-local	610/udp		dqs313_qmaster
+npmp-gui	611/tcp		dqs313_execd		# npmp-gui / DQS
+npmp-gui	611/udp		dqs313_execd
+hmmp-ind	612/tcp		dqs313_intercell	# HMMP Indication / DQS
+hmmp-ind	612/udp		dqs313_intercell
+qmqp		628/tcp
+qmqp		628/udp
+ipp		631/tcp				# Internet Printing Protocol
+ipp		631/udp
+#
+# UNIX specific services
+#
+exec		512/tcp
+biff		512/udp		comsat
+login		513/tcp
+who		513/udp		whod
+shell		514/tcp		cmd		# no passwords used
+syslog		514/udp
+printer		515/tcp		spooler		# line printer spooler
+talk		517/udp
+ntalk		518/udp
+route		520/udp		router routed	# RIP
+timed		525/udp		timeserver
+tempo		526/tcp		newdate
+courier		530/tcp		rpc
+conference	531/tcp		chat
+netnews		532/tcp		readnews
+netwall		533/udp				# for emergency broadcasts
+gdomap		538/tcp				# GNUstep distributed objects
+gdomap		538/udp
+uucp		540/tcp		uucpd		# uucp daemon
+klogin		543/tcp				# Kerberized `rlogin' (v5)
+kshell		544/tcp		krcmd		# Kerberized `rsh' (v5)
+dhcpv6-client	546/tcp
+dhcpv6-client	546/udp
+dhcpv6-server	547/tcp
+dhcpv6-server	547/udp
+afpovertcp	548/tcp				# AFP over TCP
+afpovertcp	548/udp
+idfp		549/tcp
+idfp		549/udp
+remotefs	556/tcp		rfs_server rfs	# Brunhoff remote filesystem
+nntps		563/tcp		snntp		# NNTP over SSL
+nntps		563/udp		snntp
+submission	587/tcp				# Submission [RFC4409]
+submission	587/udp
+ldaps		636/tcp				# LDAP over SSL
+ldaps		636/udp
+tinc		655/tcp				# tinc control port
+tinc		655/udp
+silc		706/tcp
+silc		706/udp
+kerberos-adm	749/tcp				# Kerberos `kadmin' (v5)
+#
+webster		765/tcp				# Network dictionary
+webster		765/udp
+rsync		873/tcp
+rsync		873/udp
+ftps-data	989/tcp				# FTP over SSL (data)
+ftps		990/tcp
+telnets		992/tcp				# Telnet over SSL
+telnets		992/udp
+imaps		993/tcp				# IMAP over SSL
+imaps		993/udp
+ircs		994/tcp				# IRC over SSL
+ircs		994/udp
+pop3s		995/tcp				# POP-3 over SSL
+pop3s		995/udp
+#
+# From ``Assigned Numbers'':
+#
+#> The Registered Ports are not controlled by the IANA and on most systems
+#> can be used by ordinary user processes or programs executed by ordinary
+#> users.
+#
+#> Ports are used in the TCP [45,106] to name the ends of logical
+#> connections which carry long term conversations.  For the purpose of
+#> providing services to unknown callers, a service contact port is
+#> defined.  This list specifies the port used by the server process as its
+#> contact port.  While the IANA can not control uses of these ports it
+#> does register or list uses of these ports as a convienence to the
+#> community.
+#
+socks		1080/tcp			# socks proxy server
+socks		1080/udp
+proofd		1093/tcp
+proofd		1093/udp
+rootd		1094/tcp
+rootd		1094/udp
+openvpn		1194/tcp
+openvpn		1194/udp
+rmiregistry	1099/tcp			# Java RMI Registry
+rmiregistry	1099/udp
+kazaa		1214/tcp
+kazaa		1214/udp
+nessus		1241/tcp			# Nessus vulnerability
+nessus		1241/udp			#  assessment scanner
+lotusnote	1352/tcp	lotusnotes	# Lotus Note
+lotusnote	1352/udp	lotusnotes
+ms-sql-s	1433/tcp			# Microsoft SQL Server
+ms-sql-s	1433/udp
+ms-sql-m	1434/tcp			# Microsoft SQL Monitor
+ms-sql-m	1434/udp
+ingreslock	1524/tcp
+ingreslock	1524/udp
+prospero-np	1525/tcp			# Prospero non-privileged
+prospero-np	1525/udp
+datametrics	1645/tcp	old-radius
+datametrics	1645/udp	old-radius
+sa-msg-port	1646/tcp	old-radacct
+sa-msg-port	1646/udp	old-radacct
+kermit		1649/tcp
+kermit		1649/udp
+l2f		1701/tcp	l2tp
+l2f		1701/udp	l2tp
+radius		1812/tcp
+radius		1812/udp
+radius-acct	1813/tcp	radacct		# Radius Accounting
+radius-acct	1813/udp	radacct
+msnp		1863/tcp			# MSN Messenger
+msnp		1863/udp
+unix-status	1957/tcp			# remstats unix-status server
+log-server	1958/tcp			# remstats log server
+remoteping	1959/tcp			# remstats remoteping server
+cisco-sccp	2000/tcp			# Cisco SCCP
+cisco-sccp	2000/udp
+search		2010/tcp	ndtp
+pipe_server	2010/tcp
+nfs		2049/tcp			# Network File System
+nfs		2049/udp			# Network File System
+gnunet		2086/tcp
+gnunet		2086/udp
+rtcm-sc104	2101/tcp			# RTCM SC-104 IANA 1/29/99
+rtcm-sc104	2101/udp
+gsigatekeeper	2119/tcp
+gsigatekeeper	2119/udp
+gris		2135/tcp		# Grid Resource Information Server
+gris		2135/udp		# Grid Resource Information Server
+cvspserver	2401/tcp			# CVS client/server operations
+cvspserver	2401/udp
+venus		2430/tcp			# codacon port
+venus		2430/udp			# Venus callback/wbc interface
+venus-se	2431/tcp			# tcp side effects
+venus-se	2431/udp			# udp sftp side effect
+codasrv		2432/tcp			# not used
+codasrv		2432/udp			# server port
+codasrv-se	2433/tcp			# tcp side effects
+codasrv-se	2433/udp			# udp sftp side effect
+mon		2583/tcp			# MON traps
+mon		2583/udp
+dict		2628/tcp			# Dictionary server
+dict		2628/udp
+gsiftp		2811/tcp
+gsiftp		2811/udp
+gpsd		2947/tcp
+gpsd		2947/udp
+gds_db		3050/tcp			# InterBase server
+gds_db		3050/udp
+icpv2		3130/tcp	icp		# Internet Cache Protocol
+icpv2		3130/udp	icp
+mysql		3306/tcp
+mysql		3306/udp
+nut		3493/tcp			# Network UPS Tools
+nut		3493/udp
+distcc		3632/tcp			# distributed compiler
+distcc		3632/udp
+daap		3689/tcp			# Digital Audio Access Protocol
+daap		3689/udp
+svn		3690/tcp	subversion	# Subversion protocol
+svn		3690/udp	subversion
+suucp		4031/tcp			# UUCP over SSL
+suucp		4031/udp			# UUCP over SSL
+sysrqd		4094/tcp			# sysrq daemon
+sysrqd		4094/udp			# sysrq daemon
+sieve		4190/tcp			# ManageSieve Protocol
+remctl		4373/tcp		# Remote Authenticated Command Service
+remctl		4373/udp		# Remote Authenticated Command Service
+iax		4569/tcp			# Inter-Asterisk eXchange
+iax		4569/udp
+radmin-port	4899/tcp			# RAdmin Port
+radmin-port	4899/udp
+rfe		5002/udp			# Radio Free Ethernet
+rfe		5002/tcp
+mmcc		5050/tcp	# multimedia conference control tool (Yahoo IM)
+mmcc		5050/udp
+sip		5060/tcp			# Session Initiation Protocol
+sip		5060/udp
+sip-tls		5061/tcp
+sip-tls		5061/udp
+aol		5190/tcp			# AIM
+aol		5190/udp
+xmpp-client	5222/tcp	jabber-client	# Jabber Client Connection
+xmpp-client	5222/udp	jabber-client
+xmpp-server	5269/tcp	jabber-server	# Jabber Server Connection
+xmpp-server	5269/udp	jabber-server
+cfengine	5308/tcp
+cfengine	5308/udp
+mdns		5353/tcp			# Multicast DNS
+mdns		5353/udp			# Multicast DNS
+postgresql	5432/tcp	postgres	# PostgreSQL Database
+postgresql	5432/udp	postgres
+freeciv		5556/tcp	rptp		# Freeciv gameplay
+freeciv		5556/udp
+amqp		5672/tcp
+amqp		5672/udp
+amqp		5672/sctp
+ggz		5688/tcp			# GGZ Gaming Zone
+ggz		5688/udp			# GGZ Gaming Zone
+x11		6000/tcp	x11-0		# X Window System
+x11		6000/udp	x11-0
+x11-1		6001/tcp
+x11-1		6001/udp
+x11-2		6002/tcp
+x11-2		6002/udp
+x11-3		6003/tcp
+x11-3		6003/udp
+x11-4		6004/tcp
+x11-4		6004/udp
+x11-5		6005/tcp
+x11-5		6005/udp
+x11-6		6006/tcp
+x11-6		6006/udp
+x11-7		6007/tcp
+x11-7		6007/udp
+gnutella-svc	6346/tcp			# gnutella
+gnutella-svc	6346/udp
+gnutella-rtr	6347/tcp			# gnutella
+gnutella-rtr	6347/udp
+sge_qmaster	6444/tcp			# Grid Engine Qmaster Service
+sge_qmaster	6444/udp			# Grid Engine Qmaster Service
+sge_execd	6445/tcp			# Grid Engine Execution Service
+sge_execd	6445/udp			# Grid Engine Execution Service
+afs3-fileserver 7000/tcp	bbs		# file server itself
+afs3-fileserver 7000/udp	bbs
+afs3-callback	7001/tcp			# callbacks to cache managers
+afs3-callback	7001/udp
+afs3-prserver	7002/tcp			# users & groups database
+afs3-prserver	7002/udp
+afs3-vlserver	7003/tcp			# volume location database
+afs3-vlserver	7003/udp
+afs3-kaserver	7004/tcp			# AFS/Kerberos authentication
+afs3-kaserver	7004/udp
+afs3-volser	7005/tcp			# volume managment server
+afs3-volser	7005/udp
+afs3-errors	7006/tcp			# error interpretation service
+afs3-errors	7006/udp
+afs3-bos	7007/tcp			# basic overseer process
+afs3-bos	7007/udp
+afs3-update	7008/tcp			# server-to-server updater
+afs3-update	7008/udp
+afs3-rmtsys	7009/tcp			# remote cache manager service
+afs3-rmtsys	7009/udp
+font-service	7100/tcp	xfs		# X Font Service
+font-service	7100/udp	xfs
+http-alt	8080/tcp	webcache	# WWW caching service
+http-alt	8080/udp			# WWW caching service
+bacula-dir	9101/tcp			# Bacula Director
+bacula-dir	9101/udp
+bacula-fd	9102/tcp			# Bacula File Daemon
+bacula-fd	9102/udp
+bacula-sd	9103/tcp			# Bacula Storage Daemon
+bacula-sd	9103/udp
+xmms2		9667/tcp	# Cross-platform Music Multiplexing System
+xmms2		9667/udp	# Cross-platform Music Multiplexing System
+zabbix-agent	10050/tcp			# Zabbix Agent
+zabbix-agent	10050/udp			# Zabbix Agent
+zabbix-trapper	10051/tcp			# Zabbix Trapper
+zabbix-trapper	10051/udp			# Zabbix Trapper
+amanda		10080/tcp			# amanda backup services
+amanda		10080/udp
+hkp		11371/tcp			# OpenPGP HTTP Keyserver
+hkp		11371/udp			# OpenPGP HTTP Keyserver
+bprd		13720/tcp			# VERITAS NetBackup
+bprd		13720/udp
+bpdbm		13721/tcp			# VERITAS NetBackup
+bpdbm		13721/udp
+bpjava-msvc	13722/tcp			# BP Java MSVC Protocol
+bpjava-msvc	13722/udp
+vnetd		13724/tcp			# Veritas Network Utility
+vnetd		13724/udp
+bpcd		13782/tcp			# VERITAS NetBackup
+bpcd		13782/udp
+vopied		13783/tcp			# VERITAS NetBackup
+vopied		13783/udp
+dcap		22125/tcp			# dCache Access Protocol
+gsidcap		22128/tcp			# GSI dCache Access Protocol
+wnn6		22273/tcp			# wnn6
+wnn6		22273/udp
+
+#
+# Datagram Delivery Protocol services
+#
+rtmp		1/ddp			# Routing Table Maintenance Protocol
+nbp		2/ddp			# Name Binding Protocol
+echo		4/ddp			# AppleTalk Echo Protocol
+zip		6/ddp			# Zone Information Protocol
+
+#=========================================================================
+# The remaining port numbers are not as allocated by IANA.
+#=========================================================================
+
+# Kerberos (Project Athena/MIT) services
+# Note that these are for Kerberos v4, and are unofficial.  Sites running
+# v4 should uncomment these and comment out the v5 entries above.
+#
+kerberos4	750/udp		kerberos-iv kdc	# Kerberos (server)
+kerberos4	750/tcp		kerberos-iv kdc
+kerberos_master	751/udp				# Kerberos authentication
+kerberos_master	751/tcp
+passwd_server	752/udp				# Kerberos passwd server
+krb_prop	754/tcp		krb5_prop hprop	# Kerberos slave propagation
+krbupdate	760/tcp		kreg		# Kerberos registration
+swat		901/tcp				# swat
+kpop		1109/tcp			# Pop with Kerberos
+knetd		2053/tcp			# Kerberos de-multiplexor
+zephyr-srv	2102/udp			# Zephyr server
+zephyr-clt	2103/udp			# Zephyr serv-hm connection
+zephyr-hm	2104/udp			# Zephyr hostmanager
+eklogin		2105/tcp			# Kerberos encrypted rlogin
+# Hmmm. Are we using Kv4 or Kv5 now? Worrying.
+# The following is probably Kerberos v5  --- ajt@debian.org (11/02/2000)
+kx		2111/tcp			# X over Kerberos
+iprop		2121/tcp			# incremental propagation
+#
+# Unofficial but necessary (for NetBSD) services
+#
+supfilesrv	871/tcp				# SUP server
+supfiledbg	1127/tcp			# SUP debugging
+
+#
+# Services added for the Debian GNU/Linux distribution
+#
+linuxconf	98/tcp				# LinuxConf
+poppassd	106/tcp				# Eudora
+poppassd	106/udp
+ssmtp		465/tcp		smtps		# SMTP over SSL
+moira_db	775/tcp				# Moira database
+moira_update	777/tcp				# Moira update protocol
+moira_ureg	779/udp				# Moira user registration
+spamd		783/tcp				# spamassassin daemon
+omirr		808/tcp		omirrd		# online mirror
+omirr		808/udp		omirrd
+customs		1001/tcp			# pmake customs server
+customs		1001/udp
+skkserv		1178/tcp			# skk jisho server port
+predict		1210/udp			# predict -- satellite tracking
+rmtcfg		1236/tcp			# Gracilis Packeten remote config server
+wipld		1300/tcp			# Wipl network monitor
+xtel		1313/tcp			# french minitel
+xtelw		1314/tcp			# french minitel
+support		1529/tcp			# GNATS
+cfinger		2003/tcp			# GNU Finger
+frox		2121/tcp			# frox: caching ftp proxy
+ninstall	2150/tcp			# ninstall service
+ninstall	2150/udp
+zebrasrv	2600/tcp			# zebra service
+zebra		2601/tcp			# zebra vty
+ripd		2602/tcp			# ripd vty (zebra)
+ripngd		2603/tcp			# ripngd vty (zebra)
+ospfd		2604/tcp			# ospfd vty (zebra)
+bgpd		2605/tcp			# bgpd vty (zebra)
+ospf6d		2606/tcp			# ospf6d vty (zebra)
+ospfapi		2607/tcp			# OSPF-API
+isisd		2608/tcp			# ISISd vty (zebra)
+afbackup	2988/tcp			# Afbackup system
+afbackup	2988/udp
+afmbackup	2989/tcp			# Afmbackup system
+afmbackup	2989/udp
+xtell		4224/tcp			# xtell server
+fax		4557/tcp			# FAX transmission service (old)
+hylafax		4559/tcp			# HylaFAX client-server protocol (new)
+distmp3		4600/tcp			# distmp3host daemon
+munin		4949/tcp	lrrd		# Munin
+enbd-cstatd	5051/tcp			# ENBD client statd
+enbd-sstatd	5052/tcp			# ENBD server statd
+pcrd		5151/tcp			# PCR-1000 Daemon
+noclog		5354/tcp			# noclogd with TCP (nocol)
+noclog		5354/udp			# noclogd with UDP (nocol)
+hostmon		5355/tcp			# hostmon uses TCP (nocol)
+hostmon		5355/udp			# hostmon uses UDP (nocol)
+rplay		5555/udp			# RPlay audio service
+nsca		5667/tcp			# Nagios Agent - NSCA
+mrtd		5674/tcp			# MRT Routing Daemon
+bgpsim		5675/tcp			# MRT Routing Simulator
+canna		5680/tcp			# cannaserver
+sane-port	6566/tcp	sane saned	# SANE network scanner daemon
+ircd		6667/tcp			# Internet Relay Chat
+zope-ftp	8021/tcp			# zope management by ftp
+tproxy		8081/tcp			# Transparent Proxy
+omniorb		8088/tcp			# OmniORB
+omniorb		8088/udp
+clc-build-daemon 8990/tcp			# Common lisp build daemon
+xinetd		9098/tcp
+mandelspawn	9359/udp	mandelbrot	# network mandelbrot
+git		9418/tcp			# Git Version Control System
+zope		9673/tcp			# zope server
+webmin		10000/tcp
+kamanda		10081/tcp			# amanda backup services (Kerberos)
+kamanda		10081/udp
+amandaidx	10082/tcp			# amanda backup services
+amidxtape	10083/tcp			# amanda backup services
+smsqp		11201/tcp			# Alamin SMS gateway
+smsqp		11201/udp
+xpilot		15345/tcp			# XPilot Contact Port
+xpilot		15345/udp
+sgi-cmsd	17001/udp		# Cluster membership services daemon
+sgi-crsd	17002/udp
+sgi-gcd		17003/udp			# SGI Group membership daemon
+sgi-cad		17004/tcp			# Cluster Admin daemon
+isdnlog		20011/tcp			# isdn logging system
+isdnlog		20011/udp
+vboxd		20012/tcp			# voice box system
+vboxd		20012/udp
+binkp		24554/tcp			# binkp fidonet protocol
+asp		27374/tcp			# Address Search Protocol
+asp		27374/udp
+csync2		30865/tcp			# cluster synchronization tool
+dircproxy	57000/tcp			# Detachable IRC Proxy
+tfido		60177/tcp			# fidonet EMSI over telnet
+fido		60179/tcp			# fidonet EMSI over TCP
+
+# Local services
diff --git a/netbase.tar.gz b/netbase.tar.gz
new file mode 100644
index 0000000..52215d8
--- /dev/null
+++ b/netbase.tar.gz
Binary files differ
diff --git a/netbase.url b/netbase.url
new file mode 100644
index 0000000..b0d05d5
--- /dev/null
+++ b/netbase.url
@@ -0,0 +1 @@
+ftp://ftp.debian.org/debian/pool/main/n/netbase/netbase_4.42.tar.gz
diff --git a/netbase.version b/netbase.version
new file mode 100644
index 0000000..b7f3ed4
--- /dev/null
+++ b/netbase.version
@@ -0,0 +1 @@
+4.42
