BSD 4_4_Lite2 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Sun, 25 Apr 1993 18:22:21 +0000 (10:22 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Sun, 25 Apr 1993 18:22:21 +0000 (10:22 -0800)
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/LISA-VI-paper.ps
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/getafsdb.c
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/host
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/lamer-message
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/lamers.sh
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/named.boot
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/root.cache
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/sample.hosts
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/sample.rev
Work on file usr/src/contrib/bind-4.9.2/contrib/umich/zt

Synthesized-from: CSRG/cd3/4.4BSD-Lite2

usr/src/contrib/bind-4.9.2/contrib/umich/LISA-VI-paper.ps [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/getafsdb.c [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/host [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/lamer-message [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/lamers.sh [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/named.boot [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/root.cache [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/sample.hosts [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/sample.rev [new file with mode: 0644]
usr/src/contrib/bind-4.9.2/contrib/umich/zt [new file with mode: 0644]

diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/LISA-VI-paper.ps b/usr/src/contrib/bind-4.9.2/contrib/umich/LISA-VI-paper.ps
new file mode 100644 (file)
index 0000000..5de45b4
--- /dev/null
@@ -0,0 +1,6358 @@
+(Message inbox:2)
+To:  bryan
+From:  kolstad@BSDI.COM (Rob Kolstad)
+Subject:  Final Formatted LISA Paper
+Date:  Wed, 9 Sep 92 11:37:04 MDT
+----------------------------------
+
+
+%!
+%%Creator: troff->tpscript
+%%CreationDate: Wed Sep  9 11:36:33 1992
+%%EndComments
+/inch { 480 mul } bind def
+/rotateit { /pgtop 11 inch def /pgwid 8.5 inch def  newpath } bind def
+/scaleit { 72 480 div dup scale rotateit 1 setlinecap} def
+/unscaleit { 480 72 div dup scale} def
+/RBKFontDict 9 dict def /NEWDict 10 dict def
+RBKFontDict begin
+/FontType 3 def
+/FontName (RBK specials) cvn def
+/FontMatrix [ 0.001 0 0 0.001 0 0] def
+/FontBBox [ -50 -250 1000 1000 ] def
+/Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for
+Encoding
+dup 2 /Csq put
+dup 3 /Cci put
+dup 4 /Cbx put
+dup 5 /CSu put
+dup 15 /Cbu put
+pop
+/CharProcs 24 dict dup begin
+  /setC { 0 -50 -250 1000 1000 setcachedevice} def
+/Cbu { 0 0 moveto
+600 setC
+300 300 moveto 300 300 250 0 360 arc closepath fill } def
+/Csq { 0 0 moveto
+600 setC
+50 50 moveto
+500 0 rlineto 0 500 rlineto -500 0 rlineto closepath fill } def
+/Cbx { 0 0 moveto
+600 setC
+70 setlinewidth
+50 50 moveto 500 0 rlineto 0 500 rlineto -500 0 rlineto closepath stroke } def
+/Cci { 0 0 moveto 600 setC
+70 setlinewidth
+550 300 moveto 300 300 250 0 360 arc closepath stroke } def
+/CSu {
+0 0 moveto
+715 setC
+700 700 scale
+%% Kolstad & Horton/Polk 12/1989; Font:  kolstad 6/24/90
+/divsq2 { 1.4142136 div } bind def /mulsq2 { 1.4142136 mul } bind def
+/TW 0.62 def  %% top width
+/MG 0.12 def  %% MidGap
+/US TW 4 mul MG 6 mul add def  %% Uside
+/UL US TW sub MG sub def  %% U length
+/OR MG TW add def  %% outradius
+/T2 TW divsq2 def
+/U2 UL divsq2 def
+/M2 MG divsq2 def
+/SU {  %% sunU
+    currentpoint
+       T2 dup neg rlineto
+       U2 neg dup rlineto
+       currentpoint exch M2 add exch M2 sub MG 135 315 arc
+       U2 dup rlineto
+       T2 dup neg rlineto
+       U2 neg dup rlineto
+       currentpoint exch OR divsq2 sub exch OR divsq2 add OR 315 135 arcn
+       closepath
+    moveto
+} def
+/SU2 { SU currentpoint 0 US neg mulsq2 rmoveto 180 rotate SU -180 rotate
+      moveto } def
+   1 US mulsq2 2 mul div dup scale 
+   US divsq2 US mulsq2 US divsq2 add rmoveto
+   4 { M2 2 mul M2 2 mul rmoveto US mulsq2 0 rmoveto 270 rotate SU2 } repeat
+%% 0 setlinewidth stroke
+   fill
+} def
+end def
+
+/BuildChar
+{
+       NEWDict begin
+       /charcode exch def /fontdict exch def
+       fontdict /CharProcs get begin
+       fontdict /Encoding get
+       charcode get load
+       gsave 0 setlinecap 0 setgray newpath exec grestore
+       end end
+} def
+end
+/RBKFont RBKFontDict definefont pop
+%%%%%%%%%%%%%%% End special Font
+scaleit 0 0 moveto
+/pagebot { showpage restore } def
+/pagetop { save } def
+/lastpage {} def
+/pt { 6.666667 mul } bind def
+/y { neg 0 exch rmoveto } bind def
+/X { U moveto } bind def
+/Y { pgtop exch sub currentpoint pop exch dup /U exch def moveto } bind def
+/s { show } bind def
+/S { dup gsave show grestore
+       gsave true charpath 0 setgray stroke grestore } bind def
+/l { neg rlineto currentpoint stroke dup /U exch def moveto } bind def
+/c {
+2 div /rad exch def currentpoint /y0 exch def /x0 exch def
+newpath x0 rad add y0 rad 0 360 arc stroke
+x0 rad add rad add y0 dup /U exch def moveto
+ } def
+/a {
+/y2 exch neg def /x2 exch def /y1 exch neg def /x1 exch def
+x1 y1 rmoveto currentpoint
+currentpoint
+x2 x2 mul y2 y2 mul add sqrt
+y1 neg x1 neg atan
+y2 x2 atan
+newpath arc stroke moveto x2 y2 rmoveto currentpoint /U exch def pop
+} def
+/e {
+2 div /yrad exch def 2 div /xrad exch def
+currentpoint /y0 exch def /x0 exch def
+gsave x0 xrad add y0 translate xrad yrad scale
+LS xrad yrad gt {xrad} {yrad} ifelse div setlinewidth
+newpath 0 0 1 0 360 arc stroke grestore
+x0 xrad add xrad add y0 dup /U exch def moveto
+} def
+/spln {
+rcurveto currentpoint stroke dup /U exch def moveto
+} def
+
+% stolen from greenbook page 115-116
+/F { findfont exch scalefont setfont } bind def
+/RE {   % re-encode
+  findfont begin
+   currentdict dup length dict begin
+    { 1 index /FID ne {def} {pop pop} ifelse } forall
+    /FontName exch def dup length 0 ne { % if
+          /Encoding Encoding 256 array copy def
+      0 exch
+          {  % forall
+            dup type /nametype eq  % if?
+            { Encoding 2 index 2 index put pop 1 add }
+            { exch pop }
+            ifelse
+          } forall
+    } if
+    pop currentdict dup
+   end
+  end
+  /FontName get exch definefont pop
+} bind def
+
+% use make.remap to make new stdencodings:
+/stdencoding [ 1 /multiply /ntilde /eth /otilde /oacute /idieresis
+/Ocircumflex /ograve /onequarter /scaron /uacute /odieresis
+/Ucircumflex /ugrave /yacute /Thorn /zcaron /udieresis /threequarters
+/threesuperior /ydieresis /aring /Ccedilla /twosuperior /acircumflex
+/Atilde /Aacute /Agrave /ecircumflex /Eacute /copyright 127 /Adieresis
+/Egrave /icircumflex /Iacute /onehalf /Edieresis /Igrave /Ntilde /Eth
+/ocircumflex /Otilde /Oacute /Idieresis /mu /Ograve /Scaron
+/ucircumflex /Uacute /Odieresis /Ugrave /Yacute /thorn /degree
+/logicalnot /minus /Zcaron /Udieresis /registered /plusminus /ccedilla
+/Ydieresis /Aring /atilde /aacute 176 /Acircumflex 181 /divide 190
+/brokenbar 192 /agrave 201 /eacute 204 /Ecircumflex 209 /adieresis
+/egrave /onesuperior /trademark /iacute /Icircumflex /edieresis /igrave
+] def
+/specdwidth 0 def /LS 0 def
+/setwidth {/specdwidth 1 def dup /LS exch def setlinewidth} def
+/ft { /fonttype exch def /xsiz exch def /ysiz exch def /sl exch def
+ fonttype [ xsiz pt 0 sl sin sl cos div ysiz pt mul ysiz pt 0 0 ]
+ makefont setfont
+ specdwidth 0 eq {xsiz 4 div dup /LS exch def setlinewidth} if
+ setgray } def
+/Z { specdwidth 0 eq {dup 4 div dup /LS exch def setlinewidth} if
+ pt scalefont setfont } bind def
+/M { pgtop exch sub moveto } bind def
+/L { pgtop exch sub lineto } bind def
+/cbox { gsave 100 div setgray
+currentpoint /nowy exch def /nowx exch def
+/radius exch def /boxdown exch def /boxover exch def
+currentpoint newpath moveto radius 0 rmoveto
+nowx boxover add nowy nowx boxover add nowy boxdown sub radius arcto 
+pop pop pop pop
+nowx boxover add nowy boxdown sub nowx nowy boxdown sub radius arcto
+pop pop pop pop
+nowx nowy boxdown sub nowx nowy radius arcto pop pop pop pop
+nowx nowy nowx boxover add nowy radius arcto pop pop pop pop
+currentgray 1.0 ne { gsave fill grestore } if 0 setgray stroke
+grestore } bind def
+/f.Y /RBKFont findfont def
+
+0 Y
+save
+%%EndProlog
+
+0 Y
+%%Page: 1 1
+pagetop
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+0.00 0.0 10 10 f.R ft
+988 X
+521 Y
+1168 X
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 22 Z(Dealing)s
+1696 X(with)s
+2021 X(Lame)s
+2427 X(Delegations)s
+600 X
+689 Y
+1489 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 12 Z(Bryan)s
+1711 X(Beecher)s
+2001 X(\261)s
+2067 X
+f.R 12 Z(University)s
+2431 X(of)s
+2524 X(Michigan)s
+840 X
+865 Y
+1912 X
+f.B 12 Z(ABSTRACT)s
+840 X
+999 Y
+984 X
+f.R 10 Z(The)s
+1127 X(University)s
+1448 X(of)s
+1542 X(Michigan)s
+1837 X(is)s
+1921 X(a)s
+1990 X(large,)s
+2180 X(research)s
+2442 X(university)s
+2748 X(with)s
+2906 X(over)s
+3063 X(six)s
+3180 X(thousand)s
+840 X
+1072 Y(computers)s
+1180 X(attached)s
+1466 X(to)s
+1580 X(six)s
+1720 X(interconnected)s
+2176 X(class)s
+2369 X(B)s
+2475 X(networks)s
+2719 X(.)s
+2820 X(The)s
+2986 X(ownership)s
+3324 X(and)s
+840 X
+1145 Y(administration)s
+1250 X(of)s
+1328 X(these)s
+1489 X(machines)s
+1765 X(is)s
+1833 X(widely)s
+2038 X(distributed)s
+2347 X(across)s
+2537 X(the)s
+2642 X(university,)s
+2949 X(and)s
+3068 X(consequently)s
+840 X
+1218 Y(the)s
+953 X(U)s
+1001 X(-M)s
+1113 X(Domain)s
+1359 X(Name)s
+1550 X(System)s
+1778 X(namespace)s
+2103 X(is)s
+2178 X(also)s
+2316 X(quite)s
+2480 X(distributed)s
+2766 X(.)s
+2835 X(While)s
+3029 X(this)s
+3156 X(keeps)s
+3338 X(the)s
+840 X
+1291 Y(workload)s
+1125 X(low)s
+1259 X(for)s
+1370 X(any)s
+1500 X(single)s
+1694 X(campus)s
+1933 X(hostmaster,)s
+2275 X(it)s
+2348 X(also)s
+2491 X(introduces)s
+2804 X(many)s
+2987 X(possibilities)s
+3343 X(for)s
+840 X
+1364 Y(domain)s
+1062 X(nameserver)s
+1392 X(miscon\256guration)s
+1844 X(.)s
+840 X
+1458 Y
+984 X(For)s
+1098 X(some)s
+1261 X(time)s
+1403 X(we)s
+1504 X(have)s
+1653 X(run)s
+1764 X(a)s
+1817 X(version)s
+2036 X(of)s
+2114 X(the)s
+2219 X(domain)s
+2442 X(nameserver)s
+2773 X(daemon,)s
+3024 X
+f.B 10 Z(named)s
+f.R 10 Z(,)s
+3257 X(which)s
+840 X
+1531 Y(includes)s
+1098 X(Don)s
+1247 X(Lewis')s
+1468 X
+f.I 10 Z(lame)s
+1633 X(delegation)s
+1950 X(patch)s
+2098 X(.)s
+2171 X
+f.R 10 Z(This)s
+2324 X(patch)s
+2503 X(uses)s
+2652 X(syslog)s
+2856 X(to)s
+2942 X(generate)s
+3203 X(an)s
+3300 X(alert)s
+840 X
+1604 Y(whenever)s
+1130 X
+f.I 10 Z(named)s
+1338 X
+f.R 10 Z(encounters)s
+1658 X(a)s
+1719 X(lame)s
+1881 X(delegation,)s
+2208 X(that)s
+2340 X(is,)s
+2433 X(an)s
+2527 X(instance)s
+2778 X(where)s
+2973 X(a)s
+3035 X(nameserver)s
+3375 X(is)s
+840 X
+1677 Y(listed)s
+1017 X(as)s
+1104 X(authoritative)s
+1474 X(for)s
+1582 X(a)s
+1643 X(domain,)s
+1891 X(but)s
+2007 X(in)s
+2090 X(fact)s
+2222 X(is)s
+2298 X(not)s
+2414 X(performing)s
+2744 X(service)s
+2965 X(for)s
+3072 X(that)s
+3203 X(domain)s
+3403 X(.)s
+840 X
+1750 Y(We)s
+960 X(have)s
+1113 X(taken)s
+1285 X(this)s
+1409 X(idea)s
+1548 X(one)s
+1671 X(step)s
+1806 X(further)s
+2014 X(by)s
+2107 X(running)s
+2340 X(a)s
+2397 X(weekly)s
+2617 X(job)s
+2729 X(that)s
+2857 X(collects)s
+3091 X(these)s
+3257 X(alerts,)s
+840 X
+1823 Y(does)s
+994 X(its)s
+1090 X(best)s
+1230 X(to)s
+1314 X(screen)s
+1517 X(out)s
+1634 X(any)s
+1762 X(spurious)s
+2019 X(ones,)s
+2190 X(and)s
+2318 X(then)s
+2465 X(noti\256es)s
+2694 X(the)s
+2807 X(owner)s
+3004 X(of)s
+3090 X(the)s
+3203 X(domain)s
+3403 X(.)s
+840 X
+1896 Y(This)s
+981 X(paper)s
+1151 X(summarizes)s
+1493 X(and)s
+1611 X(discusses)s
+1882 X(this)s
+2001 X(work)s
+2137 X(.)s
+600 X
+2042 Y
+1156 X
+f.B 10 Z(Background)s
+600 X
+2151 Y
+744 X
+f.R 10 Z(The)s
+893 X(University)s
+1220 X(of)s
+1320 X(Michigan)s
+1621 X(is)s
+1712 X(a)s
+1788 X(large)s
+1968 X(and)s
+600 X
+2224 Y(sprawling)s
+887 X(collection)s
+1176 X(of)s
+1255 X(TCP/IP)s
+1479 X(networks,)s
+1764 X(comprising)s
+600 X
+2297 Y(half)s
+733 X(a)s
+793 X(dozen)s
+982 X(class)s
+1143 X(B)s
+1217 X(networks)s
+1491 X(\(141)s
+1612 X(.211)s
+1728 X(.0)s
+1778 X(.0)s
+1858 X(through)s
+600 X
+2370 Y(141)s
+699 X(.216)s
+815 X(.0)s
+865 X(.0\))s
+937 X(.)s
+1023 X(The)s
+1174 X(Domain)s
+1436 X(Name)s
+1643 X(System)s
+1887 X(\(DNS\))s
+600 X
+2443 Y(entry)s
+759 X(for)s
+858 X(the)s
+963 X(University)s
+1268 X(of)s
+1346 X(Michigan)s
+1625 X(is)s
+1693 X
+f.B 9 Z(UMICH)s
+1906 X(.EDU)s
+f.R 10 Z(,)s
+600 X
+2516 Y(and)s
+722 X(like)s
+849 X(the)s
+957 X(University's)s
+1313 X(IP)s
+1398 X(networks,)s
+1685 X(it)s
+1749 X(too)s
+1860 X(is)s
+1930 X(large)s
+600 X
+2589 Y(and)s
+730 X(sprawling)s
+993 X(.)s
+1066 X(Each)s
+1234 X(college,)s
+1479 X(institute,)s
+1748 X(or)s
+1838 X(campus)s
+2042 X(-)s
+600 X
+2662 Y(wide)s
+796 X(entity)s
+1014 X(is)s
+1124 X(entitled)s
+1391 X(to)s
+1508 X(a)s
+1603 X(domain)s
+1868 X(at)s
+1982 X(the)s
+600 X
+2735 Y
+f.B 9 Z(UMICH)s
+813 X(.EDU)s
+997 X
+f.R 10 Z(level)s
+1128 X(.)s
+1210 X(For)s
+1345 X(example,)s
+1632 X(the)s
+1757 X(College)s
+2009 X(of)s
+600 X
+2808 Y(Literature,)s
+960 X(Science,)s
+1264 X(and)s
+1438 X(the)s
+1598 X(Arts)s
+1790 X(uses)s
+1982 X(the)s
+600 X
+2881 Y
+f.B 9 Z(LSA)s
+716 X(.UMICH)s
+944 X(.EDU)s
+1115 X
+f.R 10 Z(domain)s
+1315 X(.)s
+1385 X(Departments)s
+1758 X(within)s
+1960 X(col-)s
+600 X
+2954 Y(leges)s
+770 X(then)s
+917 X(fall)s
+1039 X(under)s
+1222 X(that)s
+1355 X(college's)s
+1629 X(domain,)s
+1878 X(and)s
+2005 X(so)s
+600 X
+3027 Y(the)s
+810 X(Math)s
+1080 X(Department)s
+1525 X(is)s
+1699 X(known)s
+2008 X(as)s
+600 X
+3100 Y
+f.B 9 Z(MATH)s
+787 X(.LSA)s
+918 X(.UMICH)s
+1146 X(.EDU)s
+1287 X
+f.R 10 Z(.)s
+1357 X(All)s
+1473 X(in)s
+1555 X(all,)s
+1670 X(there)s
+1834 X(are)s
+1946 X(over)s
+600 X
+3173 Y(six)s
+700 X(thousand)s
+962 X(hosts)s
+1121 X(with)s
+1262 X(entries)s
+1463 X(in)s
+1537 X(the)s
+1641 X(DNS)s
+1796 X(at)s
+1867 X(U)s
+1915 X(-M)s
+1996 X(.)s
+600 X
+3267 Y
+744 X(It)s
+811 X(is)s
+882 X(impractical)s
+1211 X(to)s
+1289 X(try)s
+1389 X(to)s
+1467 X(centralize)s
+1755 X(the)s
+1864 X(domain)s
+600 X
+3340 Y(nameservice)s
+962 X(for)s
+1066 X(this)s
+1189 X(many)s
+1363 X(machines)s
+1616 X(.)s
+1681 X(Consequently,)s
+600 X
+3413 Y(many)s
+773 X(of)s
+853 X(the)s
+960 X(sub)s
+1052 X(-domains)s
+1325 X(of)s
+1406 X
+f.B 9 Z(UMICH)s
+1619 X(.EDU)s
+1786 X
+f.R 10 Z(have)s
+1938 X(been)s
+600 X
+3486 Y(delegated)s
+902 X(to)s
+999 X(various)s
+1240 X(system)s
+1470 X(administrators)s
+1897 X(across)s
+600 X
+3559 Y(campus)s
+804 X(.)s
+876 X(This)s
+1028 X(makes)s
+1232 X(for)s
+1342 X(a)s
+1406 X(very)s
+1558 X(distributed)s
+1878 X(system)s
+600 X
+3632 Y(where)s
+808 X(no)s
+919 X(single)s
+1123 X(hostmaster)s
+1457 X(has)s
+1590 X(too)s
+1719 X(much)s
+1911 X(work)s
+2047 X(.)s
+600 X
+3705 Y(However,)s
+902 X(it)s
+981 X(also)s
+1130 X(introduces)s
+1449 X(great)s
+1624 X(possibilities)s
+1987 X(for)s
+600 X
+3778 Y(errors)s
+791 X(when)s
+971 X(newly)s
+1170 X(hired)s
+1343 X(system)s
+1564 X(administrators)s
+1982 X(are)s
+600 X
+3851 Y(forced)s
+797 X(to)s
+877 X(maintain)s
+1140 X(their)s
+1291 X(part)s
+1423 X(of)s
+1506 X(the)s
+1616 X(DNS)s
+1777 X(when)s
+1949 X(they)s
+600 X
+3924 Y(haven't)s
+830 X(had)s
+955 X(proper)s
+1157 X(training)s
+1365 X(.)s
+1433 X(One)s
+1573 X(of)s
+1657 X(the)s
+1768 X(most)s
+1927 X(com-)s
+600 X
+3997 Y(mon)s
+740 X(errors)s
+917 X(introduced)s
+1224 X(is)s
+1291 X(that)s
+1414 X(of)s
+1491 X(a)s
+1543 X
+f.I 10 Z(lame)s
+1695 X(delegation)s
+1977 X(.)s
+600 X
+4124 Y
+1142 X
+f.B 10 Z(The)s
+1275 X(Problem)s
+600 X
+4233 Y
+744 X
+f.R 10 Z(A)s
+843 X
+f.I 10 Z(lame)s
+1024 X(delegation)s
+1357 X
+f.R 10 Z(is)s
+1453 X(an)s
+1567 X(instance)s
+1838 X(when)s
+2034 X(a)s
+600 X
+4306 Y(nameserver)s
+944 X(is)s
+1024 X(listed)s
+1205 X(as)s
+1296 X(authoritative)s
+1670 X(for)s
+1782 X(a)s
+1847 X(domain,)s
+600 X
+4379 Y(but)s
+726 X(in)s
+819 X(fact,)s
+978 X(it)s
+1057 X(is)s
+1144 X(not)s
+1271 X(performing)s
+1612 X(service)s
+1844 X(for)s
+1963 X(that)s
+600 X
+4452 Y(domain)s
+800 X(.)s
+868 X(A)s
+944 X(lame)s
+1103 X(delegation)s
+1410 X(is)s
+1483 X(often)s
+1648 X(caused)s
+1858 X(at)s
+1935 X(U)s
+1983 X(-M)s
+600 X
+4525 Y(when)s
+766 X(a)s
+818 X(hostmaster)s
+1131 X(moves)s
+1328 X(a)s
+1381 X(domain)s
+1604 X(nameserver)s
+1935 X(from)s
+600 X
+4598 Y(host)s
+736 X(A)s
+809 X(to)s
+886 X(host)s
+1022 X(B)s
+1091 X(without)s
+1320 X(notifying)s
+1589 X(the)s
+1695 X(hostmaster)s
+2009 X(of)s
+600 X
+4671 Y(the)s
+711 X(parent)s
+907 X(domain)s
+1107 X(.)s
+1175 X(For)s
+1296 X(example,)s
+1569 X(say)s
+1688 X(there)s
+1852 X(are)s
+1964 X(two)s
+600 X
+4744 Y(sets)s
+751 X(of)s
+856 X(nameservers)s
+1240 X(listed)s
+1436 X(for)s
+1562 X
+f.B 9 Z(LSA)s
+1678 X(.UMICH)s
+1906 X(.EDU)s
+2047 X
+f.R 10 Z(.)s
+2256 X
+2042 Y(One)s
+2401 X(set)s
+2510 X(is)s
+2589 X(listed)s
+2769 X(in)s
+2855 X(the)s
+2971 X
+f.B 9 Z(UMICH)s
+3184 X(.EDU)s
+3359 X
+f.R 10 Z(domain)s
+3594 X(zone)s
+2256 X
+2115 Y(\256le)s
+2376 X(\(where)s
+2595 X(the)s
+2711 X(domain)s
+2945 X(is)s
+3024 X(delegated\))s
+3337 X(and)s
+3467 X(the)s
+3583 X(other)s
+2256 X
+2188 Y(set)s
+2367 X(is)s
+2448 X(listed)s
+2630 X(in)s
+2718 X(the)s
+2836 X
+f.B 9 Z(LSA)s
+2952 X(.UMICH)s
+3180 X(.EDU)s
+3357 X
+f.R 10 Z(domain)s
+3594 X(zone)s
+2256 X
+2261 Y(\256le)s
+2342 X(.)s
+2417 X(Under)s
+2619 X(normal)s
+2844 X(operating)s
+3132 X(conditions)s
+3446 X(these)s
+3620 X(two)s
+2256 X
+2334 Y(sets)s
+2398 X(of)s
+2494 X(nameservers)s
+2869 X(should)s
+3087 X(be)s
+3191 X(identical,)s
+3481 X(but)s
+3607 X(if)s
+3690 X(a)s
+2256 X
+2407 Y(hostmaster)s
+2592 X(is)s
+2683 X(careless)s
+2941 X(and)s
+3082 X(changes)s
+3342 X(the)s
+3469 X(local)s
+3645 X(set)s
+2256 X
+2480 Y(without)s
+2503 X(notifying)s
+2790 X(his)s
+2911 X(parent)s
+3121 X(domain's)s
+3413 X(hostmaster,)s
+2256 X
+2553 Y(they)s
+2408 X(can)s
+2538 X(get)s
+2657 X(out)s
+2778 X(of)s
+2869 X(sync)s
+2991 X(.)s
+3066 X(In)s
+3157 X(our)s
+3281 X(example,)s
+3561 X(if)s
+3638 X(the)s
+2256 X
+2626 Y(listed)s
+2430 X(nameservers)s
+2792 X(for)s
+2897 X(the)s
+3007 X
+f.B 9 Z(LSA)s
+3123 X(.UMICH)s
+3351 X(.EDU)s
+3520 X
+f.R 10 Z(domain)s
+2256 X
+2699 Y(are)s
+2405 X(listed)s
+2618 X(as)s
+2741 X
+f.B 9 Z(A)s
+2784 X(.LSA)s
+2915 X(.UMICH)s
+3143 X(.EDU)s
+3351 X
+f.R 10 Z(and)s
+3514 X
+f.B 9 Z(B)s
+3554 X(.LSA)s
+3685 X(.-)s
+2256 X
+2772 Y(UMICH)s
+2469 X(.EDU)s
+2642 X
+f.R 10 Z(in)s
+2726 X(the)s
+2840 X
+f.B 9 Z(UMICH)s
+3053 X(.EDU)s
+3226 X
+f.R 10 Z(zone)s
+3384 X(\256le,)s
+3520 X(but)s
+3638 X(are)s
+2256 X
+2845 Y(listed)s
+2507 X(as)s
+2667 X
+f.B 9 Z(C)s
+2710 X(.LSA)s
+2841 X(.UMICH)s
+3069 X(.EDU)s
+3314 X
+f.R 10 Z(and)s
+3514 X
+f.B 9 Z(B)s
+3554 X(.LSA)s
+3685 X(.-)s
+2256 X
+2918 Y(UMICH)s
+2469 X(.EDU)s
+2637 X
+f.R 10 Z(in)s
+2716 X(the)s
+2826 X
+f.B 9 Z(LSA)s
+2942 X(.UMICH)s
+3170 X(.EDU)s
+3339 X
+f.R 10 Z(zone)s
+3493 X(\256le,)s
+3624 X(and)s
+2256 X
+2991 Y(the)s
+2365 X(nameserver)s
+2700 X(on)s
+2792 X
+f.B 9 Z(A)s
+2835 X(.LSA)s
+2966 X(.UMICH)s
+3194 X(.EDU)s
+3361 X
+f.R 10 Z(stops)s
+3524 X(serving)s
+2256 X
+3064 Y(the)s
+2363 X
+f.B 9 Z(LSA)s
+2479 X(.UMICH)s
+2707 X(.EDU)s
+2874 X
+f.R 10 Z(domain,)s
+3117 X(then)s
+3258 X(the)s
+3366 X
+f.B 9 Z(UMICH)s
+3579 X(.EDU)s
+2256 X
+3137 Y
+f.R 10 Z(zone)s
+2404 X(\256le)s
+2512 X(now)s
+2648 X(contains)s
+2893 X(a)s
+2945 X(lame)s
+3098 X(delegation)s
+3377 X(.)s
+2256 X
+3231 Y
+2400 X(Lame)s
+2578 X(delegations)s
+2909 X(are)s
+3017 X(serious)s
+3232 X(problems)s
+3480 X(.)s
+3545 X(At)s
+3638 X(the)s
+2256 X
+3304 Y(very)s
+2399 X(least,)s
+2564 X(they)s
+2703 X(cause)s
+2876 X(the)s
+2982 X(DNS)s
+3139 X(to)s
+3215 X(become)s
+3447 X(much)s
+3619 X(less)s
+2256 X
+3377 Y(ef\256cient)s
+2512 X(since)s
+2686 X(query)s
+2873 X(packets)s
+3110 X(will)s
+3251 X(be)s
+3350 X(sent)s
+3494 X(to)s
+3583 X(hosts)s
+2256 X
+3450 Y(which)s
+2447 X(are)s
+2557 X(either)s
+2738 X(not)s
+2851 X(running)s
+3085 X(a)s
+3142 X(nameserver)s
+3477 X(at)s
+3553 X(all,)s
+3665 X(or)s
+2256 X
+3523 Y(will)s
+2387 X(be)s
+2476 X(sent)s
+2610 X(to)s
+2688 X(nameservers)s
+3049 X(which)s
+3239 X(are)s
+3348 X(not)s
+3460 X(authorita-)s
+2256 X
+3596 Y(tive)s
+2383 X(for)s
+2486 X(a)s
+2542 X(domain)s
+2742 X(.)s
+2806 X(In)s
+2886 X(either)s
+3064 X(case,)s
+3222 X(the)s
+3329 X(query)s
+3505 X(will)s
+3635 X(not)s
+2256 X
+3669 Y(be)s
+2343 X(answered,)s
+2636 X(and)s
+2757 X(the)s
+2864 X(sender)s
+3063 X(will)s
+3193 X(have)s
+3344 X(to)s
+3421 X(try)s
+3520 X(another)s
+2256 X
+3742 Y(nameserver)s
+2564 X(.)s
+2649 X(In)s
+2750 X(a)s
+2826 X(more)s
+3009 X(serious)s
+3244 X(case,)s
+3423 X(all)s
+3537 X(of)s
+3638 X(the)s
+2256 X
+3815 Y(nameservers)s
+2612 X(listed)s
+2780 X(for)s
+2879 X(a)s
+2932 X(domain)s
+3155 X(will)s
+3283 X(be)s
+3369 X(lame)s
+3523 X(delega-)s
+2256 X
+3888 Y(tions,)s
+2426 X(and)s
+2544 X(no)s
+2632 X(queries)s
+2847 X(can)s
+2962 X(be)s
+3047 X(answered!)s
+3365 X(Interestingly,)s
+2256 X
+3961 Y(a)s
+2310 X(site)s
+2428 X(can)s
+2545 X(be)s
+2632 X(the)s
+2739 X(victim)s
+2936 X(of)s
+3016 X(a)s
+3071 X(serious)s
+3285 X(lame)s
+3441 X(delegation)s
+2256 X
+4034 Y(such)s
+2404 X(as)s
+2485 X(this)s
+2607 X(without)s
+2836 X(even)s
+2987 X(being)s
+3160 X(aware)s
+3345 X(of)s
+3425 X(it)s
+3488 X(IF)s
+3572 X(all)s
+3665 X(of)s
+2256 X
+4107 Y(the)s
+2367 X(resolvers)s
+2638 X(on)s
+2704 X(-site)s
+2850 X(are)s
+2962 X(con\256gured)s
+3276 X(to)s
+3358 X(query)s
+3539 X(a)s
+3599 X(non)s
+3698 X(-)s
+2256 X
+4180 Y(lame)s
+2414 X(server,)s
+2621 X(yet)s
+2730 X(the)s
+2839 X(servers)s
+3055 X(listed)s
+3228 X(for)s
+3332 X(that)s
+3460 X(site)s
+3581 X(at)s
+3656 X(its)s
+2256 X
+4253 Y(parent)s
+2462 X(domain)s
+2701 X(are)s
+2823 X(all)s
+2931 X(lame)s
+3062 X(.)s
+3141 X(Unfortunately,)s
+3572 X(many)s
+2256 X
+4326 Y(excellent)s
+2535 X(examples)s
+2823 X(of)s
+2913 X(this)s
+3045 X(exist)s
+3207 X(even)s
+3368 X(today)s
+3551 X(in)s
+3638 X(the)s
+2256 X
+4399 Y
+f.B 9 Z(IN)s
+2322 X(-ADDR)s
+2514 X(.ARPA)s
+2737 X
+f.R 10 Z(namespace)s
+3031 X(.)s
+3112 X(Here)s
+3284 X(the)s
+3409 X(scenario)s
+3675 X(is)s
+2256 X
+4472 Y(that)s
+2420 X(a)s
+2513 X(site)s
+2670 X(lists)s
+2842 X(no)s
+2971 X(nameservers)s
+3368 X(for)s
+3508 X(its)s
+3634 X
+f.B 9 Z(IN)s
+3700 X(-)s
+2256 X
+4545 Y(ADDR)s
+2428 X(.ARPA)s
+2642 X
+f.R 10 Z(domains\(s\))s
+2972 X(in)s
+3058 X(the)s
+3174 X(root)s
+3315 X(servers)s
+3538 X(due)s
+3668 X(to)s
+2256 X
+4618 Y(ignorance)s
+2554 X(or)s
+2644 X(oversight,)s
+2944 X(but)s
+3064 X(their)s
+3221 X(local)s
+3386 X(nameservers)s
+2256 X
+4691 Y(do)s
+2349 X(indeed)s
+2554 X(serve)s
+2722 X(their)s
+2872 X
+f.B 9 Z(IN)s
+2938 X(-ADDR)s
+3130 X(.ARPA)s
+3339 X
+f.R 10 Z(domain)s
+3539 X(.)s
+3606 X(And)s
+2256 X
+4764 Y(so,)s
+2385 X(local)s
+2569 X(queries)s
+2815 X(all)s
+2936 X(work)s
+3124 X(since)s
+3314 X(the)s
+3448 X(packet)s
+3675 X(is)s
+600 X
+4967 Y
+f.B 10 Z(1992)s
+754 X(LISA)s
+931 X(VI)s
+1027 X(\261)s
+1082 X(October)s
+1338 X(19)s
+1404 X(-23,)s
+1531 X(1992)s
+1685 X(\261)s
+1740 X(Long)s
+1909 X(Beach,)s
+2122 X(CA)s
+3621 X(127)s
+5280 Y
+pagebot
+
+%%Page: 128 2
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+360 X
+215 Y(Dealing)s
+601 X(with)s
+749 X(Lame)s
+934 X(Delegations)s
+360 X
+448 Y
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(coincidentally)s
+795 X(going)s
+1002 X(to)s
+1110 X(a)s
+1196 X(nameserver)s
+1560 X(which)s
+1779 X(is)s
+360 X
+521 Y(authoritative)s
+723 X(for)s
+824 X(that)s
+949 X
+f.B 9 Z(IN)s
+1015 X(-ADDR)s
+1207 X(.ARPA)s
+1411 X
+f.R 10 Z(domain,)s
+1651 X(yet)s
+1756 X(all)s
+360 X
+594 Y(non)s
+459 X(-local)s
+654 X(queries)s
+889 X(on)s
+998 X(that)s
+1142 X
+f.B 9 Z(IN)s
+1208 X(-ADDR)s
+1400 X(.ARPA)s
+1624 X
+f.R 10 Z(domain)s
+360 X
+667 Y(fail)s
+473 X(since)s
+634 X(there)s
+791 X(are)s
+896 X(no)s
+985 X(nameservers)s
+1341 X(for)s
+1440 X(it)s
+1500 X(listed)s
+1668 X(in)s
+1742 X(the)s
+360 X
+740 Y(root)s
+489 X(servers)s
+678 X(.)s
+360 X
+867 Y
+907 X
+f.B 10 Z(The)s
+1040 X(Solution)s
+360 X
+976 Y
+504 X
+f.R 10 Z(Don)s
+651 X(Lewis,)s
+865 X(one)s
+994 X(of)s
+1082 X(the)s
+1197 X(few)s
+1330 X(people)s
+1541 X(across)s
+1742 X(the)s
+360 X
+1049 Y(Internet)s
+598 X(contributing)s
+954 X(bug)s
+1083 X(\256xes)s
+1239 X(and)s
+1364 X(enhancements)s
+1772 X(to)s
+360 X
+1122 Y(BIND,)s
+569 X(released)s
+819 X(a)s
+879 X(patch)s
+1054 X(which)s
+1247 X(detects)s
+1465 X(lame)s
+1627 X(delega-)s
+360 X
+1195 Y(tions)s
+490 X(.)s
+565 X(A)s
+649 X(lame)s
+815 X(delegation)s
+1129 X(is)s
+1209 X(detected)s
+1468 X(when)s
+1647 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 10 Z(named)s
+360 X
+1268 Y
+f.R 10 Z(forwards)s
+626 X(a)s
+686 X(query)s
+867 X(to)s
+949 X(a)s
+1010 X(nameserver)s
+1349 X(which)s
+1543 X(was)s
+1678 X(listed)s
+360 X
+1341 Y(as)s
+453 X(an)s
+553 X(authoritative)s
+929 X(server,)s
+1146 X(but)s
+1268 X(the)s
+1387 X(response)s
+1657 X(is)s
+1739 X(not)s
+360 X
+1414 Y(marked)s
+583 X(as)s
+663 X(authoritative)s
+1002 X(.)s
+1065 X(A)s
+1137 X(lame)s
+1292 X(delegation)s
+1595 X(causes)s
+1794 X(a)s
+360 X
+1487 Y(message)s
+613 X(like)s
+739 X(this)s
+861 X(to)s
+938 X(appear)s
+1141 X(in)s
+1218 X(the)s
+1325 X(appropriate)s
+1654 X(syslog)s
+360 X
+1560 Y(log:)s
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+360 X
+1662 Y
+408 X
+f.CW 10 Z(Jun)s
+568 X(23)s
+688 X(11:06:42)s
+1048 X(totalrecall)s
+360 X
+1735 Y
+408 X(named[104]:)s
+888 X(Lame)s
+1088 X(delegation)s
+1528 X(to)s
+360 X
+1808 Y
+408 X(`nadn)s
+608 X(.NAVY)s
+808 X(.MIL')s
+1048 X(received)s
+1408 X(from)s
+360 X
+1881 Y
+408 X(26)s
+488 X(.7)s
+568 X(.0)s
+648 X(.102)s
+848 X(\(purported)s
+1288 X(server)s
+1568 X(for)s
+360 X
+1954 Y
+408 X(`NADN)s
+608 X(.NAVY)s
+808 X(.MIL'\))s
+1088 X(on)s
+1208 X(query)s
+1448 X(on)s
+1568 X(name)s
+360 X
+2027 Y
+408 X([ward)s
+608 X(.nadn)s
+808 X(.navy)s
+1008 X(.mil])s
+360 X
+2150 Y
+504 X
+f.R 10 Z(In)s
+597 X(this)s
+732 X(example,)s
+1014 X(the)s
+1134 X(namserver)s
+1450 X(on)s
+1554 X(totalrecall)s
+360 X
+2223 Y(came)s
+539 X(across)s
+743 X(this)s
+877 X(lame)s
+1044 X(delegation)s
+1359 X(when)s
+1539 X(it)s
+1613 X(tried)s
+1772 X(to)s
+360 X
+2296 Y(resolve)s
+584 X(the)s
+697 X(name)s
+874 X
+f.B 9 Z(WARD)s
+1063 X(.NADN)s
+1250 X(.NAVY)s
+1437 X(.MIL)s
+1572 X
+f.R 10 Z(.)s
+1643 X(At)s
+1742 X(the)s
+360 X
+2369 Y(time)s
+550 X(of)s
+675 X(this)s
+842 X(writing,)s
+1121 X(there)s
+1324 X(are)s
+1475 X(three)s
+1678 X(listed)s
+360 X
+2442 Y(nameservers)s
+720 X(for)s
+823 X(the)s
+931 X
+f.B 9 Z(NADN)s
+1103 X(.NAVY)s
+1290 X(.MIL)s
+1452 X
+f.R 10 Z(domains)s
+1705 X(with)s
+360 X
+2515 Y(the)s
+529 X(names:)s
+805 X
+f.B 9 Z(NADN1)s
+1007 X(.NADN)s
+1194 X(.NAVY)s
+1381 X(.MIL)s
+1602 X
+f.R 10 Z(\(address)s
+360 X
+2588 Y(131)s
+459 X(.121)s
+575 X(.1)s
+625 X(.1\),)s
+786 X
+f.B 9 Z(USNA)s
+948 X(.USNA)s
+1125 X(.NAVY)s
+1312 X(.MIL)s
+1520 X
+f.R 10 Z(\(26)s
+1608 X(.7)s
+1658 X(.0)s
+1708 X(.102)s
+360 X
+2661 Y(and)s
+536 X(128)s
+635 X(.56)s
+718 X(.1)s
+768 X(.1\),)s
+937 X(and)s
+1113 X
+f.B 9 Z(NADN2)s
+1315 X(.NADN)s
+1502 X(.NAVY)s
+1689 X(.MIL)s
+360 X
+2734 Y
+f.R 10 Z(\(131)s
+481 X(.121)s
+597 X(.1)s
+647 X(.2\))s
+719 X(.)s
+805 X(In)s
+907 X(this)s
+1052 X(case,)s
+1233 X(our)s
+1369 X(nameserver)s
+1725 X(for-)s
+360 X
+2807 Y(warded)s
+580 X(the)s
+686 X(query)s
+861 X(on)s
+951 X(the)s
+1057 X(name)s
+1226 X
+f.B 9 Z(WARD)s
+1415 X(.NADN)s
+1602 X(.NAVY)s
+1789 X(.-)s
+2016 X
+448 Y(MIL)s
+2178 X
+f.R 10 Z(to)s
+2272 X(a)s
+2344 X(nameserver)s
+2694 X(it)s
+2774 X(was)s
+2920 X(led)s
+3044 X(to)s
+3139 X(believe)s
+3376 X(was)s
+2016 X
+521 Y(authoritative)s
+2384 X(for)s
+2490 X
+f.B 9 Z(NADN)s
+2662 X(.NAVY)s
+2849 X(.MIL)s
+f.R 10 Z(,)s
+3030 X(yet)s
+3141 X(in)s
+3222 X(this)s
+3347 X(case,)s
+2016 X
+594 Y(that)s
+2139 X(nameserver)s
+2469 X(replied)s
+2677 X(with)s
+2818 X(non)s
+2917 X(-authoritative)s
+3300 X(data)s
+3412 X(.)s
+2016 X
+688 Y
+2160 X(Since)s
+2344 X(we)s
+2457 X(started)s
+2672 X(running)s
+2914 X(a)s
+2980 X(version)s
+3212 X(of)s
+3303 X
+f.I 10 Z(named)s
+2016 X
+761 Y
+f.R 10 Z(with)s
+2169 X(this)s
+2299 X(patch,)s
+2494 X(we)s
+2605 X(found)s
+2792 X(that)s
+2926 X(we)s
+3037 X(discovered)s
+3359 X(hun-)s
+2016 X
+834 Y(dreds)s
+2184 X(of)s
+2263 X(lame)s
+2418 X(delegations)s
+2748 X(each)s
+2896 X(month)s
+3066 X(.)s
+3130 X(Furthermore,)s
+2016 X
+907 Y(although)s
+2283 X(some)s
+2458 X(lame)s
+2623 X(delegations)s
+2962 X(were)s
+3126 X(indeed)s
+3337 X(prob-)s
+2016 X
+980 Y(lems)s
+2169 X(with)s
+2314 X(a)s
+2370 X(domain)s
+2596 X(nameserver)s
+2931 X(at)s
+3007 X(the)s
+3116 X(University)s
+3425 X(of)s
+2016 X
+1053 Y(Michigan,)s
+2362 X(most)s
+2565 X(were)s
+2768 X(problems)s
+3089 X(with)s
+3280 X(domain)s
+2016 X
+1126 Y(nameservers)s
+2372 X(located)s
+2588 X(elsewhere)s
+2878 X(in)s
+2952 X(the)s
+3056 X(Internet)s
+3264 X(.)s
+2016 X
+1220 Y
+2160 X(At)s
+2256 X(\256rst)s
+2389 X(we)s
+2496 X(ignored)s
+2728 X(the)s
+2840 X(non)s
+2939 X(-local)s
+3122 X(lame)s
+3283 X(delega-)s
+2016 X
+1293 Y(tion)s
+2154 X(messages)s
+2440 X(and)s
+2569 X(simply)s
+2784 X(used)s
+2939 X(a)s
+3002 X(tool)s
+3139 X(like)s
+3273 X
+f.I 10 Z(grep)s
+3428 X
+f.R 10 Z(to)s
+2016 X
+1366 Y(extract)s
+2234 X(the)s
+2351 X(lame)s
+2517 X(delegations)s
+2857 X(that)s
+2994 X(were)s
+3160 X(local)s
+3291 X(.)s
+3366 X(Yet,)s
+2016 X
+1439 Y(even)s
+2170 X(this)s
+2295 X(proved)s
+2507 X(to)s
+2587 X(be)s
+2678 X(less)s
+2807 X(effective)s
+3070 X(than)s
+3213 X(we)s
+3318 X(hoped)s
+2016 X
+1512 Y(since)s
+2192 X(many)s
+2378 X(of)s
+2471 X(the)s
+2591 X(lame)s
+2760 X(delegations)s
+3103 X(proved)s
+3326 X(to)s
+3417 X(be)s
+2016 X
+1585 Y(transient)s
+2292 X(problems,)s
+2602 X(and)s
+2743 X(there)s
+2922 X(was)s
+3070 X(little)s
+3239 X(sense)s
+3428 X(in)s
+2016 X
+1658 Y(alerting)s
+2258 X(a)s
+2325 X(hostmaster)s
+2652 X(to)s
+2741 X(a)s
+2808 X(problem)s
+3067 X(that)s
+3206 X(no)s
+3310 X(longer)s
+2016 X
+1731 Y(existed)s
+2206 X(.)s
+2281 X(We)s
+2410 X(decided)s
+2653 X(to)s
+2740 X(build)s
+2912 X(a)s
+2977 X(tool)s
+3116 X(which)s
+3314 X(would)s
+2016 X
+1804 Y(screen)s
+2222 X(out)s
+2342 X(as)s
+2433 X(many)s
+2616 X(transient)s
+2882 X(or)s
+2972 X(spurious)s
+3233 X(errors)s
+3424 X(as)s
+2016 X
+1877 Y(possible,)s
+2016 X
+2023 Y(and)s
+2147 X(would)s
+2349 X(then)s
+2500 X(automatically)s
+2902 X(alert)s
+3058 X(the)s
+3176 X(appropriate)s
+2016 X
+2096 Y(hostmaster)s
+2328 X(via)s
+2432 X(e)s
+2462 X(-mail)s
+2604 X(.)s
+2016 X
+2223 Y
+2617 X
+f.B 10 Z(The)s
+2750 X(Tool)s
+2016 X
+2332 Y
+2160 X
+f.R 10 Z(We)s
+2276 X(wrote)s
+2451 X(a)s
+2504 X(small)s
+2673 X(shell)s
+2823 X(script)s
+2995 X(which)s
+3181 X(we)s
+3283 X(run)s
+3395 X(out)s
+2016 X
+2405 Y(of)s
+2114 X
+f.I 10 Z(cron)s
+2279 X
+f.R 10 Z(once)s
+2448 X(per)s
+2576 X(week)s
+2717 X(.)s
+2799 X(The)s
+2946 X(script)s
+3138 X(is)s
+3226 X(relatively)s
+2016 X
+2478 Y(short,)s
+2205 X(and)s
+2340 X(we)s
+2457 X(thought)s
+2699 X(the)s
+2820 X(best)s
+2967 X(way)s
+3117 X(to)s
+3209 X(present)s
+3442 X(it)s
+2016 X
+2551 Y(would)s
+2212 X(be)s
+2304 X(to)s
+2385 X(simple)s
+2593 X(include)s
+2819 X(an)s
+2911 X(annotated)s
+3200 X(version)s
+3425 X(of)s
+2016 X
+2624 Y(it)s
+2081 X(here)s
+2196 X(.)s
+2262 X(It)s
+2330 X(is)s
+2402 X(also)s
+2537 X(available)s
+2807 X(via)s
+2916 X(anonymous)s
+3249 X(ftp)s
+3351 X(from)s
+2016 X
+2697 Y(terminator)s
+2295 X(.cc)s
+2372 X(.umich)s
+2556 X(.edu)s
+2669 X(.)s
+2782 X(It)s
+2897 X(can)s
+3064 X(be)s
+3201 X(found)s
+3428 X(in)s
+2016 X
+2770 Y(/dns/lamers)s
+2325 X(.sh)s
+2401 X(.)s
+360 X
+2970 Y
+1766 X
+f.B 10 Z(The)s
+1899 X(Script)s
+360 X
+3136 Y
+504 X
+f.R 10 Z(The)s
+632 X(\256rst)s
+760 X(part)s
+888 X(of)s
+967 X(the)s
+1073 X(script)s
+1246 X(sets)s
+1371 X(up)s
+1461 X(our)s
+1573 X(path,)s
+1729 X(identi\256es)s
+1999 X(the)s
+2106 X(location)s
+2347 X(of)s
+2427 X(the)s
+2534 X(log)s
+2644 X(\256le,)s
+2772 X(identi\256es)s
+3043 X(the)s
+3150 X(\256le)s
+3261 X(contain-)s
+360 X
+3209 Y(ing)s
+470 X(the)s
+577 X(lame)s
+732 X(delegation)s
+1035 X(message)s
+1286 X(we)s
+1388 X(send)s
+1534 X(to)s
+1610 X(people,)s
+1829 X(and)s
+1949 X(identi\256es)s
+2219 X(some)s
+2384 X(temp)s
+2542 X(\256les)s
+2654 X(.)s
+2717 X(Notice)s
+2920 X(that)s
+3045 X(some)s
+3210 X(temp)s
+3368 X(\256les)s
+360 X
+3282 Y(are)s
+468 X(located)s
+688 X(on)s
+780 X(/usr/tmp)s
+1029 X(rather)s
+1211 X(than)s
+1352 X(/tmp)s
+1475 X(.)s
+1540 X(Some)s
+1718 X(of)s
+1799 X(these)s
+1964 X(\256les)s
+2103 X(can)s
+2223 X(get)s
+2332 X(big)s
+2444 X(as)s
+2527 X(the)s
+2636 X(script)s
+2812 X(runs,)s
+2970 X(and)s
+3093 X(we)s
+3198 X(found)s
+3379 X(that)s
+360 X
+3355 Y(we)s
+460 X(would)s
+648 X(\256ll)s
+745 X(up)s
+833 X(/tmp)s
+978 X(\(which)s
+1185 X(is)s
+1252 X(on)s
+1340 X(the)s
+1444 X(/)s
+1485 X(partition)s
+1734 X(on)s
+1822 X(our)s
+1932 X(machines\))s
+2207 X(.)s
+360 X
+3457 Y
+408 X
+f.CW 10 Z(#!/bin/sh)s
+360 X
+3530 Y
+408 X(PATH=:/bin:/usr)s
+1008 X(/bin:/usr/ucb:/)s
+1608 X(usr/local/bin)s
+360 X
+3603 Y
+408 X(LOGFILE=/usr/sp)s
+1008 X(ool/log/named)s
+360 X
+3676 Y
+408 X(MAILMSG=/usr/tm)s
+1008 X(p/mailmsg$$)s
+360 X
+3749 Y
+408 X(LAMERS=/usr/tmp)s
+1008 X(/lamers$$)s
+360 X
+3822 Y
+408 X(MSGFILE=/usr/lo)s
+1008 X(cal/bin/lamer)s
+1528 X(-message)s
+360 X
+3895 Y
+408 X(LAMEREPORT=/tmp)s
+1008 X(/)s
+1048 X(.lamereport$$)s
+360 X
+3968 Y
+408 X(WEEKFILE=/usr/t)s
+1008 X(mp/week$$)s
+360 X
+4091 Y
+504 X
+f.R 10 Z(The)s
+638 X(next)s
+783 X(part)s
+917 X(contains)s
+1170 X(some)s
+1342 X(standard)s
+1599 X(information)s
+1945 X(we)s
+2054 X(put)s
+2170 X(in)s
+2253 X(anything)s
+2517 X(we)s
+2626 X(make)s
+2802 X(available)s
+3076 X(to)s
+3159 X(the)s
+3272 X(Internet)s
+360 X
+4164 Y(community:)s
+727 X(A)s
+797 X(standard)s
+1045 X(copyright)s
+1322 X(notice,)s
+1525 X(the)s
+1629 X(author's)s
+1869 X(name,)s
+2053 X(the)s
+2157 X(last)s
+2273 X(change)s
+2484 X(date,)s
+2635 X(and)s
+2753 X(some)s
+2916 X(notes)s
+3079 X(about)s
+3249 X(the)s
+3353 X(tool)s
+3457 X(.)s
+360 X
+4258 Y
+504 X(The)s
+632 X(note)s
+771 X(below)s
+958 X(also)s
+1090 X(lies)s
+1208 X(a)s
+1262 X(little)s
+1411 X(bit)s
+1482 X(.)s
+1545 X(You)s
+1683 X(can)s
+1800 X(make)s
+1969 X(use)s
+2082 X(of)s
+2161 X(this)s
+2283 X(script)s
+2457 X(even)s
+2608 X(if)s
+2674 X(you)s
+2798 X(do)s
+2889 X(not)s
+2999 X(have)s
+3150 X(either)s
+3328 X
+f.I 10 Z(query)s
+360 X
+4331 Y
+f.R 10 Z(or)s
+446 X
+f.I 10 Z(host)s
+557 X
+f.R 10 Z(.)s
+627 X
+f.I 10 Z(query)s
+810 X
+f.R 10 Z(is)s
+886 X(a)s
+947 X(simple)s
+1157 X(program)s
+1413 X(which)s
+1606 X(queries)s
+1829 X(nameservers)s
+2193 X(using)s
+2367 X(the)s
+2479 X(resolver)s
+2724 X(routines)s
+2969 X(available)s
+3242 X(in)s
+3324 X(the)s
+3436 X(C)s
+360 X
+4404 Y(library)s
+538 X(.)s
+604 X(Unlike)s
+813 X(some)s
+981 X(other)s
+1145 X(packages,)s
+1434 X(it)s
+1499 X(does)s
+1648 X(not)s
+1760 X(include)s
+1984 X(external)s
+2227 X(resolver)s
+2469 X(routines)s
+2712 X(to)s
+2792 X(link)s
+2924 X(in;)s
+3023 X(it)s
+3089 X(uses)s
+3232 X(the)s
+3342 X(same)s
+360 X
+4477 Y(code)s
+509 X(that)s
+633 X(the)s
+738 X(other)s
+898 X(software)s
+1151 X(on)s
+1240 X(the)s
+1345 X(machine)s
+1595 X(uses)s
+1710 X(.)s
+1772 X
+f.I 10 Z(host)s
+1905 X
+f.R 10 Z(is)s
+1972 X(a)s
+2024 X(short)s
+2179 X(shell)s
+2328 X(script)s
+2499 X(around)s
+2705 X
+f.I 10 Z(query)s
+2879 X
+f.R 10 Z(which,)s
+3081 X(when)s
+3247 X(given)s
+3417 X(an)s
+360 X
+4550 Y(IP)s
+442 X(address)s
+665 X(as)s
+744 X(an)s
+830 X(argument,)s
+1122 X(returns)s
+1330 X(the)s
+1435 X(associated)s
+1734 X(host)s
+1868 X(name)s
+2013 X(.)s
+2076 X(Tools)s
+2252 X(such)s
+2398 X(as)s
+2478 X
+f.I 10 Z(dig)s
+2587 X
+f.R 10 Z(and)s
+2707 X
+f.I 10 Z(nslookup)s
+2971 X
+f.R 10 Z(would)s
+3161 X(also)s
+3293 X(do)s
+3383 X(just)s
+360 X
+4623 Y(\256ne,)s
+499 X(although)s
+754 X(the)s
+858 X(shell)s
+1007 X(script)s
+1178 X(would)s
+1366 X(have)s
+1514 X(to)s
+1588 X(be)s
+1673 X(modi\256ed)s
+1932 X(appropriately)s
+2310 X(to)s
+2384 X(handle)s
+2584 X(their)s
+2729 X(output)s
+2921 X(instead)s
+3111 X(.)s
+360 X
+4725 Y
+408 X
+f.CW 10 Z(#)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+360 X
+4967 Y
+f.B 10 Z(128)s
+1862 X(1992)s
+2016 X(LISA)s
+2193 X(VI)s
+2289 X(\261)s
+2344 X(October)s
+2600 X(19)s
+2666 X(-23,)s
+2793 X(1992)s
+2947 X(\261)s
+3002 X(Long)s
+3171 X(Beach,)s
+3384 X(CA)s
+5280 Y
+pagebot
+
+%%Page: 129 3
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+600 X
+215 Y
+2816 X(Dealing)s
+3057 X(with)s
+3205 X(Lame)s
+3390 X(Delegations)s
+600 X
+448 Y
+648 X
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+f.CW 10 Z(#)s
+768 X(Copyright)s
+1168 X(\(c\))s
+1328 X(1991)s
+1528 X(Regents)s
+1848 X(of)s
+1968 X(the)s
+2128 X(University)s
+2568 X(of)s
+2688 X(Michigan)s
+3008 X(.)s
+600 X
+521 Y
+648 X(#)s
+768 X(All)s
+928 X(rights)s
+1208 X(reserved)s
+1528 X(.)s
+600 X
+594 Y
+648 X(#)s
+600 X
+667 Y
+648 X(#)s
+768 X(Redistribution)s
+1368 X(and)s
+1528 X(use)s
+1688 X(is)s
+1808 X(permitted)s
+2208 X(provided)s
+2568 X(that)s
+2768 X(this)s
+2968 X(notice)s
+600 X
+740 Y
+648 X(#)s
+768 X(is)s
+888 X(preserved)s
+1288 X(and)s
+1448 X(that)s
+1648 X(due)s
+1808 X(credit)s
+2088 X(is)s
+2208 X(given)s
+2448 X(to)s
+2568 X(the)s
+2728 X(University)s
+3168 X(of)s
+600 X
+813 Y
+648 X(#)s
+768 X(Michigan)s
+1088 X(.)s
+1168 X(The)s
+1328 X(name)s
+1528 X(of)s
+1648 X(the)s
+1808 X(University)s
+2248 X(may)s
+2408 X(not)s
+2568 X(be)s
+2688 X(used)s
+2888 X(to)s
+3008 X(endorse)s
+600 X
+886 Y
+648 X(#)s
+768 X(or)s
+888 X(promote)s
+1208 X(products)s
+1568 X(derived)s
+1888 X(from)s
+2088 X(this)s
+2288 X(software)s
+2648 X(without)s
+2968 X(specific)s
+600 X
+959 Y
+648 X(#)s
+768 X(prior)s
+1008 X(written)s
+1328 X(permission)s
+1728 X(.)s
+1808 X(This)s
+2008 X(software)s
+2368 X(is)s
+2488 X(provided)s
+2848 X("as)s
+3008 X(is")s
+600 X
+1032 Y
+648 X(#)s
+768 X(without)s
+1088 X(express)s
+1408 X(or)s
+1528 X(implied)s
+1848 X(warranty)s
+2168 X(.)s
+600 X
+1105 Y
+648 X(#)s
+600 X
+1178 Y
+648 X(#)s
+768 X(Lame)s
+968 X(delegation)s
+1408 X(notifier)s
+600 X
+1251 Y
+648 X(#)s
+768 X(Author:)s
+1128 X(Bryan)s
+1368 X(Beecher)s
+600 X
+1324 Y
+648 X(#)s
+768 X(Last)s
+968 X(Modified:)s
+1448 X(6/25/92)s
+600 X
+1397 Y
+648 X(#)s
+600 X
+1470 Y
+648 X(#)s
+768 X(To)s
+888 X(make)s
+1088 X(use)s
+1248 X(of)s
+1368 X(this)s
+1568 X(software,)s
+1968 X(you)s
+2128 X(need)s
+2328 X(to)s
+2448 X(be)s
+2568 X(running)s
+2888 X(the)s
+600 X
+1543 Y
+648 X(#)s
+768 X(University)s
+1208 X(of)s
+1328 X(Michigan)s
+1688 X(release)s
+2008 X(of)s
+2128 X(BIND)s
+2328 X(4)s
+2368 X(.8)s
+2448 X(.3,)s
+2608 X(or)s
+2728 X(any)s
+2888 X(version)s
+600 X
+1616 Y
+648 X(#)s
+768 X(of)s
+888 X(named)s
+1128 X(that)s
+1328 X(supports)s
+1688 X(the)s
+1848 X(LAME_DELEGATION)s
+2488 X(patches)s
+2808 X(posted)s
+3088 X(to)s
+600 X
+1689 Y
+648 X(#)s
+768 X(USENET)s
+1008 X(.)s
+1128 X(The)s
+1288 X(U)s
+1328 X(-M)s
+1448 X(release)s
+1768 X(is)s
+1888 X(available)s
+2288 X(via)s
+2448 X(anonymous)s
+2848 X(ftp)s
+3008 X(from)s
+600 X
+1762 Y
+648 X(#)s
+768 X(terminator)s
+1168 X(.cc)s
+1288 X(.umich)s
+1528 X(.edu:/unix/dns/)s
+2128 X(bind4)s
+2328 X(.8)s
+2408 X(.3)s
+2488 X(.tar)s
+2648 X(.Z)s
+2728 X(.)s
+600 X
+1835 Y
+648 X(#)s
+600 X
+1908 Y
+648 X(#)s
+768 X(You)s
+928 X(must)s
+1128 X(also)s
+1328 X(have)s
+1528 X(a)s
+1608 X(copy)s
+1808 X(of)s
+1928 X(query\(1\))s
+2288 X(and)s
+2448 X(host\(1\))s
+2728 X(.)s
+2848 X(These)s
+600 X
+1981 Y
+648 X(#)s
+768 X(are)s
+928 X(also)s
+1128 X(available)s
+1528 X(via)s
+1688 X(anonymous)s
+2088 X(ftp)s
+2248 X(in)s
+2368 X(the)s
+2528 X(aforementioned)s
+600 X
+2054 Y
+648 X(#)s
+768 X(place)s
+968 X(.)s
+600 X
+2127 Y
+648 X(#)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+600 X
+2200 Y
+648 X(#)s
+768 X(handle)s
+1048 X(arguments)s
+600 X
+2273 Y
+648 X(#)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+600 X
+2346 Y
+648 X(#)s
+968 X
+968 X(-d)s
+1088 X(<day>)s
+600 X
+2419 Y
+648 X(#)s
+968 X(This)s
+1168 X(flag)s
+1368 X(is)s
+1488 X(used)s
+1688 X(to)s
+1808 X(append)s
+2088 X(a)s
+2168 X(dot)s
+2288 X(-day)s
+2488 X(suffix)s
+2768 X(to)s
+2888 X(the)s
+3048 X(LOGFILE)s
+3328 X(.)s
+600 X
+2492 Y
+648 X(#)s
+968 X(Handy)s
+1208 X(where)s
+1448 X(log)s
+1608 X(files)s
+1848 X(are)s
+2008 X(kept)s
+2208 X(around)s
+2488 X(for)s
+2648 X(the)s
+2808 X(last)s
+3008 X(week)s
+600 X
+2565 Y
+648 X(#)s
+968 X(and)s
+1128 X(contain)s
+1448 X(a)s
+1528 X(day)s
+1688 X(suffix)s
+1928 X(.)s
+600 X
+2674 Y
+648 X(#)s
+968 X
+968 X(-f)s
+1088 X(<logfile>)s
+600 X
+2747 Y
+648 X(#)s
+968 X(Change)s
+1248 X(the)s
+1408 X(LOGFILE)s
+1728 X(value)s
+1968 X(altogether)s
+2368 X(.)s
+600 X
+2856 Y
+648 X(#)s
+968 X
+968 X(-w)s
+600 X
+2929 Y
+648 X(#)s
+968 X(Count)s
+1208 X(up)s
+1328 X(all)s
+1488 X(of)s
+1608 X(the)s
+1768 X(DNS)s
+1928 X(statistics)s
+2368 X(for)s
+2528 X(the)s
+2688 X(whole)s
+2928 X(week)s
+3088 X(.)s
+600 X
+3038 Y
+648 X(#)s
+968 X
+968 X(-v)s
+600 X
+3111 Y
+648 X(#)s
+968 X(Be)s
+1088 X(verbose)s
+1368 X(.)s
+600 X
+3220 Y
+648 X(#)s
+968 X
+968 X(-t)s
+600 X
+3293 Y
+648 X(#)s
+968 X(Test)s
+1168 X(mode)s
+1328 X(.)s
+1448 X(Do)s
+1568 X(not)s
+1728 X(send)s
+1928 X(mail)s
+2128 X(to)s
+2248 X(the)s
+2408 X(lame)s
+2608 X(delegation)s
+600 X
+3366 Y
+648 X(#)s
+968 X(hostmasters)s
+1408 X(.)s
+600 X
+3439 Y
+648 X(#)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+600 X
+3562 Y
+744 X
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(For)s
+864 X(a)s
+922 X(given)s
+1098 X(service)s
+1316 X(that)s
+1445 X(we)s
+1551 X(provide)s
+1782 X(on)s
+1876 X(one)s
+2000 X(of)s
+2083 X(our)s
+2199 X(machines,)s
+2497 X(we)s
+2603 X(maintain)s
+2866 X(one)s
+2991 X(week's)s
+3209 X(worth)s
+3393 X(of)s
+3477 X(log)s
+3591 X(\256les,)s
+600 X
+3635 Y(broken)s
+811 X(into)s
+942 X(eight)s
+1103 X(log)s
+1215 X(\256les:)s
+1395 X(one)s
+1518 X(for)s
+1622 X(each)s
+1772 X(previous)s
+2028 X(day)s
+2151 X(of)s
+2233 X(the)s
+2342 X(week)s
+2510 X(plus)s
+2648 X(one)s
+2771 X(for)s
+2874 X(the)s
+2982 X(current)s
+3197 X(day)s
+3293 X(.)s
+3358 X(For)s
+3476 X(example,)s
+600 X
+3708 Y(the)s
+716 X(current)s
+939 X(log)s
+1058 X(\256le)s
+1178 X(for)s
+1289 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 10 Z(named)s
+1500 X
+f.R 10 Z(would)s
+1700 X(be)s
+1797 X(located)s
+2025 X(in)s
+2112 X(/var/log/named)s
+2517 X(.)s
+2591 X(And)s
+2740 X(if)s
+2816 X(it)s
+2889 X(happens)s
+3142 X(to)s
+3229 X(be)s
+3327 X(Tuesday,)s
+3605 X(then)s
+600 X
+3781 Y(yesterday's)s
+953 X(log)s
+1087 X(\256le)s
+1222 X(would)s
+1437 X(be)s
+1548 X(located)s
+1790 X(in)s
+1890 X(/var/log/named)s
+2295 X(.Mon,)s
+2502 X(the)s
+2632 X(previous)s
+2909 X(day's)s
+3101 X(would)s
+3315 X(be)s
+3426 X(located)s
+3668 X(in)s
+600 X
+3854 Y(/var/log/named)s
+1005 X(.Sun,)s
+1164 X(and)s
+1282 X(last)s
+1398 X(week's)s
+1609 X(log)s
+1716 X(\256le)s
+1824 X(would)s
+2012 X(be)s
+2097 X(in)s
+2171 X(/var/log/named)s
+2576 X(.Tue)s
+2708 X(.)s
+600 X
+3948 Y
+744 X(The)s
+872 X(-f)s
+940 X(and)s
+1060 X(-t)s
+1125 X(\257ags)s
+1275 X(exist)s
+1426 X(mainly)s
+1636 X(for)s
+1737 X(debugging)s
+2017 X(.)s
+2080 X(Before)s
+2285 X(we)s
+2387 X(unleashed)s
+2678 X(this)s
+2799 X(upon)s
+2956 X(the)s
+3063 X(Internet)s
+3296 X(community,)s
+3642 X(we)s
+600 X
+4021 Y(wanted)s
+821 X(to)s
+901 X(make)s
+1074 X(sure)s
+1213 X(that)s
+1342 X(we)s
+1447 X(wouldn't)s
+1714 X(be)s
+1804 X(generating)s
+2113 X(tons)s
+2251 X(of)s
+2333 X(unwanted)s
+2619 X(mail)s
+2739 X(.)s
+2805 X(The)s
+2936 X(-f)s
+3007 X(\257ag)s
+3134 X(is)s
+3206 X(handy)s
+3395 X(when)s
+3566 X(you'd)s
+600 X
+4094 Y(like)s
+723 X(to)s
+797 X(hand)s
+926 X(-generate)s
+1197 X(your)s
+1340 X(own)s
+1476 X(lame)s
+1630 X(delegation)s
+1932 X(data)s
+2067 X(and)s
+2186 X(then)s
+2324 X(use)s
+2436 X(it)s
+2497 X(with)s
+2639 X(this)s
+2759 X(script)s
+2908 X(.)s
+2970 X(The)s
+3097 X(-t)s
+3161 X(\257ag)s
+3284 X(performs)s
+3547 X(all)s
+3638 X(the)s
+600 X
+4167 Y(usual)s
+769 X(work,)s
+950 X(except)s
+1153 X(it)s
+1219 X(does)s
+1369 X(NOT)s
+1533 X(notify)s
+1719 X(the)s
+1828 X(hostmaster)s
+2145 X(via)s
+2254 X(e)s
+2284 X(-mail)s
+2426 X(.)s
+2492 X(It)s
+2560 X(does,)s
+2726 X(however,)s
+2999 X(still)s
+3128 X(build)s
+3292 X(a)s
+3349 X(list)s
+3459 X(of)s
+3541 X(who)s
+3682 X(it)s
+600 X
+4240 Y(would)s
+788 X(have)s
+936 X(mailed)s
+1141 X(had)s
+1259 X(the)s
+1363 X(-t)s
+1426 X(\257ag)s
+1548 X(not)s
+1655 X(been)s
+1803 X(speci\256ed)s
+2041 X(.)s
+600 X
+4342 Y
+648 X
+f.CW 10 Z(VERBOSE=0)s
+600 X
+4415 Y
+648 X(TESTMODE=0)s
+600 X
+4488 Y
+648 X(while)s
+888 X([)s
+968 X($#)s
+1088 X(!=)s
+1208 X(0)s
+1288 X(])s
+1368 X(;)s
+1448 X(do)s
+600 X
+4561 Y
+728 X(case)s
+928 X("$1")s
+1128 X(in)s
+600 X
+4634 Y
+808 X
+808 X(-d\))s
+600 X
+4707 Y
+808 X(LOGFILE=$LOGFI)s
+1368 X(LE")s
+1488 X(."$2)s
+600 X
+4967 Y
+f.B 10 Z(1992)s
+754 X(LISA)s
+931 X(VI)s
+1027 X(\261)s
+1082 X(October)s
+1338 X(19)s
+1404 X(-23,)s
+1531 X(1992)s
+1685 X(\261)s
+1740 X(Long)s
+1909 X(Beach,)s
+2122 X(CA)s
+3621 X(129)s
+5280 Y
+pagebot
+
+%%Page: 130 4
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+360 X
+215 Y(Dealing)s
+601 X(with)s
+749 X(Lame)s
+934 X(Delegations)s
+360 X
+448 Y
+568 X
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+f.CW 10 Z(shift)s
+360 X
+521 Y
+568 X(;;)s
+360 X
+630 Y
+568 X
+568 X(-f\))s
+360 X
+703 Y
+568 X(LOGFILE=$2)s
+360 X
+776 Y
+568 X(shift)s
+360 X
+849 Y
+568 X(;;)s
+360 X
+958 Y
+568 X
+568 X(-w\))s
+360 X
+1031 Y
+568 X(cat)s
+728 X($LOGFILE*)s
+1128 X(>)s
+1208 X($WEEKFILE)s
+360 X
+1104 Y
+568 X(LOGFILE=$WEEKF)s
+1128 X(ILE)s
+360 X
+1177 Y
+568 X(;;)s
+360 X
+1286 Y
+568 X
+568 X(-v\))s
+360 X
+1359 Y
+568 X(VERBOSE=1)s
+360 X
+1432 Y
+568 X(;;)s
+360 X
+1541 Y
+568 X
+568 X(-t\))s
+360 X
+1614 Y
+568 X(TESTMODE=1)s
+360 X
+1687 Y
+568 X(;;)s
+360 X
+1760 Y
+488 X(esac)s
+360 X
+1833 Y
+488 X(shift)s
+360 X
+1906 Y
+408 X(done)s
+360 X
+2029 Y
+504 X
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(We)s
+619 X(added)s
+800 X(the)s
+904 X(following)s
+1185 X(line)s
+1308 X(so)s
+1389 X(that)s
+1512 X(the)s
+1616 X(script)s
+1787 X(would)s
+1975 X(clean)s
+2139 X(up)s
+2227 X(after)s
+2372 X(itself)s
+2529 X(if)s
+2592 X(it)s
+2652 X(was)s
+2778 X(killed)s
+2953 X(during)s
+3148 X(a)s
+3200 X(run)s
+3288 X(.)s
+360 X
+2131 Y
+408 X
+f.CW 10 Z(#)s
+448 X(-)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+3368 X(-)s
+360 X
+2204 Y
+408 X(#)s
+528 X(Clean)s
+768 X(up)s
+888 X(and)s
+1048 X(exit)s
+1248 X(on)s
+1368 X(a)s
+1448 X(HUP,)s
+1648 X(INT)s
+1808 X(or)s
+1928 X(QUIT)s
+360 X
+2277 Y
+408 X(#)s
+448 X(-)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+3368 X(-)s
+360 X
+2350 Y
+408 X(trap)s
+608 X("rm)s
+768 X(-f)s
+888 X($LAMERS)s
+1208 X($MAILMSG)s
+1568 X($LAMEREPORT)s
+2048 X($WEEKFILE)s
+2448 X(;)s
+2528 X(exit")s
+2768 X(1)s
+2848 X(2)s
+2928 X(3)s
+360 X
+2473 Y
+504 X
+f.R 10 Z(The)s
+630 X(\256rst)s
+756 X(thing)s
+915 X(we)s
+1015 X(do)s
+1103 X(is)s
+1170 X(search)s
+1363 X(the)s
+1467 X(log)s
+1574 X(to)s
+1648 X(see)s
+1756 X(if)s
+1820 X(any)s
+1939 X(lame)s
+2093 X(delegations)s
+2421 X(were)s
+2574 X(detected)s
+2798 X(.)s
+2860 X(We)s
+2976 X(toss)s
+3103 X(out)s
+3211 X(lines)s
+3361 X(with)s
+360 X
+2546 Y(an)s
+453 X(asterisk)s
+688 X(on)s
+784 X(them)s
+948 X(since)s
+1116 X(those)s
+1287 X(tended)s
+1495 X(to)s
+1577 X(be)s
+1670 X(lame)s
+1831 X(delegations)s
+2166 X(of)s
+2251 X(the)s
+2363 X(form)s
+2521 X("server)s
+2740 X(xxx)s
+2839 X(.xxx)s
+2955 X(.xxx)s
+3071 X(.xxx)s
+3216 X(is)s
+3290 X(a)s
+3349 X(lame)s
+360 X
+2619 Y(delegation)s
+663 X(for)s
+764 X(domain)s
+988 X(*")s
+1048 X(.)s
+1111 X(We)s
+1228 X(really)s
+1405 X(aren't)s
+1585 X(able)s
+1721 X(to)s
+1797 X(do)s
+1887 X(anything)s
+2144 X(with)s
+2287 X(a)s
+2341 X(message)s
+2592 X(like)s
+2717 X(that,)s
+2860 X(and)s
+2981 X(it)s
+3044 X(isn't)s
+3188 X(clear)s
+3344 X(to)s
+3421 X(us)s
+360 X
+2692 Y(exactly)s
+578 X(how)s
+716 X(those)s
+881 X(are)s
+987 X(getting)s
+1197 X(generated)s
+1481 X(either)s
+1634 X(.)s
+1697 X(We)s
+1814 X(also)s
+1946 X(down)s
+2093 X(-case)s
+2255 X(everything)s
+2563 X(at)s
+2635 X(this)s
+2755 X(point)s
+2915 X(so)s
+2997 X(its)s
+3084 X(easier)s
+3264 X(to)s
+3339 X(parse)s
+360 X
+2765 Y(and)s
+478 X(handle)s
+678 X(later)s
+798 X(.)s
+360 X
+2859 Y
+504 X(After)s
+668 X(the)s
+773 X(initial)s
+954 X(pruning)s
+1183 X(we)s
+1284 X(strip)s
+1426 X(off)s
+1526 X(the)s
+1631 X(domain)s
+1854 X(name)s
+2022 X(and)s
+2142 X(nameserver's)s
+2522 X(IP)s
+2605 X(address)s
+2829 X(from)s
+2982 X(the)s
+3088 X(line)s
+3213 X(in)s
+3289 X(the)s
+3395 X(log)s
+360 X
+2932 Y(\256le)s
+446 X(.)s
+512 X(We)s
+632 X(sort)s
+759 X(those,)s
+944 X(toss)s
+1075 X(out)s
+1187 X(duplicates,)s
+1503 X(and)s
+1626 X(write)s
+1791 X(the)s
+1900 X(results)s
+2102 X(to)s
+2181 X(a)s
+2238 X(temp)s
+2399 X(\256le)s
+2485 X(.)s
+2550 X(If)s
+2620 X(the)s
+2728 X(temp)s
+2888 X(\256le)s
+3000 X(is)s
+3071 X(non)s
+3170 X(-empty,)s
+3402 X(we)s
+360 X
+3005 Y(know)s
+529 X(that)s
+652 X(we)s
+752 X(found)s
+928 X(some)s
+1091 X(lame)s
+1244 X(delegations)s
+1571 X(to)s
+1645 X(handle)s
+1823 X(.)s
+360 X
+3107 Y
+408 X
+f.CW 10 Z(#)s
+448 X(-)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+3368 X(-)s
+360 X
+3180 Y
+408 X(#)s
+528 X(See)s
+688 X(if)s
+808 X(there)s
+1048 X(are)s
+1208 X(any)s
+1368 X(lamers)s
+360 X
+3253 Y
+408 X(#)s
+448 X(-)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+3368 X(-)s
+360 X
+3326 Y
+408 X(grep)s
+608 X("Lame")s
+888 X($LOGFILE)s
+1248 X(|)s
+1328 X(tr)s
+1448 X(A)s
+1488 X(-Z)s
+1608 X(a)s
+1648 X(-z)s
+1768 X(|)s
+1848 X(grep)s
+2048 X(-v)s
+2168 X("*")s
+2328 X(|)s
+2408 X(awk)s
+2568 X('{)s
+360 X
+3399 Y
+728 X(print)s
+968 X(substr\($16,)s
+1448 X(2,)s
+1568 X(length\($16\))s
+2048 X(-)s
+2128 X(3\),)s
+2288 X($12)s
+2448 X(}')s
+2568 X(|)s
+360 X
+3472 Y
+728 X(sort)s
+928 X(|)s
+1008 X(uniq)s
+1208 X(|)s
+1288 X(awk)s
+1448 X('{)s
+360 X
+3545 Y
+1048 X(printf\("%s)s
+1488 X(%s\\n",)s
+1768 X($1,)s
+1928 X($2\))s
+360 X
+3618 Y
+408 X(}')s
+528 X(>)s
+608 X($LAMERS)s
+360 X
+3764 Y
+408 X(if)s
+528 X([)s
+608 X(!)s
+688 X(-s)s
+808 X($LAMERS)s
+1128 X(])s
+1208 X(;)s
+1288 X(then)s
+360 X
+3837 Y
+728 X(exit)s
+928 X(0)s
+360 X
+3910 Y
+408 X(fi)s
+360 X
+4056 Y
+408 X(if)s
+528 X([)s
+608 X($VERBOSE)s
+968 X(-eq)s
+1128 X(1)s
+1208 X(])s
+1288 X(;)s
+1368 X(then)s
+360 X
+4129 Y
+728 X(echo)s
+928 X("Found")s
+1248 X(`awk)s
+1448 X('END)s
+1648 X({)s
+1728 X(print)s
+1968 X(NR)s
+2088 X(}')s
+2208 X($LAMERS`)s
+2568 X("lame)s
+2808 X(delegations")s
+360 X
+4202 Y
+408 X(fi)s
+360 X
+4325 Y
+504 X
+f.R 10 Z(The)s
+634 X(following)s
+919 X(message)s
+1172 X(mentions)s
+1443 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 10 Z(potential)s
+1707 X
+f.R 10 Z(lame)s
+1864 X(delegation)s
+2169 X(because)s
+2407 X(we've)s
+2596 X(often)s
+2759 X(found)s
+2940 X(that)s
+3068 X(there)s
+3229 X(are)s
+3338 X(cases)s
+360 X
+4398 Y(when)s
+553 X(the)s
+662 X(lame)s
+820 X(delegation)s
+1126 X(patch)s
+1298 X(\257ags)s
+1451 X(a)s
+1508 X(server)s
+1698 X(as)s
+1781 X(lame)s
+1939 X(even)s
+2092 X(though)s
+2303 X(it)s
+2368 X(does)s
+2517 X(not)s
+2629 X(appear)s
+2834 X(to)s
+2913 X(be)s
+3003 X(lame)s
+3160 X(by)s
+3252 X(the)s
+3360 X(time)s
+360 X
+4471 Y(this)s
+479 X(script)s
+650 X(runs)s
+764 X(.)s
+825 X(It)s
+888 X(isn't)s
+1029 X(clear)s
+1182 X(to)s
+1256 X(us)s
+1338 X(if)s
+1402 X(the)s
+1507 X(culprit)s
+1705 X(here)s
+1843 X(is)s
+1911 X(the)s
+2016 X(lame)s
+2170 X(delegation)s
+2472 X(patches)s
+2696 X(\(which)s
+2904 X(are)s
+3009 X(\257agging)s
+3250 X(innocent)s
+360 X
+4544 Y(nameservers)s
+720 X(as)s
+802 X(lame\),)s
+998 X
+f.I 10 Z(named)s
+1201 X
+f.R 10 Z(itself)s
+1362 X(\(which)s
+1573 X(is)s
+1644 X(giving)s
+1840 X(bogus)s
+2024 X(information)s
+2365 X(to)s
+2443 X(the)s
+2550 X(lame)s
+2706 X(delegation)s
+3010 X(code\),)s
+3200 X(or)s
+3280 X(if)s
+3346 X(there)s
+360 X
+4617 Y(are)s
+464 X(simply)s
+668 X(many)s
+838 X(transient)s
+1091 X(errors)s
+1268 X(in)s
+1342 X(the)s
+1446 X(domain)s
+1668 X(name)s
+1835 X(system)s
+2021 X(.)s
+360 X
+4967 Y
+f.B 10 Z(130)s
+1862 X(1992)s
+2016 X(LISA)s
+2193 X(VI)s
+2289 X(\261)s
+2344 X(October)s
+2600 X(19)s
+2666 X(-23,)s
+2793 X(1992)s
+2947 X(\261)s
+3002 X(Long)s
+3171 X(Beach,)s
+3384 X(CA)s
+5280 Y
+pagebot
+
+%%Page: 131 5
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+600 X
+215 Y
+2816 X(Dealing)s
+3057 X(with)s
+3205 X(Lame)s
+3390 X(Delegations)s
+600 X
+448 Y
+744 X
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(At)s
+833 X(this)s
+952 X(point)s
+1111 X(each)s
+1256 X(lame)s
+1409 X(delegation)s
+1710 X(is)s
+1777 X(identi\256ed)s
+2052 X(by)s
+2140 X(a)s
+2192 X(unique)s
+2395 X(\(nameserver,)s
+2764 X(domain\))s
+3008 X(pair)s
+3112 X(.)s
+600 X
+550 Y
+648 X
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+f.CW 10 Z(#)s
+768 X(There)s
+1008 X(were)s
+1208 X(lamers;)s
+1528 X(send)s
+1728 X(them)s
+1928 X(mail)s
+600 X
+659 Y
+648 X(touch)s
+888 X($LAMEREPORT)s
+600 X
+732 Y
+648 X(NAME="")s
+600 X
+805 Y
+648 X(while)s
+888 X(read)s
+1088 X(DOMAIN)s
+1368 X(IPADDR)s
+1648 X(;)s
+1728 X(do)s
+600 X
+878 Y
+968 X(#)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+600 X
+951 Y
+968 X(#)s
+1048 X(Echo)s
+1248 X(args)s
+1448 X(if)s
+1568 X(verbose)s
+600 X
+1024 Y
+968 X(#)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+3128 X(-)s
+3168 X(-)s
+3208 X(-)s
+3248 X(-)s
+3288 X(-)s
+3328 X(-)s
+600 X
+1097 Y
+968 X(if)s
+1088 X([)s
+1168 X($VERBOSE)s
+1528 X(-eq)s
+1688 X(1)s
+1768 X(])s
+1848 X(;)s
+1928 X(then)s
+600 X
+1170 Y
+1288 X(echo)s
+1488 X($IPADDR)s
+1808 X("is)s
+1968 X(a)s
+2048 X(potential)s
+2448 X(lame)s
+2648 X(delegation)s
+3088 X(for")s
+3288 X($DOMAIN)s
+600 X
+1243 Y
+968 X(fi)s
+600 X
+1366 Y
+744 X
+f.R 10 Z(The)s
+871 X(next)s
+1009 X(thing)s
+1169 X(we)s
+1270 X(do)s
+1359 X(is)s
+1427 X(lookup)s
+1634 X(the)s
+1739 X(SOA)s
+1895 X(record)s
+2088 X(for)s
+2188 X(the)s
+2294 X(domain)s
+2494 X(.)s
+2557 X(We)s
+2674 X(do)s
+2764 X(this)s
+2885 X(so)s
+2968 X(that)s
+3093 X(we)s
+3195 X(can)s
+3312 X(fetch)s
+3470 X(an)s
+3557 X(osten-)s
+600 X
+1439 Y(sibly)s
+758 X(of\256cial)s
+976 X(e)s
+1006 X(-mail)s
+1176 X(address)s
+1404 X(to)s
+1483 X(which)s
+1673 X(to)s
+1752 X(send)s
+1901 X(the)s
+2010 X(mail)s
+2130 X(.)s
+2196 X(In)s
+2278 X(our)s
+2393 X(experience)s
+2710 X(the)s
+2819 X(e)s
+2849 X(-mail)s
+3018 X(address)s
+3245 X(listed)s
+3418 X(in)s
+3497 X(an)s
+3587 X(SOA)s
+600 X
+1512 Y(record)s
+793 X(often)s
+953 X(is)s
+1021 X(syntactically)s
+1384 X(incorrect,)s
+1662 X(or)s
+1740 X(contains)s
+1986 X(some)s
+2150 X(unusable)s
+2410 X(address)s
+2610 X(.)s
+2672 X(The)s
+2799 X(script)s
+2972 X(isn't)s
+3115 X(too)s
+3224 X(careful)s
+3434 X(about)s
+3606 X(this,)s
+600 X
+1585 Y(and)s
+718 X(so)s
+799 X(we)s
+899 X(end)s
+1017 X(up)s
+1105 X(seeing)s
+1298 X(a)s
+1350 X(fair)s
+1465 X(number)s
+1690 X(of)s
+1767 X(bounces)s
+2007 X(which)s
+2192 X(we)s
+2292 X(then)s
+2429 X(handle)s
+2629 X(ourselves)s
+2881 X(.)s
+600 X
+1687 Y
+728 X
+f.CW 10 Z(#)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+600 X
+1760 Y
+728 X(#)s
+808 X(Lookup)s
+1088 X(the)s
+1248 X(SOA)s
+1408 X(record)s
+1688 X(form)s
+1888 X($DOMAIN)s
+2168 X(.)s
+2288 X(A)s
+2368 X(really)s
+2648 X(broken)s
+2928 X(name)s
+600 X
+1833 Y
+728 X(#)s
+808 X(server)s
+1088 X(many)s
+1288 X(have)s
+1488 X(more)s
+1688 X(than)s
+1888 X(one)s
+2048 X(SOA)s
+2208 X(for)s
+2368 X(a)s
+2448 X(domain,)s
+2768 X(so)s
+2888 X(exit)s
+600 X
+1906 Y
+728 X(#)s
+808 X(after)s
+1048 X(finding)s
+1368 X(the)s
+1528 X(first)s
+1768 X(one)s
+1888 X(.)s
+2008 X(Send)s
+2208 X(it)s
+2328 X(to)s
+2448 X(the)s
+2608 X(local)s
+2848 X(hostmaster)s
+600 X
+1979 Y
+728 X(#)s
+808 X(if)s
+928 X(we)s
+1048 X(cannot)s
+1328 X(find)s
+1528 X(the)s
+1688 X(proper)s
+1968 X(one)s
+2088 X(.)s
+600 X
+2052 Y
+728 X(#)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+600 X
+2125 Y
+728 X(if)s
+848 X([)s
+928 X($VERBOSE)s
+1288 X(-eq)s
+1448 X(1)s
+1528 X(])s
+1608 X(;)s
+1688 X(then)s
+600 X
+2198 Y
+1048 X(echo)s
+1248 X("Looking)s
+1608 X(up)s
+1728 X(the)s
+1888 X(hostmaster)s
+2328 X(for)s
+2488 X($DOMAIN")s
+600 X
+2271 Y
+728 X(fi)s
+600 X
+2344 Y
+728 X(HOSTMASTER=`qu)s
+1288 X(ery)s
+1448 X(-h)s
+1568 X($DOMAIN)s
+1888 X(-t)s
+2008 X(SOA)s
+2168 X(2>)s
+2288 X(/dev/null)s
+2688 X(|)s
+2768 X(\\)s
+600 X
+2417 Y
+1488 X(awk)s
+1648 X('/mail)s
+1928 X(addr/)s
+2168 X({)s
+2248 X(print)s
+2488 X($4)s
+2608 X(;)s
+2688 X(exit)s
+2888 X(}')s
+3008 X(|)s
+3088 X(sed)s
+3248 X(-e)s
+3368 X('s/)s
+3488 X(./@/'`)s
+600 X
+2490 Y
+728 X(NAME=`host)s
+1168 X($IPADDR)s
+1488 X(2>)s
+1608 X(/dev/null`)s
+600 X
+2563 Y
+728 X(if)s
+848 X([)s
+928 X(-z)s
+1048 X(""$HOSTMASTER)s
+1608 X(])s
+1688 X(;)s
+1768 X(then)s
+600 X
+2636 Y
+1048 X(if)s
+1168 X([)s
+1248 X(-z)s
+1368 X(""$NAME)s
+1688 X(])s
+1768 X(;)s
+1848 X(then)s
+600 X
+2709 Y
+1368 X(HOSTMASTER="ho)s
+1928 X(stmaster")s
+600 X
+2782 Y
+1048 X(else)s
+600 X
+2855 Y
+1368 X(HOSTMASTER="po)s
+1928 X(stmaster@"$NAME)s
+600 X
+2928 Y
+1048 X(fi)s
+600 X
+3001 Y
+728 X(fi)s
+600 X
+3124 Y
+744 X
+f.R 10 Z(This)s
+887 X(is)s
+956 X(one)s
+1076 X(of)s
+1155 X(the)s
+1261 X(tests)s
+1405 X(we)s
+1507 X(make)s
+1676 X(to)s
+1752 X(weed)s
+1917 X(out)s
+2026 X(the)s
+2132 X(spurious)s
+2382 X(lame)s
+2538 X(delegations)s
+2843 X(.)s
+2907 X(There)s
+3088 X(have)s
+3239 X(been)s
+3390 X(cases)s
+3557 X(where)s
+600 X
+3197 Y(a)s
+654 X(parent)s
+845 X(server)s
+1032 X(has)s
+1145 X(listed)s
+1315 X(another)s
+1539 X(nameserver)s
+1871 X(as)s
+1951 X(authoritative)s
+2314 X(for)s
+2415 X(a)s
+2469 X(domain,)s
+2709 X(yet)s
+2814 X(that)s
+2938 X(actual)s
+3122 X(server)s
+3308 X(does)s
+3453 X(not)s
+3561 X(report)s
+600 X
+3270 Y(itself)s
+757 X(as)s
+835 X(authoritative)s
+1196 X(for)s
+1295 X(a)s
+1347 X(domain)s
+1547 X(.)s
+1608 X(This)s
+1749 X(is)s
+1817 X(still)s
+1942 X(a)s
+1995 X(problem,)s
+2257 X(and)s
+2376 X(in)s
+2451 X(the)s
+2556 X(future)s
+2738 X(we)s
+2839 X(should)s
+3039 X(do)s
+3128 X(something)s
+3429 X(better)s
+3605 X(here)s
+600 X
+3343 Y(than)s
+737 X(just)s
+856 X(continue)s
+1108 X(\(e)s
+1160 X(.g)s
+1210 X(.,)s
+1266 X(send)s
+1410 X(mail)s
+1552 X(to)s
+1626 X(the)s
+1730 X(parent)s
+1919 X(domain)s
+2141 X(telling)s
+2335 X(them)s
+2491 X(about)s
+2661 X(the)s
+2765 X(problem\))s
+3009 X(.)s
+600 X
+3445 Y
+728 X
+f.CW 10 Z(#)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+600 X
+3518 Y
+728 X(#)s
+808 X(Find)s
+1008 X(the)s
+1168 X(name)s
+1368 X(associated)s
+1808 X(with)s
+2008 X(IP)s
+2128 X(address)s
+2448 X($IPADDR)s
+2728 X(.)s
+2848 X(Query)s
+600 X
+3591 Y
+728 X(#)s
+808 X(the)s
+968 X(nameserver)s
+1408 X(at)s
+1528 X(that)s
+1728 X(address:)s
+2128 X(If)s
+2248 X(it)s
+2368 X(responds)s
+2728 X(listing)s
+600 X
+3664 Y
+728 X(#)s
+808 X(itself)s
+1088 X(as)s
+1208 X(a)s
+1288 X(domain)s
+1568 X(namserver,)s
+2008 X(then)s
+2208 X(it)s
+2328 X(is)s
+2448 X(lame;)s
+2688 X(if)s
+2808 X(it)s
+2928 X(isn't)s
+600 X
+3737 Y
+728 X(#)s
+808 X(in)s
+928 X(the)s
+1088 X(list,)s
+1328 X(then)s
+1528 X(perhaps)s
+1848 X(the)s
+2008 X(lame)s
+2208 X(delegation)s
+2648 X(alert)s
+2888 X(was)s
+600 X
+3810 Y
+728 X(#)s
+808 X(spurious)s
+1128 X(.)s
+600 X
+3883 Y
+728 X(#)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+3048 X(-)s
+3088 X(-)s
+600 X
+3956 Y
+728 X(if)s
+848 X([)s
+928 X($VERBOSE)s
+1288 X(-eq)s
+1448 X(1)s
+1528 X(])s
+1608 X(;)s
+1688 X(then)s
+600 X
+4029 Y
+1048 X(echo)s
+1248 X("Making)s
+1568 X(sure)s
+1768 X(that)s
+1968 X($IPADDR)s
+2288 X(is)s
+2408 X(listed)s
+2688 X(as)s
+2808 X(a)s
+2888 X(NS)s
+3008 X(for)s
+3168 X($DOMAIN")s
+600 X
+4102 Y
+728 X(fi)s
+600 X
+4175 Y
+728 X(if)s
+848 X([)s
+928 X(-n)s
+1048 X(""$NAME)s
+1368 X(])s
+1448 X(;)s
+1528 X(then)s
+600 X
+4248 Y
+1048 X(query)s
+1288 X(-n)s
+1408 X($IPADDR)s
+1728 X(-h)s
+1848 X($DOMAIN)s
+2168 X(2>&1)s
+2368 X(|)s
+2448 X(grep)s
+2648 X("domain)s
+2968 X(name")s
+3208 X(|)s
+3288 X(\\)s
+600 X
+4321 Y
+2568 X(grep)s
+2768 X(-i)s
+2888 X($NAME)s
+3128 X(>)s
+3208 X(/dev/null)s
+600 X
+4394 Y
+1048 X(if)s
+1168 X([)s
+1248 X($?)s
+1368 X(-eq)s
+1528 X(1)s
+1608 X(-a)s
+1728 X($VERBOSE)s
+2088 X(-eq)s
+2248 X(1)s
+2328 X(])s
+2408 X(;)s
+2488 X(then)s
+600 X
+4467 Y
+1368 X(echo)s
+1568 X($NAME)s
+1808 X(does)s
+2008 X(not)s
+2168 X(seem)s
+2368 X(to)s
+2488 X(be)s
+2608 X(a)s
+2688 X(nameserver)s
+3128 X(for)s
+3288 X($DOMAIN)s
+600 X
+4540 Y
+1368 X(continue)s
+600 X
+4613 Y
+1048 X(fi)s
+600 X
+4686 Y
+728 X(fi)s
+600 X
+4967 Y
+f.B 10 Z(1992)s
+754 X(LISA)s
+931 X(VI)s
+1027 X(\261)s
+1082 X(October)s
+1338 X(19)s
+1404 X(-23,)s
+1531 X(1992)s
+1685 X(\261)s
+1740 X(Long)s
+1909 X(Beach,)s
+2122 X(CA)s
+3621 X(131)s
+5280 Y
+pagebot
+
+%%Page: 132 6
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+360 X
+215 Y(Dealing)s
+601 X(with)s
+749 X(Lame)s
+934 X(Delegations)s
+360 X
+448 Y
+504 X
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(We)s
+620 X(query)s
+794 X(the)s
+899 X(listed)s
+1068 X(nameserver)s
+1399 X(twice)s
+1545 X(.)s
+1607 X(Even)s
+1767 X(in)s
+1842 X(the)s
+1947 X(case)s
+2086 X(of)s
+2164 X(a)s
+2218 X(lame)s
+2373 X(delegation,)s
+2693 X(it)s
+2755 X(may)s
+2894 X(return)s
+3077 X(with)s
+3220 X(authorita-)s
+360 X
+521 Y(tive)s
+485 X(data)s
+621 X(on)s
+711 X(the)s
+817 X(\256rst)s
+945 X(query)s
+1120 X(since)s
+1282 X(it)s
+1344 X(may)s
+1483 X(have)s
+1633 X(just)s
+1754 X(made)s
+1923 X(the)s
+2029 X(query)s
+2204 X(to)s
+2280 X(an)s
+2367 X(authoritative)s
+2730 X(nameserver)s
+3038 X(.)s
+3100 X(If)s
+3167 X(it)s
+3228 X(is)s
+3296 X(a)s
+3349 X(lame)s
+360 X
+594 Y(delegation,)s
+678 X(then)s
+815 X(the)s
+919 X(second)s
+1126 X(query)s
+1299 X(will)s
+1426 X(be)s
+1511 X(from)s
+1662 X(the)s
+1766 X(nameserver's)s
+2144 X(cache)s
+2319 X(rather)s
+2497 X(than)s
+2634 X(from)s
+2785 X(its)s
+2871 X(authoritative)s
+3232 X(data,)s
+3384 X(and)s
+360 X
+667 Y(so)s
+444 X(the)s
+551 X
+f.B 9 Z(aa)s
+636 X
+f.R 10 Z(\(authoritative)s
+1022 X(answer\))s
+1258 X(header)s
+1461 X(\257ag)s
+1586 X(will)s
+1716 X(be)s
+1803 X(missing)s
+2011 X(.)s
+2052 X(Some)s
+2228 X(really)s
+2405 X(malformed)s
+2722 X(answers)s
+2961 X(set)s
+3060 X(all)s
+3152 X(of)s
+3231 X(the)s
+3337 X(\257ags,)s
+360 X
+740 Y(and)s
+478 X(so)s
+559 X(if)s
+622 X(an)s
+707 X(unusual)s
+936 X(one)s
+1054 X(is)s
+1121 X(set,)s
+1235 X(like)s
+1358 X
+f.B 9 Z(tc)s
+1427 X
+f.R 10 Z(we)s
+1527 X(consider)s
+1775 X(the)s
+1879 X(answer)s
+2090 X(to)s
+2164 X(be)s
+2249 X(invalid)s
+2435 X(.)s
+360 X
+842 Y
+488 X
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+f.CW 10 Z(#)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+360 X
+915 Y
+488 X(#)s
+568 X(If)s
+688 X(the)s
+848 X(delegation)s
+1288 X(is)s
+1408 X(no)s
+1528 X(longer)s
+1808 X(lame,)s
+2048 X(don't)s
+2288 X(send)s
+2488 X(mail)s
+2648 X(.)s
+360 X
+988 Y
+488 X(#)s
+568 X(We)s
+688 X(do)s
+808 X(the)s
+968 X(query)s
+1208 X(twice;)s
+1488 X(the)s
+1648 X(first)s
+1888 X(answer)s
+2168 X(could)s
+2408 X(be)s
+2528 X(authori)s
+2808 X(-)s
+360 X
+1061 Y
+488 X(#)s
+568 X(tative)s
+848 X(even)s
+1048 X(if)s
+1168 X(the)s
+1328 X(nameserver)s
+1768 X(is)s
+1888 X(not)s
+2048 X(performing)s
+2488 X(service)s
+360 X
+1134 Y
+488 X(#)s
+568 X(for)s
+728 X(the)s
+888 X(domain)s
+1128 X(.)s
+1248 X(If)s
+1368 X(this)s
+1568 X(is)s
+1688 X(the)s
+1848 X(case,)s
+2088 X(then)s
+2288 X(the)s
+2448 X(second)s
+360 X
+1207 Y
+488 X(#)s
+568 X(query)s
+808 X(will)s
+1008 X(come)s
+1208 X(from)s
+1408 X(cached)s
+1688 X(data,)s
+1928 X(and)s
+2088 X(will)s
+2288 X(be)s
+2408 X(exposed)s
+360 X
+1280 Y
+488 X(#)s
+568 X(on)s
+688 X(the)s
+848 X(second)s
+1128 X(query)s
+1328 X(.)s
+1448 X(If)s
+1568 X(the)s
+1728 X(resolver)s
+2088 X(returns)s
+2408 X(trash,)s
+2688 X(the)s
+360 X
+1353 Y
+488 X(#)s
+568 X(entire)s
+848 X(set)s
+1008 X(of)s
+1128 X(flags)s
+1368 X(will)s
+1568 X(be)s
+1688 X(set)s
+1808 X(.)s
+1928 X(In)s
+2048 X(this)s
+2248 X(case,)s
+2488 X(don't)s
+360 X
+1426 Y
+488 X(#)s
+568 X(count)s
+808 X(the)s
+968 X(answer)s
+1248 X(as)s
+1368 X(authoritative)s
+1888 X(.)s
+360 X
+1499 Y
+488 X(#)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+360 X
+1572 Y
+488 X(if)s
+608 X([)s
+688 X($VERBOSE)s
+1048 X(-eq)s
+1208 X(1)s
+1288 X(])s
+1368 X(;)s
+1448 X(then)s
+360 X
+1645 Y
+808 X(echo)s
+1008 X("Making)s
+1328 X(sure)s
+1528 X(that)s
+1728 X($IPADDR)s
+2048 X(is)s
+2168 X(not)s
+2328 X(providing)s
+2728 X(authoritative)s
+3288 X(data)s
+3488 X(now")s
+360 X
+1718 Y
+488 X(fi)s
+360 X
+1791 Y
+488 X(query)s
+728 X(-n)s
+848 X($IPADDR)s
+1168 X(-h)s
+1288 X($DOMAIN)s
+1608 X(>)s
+1688 X(/dev/null)s
+2088 X(2>&1)s
+360 X
+1864 Y
+488 X(query)s
+728 X(-n)s
+848 X($IPADDR)s
+1168 X(-h)s
+1288 X($DOMAIN)s
+1608 X(2>&1)s
+1808 X(|)s
+1888 X(grep)s
+2088 X(header)s
+2368 X(|)s
+2448 X(grep)s
+2648 X(aa)s
+2768 X(|)s
+2848 X(\\)s
+360 X
+1937 Y
+2488 X(grep)s
+2688 X(-v)s
+2808 X(tc)s
+2928 X(>)s
+3008 X(/dev/null)s
+360 X
+2010 Y
+488 X(if)s
+608 X([)s
+688 X($?)s
+808 X(-eq)s
+968 X(0)s
+1048 X(])s
+1128 X(;)s
+1208 X(then)s
+360 X
+2083 Y
+568 X(if)s
+688 X([)s
+768 X($VERBOSE)s
+1128 X(-eq)s
+1288 X(1)s
+1368 X(])s
+1448 X(;)s
+1528 X(then)s
+360 X
+2156 Y
+648 X(if)s
+768 X([)s
+848 X(-n)s
+968 X(""$NAME)s
+1288 X(])s
+1368 X(;)s
+1448 X(then)s
+360 X
+2229 Y
+968 X(echo)s
+1168 X($NAME)s
+1408 X(seems)s
+1648 X(to)s
+1768 X(be)s
+1888 X(serving)s
+2208 X($DOMAIN)s
+2528 X(OK)s
+2648 X(now)s
+360 X
+2302 Y
+648 X(else)s
+360 X
+2375 Y
+968 X(echo)s
+1168 X($I)s
+1288 X(seems)s
+1528 X(to)s
+1648 X(be)s
+1768 X(serving)s
+2088 X($DOMAIN)s
+2408 X(OK)s
+2528 X(now)s
+360 X
+2448 Y
+648 X(fi)s
+360 X
+2521 Y
+568 X(fi)s
+360 X
+2594 Y
+568 X(continue)s
+360 X
+2667 Y
+488 X(fi)s
+360 X
+2790 Y
+504 X
+f.R 10 Z(If)s
+575 X(we've)s
+766 X(reached)s
+1002 X(this)s
+1127 X(point,)s
+1309 X(then)s
+1452 X(we)s
+1558 X(probably)s
+1822 X(have)s
+1976 X(a)s
+2034 X(genuine)s
+2273 X(lame)s
+2432 X(delegation)s
+2711 X(.)s
+2778 X(We)s
+2899 X(then)s
+3042 X(use)s
+3159 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 10 Z(sed)s
+3276 X
+f.R 10 Z(to)s
+3356 X(do)s
+3450 X(a)s
+360 X
+2863 Y(quick)s
+534 X(substitution)s
+872 X(on)s
+964 X(a)s
+1020 X(copy)s
+1175 X(of)s
+1256 X(the)s
+1364 X(message)s
+1617 X(we)s
+1721 X(send)s
+1869 X(out)s
+1980 X(to)s
+2058 X(mark)s
+2220 X(in)s
+2297 X(the)s
+2404 X(proper)s
+2602 X(domain)s
+2827 X(name)s
+2997 X(and)s
+3118 X(namserver)s
+3421 X(IP)s
+360 X
+2936 Y(address)s
+560 X(.)s
+621 X(We)s
+736 X(then)s
+873 X(mail)s
+1015 X(off)s
+1114 X(the)s
+1218 X(message)s
+1467 X(using)s
+1633 X(the)s
+1737 X(name)s
+1904 X("dns)s
+2023 X(-maintenance@um)s
+2530 X(ich)s
+2612 X(.edu")s
+2774 X(in)s
+2849 X(the)s
+2954 X("From:")s
+3194 X(line)s
+3295 X(.)s
+3357 X(That)s
+360 X
+3009 Y(way)s
+493 X(if)s
+556 X(it)s
+616 X(bounces)s
+856 X(\(or)s
+955 X(gets)s
+1085 X(a)s
+1137 X(reply\),)s
+1335 X(the)s
+1439 X(message)s
+1688 X(will)s
+1815 X(not)s
+1922 X(go)s
+2010 X(to)s
+2084 X(root's)s
+2261 X(mailbox)s
+2480 X(.)s
+360 X
+3111 Y
+488 X
+f.CW 10 Z(#)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+360 X
+3184 Y
+488 X(#)s
+568 X(Notify)s
+848 X(the)s
+1008 X(owner)s
+1248 X(of)s
+1368 X(the)s
+1528 X(lame)s
+1728 X(delegation,)s
+2208 X(and)s
+2368 X(also)s
+2568 X(notify)s
+360 X
+3257 Y
+488 X(#)s
+568 X(the)s
+728 X(local)s
+968 X(hostmaster)s
+1368 X(.)s
+360 X
+3330 Y
+488 X(#)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+360 X
+3403 Y
+488 X(if)s
+608 X([)s
+688 X($TESTMODE)s
+1088 X(-eq)s
+1248 X(0)s
+1328 X(])s
+1408 X(;)s
+1488 X(then)s
+360 X
+3476 Y
+568 X(if)s
+688 X([)s
+768 X($VERBOSE)s
+1128 X(-eq)s
+1288 X(1)s
+1368 X(])s
+1448 X(;)s
+1528 X(then)s
+360 X
+3549 Y
+648 X(echo)s
+848 X("Sending)s
+1208 X(to)s
+1328 X($HOSTMASTER)s
+1808 X(about)s
+2048 X(lame)s
+2248 X(server)s
+2528 X($IPADDR)s
+2848 X(for)s
+3008 X(domain)s
+3288 X($DOMAIN")s
+360 X
+3622 Y
+568 X(fi)s
+360 X
+3695 Y
+568 X(echo)s
+768 X("To:)s
+968 X(")s
+1048 X($HOSTMASTER)s
+1528 X(>)s
+1608 X($MAILMSG)s
+360 X
+3768 Y
+568 X(echo)s
+768 X("Subject:)s
+1168 X($IPADDR)s
+1488 X(seems)s
+1728 X(to)s
+1848 X(be)s
+1968 X(a)s
+2048 X(lame)s
+2248 X(delegation)s
+2688 X(for)s
+2848 X($DOMAIN")s
+3208 X(>>)s
+3328 X($MAILMSG)s
+360 X
+3841 Y
+568 X(cat)s
+728 X($MSGFILE)s
+1088 X(>>)s
+1208 X($MAILMSG)s
+360 X
+3914 Y
+568 X(sed)s
+728 X(-e)s
+848 X("s|%DOMAIN%|$DO)s
+1448 X(MAIN|")s
+1728 X(-e)s
+1848 X("s|%SERVER%|$IP)s
+2448 X(ADDR|")s
+2728 X($MSGFILE)s
+3088 X(|)s
+360 X
+3987 Y
+1128 X(/usr/lib/sendm)s
+1688 X(ail)s
+1848 X(-t)s
+1968 X(-fdns)s
+2168 X(-maintenance)s
+360 X
+4060 Y
+488 X(fi)s
+360 X
+4133 Y
+488 X(echo)s
+688 X($HOSTMASTER)s
+1168 X($DOMAIN)s
+1488 X($IPADDR)s
+1808 X(>>)s
+1928 X($LAMEREPORT)s
+360 X
+4206 Y
+408 X(done)s
+608 X(<)s
+688 X($LAMERS)s
+360 X
+4329 Y
+504 X
+f.R 10 Z(Now)s
+660 X(that)s
+788 X(we)s
+893 X(have)s
+1046 X(processed)s
+1336 X(all)s
+1431 X(of)s
+1513 X(the)s
+1622 X(lame)s
+1780 X(delegation)s
+2087 X(messages,)s
+2385 X(we're)s
+2565 X(just)s
+2690 X(about)s
+2866 X(done)s
+2995 X(.)s
+3062 X(The)s
+3194 X(last)s
+3316 X(action)s
+360 X
+4402 Y(we)s
+461 X(take)s
+596 X(is)s
+664 X(to)s
+739 X(send)s
+884 X(a)s
+937 X(single)s
+1120 X(message)s
+1370 X(to)s
+1445 X(the)s
+1550 X(local)s
+1704 X(hostmaster)s
+2017 X(at)s
+2089 X(U)s
+2137 X(-M)s
+2241 X(listing)s
+2432 X(all)s
+2523 X(of)s
+2601 X(the)s
+2705 X(lame)s
+2858 X(delegations)s
+3163 X(.)s
+3224 X(The)s
+3350 X(mes-)s
+360 X
+4475 Y(sage)s
+502 X(-)s
+547 X(a)s
+600 X(short)s
+756 X(lame)s
+910 X(delegation)s
+1212 X(report)s
+1394 X(-)s
+1439 X(lists)s
+1571 X(one)s
+1690 X(line)s
+1814 X(per)s
+1922 X(lame)s
+2076 X(delegation)s
+2378 X(found)s
+2532 X(.)s
+2594 X(On)s
+2698 X(that)s
+2822 X(line)s
+2946 X(are)s
+3051 X(the)s
+3157 X(domain,)s
+3398 X(the)s
+360 X
+4548 Y(nameserver,)s
+707 X(and)s
+825 X(the)s
+929 X(e)s
+959 X(-mail)s
+1123 X(address)s
+1345 X(that)s
+1468 X(we)s
+1568 X(used)s
+1712 X(when)s
+1878 X(sending)s
+2107 X(the)s
+2211 X(message)s
+2438 X(.)s
+360 X
+4650 Y
+408 X
+f.CW 10 Z(#)s
+448 X(-)s
+488 X(-)s
+528 X(-)s
+568 X(-)s
+608 X(-)s
+648 X(-)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+360 X
+4723 Y
+408 X(#)s
+488 X(No)s
+608 X(news)s
+808 X(is)s
+928 X(good)s
+1128 X(news)s
+360 X
+4967 Y
+f.B 10 Z(132)s
+1862 X(1992)s
+2016 X(LISA)s
+2193 X(VI)s
+2289 X(\261)s
+2344 X(October)s
+2600 X(19)s
+2666 X(-23,)s
+2793 X(1992)s
+2947 X(\261)s
+3002 X(Long)s
+3171 X(Beach,)s
+3384 X(CA)s
+5280 Y
+pagebot
+
+%%Page: 133 7
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+600 X
+215 Y
+2816 X(Dealing)s
+3057 X(with)s
+3205 X(Lame)s
+3390 X(Delegations)s
+600 X
+448 Y
+648 X
+stdencoding /NCourier /Courier RE
+/f.CW /NCourier findfont def 
+f.CW 10 Z(#)s
+688 X(-)s
+728 X(-)s
+768 X(-)s
+808 X(-)s
+848 X(-)s
+888 X(-)s
+928 X(-)s
+968 X(-)s
+1008 X(-)s
+1048 X(-)s
+1088 X(-)s
+1128 X(-)s
+1168 X(-)s
+1208 X(-)s
+1248 X(-)s
+1288 X(-)s
+1328 X(-)s
+1368 X(-)s
+1408 X(-)s
+1448 X(-)s
+1488 X(-)s
+1528 X(-)s
+1568 X(-)s
+1608 X(-)s
+1648 X(-)s
+1688 X(-)s
+1728 X(-)s
+1768 X(-)s
+1808 X(-)s
+1848 X(-)s
+1888 X(-)s
+1928 X(-)s
+1968 X(-)s
+2008 X(-)s
+2048 X(-)s
+2088 X(-)s
+2128 X(-)s
+2168 X(-)s
+2208 X(-)s
+2248 X(-)s
+2288 X(-)s
+2328 X(-)s
+2368 X(-)s
+2408 X(-)s
+2448 X(-)s
+2488 X(-)s
+2528 X(-)s
+2568 X(-)s
+2608 X(-)s
+2648 X(-)s
+2688 X(-)s
+2728 X(-)s
+2768 X(-)s
+2808 X(-)s
+2848 X(-)s
+2888 X(-)s
+2928 X(-)s
+2968 X(-)s
+3008 X(-)s
+600 X
+521 Y
+648 X(if)s
+768 X([)s
+848 X(-s)s
+968 X($LAMEREPORT)s
+1448 X(])s
+1528 X(;)s
+1608 X(then)s
+600 X
+594 Y
+968 X(Mail)s
+1168 X(-s)s
+1288 X("Lame)s
+1528 X(report")s
+1848 X(hostmaster@umic)s
+2448 X(h)s
+2488 X(.edu)s
+2688 X(<)s
+2768 X($LAMEREPORT)s
+600 X
+667 Y
+648 X(fi)s
+600 X
+740 Y
+648 X(rm)s
+768 X(-f)s
+888 X($LAMERS)s
+1208 X($MAILMSG)s
+1568 X($LAMEREPORT)s
+2048 X($WEEKFILE)s
+600 X
+842 Y
+1159 X
+f.B 10 Z(Conclusions)s
+600 X
+951 Y
+744 X
+stdencoding /NTimes-Roman /Times-Roman RE
+/f.R /NTimes-Roman findfont def 
+f.R 10 Z(We've)s
+953 X(been)s
+1110 X(using)s
+1285 X(this)s
+1413 X(tool)s
+1548 X(to)s
+1632 X(notify)s
+1823 X(hostmas-)s
+600 X
+1024 Y(ters)s
+722 X(of)s
+801 X(lame)s
+956 X(delegations)s
+1285 X(for)s
+1386 X(about)s
+1558 X(one)s
+1678 X(year)s
+1817 X(now)s
+1931 X(.)s
+1994 X(So)s
+600 X
+1097 Y(far)s
+703 X(the)s
+815 X(results)s
+1020 X(have)s
+1176 X(been)s
+1332 X(very)s
+1480 X(encouraging)s
+1809 X(.)s
+1878 X(Except)s
+600 X
+1170 Y(for)s
+702 X(some)s
+868 X(really)s
+1046 X(hard)s
+1164 X(-core)s
+1326 X(lamers,)s
+1546 X(most)s
+1700 X(sites)s
+1844 X(who)s
+1982 X(are)s
+600 X
+1243 Y(\257agged)s
+818 X(one)s
+936 X(week)s
+1099 X(as)s
+1177 X(having)s
+1381 X(a)s
+1434 X(lame)s
+1588 X(delegation)s
+1890 X(do)s
+1979 X(not)s
+600 X
+1316 Y(get)s
+714 X(\257agged)s
+942 X(the)s
+1056 X(following)s
+1347 X(week)s
+1488 X(.)s
+1559 X(Unfortunately,)s
+1982 X(the)s
+600 X
+1389 Y(number)s
+839 X(of)s
+930 X(lame)s
+1097 X(delegations)s
+1438 X(discovered)s
+1763 X(each)s
+1923 X(week)s
+600 X
+1462 Y(doesn't)s
+824 X(seem)s
+990 X(to)s
+1070 X(be)s
+1161 X(going)s
+1340 X(down)s
+1514 X(either)s
+1667 X(.)s
+1733 X(We've)s
+1938 X(been)s
+600 X
+1535 Y(told)s
+738 X(by)s
+838 X(the)s
+954 X(folks)s
+1121 X(at)s
+1205 X(NSFNET)s
+1492 X(that)s
+1628 X(domain)s
+1863 X(packets)s
+600 X
+1608 Y(account)s
+834 X(for)s
+936 X(about)s
+1109 X(10%)s
+1256 X(of)s
+1336 X(the)s
+1443 X(backbone)s
+1723 X(T3)s
+1822 X(traf\256c;)s
+2026 X(it)s
+600 X
+1681 Y(would)s
+790 X(be)s
+878 X(interesting)s
+1186 X(to)s
+1263 X(conduct)s
+1499 X(an)s
+1587 X(experiment)s
+1913 X(to)s
+1990 X(try)s
+600 X
+1754 Y(to)s
+695 X(discover)s
+964 X(exactly)s
+1201 X(how)s
+1357 X(much)s
+1547 X(of)s
+1644 X(that)s
+1787 X(is)s
+1874 X(due)s
+2012 X(to)s
+600 X
+1827 Y(miscon\256gured)s
+1003 X(nameservers)s
+1337 X(.)s
+600 X
+1921 Y
+744 X(Response)s
+1023 X(from)s
+1176 X(hostmasters)s
+1516 X(receiving)s
+1790 X(mail)s
+1935 X(from)s
+600 X
+1994 Y(this)s
+725 X(script)s
+902 X(has)s
+1019 X(generally)s
+1296 X(been)s
+1450 X(very)s
+1595 X(favorable)s
+1847 X(.)s
+1913 X(Com-)s
+600 X
+2067 Y(ments)s
+784 X(run)s
+896 X(the)s
+1002 X(gamut)s
+1193 X(from)s
+1347 X("Thanks)s
+1595 X(for)s
+1697 X(the)s
+1804 X(heads)s
+1981 X(up)s
+2047 X(.)s
+600 X
+2140 Y(We)s
+732 X(don't)s
+911 X(mind)s
+1087 X(at)s
+1175 X(all)s
+1282 X(getting)s
+1506 X(the)s
+1626 X(mail)s
+1746 X(.")s
+1828 X(to)s
+1918 X("Quit)s
+600 X
+2213 Y(sending)s
+830 X(us)s
+912 X(this)s
+1032 X(message)s
+1259 X(.)s
+1276 X(.)s
+1293 X(.")s
+1337 X(.)s
+1400 X(Most)s
+1561 X(of)s
+1640 X(the)s
+1746 X(unfavorable)s
+600 X
+2286 Y(replies)s
+804 X(come)s
+974 X(from)s
+1128 X(people)s
+1331 X(who)s
+1470 X(don't)s
+1634 X(understand)s
+1950 X(why)s
+600 X
+2359 Y(they're)s
+832 X(getting)s
+1061 X(the)s
+1186 X(message,)s
+1473 X(and)s
+1612 X(after)s
+1779 X(a)s
+1853 X(friendly)s
+600 X
+2432 Y(phone)s
+799 X(call)s
+933 X(or)s
+1024 X(follow)s
+1198 X(-up)s
+1322 X(message,)s
+1602 X(they)s
+1753 X(are)s
+1871 X(usually)s
+600 X
+2505 Y(eager)s
+767 X(to)s
+841 X(cooperate)s
+1101 X(.)s
+600 X
+2599 Y
+744 X(All)s
+865 X(of)s
+955 X(the)s
+1072 X(software)s
+1337 X(mentioned)s
+1655 X(above)s
+1850 X(and)s
+1982 X(the)s
+600 X
+2672 Y(e)s
+630 X(-mail)s
+827 X(template)s
+1114 X(that)s
+1270 X(we)s
+1403 X(use)s
+1547 X(are)s
+1684 X(available)s
+1982 X(via)s
+600 X
+2745 Y(anonymous)s
+928 X(ftp)s
+1024 X(from)s
+1175 X(terminator)s
+1454 X(.cc)s
+1531 X(.umich)s
+1715 X(.edu:/dns)s
+1958 X(.)s
+600 X
+2872 Y
+1043 X
+f.B 10 Z(Author)s
+1272 X(Information)s
+600 X
+2981 Y
+744 X
+f.R 10 Z(After)s
+914 X(receiving)s
+1192 X(his)s
+1299 X(MS)s
+1424 X(in)s
+1505 X(Computer)s
+1801 X(Engineer-)s
+600 X
+3054 Y(ing)s
+712 X(from)s
+868 X(the)s
+977 X(University)s
+1286 X(of)s
+1367 X(Michigan)s
+1649 X(in)s
+1727 X(1988,)s
+1902 X(Bryan)s
+600 X
+3127 Y(Beecher)s
+850 X(could)s
+1030 X(not)s
+1147 X(bring)s
+1319 X(himself)s
+1552 X(to)s
+1636 X(leave)s
+1810 X(academic)s
+600 X
+3200 Y(life)s
+717 X(for)s
+820 X(the)s
+928 X(hardships)s
+1209 X(of)s
+1290 X(a)s
+1346 X(real)s
+1473 X(job,)s
+1601 X(and)s
+1723 X(so)s
+1808 X(has)s
+1923 X(spent)s
+600 X
+3273 Y(the)s
+704 X(past)s
+834 X(four)s
+967 X(years)s
+1131 X(handling)s
+1387 X(domain)s
+1610 X(nameservice)s
+1968 X(and)s
+600 X
+3346 Y(teaching)s
+855 X
+f.R 8 Z(UNIX)s
+1019 X
+f.R 10 Z(system)s
+1237 X(administration)s
+1655 X(courses)s
+1886 X(for)s
+1994 X(U)s
+2042 X(-)s
+600 X
+3419 Y(M)s
+659 X(.)s
+734 X(The)s
+874 X(U)s
+922 X(-M)s
+1039 X(distribution)s
+1383 X(of)s
+1474 X(BIND)s
+1672 X(4)s
+1705 X(.8)s
+1755 X(.3)s
+1841 X(contains)s
+600 X
+3492 Y(many)s
+772 X(features)s
+1008 X(he)s
+1095 X(has)s
+1208 X(added,)s
+1407 X(such)s
+1552 X(as)s
+1631 X(Shuf\257e)s
+1846 X(Address)s
+600 X
+3565 Y(\(SA\))s
+764 X(records,)s
+1012 X(query)s
+1199 X(logging)s
+1438 X(and)s
+1570 X(report)s
+1765 X(generation,)s
+600 X
+3638 Y(and,)s
+757 X(of)s
+856 X(course,)s
+1091 X(the)s
+1217 X(lame)s
+1392 X(delegation)s
+1715 X(tools)s
+1845 X(.)s
+1927 X(Most)s
+600 X
+3711 Y(recently,)s
+879 X(he)s
+988 X(has)s
+1123 X(begun)s
+1331 X(running)s
+1584 X(U)s
+1632 X(-M's)s
+1808 X(USENET)s
+600 X
+3784 Y(news)s
+780 X(server)s
+985 X
+stdencoding /NTimes-Italic /Times-Italic RE
+/f.I /NTimes-Italic findfont def 
+f.I 10 Z(\(destroyer\),)s
+1341 X
+f.R 10 Z(and)s
+1479 X(is)s
+1566 X(part)s
+1712 X(of)s
+1809 X(the)s
+1933 X(team)s
+600 X
+3857 Y(creating)s
+850 X(better)s
+1038 X(tools)s
+1203 X(for)s
+1315 X(X)s
+1363 X(.500)s
+1479 X(-based)s
+1688 X(directory)s
+1964 X(ser-)s
+600 X
+3930 Y(vices)s
+738 X(.)s
+855 X(He)s
+1011 X(can)s
+1182 X(be)s
+1322 X(reached)s
+1607 X(via)s
+1766 X(e)s
+1796 X(-mail)s
+2015 X(at)s
+600 X
+4003 Y(bryan@umich)s
+979 X(.edu)s
+1092 X(.)s
+600 X
+4967 Y
+f.B 10 Z(1992)s
+754 X(LISA)s
+931 X(VI)s
+1027 X(\261)s
+1082 X(October)s
+1338 X(19)s
+1404 X(-23,)s
+1531 X(1992)s
+1685 X(\261)s
+1740 X(Long)s
+1909 X(Beach,)s
+2122 X(CA)s
+3621 X(133)s
+5280 Y
+pagebot
+
+%%Page: 134 8
+pagetop
+stdencoding /NTimes-Bold /Times-Bold RE
+/f.B /NTimes-Bold findfont def 
+f.B 10 Z
+360 X
+4967 Y(134)s
+1862 X(1992)s
+2016 X(LISA)s
+2193 X(VI)s
+2289 X(\261)s
+2344 X(October)s
+2600 X(19)s
+2666 X(-23,)s
+2793 X(1992)s
+2947 X(\261)s
+3002 X(Long)s
+3171 X(Beach,)s
+3384 X(CA)s
+5280 Y
+pagebot
+
+%%Trailer
+lastpage
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/getafsdb.c b/usr/src/contrib/bind-4.9.2/contrib/umich/getafsdb.c
new file mode 100644 (file)
index 0000000..5048140
--- /dev/null
@@ -0,0 +1,94 @@
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <string.h>
+#include <stdio.h>
+#include <netdb.h>
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
+#define MAXSERVERS     35
+
+static char hostbuf[BUFSIZ+1];
+static char *servers[MAXSERVERS];
+
+#if PACKETSZ > 1024
+#define        MAXPACKET       PACKETSZ
+#else
+#define        MAXPACKET       1024
+#endif
+
+typedef union {
+    HEADER hdr;
+    u_char buf[MAXPACKET];
+} querybuf;
+
+static char ** getanswer(answer, anslen, wanted)
+querybuf *answer;
+int anslen, wanted;
+{
+       register HEADER *hp;
+       register u_char *cp;
+       register int n, i = 0;
+       u_char *eom;
+       char *bp;
+       int fs, type, class, blen, ancount, qdcount, haveanswer;
+
+       eom = answer->buf + anslen;
+       hp = &answer->hdr;
+       ancount = ntohs(hp->ancount);
+       qdcount = ntohs(hp->qdcount);
+       bp = hostbuf;
+       blen = sizeof(hostbuf);
+       cp = answer->buf + sizeof(HEADER);
+       if (qdcount) {
+               cp += dn_skipname(cp, eom) + QFIXEDSZ;
+               while (--qdcount > 0)
+                       cp += dn_skipname(cp, eom) + QFIXEDSZ;
+       }
+       haveanswer = 0;
+       while (--ancount >= 0 && cp < eom) {
+               if ((n = dn_expand((char *)answer->buf, eom, cp, bp, blen)) < 0)
+                       break;
+               cp += n;
+               type = _getshort(cp);
+               cp += sizeof(u_short);
+               class = _getshort(cp);
+               cp += sizeof(u_short) + sizeof(u_long);
+               n = _getshort(cp);
+               cp += sizeof(u_short);
+               fs = _getshort(cp);
+               if ((type != T_AFSDB) || (class != C_IN) || (fs != wanted)) {
+                       cp += n;
+                       continue;
+               }
+               cp += sizeof(u_short);
+               if ((n = dn_expand((char *)answer->buf, eom, cp, bp, blen)) < 0)
+                       break;
+               if (bp[0] == '\0') {
+                       bp[0] = '.';
+                       bp[1] = '\0';
+               }
+               servers[i++] = strdup(bp);
+               cp += n;
+               haveanswer++;
+       }
+       if (haveanswer) {
+               servers[i] = NULL;
+               return (servers);
+       }
+       return ((char **) NULL);
+}
+
+char ** getafsdb(name, type)
+char *name;
+int type;
+{
+       querybuf buf;
+       int n;
+
+       if ((n = res_search(name, C_IN, T_AFSDB, buf.buf, sizeof(buf))) < 0)
+                       return ((char **) NULL);
+       return (getanswer(&buf, n, type));
+}
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/host b/usr/src/contrib/bind-4.9.2/contrib/umich/host
new file mode 100644 (file)
index 0000000..fa03a7e
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+#------------------------------------------------------------------
+#      host
+#      input ->  numerical representation of an Internet address
+#      output -> textual representation of the host at the address
+#------------------------------------------------------------------
+/usr/local/bin/query -h  `echo $1 |
+/bin/awk  '
+{
+       n = split($1, oct, ".")
+       if (n != 4)
+               printf("127.0.0.1.in-addr.arpa.\n")
+       else {
+               printf("%s.%s.%s.%s.in-addr.arpa.\n", oct[4], oct[3], oct[2], oct[1])
+       }
+}' ` -t ptr |
+/bin/awk '
+ {
+       if (($1 == "domain") && ($2 == "name")) {
+               printf("%s\n", $4)
+               exit
+       }
+ }'
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/lamer-message b/usr/src/contrib/bind-4.9.2/contrib/umich/lamer-message
new file mode 100644 (file)
index 0000000..98fd1bd
--- /dev/null
@@ -0,0 +1,42 @@
+This message was machine generated.  It is intended to alert you to a
+possible problem with one of the nameservers for the domain listed
+below.  If you have any questions about this message, please contact
+dns-maintenance@umich.edu.
+
+The nameserver listed in the subject (and again below) was detected as
+a "lame delegation" by the UMICH.EDU nameservers.
+
+       Domain: %DOMAIN%
+       Server: %SERVER%
+
+The following paragraphs describe what a lame delegation is and
+suggests some things you might do to eliminate the lame delegation.  If
+you are an experienced hostmaster, you probably do not to read the rest
+of this message; if you don't know what a lame delegation is, you
+probably want to keep reading.
+
+A lame delegation is an instance when a nameserver has been listed as
+authoritative for a domain, but does not seem to be performing
+nameservice for that domain.  A lame delegation can usually be easily
+remedied by either fixing some small error in a configuration file, or
+by contacting the appropriate hostmaster and supplying him/her with
+up-to-date information.
+
+Two pieces of information are listed above.  The first one is the name
+of the domain that was flagged, and the second one is the lame
+delegation -- that is, it is a purported nameserver for the domain.
+
+If the nameserver should be performing nameservice for the listed
+domain, it may be useful to inspect it.  Is the zone for that domain
+expiring?  If the nameserver is performing secondary service, does it
+have the correct IP address of the master server(s)?  Again, if the
+nameserver is performing secondary service, is its copy of the SOA
+record serial number greater than the one held by the master server? Is
+there a typographical error or omission in the boot file?
+
+If the nameserver should not be listed as a nameserver for the domain,
+contact the hostmaster for that domain and ask that the NS record
+pointing to your nameserver be deleted.  If your machine is not a
+nameserver for the domain, it should not be listed as such.
+
+Thank you for your time and your patience.
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/lamers.sh b/usr/src/contrib/bind-4.9.2/contrib/umich/lamers.sh
new file mode 100644 (file)
index 0000000..2d9f549
--- /dev/null
@@ -0,0 +1,219 @@
+#!/bin/sh
+PATH=:/bin:/usr/bin:/usr/ucb:/usr/local/bin
+LOGFILE=/usr/spool/log/named
+MAILMSG=/usr/tmp/mailmsg$$
+LAMERS=/usr/tmp/lamers$$
+MSGFILE=/usr/local/bin/lamer-message
+LAMEREPORT=/tmp/.lamereport$$
+REPORT=/tmp/.report.$$
+WEEKFILE=/usr/tmp/week$$
+HOSTMASTER="lame-delegations@terminator.rs.itd.umich.edu"
+
+# -------------------------------------------------------------
+#  Copyright (c) 1991 Regents of the University of Michigan.
+#  All rights reserved.
+#
+#  Redistribution and use is permitted provided that this notice 
+#  is preserved and that due credit is given to the University of 
+#  Michigan. The name of the University may not be used to endorse 
+#  or promote products derived from this software without specific 
+#  prior written permission. This software is provided "as is" 
+#  without express or implied warranty.
+#
+#  Lame delegation notifier
+#  Author:  Bryan Beecher
+#  Last Modified:  10/27/92
+#
+#  To make use of this software, you need to be running the
+#  University of Michigan release of BIND 4.8.3, or any version
+#  of named that supports the LAME_DELEGATION patches posted to
+#  USENET.  The U-M release is available via anonymous ftp from
+#  terminator.rs.itd.umich.edu:/dns/bind4.8.3.tar.Z.
+#
+#  You must also have a copy of query(1) and host(1).  These
+#  are also available via anonymous ftp in the aforementioned
+#  place.
+# -------------------------------------------------------------
+
+# -------------------------------------------------------------
+#  handle arguments
+# -------------------------------------------------------------
+#      -d <day>
+#      This flag is used to append a dot-day suffix to the LOGFILE.
+#      Handy where log files are kept around for the last week
+#      and contain a day suffix.
+#
+#      -f <logfile>
+#      Change the LOGFILE value altogether.
+#
+#      -w
+#      Count up all of the DNS statistics for the whole week.
+#
+#      -v
+#      Be verbose.
+#
+#      -t
+#      Test mode.  Do not send mail to the lame delegation
+#      hostmasters.
+# -------------------------------------------------------------
+VERBOSE=0
+TESTMODE=0
+while [ $# != 0 ] ; do
+       case "$1" in
+               -d)
+               LOGFILE=$LOGFILE"."$2
+               shift
+               ;;
+
+               -f)
+               LOGFILE=$2
+               shift
+               ;;
+
+               -w)
+               cat $LOGFILE* > $WEEKFILE
+               LOGFILE=$WEEKFILE
+               ;;
+
+               -v)
+               VERBOSE=1
+               ;;
+
+               -t)
+               TESTMODE=1
+               ;;
+       esac
+       shift
+done
+
+#--------------------------------------------------------------------------
+#  Clean up and exit on a HUP, INT or QUIT
+#--------------------------------------------------------------------------
+trap "rm -f $LAMERS $MAILMSG $LAMEREPORT $WEEKFILE ; exit" 1 2 3
+
+#--------------------------------------------------------------------------
+#  See if there are any lamers
+#--------------------------------------------------------------------------
+grep "Lame" $LOGFILE | tr A-Z a-z | grep -v "*" | awk '{
+       print substr($16, 2, length($16) - 3), $12 }' |
+       sort | uniq | awk '{
+               printf("%s %s\n", $1, $2)
+}' > $LAMERS
+
+if [ ! -s $LAMERS ] ; then
+       exit 0
+fi
+
+if [ $VERBOSE -eq 1 ] ; then
+       echo "Found" `awk 'END { print NR }' $LAMERS` "lame delegations"
+fi
+
+#--------------------------------------------------------------------------
+#  There were lamers; send them mail
+#--------------------------------------------------------------------------
+touch $LAMEREPORT
+NAME=""
+while read DOMAIN IPADDR ; do
+       #-----------------------------------------------------------
+       # Echo args if verbose
+       #-----------------------------------------------------------
+       if [ $VERBOSE -eq 1 ] ; then
+               echo "$IPADDR may be a lame delegation for $DOMAIN"
+       fi
+       #-----------------------------------------------------------
+       # Lookup the SOA record form $DOMAIN.  A really broken name
+       # server many have more than one SOA for a domain, so exit
+       # after finding the first one.  Send it to the local hostmaster
+       # if we cannot find the proper one.
+       #-----------------------------------------------------------
+       if [ $VERBOSE -eq 1 ] ; then
+               echo "Looking up the hostmaster for $DOMAIN"
+       fi
+       HOSTMASTER=`query -h $DOMAIN -t SOA 2> /dev/null | awk '/mail addr/ { print $4 ; exit }' | sed -e 's/\./@/'`
+       NAME=`host $IPADDR 2> /dev/null`
+       if [ -z ""$HOSTMASTER ] ; then
+               if [ -z ""$NAME ] ; then
+                       HOSTMASTER="hostmaster"
+               else
+                       HOSTMASTER="postmaster@"$NAME
+               fi
+       fi
+       #-----------------------------------------------------------
+       # Find the name associated with IP address $IPADDR.  Query
+       # the nameserver at that address:  If it responds listing
+       # itself as a domain namserver, then it is lame; if it isn't
+       # in the list, then perhaps the lame delegation alert was
+       # spurious.
+       #-----------------------------------------------------------
+       if [ $VERBOSE -eq 1 ] ; then
+               echo "Making sure that $IPADDR is listed as a NS for $DOMAIN"
+       fi
+       if [ -n ""$NAME ] ; then
+               query -n $IPADDR -h $DOMAIN 2>&1 | grep "domain name" | grep -i $NAME > /dev/null
+               if [ $? -eq 1 -a $VERBOSE -eq 1 ] ; then
+                       echo $NAME does not seem to be a nameserver for $DOMAIN
+                       continue
+               fi
+       fi
+       #-----------------------------------------------------------
+       # If the delegation is no longer lame, don't send mail.
+       # We do the query twice; the first answer could be authori-
+       # tative even if the nameserver is not performing service
+       # for the domain.  If this is the case, then the second
+       # query will come from cached data, and will be exposed
+       # on the second query.  If the resolver returns trash, the
+       # entire set of flags will be set.  In this case, don't
+       # count the answer as authoritative.
+       #-----------------------------------------------------------
+       if [ $VERBOSE -eq 1 ] ; then
+               echo "Making sure that $IPADDR is not providing authoritative data now"
+       fi
+       query -n $IPADDR -h $DOMAIN > /dev/null 2>&1 
+       query -n $IPADDR -h $DOMAIN 2>&1 | grep header | grep aa | grep -v tc > /dev/null
+       if [ $? -eq 0 ] ; then
+               if [ $VERBOSE -eq 1 ] ; then
+                       if [ -n ""$NAME ] ; then
+                               echo $NAME seems to be serving $DOMAIN OK now
+                       else
+                               echo $I seems to be serving $DOMAIN OK now
+                       fi
+               fi
+               continue
+       fi
+       #-----------------------------------------------------------
+       # Notify the owner of the lame delegation, and also notify
+       # the local hostmaster.
+       #-----------------------------------------------------------
+       if [ $TESTMODE -eq 0 ] ; then
+               if [ $VERBOSE -eq 1 ] ; then
+                       echo "Sending mail to $HOSTMASTER about lame server $IPADDR for domain $DOMAIN"
+               fi
+               echo "To: " $HOSTMASTER > $MAILMSG
+               echo "Subject: $IPADDR appears to be a lame delegation for $DOMAIN" >> $MAILMSG
+               cat $MSGFILE >> $MAILMSG
+               if [ -z ""$NAME ] ; then
+                       NAME=" "
+               fi
+               sed -e "s|%DOMAIN%|$DOMAIN|" -e "s|%SERVER%|$NAME|" -e "s|%IPADDR%|$IPADDR|" $MAILMSG |
+                       /usr/lib/sendmail -t -fdns-maintenance
+       fi
+       echo $IPADDR $DOMAIN >> $LAMEREPORT
+done < $LAMERS
+#--------------------------------------------------------------------------
+# No news is good news
+#--------------------------------------------------------------------------
+if [ -s $LAMEREPORT ] ; then
+       rm -f $REPORT
+       echo "The following lame delegations were discovered by the U-M namservers" >> $REPORT
+       echo "during the past two weeks of operation." >> $REPORT
+       echo " " >> $REPORT
+       echo "This nameserver  was found to be a lame delegation for this domain" >> $REPORT
+       echo "---------------  -------------------------------------------------" >> $REPORT
+       awk '{ printf("%-15s  %s\n", $1, $2) }' $LAMEREPORT >> $REPORT
+       Mail -s "U-M lame delegation report" $HOSTMASTER < $REPORT
+fi
+
+#--------------------------------------------------------------------------
+# Tidy up
+#--------------------------------------------------------------------------
+rm -f $LAMERS $MAILMSG $LAMEREPORT $WEEKFILE $REPORT
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/named.boot b/usr/src/contrib/bind-4.9.2/contrib/umich/named.boot
new file mode 100644 (file)
index 0000000..6abe1ef
--- /dev/null
@@ -0,0 +1,127 @@
+;-----------------------------------------------------------------------------
+;  look in this subdirectory for the following files
+;-----------------------------------------------------------------------------
+directory      /usr/local/domain
+;-----------------------------------------------------------------------------
+; TYPE         DOMAIN                          FILE
+;-----------------------------------------------------------------------------
+cache          .                               named.cache
+;-----------------------------------------------------------------------------
+;  University of Michigan
+;-----------------------------------------------------------------------------
+primary                umich.edu                       edu/umich/hosts
+primary                admin.umich.edu                 edu/umich/admin
+primary                cc.umich.edu                    edu/umich/cc
+primary                isr.umich.edu                   edu/umich/isr/hosts
+primary                dsc.umich.edu                   edu/umich/dsc
+primary                law.umich.edu                   edu/umich/law/hosts
+primary                lib.law.umich.edu               edu/umich/law/lib
+primary                biop.umich.edu                  edu/umich/biop
+primary                phar.umich.edu                  edu/umich/phar
+primary                soe.umich.edu                   edu/umich/soe
+primary                lib.umich.edu                   edu/umich/lib
+primary                isdn.umich.edu                  edu/umich/isdn
+primary                cpat.umich.edu                  edu/umich/cpat
+primary                art.umich.edu                   edu/umich/art
+primary                musart.umich.edu                edu/umich/musart
+primary                arch.umich.edu                  edu/umich/arch
+primary                sils.umich.edu                  edu/umich/sils
+primary                housing.umich.edu               edu/umich/housing
+primary                drda.umich.edu                  edu/umich/drda
+primary                cscar.umich.edu                 edu/umich/cscar
+primary                itd.umich.edu                   edu/umich/itd/hosts
+primary                rs.itd.umich.edu                edu/umich/itd/rs
+primary                uis.itd.umich.edu               edu/umich/itd/uis
+primary                events.itd.umich.edu            edu/umich/itd/events
+primary                psc.lsa.umich.edu               edu/umich/lsa/psc
+primary                0.0.127.in-addr.arpa            arpa/localhost
+primary                211.141.in-addr.arpa            arpa/141/211/hosts
+primary                124.211.141.in-addr.arpa        arpa/141/211/124
+primary                164.211.141.in-addr.arpa        arpa/141/211/164
+primary                166.211.141.in-addr.arpa        arpa/141/211/166
+primary                178.211.141.in-addr.arpa        arpa/141/211/178
+primary                180.211.141.in-addr.arpa        arpa/141/211/180
+primary                183.211.141.in-addr.arpa        arpa/141/211/183
+primary                186.211.141.in-addr.arpa        arpa/141/211/186
+primary                188.211.141.in-addr.arpa        arpa/141/211/188
+primary                190.211.141.in-addr.arpa        arpa/141/211/190
+primary                198.211.141.in-addr.arpa        arpa/141/211/198
+primary                200.211.141.in-addr.arpa        arpa/141/211/200
+primary                202.211.141.in-addr.arpa        arpa/141/211/202
+primary                203.211.141.in-addr.arpa        arpa/141/211/203
+primary                204.211.141.in-addr.arpa        arpa/141/211/204
+primary                207.211.141.in-addr.arpa        arpa/141/211/207
+primary                213.211.141.in-addr.arpa        arpa/141/211/213
+primary                218.211.141.in-addr.arpa        arpa/141/211/218
+primary                220.211.141.in-addr.arpa        arpa/141/211/220
+primary                228.211.141.in-addr.arpa        arpa/141/211/228
+primary                230.211.141.in-addr.arpa        arpa/141/211/230
+primary                232.211.141.in-addr.arpa        arpa/141/211/232
+primary                234.211.141.in-addr.arpa        arpa/141/211/234
+primary                239.211.141.in-addr.arpa        arpa/141/211/239
+primary                242.211.141.in-addr.arpa        arpa/141/211/242
+primary                244.211.141.in-addr.arpa        arpa/141/211/244
+primary                246.211.141.in-addr.arpa        arpa/141/211/246
+primary                252.211.141.in-addr.arpa        arpa/141/211/252
+primary                12.194.35.in-addr.arpa          arpa/35/194/12
+primary                16.196.35.in-addr.arpa          arpa/35/196/16
+primary                128.211.35.in-addr.arpa         arpa/35/211/128
+;-----------------------------------------------------------------------------
+;  Grand Valley State University
+;-----------------------------------------------------------------------------
+primary                gvsu.edu                        edu/gvsu
+primary                61.148.in-addr.arpa             arpa/148/61/hosts
+;-----------------------------------------------------------------------------
+;  Saginaw Valley State University
+;-----------------------------------------------------------------------------
+primary                svsu.edu                        edu/svsu
+primary                138.155.in-addr.arpa            arpa/155/138/hosts
+;-----------------------------------------------------------------------------
+;  Northwest Michigan College
+;-----------------------------------------------------------------------------
+primary                nmc.edu                         edu/nmc
+primary                242.88.192.in-addr.arpa         arpa/192/88/242
+;-----------------------------------------------------------------------------
+;  Alma College
+;-----------------------------------------------------------------------------
+primary                alma.edu                        edu/alma
+primary                250.101.192.in-addr.arpa        arpa/192/101/250
+;-----------------------------------------------------------------------------
+;  Delta College
+;-----------------------------------------------------------------------------
+primary                delta.edu                       edu/delta
+primary                133.161.in-addr.arpa            arpa/161/133
+;-----------------------------------------------------------------------------
+;  Hillsdale College
+;-----------------------------------------------------------------------------
+primary                hillsdale.edu                   edu/hillsdale
+primary                187.231.192.in-addr.arpa        arpa/192/231/187
+;-----------------------------------------------------------------------------
+;  Consortium for International Earth Science Information Network
+;-----------------------------------------------------------------------------
+primary                ciesin.org                      org/ciesin
+primary                39.160.in-addr.arpa             arpa/160/39
+primary                176.1.35.in-addr.arpa           arpa/35/1/176
+primary                244.146.192.in-addr.arpa        arpa/192/146/244
+primary                231.195.192.in-addr.arpa        arpa/192/195/231
+primary                232.195.192.in-addr.arpa        arpa/192/195/232
+;-----------------------------------------------------------------------------
+;  Individual sites in Michigan
+;-----------------------------------------------------------------------------
+primary                mi.org                          org/mi
+;-----------------------------------------------------------------------------
+;  K-12 stuff
+;-----------------------------------------------------------------------------
+primary                k12.mi.us                       us/mi/k12/hosts
+primary                lamphere.k12.mi.us              us/mi/k12/lamphere
+primary                northville.k12.mi.us            us/mi/k12/northville
+primary                bloomfield.k12.mi.us            us/mi/k12/bloomfield
+primary                193.153.192.in-addr.arpa        arpa/192/153/193
+primary                95.188.192.in-addr.arpa         arpa/192/188/95
+primary                97.188.192.in-addr.arpa         arpa/192/188/97
+primary                104.195.192.in-addr.arpa        arpa/192/195/104
+;-----------------------------------------------------------------------------
+;  Companies we're nice to
+;-----------------------------------------------------------------------------
+primary                cfc.com                         com/cfc
+primary                medar.com                       com/medar
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/root.cache b/usr/src/contrib/bind-4.9.2/contrib/umich/root.cache
new file mode 100644 (file)
index 0000000..7e8fe61
--- /dev/null
@@ -0,0 +1,19 @@
+;------------------------------------------------------------------------
+;      cache pre-load          (U-M)           10/1/1991
+;------------------------------------------------------------------------ 
+.                       999999  IN      NS      NS.NIC.DDN.MIL.
+                        999999  IN      NS      KAVA.NISC.SRI.COM.
+                        999999  IN      NS      AOS.BRL.MIL.
+                        999999  IN      NS      C.NYSER.NET.
+                        999999  IN      NS      TERP.UMD.EDU.
+                        999999  IN      NS      NS.NASA.GOV.
+                        999999  IN      NS      NIC.NORDU.NET.
+;------------------------------------------------------------------------ 
+NS.NIC.DDN.MIL.         999999  IN      A           192.112.36.4
+KAVA.NISC.SRI.COM.      999999  IN      A           192.33.33.24
+AOS.BRL.MIL.            999999  IN      A           192.5.25.82
+C.NYSER.NET.            999999  IN      A           192.33.4.12
+TERP.UMD.EDU.           999999  IN      A           128.8.10.90
+NS.NASA.GOV.            999999  IN      A           128.102.16.10
+NS.NASA.GOV.            999999  IN      A           192.52.195.10
+NIC.NORDU.NET.          999999  IN      A           192.36.148.17
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/sample.hosts b/usr/src/contrib/bind-4.9.2/contrib/umich/sample.hosts
new file mode 100644 (file)
index 0000000..32f5829
--- /dev/null
@@ -0,0 +1,174 @@
+;-----------------------------------------------------------------
+;      rs.itd.umich.edu
+;-----------------------------------------------------------------
+@      in      soa     dns.itd.umich.edu.      hostmaster.umich.edu.  (
+               921110  ; serial number
+               28800   ; secondaries refresh every 8 hours
+               14400   ; if refresh fails, retry every 4 hours
+               2419200 ; if cannot refresh, expire in 30 days
+               86400 ) ; default ttl
+       in      ns      dns.itd.umich.edu.
+       in      ns      dns2.itd.umich.edu.
+       in      ns      joker.cs.wisc.edu.
+       in      a       141.211.164.11
+;-----------------------------------------------------------------
+kerberos       in      cname   terminator
+loghost                in      a       127.0.0.1
+localhost      in      a       127.0.0.1
+;-----------------------------------------------------------------
+;      Junk
+;-----------------------------------------------------------------
+cms1           in      a       35.1.1.149
+               in      hinfo   "IBM-9021/720" "VM/CMS"
+rs1            in      cname   cms1
+r              in      cname   cms1
+;-----------------------------------------------------------------
+;      Apollo
+;-----------------------------------------------------------------
+katana         in      a       141.211.164.42
+               in      a       141.211.166.3
+               in      hinfo   "APOLLO" "DOMAIN"
+dagger         in      a       141.211.166.5
+               in      hinfo   "APOLLO" "DOMAIN"
+shuriken       in      a       141.211.166.8
+               in      hinfo   "APOLLO" "DOMAIN"
+idahoan                in      a       141.211.165.31
+               in      hinfo   "APOLLO" "DOMAIN"
+;-----------------------------------------------------------------
+;      2nd floor stuff
+;-----------------------------------------------------------------
+kayak          in      a       141.211.165.25
+               in      hinfo   "PS/2-80" "AIX"
+newfoundland   in      a       141.211.165.27
+               in      hinfo   "IBM-RS/6000" "AIX"
+labrador       in      a       141.211.165.35
+               in      hinfo   "SPARC IPC" "SunOS 4.1"
+demo           in      a       141.211.165.37
+crocodile      in      a       141.211.165.38
+;-----------------------------------------------------------------
+;      NCD-19
+;-----------------------------------------------------------------
+spanky         in      a       141.211.164.111
+               in      hinfo   "NCD19" "NCDware"
+darla          in      a       141.211.164.112
+               in      hinfo   "NCD19" "NCDware"
+;-----------------------------------------------------------------
+;      DOS
+;-----------------------------------------------------------------
+jacobsladder   in      a       141.211.164.150
+               in      hinfo   "Diamond 486" "BSD"
+peesee         in      a       141.211.164.156
+;-----------------------------------------------------------------
+;      DEC
+;-----------------------------------------------------------------
+bloodsport     in      a       141.211.164.169
+               in      hinfo   "DECStation-3100" "Ultrix 4.3"
+bs             in      cname   bloodsport
+;-----------------------------------------------------------------
+;      RIOS
+;-----------------------------------------------------------------
+spanglebaby    in      a       141.211.164.173
+               in      hinfo   "IBM/PC-RT" "AOS"
+;-----------------------------------------------------------------
+;      Macs
+;-----------------------------------------------------------------
+deadbeef       in      a       141.211.164.190
+               in      hinfo   "MAC-IIX" "MACOS"
+clarus         in      a       141.211.164.192
+               in      hinfo   "MAC-IIX" "MACOS"
+kirwin         in      a       141.211.164.193
+               in      hinfo   "MAC-II" "MACOS"
+gml            in      a       141.211.164.195
+               in      hinfo   "MAC-II" "MACOS"
+klm            in      a       141.211.164.196
+               in      hinfo   "MAC" "MACOS"
+inxs           in      a       141.211.164.201
+               in      hinfo   "MAC" "MACOS"
+;-----------------------------------------------------------------
+;      Sun-3/50
+;-----------------------------------------------------------------
+commando       in      a       141.211.165.33
+               in      mx 10   terminator
+               in      hinfo   "SUN-3/50" "UNIX"
+pumpingiron    in      a       141.211.164.33
+               in      mx 0    terminator
+               in      hinfo   "SUN-3/50" "UNIX"
+predator       in      a       141.211.164.35
+               in      mx 0    terminator
+               in      hinfo   "SUN-3/50" "UNIX"
+redsonja       in      a       141.211.164.37
+               in      mx 0    terminator
+               in      hinfo   "SUN-3/50" "UNIX"
+redheat                in      a       141.211.165.29
+               in      mx 0    terminator
+               in      hinfo   "SUN-3/50" "UNIX"
+;-----------------------------------------------------------------
+;      Sun-4/40
+;-----------------------------------------------------------------
+notorious      in      a       141.211.164.10
+               in      mx 0    notorious
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+vertigo                in      a       141.211.164.11
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+rearwindow     in      a       141.211.164.12
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+psycho         in      a       141.211.164.13
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+topaz          in      a       141.211.164.14
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+shad           in      cname   shadowofadoubt
+shadowofadoubt in      a       141.211.164.15
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+lifeboat       in      a       141.211.164.16
+               in      hinfo   "SUN-4/40" "SunOS 4.1.1"
+;-----------------------------------------------------------------
+;      Sun-4/470
+;-----------------------------------------------------------------
+e              in      cname   totalrecall
+totalrecall    in      a       35.1.1.91
+               in      hinfo   "SUN-4/470" "SunOS 4.1.1"
+               in      mx 0    totalrecall
+;-----------------------------------------------------------------
+;      Sun-4/360
+;-----------------------------------------------------------------
+judgmentday    in      cname   destroyer
+b              in      cname   destroyer
+t2             in      cname   destroyer
+destroyer      in      a       35.1.1.90
+               in      hinfo   "SUN-4/360" "UNIX"
+               in      mx 0    destroyer
+               in      mx 10   terminator
+d              in      cname   terminator
+terminator     in      a       141.211.164.2
+               in      hinfo   "SUN-4/670" "UNIX"
+;-----------------------------------------------------------------
+;      Dynamic macs
+;-----------------------------------------------------------------
+mac01          in      a       141.211.164.212
+mac02          in      a       141.211.164.213
+mac03          in      a       141.211.164.214
+mac04          in      a       141.211.164.215
+mac05          in      a       141.211.164.216
+mac06          in      a       141.211.164.217
+mac07          in      a       141.211.164.218
+mac08          in      a       141.211.164.219
+mac09          in      a       141.211.164.220
+mac10          in      a       141.211.164.221
+mac11          in      a       141.211.164.222
+mac12          in      a       141.211.164.223
+mac13          in      a       141.211.164.224
+mac14          in      a       141.211.164.225
+mac15          in      a       141.211.164.226
+mac16          in      a       141.211.164.227
+mac17          in      a       141.211.164.228
+mac18          in      a       141.211.164.229
+mac19          in      a       141.211.164.230
+mac20          in      a       141.211.164.231
+;-----------------------------------------------------------------
+;      For testing
+;-----------------------------------------------------------------
+mta            in      a       141.211.164.10
+               in      a       141.211.164.11
+               in      a       141.211.164.12
+               in      a       141.211.164.13
+               in      a       141.211.164.14
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/sample.rev b/usr/src/contrib/bind-4.9.2/contrib/umich/sample.rev
new file mode 100644 (file)
index 0000000..6e811a9
--- /dev/null
@@ -0,0 +1,122 @@
+;------------------------------------------------------------
+@      in      soa     dns.itd.umich.edu.      hostmaster.umich.edu.  (
+               921015  ; serial number
+               28800   ; secondaries refresh every 8 hours
+               14400   ; if refresh fails, retry every 4 hours
+               2419200 ; if cannot refresh, expire in 30 days
+               14400 ) ; default ttl
+       in      ns      dns.itd.umich.edu.
+       in      ns      dns2.itd.umich.edu.
+       in      ns      joker.cs.wisc.edu.
+;------------------------------------------------------------
+;      Fiber connection
+;------------------------------------------------------------
+1              in      ptr     E-4ARGUS.ARGUS.UMNET.UMICH.EDU.
+;------------------------------------------------------------
+;      Sun servers (2-9)
+;------------------------------------------------------------
+2              in      ptr     terminator.rs.itd.umich.edu.
+8              in      ptr     terminator.cc.umich.edu.
+;------------------------------------------------------------
+;      Sun 4/40s (10-19)
+;------------------------------------------------------------
+10             in      ptr     notorious.rs.itd.umich.edu.
+11             in      ptr     vertigo.rs.itd.umich.edu.
+12             in      ptr     rearwindow.rs.itd.umich.edu.
+13             in      ptr     psycho.rs.itd.umich.edu.
+14             in      ptr     topaz.rs.itd.umich.edu.
+15             in      ptr     shadowofadoubt.rs.itd.umich.edu.
+16             in      ptr     lifeboat.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      Sun 3/50s (30-39)
+;------------------------------------------------------------
+33             in      ptr     pumpingiron.rs.itd.umich.edu.
+35             in      ptr     predator.rs.itd.umich.edu.
+37             in      ptr     redsonja.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      Apollos (40-49)
+;------------------------------------------------------------
+42             in      ptr     katana.rs.itd.umich.edu.
+43             in      ptr     mace.rs.itd.umich.edu.
+44             in      ptr     scimitar.rs.itd.umich.edu.
+45             in      ptr     paris.citi.umich.edu.
+;------------------------------------------------------------
+;      Dory's ISDN (50-99)
+;------------------------------------------------------------
+51             in      ptr     umtel1.isdn.umich.edu.
+52             in      ptr     umtel2.isdn.umich.edu.
+53             in      ptr     umtel3.isdn.umich.edu.
+54             in      ptr     umtel4.isdn.umich.edu.
+56             in      ptr     broadcast.dvh.isdn.umich.edu.
+57             in      ptr     gw.dvh.isdn.umich.edu.
+58             in      ptr     pc.dvh.isdn.umich.edu.
+59             in      ptr     mac.dvh.isdn.umich.edu.
+60             in      ptr     next1.dvh.isdn.umich.edu.
+61             in      ptr     next2.dvh.isdn.umich.edu.
+62             in      ptr     unused.dvh.isdn.umich.edu.
+63             in      ptr     broadcast.dvh.isdn.umich.edu.
+65             in      ptr     jabberwock-isdn-gw.english.lsa.umich.edu.
+67             in      ptr     jabberwock.english.lsa.umich.edu.
+;------------------------------------------------------------
+;      Junk (100-109)
+;------------------------------------------------------------
+101            in      ptr     ar.merit.edu.
+;------------------------------------------------------------
+;      Xterminals (110-149)
+;------------------------------------------------------------
+111            in      ptr     spanky.rs.itd.umich.edu.
+112            in      ptr     darla.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      IBM products (150-159)
+;------------------------------------------------------------
+150            in      ptr     jacobsladder.rs.itd.umich.edu.
+156            in      ptr     peesee.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      DEC (160-169)
+;------------------------------------------------------------
+169            in      ptr     bloodsport.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      Dory's ISDN (170-189)
+;------------------------------------------------------------
+170            in      ptr     gw0.isdn.umich.edu.
+172            in      ptr     sam.isdn.umich.edu.
+173            in      ptr     spanglebaby.rs.itd.umich.edu.
+174            in      ptr     showbiz.isdn.umich.edu.
+185            in      ptr     del.isdn.umich.edu.
+186            in      ptr     dmk.isdn.umich.edu.
+187            in      ptr     dsc.isdn.umich.edu.
+;------------------------------------------------------------
+;      Macintoshes (190-209)
+;------------------------------------------------------------
+190            in      ptr     deadbeef.rs.itd.umich.edu.
+192            in      ptr     clarus.rs.itd.umich.edu.
+193            in      ptr     kirwin.rs.itd.umich.edu.
+195            in      ptr     gml.rs.itd.umich.edu.
+196            in      ptr     klm.rs.itd.umich.edu.
+199            in      ptr     ghl.rs.itd.umich.edu.
+201            in      ptr     inxs.rs.itd.umich.edu.
+;------------------------------------------------------------
+;      Kinetics box and dynamically-addressed Macs (210+)
+;------------------------------------------------------------
+210            in      ptr     k-box.rs.itd.umich.edu.
+211            in      ptr     static-mac.rs.itd.umich.edu.
+212            in      ptr     mac01.rs.itd.umich.edu.
+213            in      ptr     mac02.rs.itd.umich.edu.
+214            in      ptr     mac03.rs.itd.umich.edu.
+215            in      ptr     mac04.rs.itd.umich.edu.
+216            in      ptr     mac05.rs.itd.umich.edu.
+217            in      ptr     mac06.rs.itd.umich.edu.
+218            in      ptr     mac07.rs.itd.umich.edu.
+219            in      ptr     mac08.rs.itd.umich.edu.
+220            in      ptr     mac09.rs.itd.umich.edu.
+221            in      ptr     mac10.rs.itd.umich.edu.
+222            in      ptr     mac11.rs.itd.umich.edu.
+223            in      ptr     mac12.rs.itd.umich.edu.
+224            in      ptr     mac13.rs.itd.umich.edu.
+225            in      ptr     mac14.rs.itd.umich.edu.
+226            in      ptr     mac15.rs.itd.umich.edu.
+227            in      ptr     mac16.rs.itd.umich.edu.
+228            in      ptr     mac17.rs.itd.umich.edu.
+229            in      ptr     mac18.rs.itd.umich.edu.
+230            in      ptr     mac19.rs.itd.umich.edu.
+231            in      ptr     mac20.rs.itd.umich.edu.
diff --git a/usr/src/contrib/bind-4.9.2/contrib/umich/zt b/usr/src/contrib/bind-4.9.2/contrib/umich/zt
new file mode 100644 (file)
index 0000000..147d9e4
--- /dev/null
@@ -0,0 +1,133 @@
+#!/bin/sh
+# -------------------------------------------------------------
+#  Copyright (c) 1991 Regents of the University of Michigan.
+#  All rights reserved.
+#
+#  Redistribution and use is permitted provided that this notice 
+#  is preserved and that due credit is given to the University of 
+#  Michigan. The name of the University may not be used to endorse 
+#  or promote products derived from this software without specific 
+#  prior written permission. This software is provided "as is" 
+#  without express or implied warranty.
+# -------------------------------------------------------------
+RECURSE=0 
+DEBUG=0 
+XFER=/etc/named-xfer 
+QUERY=/usr/local/bin/query
+
+# -------------------------------------------------------------
+#  Do args
+#      -R      Recursive.  Grab all zones below give zone too.
+#      -d      Debug.  Print handy debugging info.
+# -------------------------------------------------------------
+if [ $# = 0 ] ; then
+       echo "Usage: [-R] [-d] zone"
+       exit -1
+fi
+while [ $# != 1 ] ; do
+       case "$1" in
+               -R)
+               RECURSE=1
+               ;;
+
+               -d)
+               DEBUG=1
+               ;;
+
+               -?)
+               echo Illegal arg $1
+               exit -1
+               ;;
+
+       esac
+       shift
+done
+ZONELIST=$1
+
+while [ 1 ] ; do
+       #----------------------------------------------------
+       # Loop through the list of zones
+       #----------------------------------------------------
+       DONE=1
+       for ZONE in $ZONELIST ; do
+               #----------------------------------------------------
+               #  Get the addr of the zone's nameservers
+               #----------------------------------------------------
+               $QUERY -t NS -h $ZONE > /tmp/zt.$$ 2> /dev/null
+               if [ $? -ne 0 ] ; then
+                       echo Zone $zone unknown or nameserver unavailable
+                       exit -1
+               fi
+               NSLIST=`cat /tmp/zt.$$ | awk '/address/ { print $4 }'`
+               #----------------------------------------------------
+               #  Use named-xfer to bring over a copy of the zone
+               #  Use 0 as the serial # since will likely be less
+               #  than the current serial number in the SOA
+               #----------------------------------------------------
+               for I in $NSLIST ; do
+                       if [ $DEBUG = 1 ] ; then
+                               echo Trying nameserver at address $I
+                       fi
+                       $XFER -z $ZONE -f /tmp/$ZONE.$$ -s 0 $I
+                       if [ $? = 1 ] ; then
+                               grep -v ";" /tmp/$ZONE.$$ |
+                               awk '{
+                                       if ($1 == "$ORIGIN") {
+                                               origin=$2
+                                               if (origin != old) {
+                                                       old = origin
+                                                       print $0
+                                               }
+                                       }
+                                       else
+                                               print $0
+                               }' >> /tmp/zt.out.$$
+                               if [ $DEBUG = 1 ] ; then
+                                       echo Got zone $ZONE
+                               fi
+                               break
+                       elif [ $DEBUG = 1 ] ; then
+                               echo Nameserver $I for $ZONE not working
+                       fi
+               done
+               rm -f /tmp/zt.$$
+               #----------------------------------------------------
+               #  If we're doing a recursive query, capture the NS
+               #  records to build a new ZONELIST of subdomains
+               #----------------------------------------------------
+               SUBZONES=""
+               if [ $RECURSE = 1 -a -s /tmp/$ZONE.$$ ] ; then
+                       awk '{
+                               if ($1 == "$ORIGIN")
+                                       origin = substr($2, 1, length($2) - 1)
+                               else if ($3 == "NS") {
+                                       sub = $1 "." origin
+                                       if (sub != zone)
+                                               print sub
+                               }
+                       }' zone=$ZONE /tmp/$ZONE.$$ > /tmp/zl.$$
+                       if [ -s /tmp/zl.$$ ] ; then
+                               SUBZONES=`echo $SUBZONES ; sort -u /tmp/zl.$$`
+                               DONE=0
+                       fi
+                       rm -f /tmp/zl.$$
+               fi
+               rm -f /tmp/$ZONE.$$
+       done
+       #----------------------------------------------------
+       #  If we weren't recursive, or we were recursive and
+       #  have run out of subdomains, we're done
+       #----------------------------------------------------
+       if [ $DONE = 1 ] ; then
+               if [ -s /tmp/zt.out.$$ ] ; then
+                       cat /tmp/zt.out.$$
+               else
+                       echo "Could not perform a zone transfer of $1"
+               fi
+               rm -f /tmp/zt.out.$$
+               exit 0
+       else
+               ZONELIST=$SUBZONES
+       fi
+done
+exit 0