summaryrefslogtreecommitdiff
path: root/src/lib/net/dnsmsg.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/net/dnsmsg.go')
-rw-r--r--src/lib/net/dnsmsg.go208
1 files changed, 104 insertions, 104 deletions
diff --git a/src/lib/net/dnsmsg.go b/src/lib/net/dnsmsg.go
index d9d5ad23c..d7a467fc6 100644
--- a/src/lib/net/dnsmsg.go
+++ b/src/lib/net/dnsmsg.go
@@ -19,7 +19,7 @@
// generic pack/unpack routines.
//
// TODO(rsc) There are enough names defined in this file that they're all
-// prefixed with DNS_. Perhaps put this in its own package later.
+// prefixed with _DNS_. Perhaps put this in its own package later.
package net
@@ -33,55 +33,55 @@ import (
// Wire constants.
const (
- // valid DNS_RR_Header.rrtype and DNS_Question.qtype
- DNS_TypeA = 1;
- DNS_TypeNS = 2;
- DNS_TypeMD = 3;
- DNS_TypeMF = 4;
- DNS_TypeCNAME = 5;
- DNS_TypeSOA = 6;
- DNS_TypeMB = 7;
- DNS_TypeMG = 8;
- DNS_TypeMR = 9;
- DNS_TypeNULL = 10;
- DNS_TypeWKS = 11;
- DNS_TypePTR = 12;
- DNS_TypeHINFO = 13;
- DNS_TypeMINFO = 14;
- DNS_TypeMX = 15;
- DNS_TypeTXT = 16;
-
- // valid DNS_Question.qtype only
- DNS_TypeAXFR = 252;
- DNS_TypeMAILB = 253;
- DNS_TypeMAILA = 254;
- DNS_TypeALL = 255;
-
- // valid DNS_Question.qclass
- DNS_ClassINET = 1;
- DNS_ClassCSNET = 2;
- DNS_ClassCHAOS = 3;
- DNS_ClassHESIOD = 4;
- DNS_ClassANY = 255;
-
- // DNS_Msg.rcode
- DNS_RcodeSuccess = 0;
- DNS_RcodeFormatError = 1;
- DNS_RcodeServerFailure = 2;
- DNS_RcodeNameError = 3;
- DNS_RcodeNotImplemented = 4;
- DNS_RcodeRefused = 5;
+ // valid _DNS_RR_Header.rrtype and _DNS_Question.qtype
+ _DNS_TypeA = 1;
+ _DNS_TypeNS = 2;
+ _DNS_TypeMD = 3;
+ _DNS_TypeMF = 4;
+ _DNS_TypeCNAME = 5;
+ _DNS_TypeSOA = 6;
+ _DNS_TypeMB = 7;
+ _DNS_TypeMG = 8;
+ _DNS_TypeMR = 9;
+ _DNS_TypeNULL = 10;
+ _DNS_TypeWKS = 11;
+ _DNS_TypePTR = 12;
+ _DNS_TypeHINFO = 13;
+ _DNS_TypeMINFO = 14;
+ _DNS_TypeMX = 15;
+ _DNS_TypeTXT = 16;
+
+ // valid _DNS_Question.qtype only
+ _DNS_TypeAXFR = 252;
+ _DNS_TypeMAILB = 253;
+ _DNS_TypeMAILA = 254;
+ _DNS_TypeALL = 255;
+
+ // valid _DNS_Question.qclass
+ _DNS_ClassINET = 1;
+ _DNS_ClassCSNET = 2;
+ _DNS_ClassCHAOS = 3;
+ _DNS_ClassHESIOD = 4;
+ _DNS_ClassANY = 255;
+
+ // _DNS_Msg.rcode
+ _DNS_RcodeSuccess = 0;
+ _DNS_RcodeFormatError = 1;
+ _DNS_RcodeServerFailure = 2;
+ _DNS_RcodeNameError = 3;
+ _DNS_RcodeNotImplemented = 4;
+ _DNS_RcodeRefused = 5;
)
// The wire format for the DNS packet header.
-type _DNS_Header struct {
+type __DNS_Header struct {
id uint16;
bits uint16;
qdcount, ancount, nscount, arcount uint16;
}
const (
- // _DNS_Header.bits
+ // __DNS_Header.bits
_QR = 1<<15; // query/response (response=1)
_AA = 1<<10; // authoritative
_TC = 1<<9; // truncated
@@ -90,7 +90,7 @@ const (
)
// DNS queries.
-type DNS_Question struct {
+type _DNS_Question struct {
name string "domain-name"; // "domain-name" specifies encoding; see packers below
qtype uint16;
qclass uint16;
@@ -99,7 +99,7 @@ type DNS_Question struct {
// DNS responses (resource records).
// There are many types of messages,
// but they all share the same header.
-type DNS_RR_Header struct {
+type _DNS_RR_Header struct {
name string "domain-name";
rrtype uint16;
class uint16;
@@ -107,67 +107,67 @@ type DNS_RR_Header struct {
rdlength uint16; // length of data after header
}
-func (h *DNS_RR_Header) Header() *DNS_RR_Header {
+func (h *_DNS_RR_Header) Header() *_DNS_RR_Header {
return h
}
-type DNS_RR interface {
- Header() *DNS_RR_Header
+type _DNS_RR interface {
+ Header() *_DNS_RR_Header
}
// Specific DNS RR formats for each query type.
-type DNS_RR_CNAME struct {
- DNS_RR_Header;
+type _DNS_RR_CNAME struct {
+ _DNS_RR_Header;
cname string "domain-name";
}
-type DNS_RR_HINFO struct {
- DNS_RR_Header;
+type _DNS_RR_HINFO struct {
+ _DNS_RR_Header;
cpu string;
os string;
}
-type DNS_RR_MB struct {
- DNS_RR_Header;
+type _DNS_RR_MB struct {
+ _DNS_RR_Header;
mb string "domain-name";
}
-type DNS_RR_MG struct {
- DNS_RR_Header;
+type _DNS_RR_MG struct {
+ _DNS_RR_Header;
mg string "domain-name";
}
-type DNS_RR_MINFO struct {
- DNS_RR_Header;
+type _DNS_RR_MINFO struct {
+ _DNS_RR_Header;
rmail string "domain-name";
email string "domain-name";
}
-type DNS_RR_MR struct {
- DNS_RR_Header;
+type _DNS_RR_MR struct {
+ _DNS_RR_Header;
mr string "domain-name";
}
-type DNS_RR_MX struct {
- DNS_RR_Header;
+type _DNS_RR_MX struct {
+ _DNS_RR_Header;
pref uint16;
mx string "domain-name";
}
-type DNS_RR_NS struct {
- DNS_RR_Header;
+type _DNS_RR_NS struct {
+ _DNS_RR_Header;
ns string "domain-name";
}
-type DNS_RR_PTR struct {
- DNS_RR_Header;
+type _DNS_RR_PTR struct {
+ _DNS_RR_Header;
ptr string "domain-name";
}
-type DNS_RR_SOA struct {
- DNS_RR_Header;
+type _DNS_RR_SOA struct {
+ _DNS_RR_Header;
ns string "domain-name";
mbox string "domain-name";
serial uint32;
@@ -177,13 +177,13 @@ type DNS_RR_SOA struct {
minttl uint32;
}
-type DNS_RR_TXT struct {
- DNS_RR_Header;
+type _DNS_RR_TXT struct {
+ _DNS_RR_Header;
txt string; // not domain name
}
-type DNS_RR_A struct {
- DNS_RR_Header;
+type _DNS_RR_A struct {
+ _DNS_RR_Header;
a uint32 "ipv4";
}
@@ -197,19 +197,19 @@ type DNS_RR_A struct {
// packing sequence.
// Map of constructors for each RR wire type.
-var rr_mk = map[int] func()DNS_RR {
- DNS_TypeCNAME: func() DNS_RR { return new(DNS_RR_CNAME) },
- DNS_TypeHINFO: func() DNS_RR { return new(DNS_RR_HINFO) },
- DNS_TypeMB: func() DNS_RR { return new(DNS_RR_MB) },
- DNS_TypeMG: func() DNS_RR { return new(DNS_RR_MG) },
- DNS_TypeMINFO: func() DNS_RR { return new(DNS_RR_MINFO) },
- DNS_TypeMR: func() DNS_RR { return new(DNS_RR_MR) },
- DNS_TypeMX: func() DNS_RR { return new(DNS_RR_MX) },
- DNS_TypeNS: func() DNS_RR { return new(DNS_RR_NS) },
- DNS_TypePTR: func() DNS_RR { return new(DNS_RR_PTR) },
- DNS_TypeSOA: func() DNS_RR { return new(DNS_RR_SOA) },
- DNS_TypeTXT: func() DNS_RR { return new(DNS_RR_TXT) },
- DNS_TypeA: func() DNS_RR { return new(DNS_RR_A) },
+var rr_mk = map[int] func()_DNS_RR {
+ _DNS_TypeCNAME: func() _DNS_RR { return new(_DNS_RR_CNAME) },
+ _DNS_TypeHINFO: func() _DNS_RR { return new(_DNS_RR_HINFO) },
+ _DNS_TypeMB: func() _DNS_RR { return new(_DNS_RR_MB) },
+ _DNS_TypeMG: func() _DNS_RR { return new(_DNS_RR_MG) },
+ _DNS_TypeMINFO: func() _DNS_RR { return new(_DNS_RR_MINFO) },
+ _DNS_TypeMR: func() _DNS_RR { return new(_DNS_RR_MR) },
+ _DNS_TypeMX: func() _DNS_RR { return new(_DNS_RR_MX) },
+ _DNS_TypeNS: func() _DNS_RR { return new(_DNS_RR_NS) },
+ _DNS_TypePTR: func() _DNS_RR { return new(_DNS_RR_PTR) },
+ _DNS_TypeSOA: func() _DNS_RR { return new(_DNS_RR_SOA) },
+ _DNS_TypeTXT: func() _DNS_RR { return new(_DNS_RR_TXT) },
+ _DNS_TypeA: func() _DNS_RR { return new(_DNS_RR_A) },
}
// Pack a domain name s into msg[off:].
@@ -480,7 +480,7 @@ func printStruct(any interface{}) string {
}
// Resource record packer.
-func packRR(rr DNS_RR, msg []byte, off int) (off2 int, ok bool) {
+func packRR(rr _DNS_RR, msg []byte, off int) (off2 int, ok bool) {
var off1 int;
// pack twice, once to find end of header
// and again to find end of packet.
@@ -499,9 +499,9 @@ func packRR(rr DNS_RR, msg []byte, off int) (off2 int, ok bool) {
}
// Resource record unpacker.
-func unpackRR(msg []byte, off int) (rr DNS_RR, off1 int, ok bool) {
+func unpackRR(msg []byte, off int) (rr _DNS_RR, off1 int, ok bool) {
// unpack just the header, to find the rr type and length
- var h DNS_RR_Header;
+ var h _DNS_RR_Header;
off0 := off;
if off, ok = unpackStruct(&h, msg, off); !ok {
return nil, len(msg), false
@@ -526,7 +526,7 @@ func unpackRR(msg []byte, off int) (rr DNS_RR, off1 int, ok bool) {
// A manually-unpacked version of (id, bits).
// This is in its own struct for easy printing.
-type _DNS_Msg_Top struct {
+type __DNS_Msg_Top struct {
id uint16;
response bool;
opcode int;
@@ -537,19 +537,19 @@ type _DNS_Msg_Top struct {
rcode int;
}
-type DNS_Msg struct {
- _DNS_Msg_Top;
- question []DNS_Question;
- answer []DNS_RR;
- ns []DNS_RR;
- extra []DNS_RR;
+type _DNS_Msg struct {
+ __DNS_Msg_Top;
+ question []_DNS_Question;
+ answer []_DNS_RR;
+ ns []_DNS_RR;
+ extra []_DNS_RR;
}
-func (dns *DNS_Msg) Pack() (msg []byte, ok bool) {
- var dh _DNS_Header;
+func (dns *_DNS_Msg) Pack() (msg []byte, ok bool) {
+ var dh __DNS_Header;
- // Convert convenient DNS_Msg into wire-like _DNS_Header.
+ // Convert convenient _DNS_Msg into wire-like __DNS_Header.
dh.id = dns.id;
dh.bits = uint16(dns.opcode)<<11 | uint16(dns.rcode);
if dns.recursion_available {
@@ -605,9 +605,9 @@ func (dns *DNS_Msg) Pack() (msg []byte, ok bool) {
return msg[0:off], true
}
-func (dns *DNS_Msg) Unpack(msg []byte) bool {
+func (dns *_DNS_Msg) Unpack(msg []byte) bool {
// Header.
- var dh _DNS_Header;
+ var dh __DNS_Header;
off := 0;
var ok bool;
if off, ok = unpackStruct(&dh, msg, off); !ok {
@@ -623,10 +623,10 @@ func (dns *DNS_Msg) Unpack(msg []byte) bool {
dns.rcode = int(dh.bits & 0xF);
// Arrays.
- dns.question = make([]DNS_Question, dh.qdcount);
- dns.answer = make([]DNS_RR, dh.ancount);
- dns.ns = make([]DNS_RR, dh.nscount);
- dns.extra = make([]DNS_RR, dh.arcount);
+ dns.question = make([]_DNS_Question, dh.qdcount);
+ dns.answer = make([]_DNS_RR, dh.ancount);
+ dns.ns = make([]_DNS_RR, dh.nscount);
+ dns.extra = make([]_DNS_RR, dh.arcount);
for i := 0; i < len(dns.question); i++ {
off, ok = unpackStruct(&dns.question[i], msg, off);
@@ -649,8 +649,8 @@ func (dns *DNS_Msg) Unpack(msg []byte) bool {
return true
}
-func (dns *DNS_Msg) String() string {
- s := "DNS: "+printStruct(&dns._DNS_Msg_Top)+"\n";
+func (dns *_DNS_Msg) String() string {
+ s := "DNS: "+printStruct(&dns.__DNS_Msg_Top)+"\n";
if len(dns.question) > 0 {
s += "-- Questions\n";
for i := 0; i < len(dns.question); i++ {