interesting!  i took a different approach to this issue quite a while
ago, using dns/debug.  this approach should work assuming that it is
run often enough to prevent dropping of old ip addresses between runs.

- erik
#!/bin/rc
rfork en

aserver=a.root-servers.net
letters=(a b c d e f g h i j k l m)

fn fatal {
        echo $*>[1=2]
        exit fatal
}

fn get{
        ndb/dnsdebug @$aserver $* | awk '
                $1=="answer" && $(NF-2) == "negative" {next}
                $1=="answer" {printf "dom=%s    %s=%s\n", $2, $(NF-1), $NF}
                '
}

aserver = `{get a.root-servers.net|sed 's/.*=//g'}
if(~ $#aserver 0)
        fatal cant find a.root-servers.net
{
        echo '#'
        echo '#  entries defining the dns root.  these will be overridden by 
any'
        echo '#  authentic info obtained from the root.'
        echo '#'
        echo 'dom='
        for(letter in $letters)
                echo '  ns='^$letter^'.root-servers.net'
        for(letter in $letters)
                get $letter^.root-servers.net ip
        {
                for(letter in $letters){
                        get $letter^.root-servers.net ipv6
                }
        } | sed 's/^/# /g'
}

Reply via email to