1*00b67f09SDavid van MoolenbroekJust for info, can be out of date. 2*00b67f09SDavid van Moolenbroek 3*00b67f09SDavid van Moolenbroek 4*00b67f09SDavid van MoolenbroekRFC 1876, 5.2, specially 5.2.3 5*00b67f09SDavid van Moolenbroek 6*00b67f09SDavid van MoolenbroekImportant points: 7*00b67f09SDavid van Moolenbroek 8*00b67f09SDavid van Moolenbroek- LOC RRs are always attached to a *name*. 9*00b67f09SDavid van Moolenbroek- we can have two (or more) RRs for one address, one more specific than the other 10*00b67f09SDavid van Moolenbroek 11*00b67f09SDavid van Moolenbroekmain 12*00b67f09SDavid van Moolenbroek if (host is a name) 13*00b67f09SDavid van Moolenbroek getLOCbyname 14*00b67f09SDavid van Moolenbroek else # host is an IP address 15*00b67f09SDavid van Moolenbroek gethostbyaddr 16*00b67f09SDavid van Moolenbroek if (name) 17*00b67f09SDavid van Moolenbroek getLOCbyname 18*00b67f09SDavid van Moolenbroek # If there is none, do not search. We assume the above was sufficient # (But check 5.2.2) 19*00b67f09SDavid van Moolenbroek else 20*00b67f09SDavid van Moolenbroek getLOCbyaddress 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van MoolenbroekgetLOCbyname (host) 23*00b67f09SDavid van Moolenbroek get LOC for host 24*00b67f09SDavid van Moolenbroek if (it exists) 25*00b67f09SDavid van Moolenbroek OK 26*00b67f09SDavid van Moolenbroek else 27*00b67f09SDavid van Moolenbroek get all A records of the name 28*00b67f09SDavid van Moolenbroek foreach A record 29*00b67f09SDavid van Moolenbroek getLOCbyaddress 30*00b67f09SDavid van Moolenbroek OK at the first one found 31*00b67f09SDavid van Moolenbroek # we assume they are consistent 32*00b67f09SDavid van Moolenbroek END 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van MoolenbroekgetLOCbyaddress (address) 35*00b67f09SDavid van Moolenbroek # May receive a mask. Otherwise, deduce it from the class 36*00b67f09SDavid van Moolenbroek makeNetAddress 37*00b67f09SDavid van Moolenbroek getLOCbynetwork 38*00b67f09SDavid van Moolenbroek 39*00b67f09SDavid van MoolenbroekgetLOCbynetwork 40*00b67f09SDavid van Moolenbroek get PTR and A for it 41*00b67f09SDavid van Moolenbroek if (exist) 42*00b67f09SDavid van Moolenbroek getLOCbyname 43*00b67f09SDavid van Moolenbroek ******* DIFFICULT : we have to manage a stack. See the code 44*00b67f09SDavid van Moolenbroek makeNetAddress (level--) 45*00b67f09SDavid van Moolenbroek getLOCbynetwork 46*00b67f09SDavid van Moolenbroek else 47*00b67f09SDavid van Moolenbroek END 48*00b67f09SDavid van Moolenbroek 49