#
# The master for this file is /n/fs/lib/ndb/local
#
# This file gets copied to:
# /n/lookout/lib/ndb  by /n/lookout/lib/ndb/mkfile  run by /n/fs/cron/ndb/cron
# /n/boundary/lib/ndb by /n/boundary/lib/ndb/mkfile run by /n/fs/cron/ndb/cron
#

#
#   files comprising the database
#   changing this list seems to confuse dhcpd, so be sure to restart
#   dhcpd on lookout and neeps if you change the list.
#   dns doesn't adapt either, so dns servers not just acting as forwarders
#   (e.g., chips) will have to be rebooted.
#
database=
	file=/lib/ndb/local
	file=/lib/ndb/common

#	file=/lib/ndb/local-cs
#	file=/lib/ndb/local-ie
#	file=/lib/ndb/friends
#	file=/lib/ndb/grid
#	file=/lib/ndb/diversiorum
#	file=/lib/ndb/local-aw

#
#  because the public demands the name localhost
#
ip=127.0.0.1 sys=localhost dom=localhost

#
#  telephones
#
sys=guard
	telco=,1800,
sys=teltest1
	telco=4646720
sys=teltest2
	telco=4646626
sys=fax
	telco=5824417

#
#  radius servers
#	used by auth/secureidcheck
#
sys=lra-radius
	ip=135.3.2.165	# usilnr01.ndc.lucent.com   arthursmith may 2006
	ip=135.3.8.149  # usilnr02.ndc.lucent.com   arthursmith may 2006

#
# soa= means we are authoritative for that zone and will serve its data.
#
# soa=delegated means we are delegating name service for a subtree of our
# zone(s) to other nameservers; we aren't authoritative for that zone's data
# and it's someone else's problem.
#
# neither of those means we're just pointing at a zone's nameservers.
#
dom=bell-labs.com
	dom=lucent.com
	dom=alcatel-lucent.be
	dom=alcatel-lucent.by
	dom=alcatel-lucent.co.il
	dom=alcatel-lucent.co.za
	dom=alcatel-lucent.com
	dom=alcatel-lucent.de
	dom=alcatel-lucent.ge
	dom=alcatel-lucent.hr
	dom=alcatel-lucent.mk
	dom=alcatel-lucent.rs
	dom=alcatel-lucent.uz
	dom=alcatel.de
	dom=alcatel.mn
	dom=alcatel.ro
	refresh=1000000000 ttl=1000000000
	ns=nj-100001-qip01.mh.lucent.com
	ns=nj-100001-qip02.mh.lucent.com
dom=
	refresh=1000000000 ttl=1000000000
	ns=nj-100001-qip01.mh.lucent.com
	ns=nj-100001-qip02.mh.lucent.com
#	ns=mince.cs.bell-labs.com			# only for straddling

dom=nj-100001-qip01.mh.lucent.com ip=135.222.4.10 ttl=1000000000
dom=nj-100001-qip02.mh.lucent.com ip=135.222.4.11 ttl=1000000000

#
#  look at /lib/ndb/local-cs for cs.bell-labs.com
#

# NB: time[123].net.lucent.com are corporate ntp servers

# local loopback
ipnet=loopback ip=127.0.0.0
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	dns=chips
	wins=135.222.4.26		# na02usnj1000012.mh.lucent.com
	ntp=time1.net.lucent.com
	ntp=chips
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ih.post.lucent.com
	post=ho.post.lucent.com
	smtp=chips.cs.bell-labs.com
ip=127.0.0.1 sys=localhost
	dom=localhost.cs.bell-labs.com

#
# indian hill network for Aruba (viaduct replacement) test
#
ipnet=ih ip=135.2.104.0 ipmask=255.255.255.0 ipgw=135.2.104.254
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	secstore=p9auth
	dns=nj-100001-qip01.mh.lucent.com		# for unix machines
	dns=nj-100001-qip02.mh.lucent.com
	wins=135.222.4.26	# na02usnj1000012.mh.lucent.com
	ntp=chips
	ntp=time1.net.lucent.com
	ntp=time2.net.lucent.com
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ih.post.lucent.com
	post=ho.post.lucent.com
	smtp=chips.cs.bell-labs.com

#
# mh's ip networks (to specify default plan 9 variables like fs, auth, ipgw).
#
# note that there are 3 possible submasks: the usual one
# (255.255.255.0), the second for mh-sas (255.255.252.0), the third for
# tc-net (255.255.255.224).  We are only responsible for
# 135.104.^(7 8 9 50 56) now and .8 will eventually go entirely to IT.
#
# subnet assignments from long ago:
# 1-10		1127	cs
# 10-19		1121	math
# 20-29		1126	like cs
# 30-39		1122	speech
# 40-49		1121	math
# 50-59		1127	cs
# 61-62		atm nets
# 64-71		reserved for physics through lecuoma
# 70		plexus
# 72-79		1123	?
# 85		1127	cs
# 104-111	1124	?
# 117		1127	cs (this oughta move)
# 200-249	home networks
# 250-255	test nets
#
ipnet=mh-astro ip=135.104.0.0 ipmask=255.255.0.0
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	secstore=p9auth
	dns=nj-100001-qip01.mh.lucent.com		# for unix machines
	dns=nj-100001-qip02.mh.lucent.com
	wins=135.222.4.26			# na02usnj1000012.mh.lucent.com
	ntp=chips
	ntp=time1.net.lucent.com
	ntp=time2.net.lucent.com
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ih.post.lucent.com
	post=ho.post.lucent.com
	smtp=chips.cs.bell-labs.com
	nntp=news.eternal-september.org
#	nntp=nntp.aioe.org

ipnet=mh-rbone ip=135.104.1.0 ipmask=255.255.255.0
	ipgw=135.104.1.21
# upper omniswitch in the corner of 2c501; replaces fribble
ip=135.104.1.50 sys=omni2c500-104-1 dom=omni2c500-104-1.research.bell-labs.com

# see local-cs for .51-.53


# mh's ipv6 networks
ipnet=mh-astro6 ip=fe80:: ipmask=/64
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	dns=chips
	wins=135.222.4.26		# na02usnj1000012.mh.lucent.com
#	ntp=oncore
	ntp=chips
	ntp=time1.net.lucent.com
	ntp=time2.net.lucent.com
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ho.post.lucent.com
	post=ih.post.lucent.com
	smtp=chips.cs.bell-labs.com

# mh's ipv4 networks
ipnet=mh-bldg3 ip=135.3.0.0
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	dns=nj-100001-qip01.mh.lucent.com
	dns=nj-100001-qip02.mh.lucent.com
	wins=135.222.4.26		# na02usnj1000012.mh.lucent.com
	ntp=guard.research.bell-labs.com
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ho.post.lucent.com
	post=ih.post.lucent.com

# new IT-run network
ipnet=mh-bldg3-new ip=135.222.0.0
	fs=pie.cs.bell-labs.com
	venti=pie.cs.bell-labs.com
	auth=p9auth
	dns=nj-100001-qip01.mh.lucent.com
	dns=nj-100001-qip02.mh.lucent.com
	wins=135.222.4.26		# na02usnj1000012.mh.lucent.com
	ntp=guard.research.bell-labs.com
	time=slocum
	dnsdomain=cs.bell-labs.com
	dnsdomain=research.bell-labs.com
	dnsdomain=bell-labs.com
	radius=lra-radius
	post=postdir.post.lucent.com
	post=ho.post.lucent.com
	post=ih.post.lucent.com

#
# since this mask covers a larger area than the default mask for
# 135.104.0.0, we have to list each /24 network contained in the /22 one.
# 135.104.20.0/24 contains transparent web proxies, firewalls, etc.
#
ipnet=mh-sas ip=135.104.20.0 ipmask=255.255.252.0
	ipgw=135.104.20.1
# Cisco 7513 in 6th flr. node room
ip=135.104.20.1 sys=bell-labs-gw dom=bell-labs-gw.cs.bell-labs.com
ip=135.104.20.2 sys=wheatstone dom=wheatstone.cs.bell-labs.com	# rbone

ip=204.178.20.1 sys=bell-labs-gw-ext dom=bell-labs-gw-ext.cs.bell-labs.com
ip=204.178.20.2 sys=wheatstone-ext dom=wheatstone-ext.cs.bell-labs.com

#
# straddling dns config
#
sys=inside-dom
	dom=bell-labs.com
	dom=lucent.com
	dom=alcatel-lucent.be
	dom=alcatel-lucent.by
	dom=alcatel-lucent.co.il
	dom=alcatel-lucent.co.za
	dom=alcatel-lucent.com
	dom=alcatel-lucent.de
	dom=alcatel-lucent.ge
	dom=alcatel-lucent.hr
	dom=alcatel-lucent.mk
	dom=alcatel-lucent.rs
	dom=alcatel-lucent.uz
	dom=alcatel.de
	dom=alcatel.mn
	dom=alcatel.ro
sys=inside-ns
	ip=135.222.4.10			# QIP
	ip=135.222.4.11
sys=outside-ns
	ip=204.178.31.2			# mince
	ip=204.178.31.7			# bovril

