summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/miekg/dns/zcompress.go
blob: c2503204dd14a50ac26e97dd7bdbe96edcdeca71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Code generated by "go run compress_generate.go"; DO NOT EDIT.

package dns

func compressionLenHelperType(c map[string]int, r RR) {
	switch x := r.(type) {
	case *AFSDB:
		compressionLenHelper(c, x.Hostname)
	case *CNAME:
		compressionLenHelper(c, x.Target)
	case *DNAME:
		compressionLenHelper(c, x.Target)
	case *HIP:
		for i := range x.RendezvousServers {
			compressionLenHelper(c, x.RendezvousServers[i])
		}
	case *KX:
		compressionLenHelper(c, x.Exchanger)
	case *LP:
		compressionLenHelper(c, x.Fqdn)
	case *MB:
		compressionLenHelper(c, x.Mb)
	case *MD:
		compressionLenHelper(c, x.Md)
	case *MF:
		compressionLenHelper(c, x.Mf)
	case *MG:
		compressionLenHelper(c, x.Mg)
	case *MINFO:
		compressionLenHelper(c, x.Rmail)
		compressionLenHelper(c, x.Email)
	case *MR:
		compressionLenHelper(c, x.Mr)
	case *MX:
		compressionLenHelper(c, x.Mx)
	case *NAPTR:
		compressionLenHelper(c, x.Replacement)
	case *NS:
		compressionLenHelper(c, x.Ns)
	case *NSAPPTR:
		compressionLenHelper(c, x.Ptr)
	case *NSEC:
		compressionLenHelper(c, x.NextDomain)
	case *PTR:
		compressionLenHelper(c, x.Ptr)
	case *PX:
		compressionLenHelper(c, x.Map822)
		compressionLenHelper(c, x.Mapx400)
	case *RP:
		compressionLenHelper(c, x.Mbox)
		compressionLenHelper(c, x.Txt)
	case *RRSIG:
		compressionLenHelper(c, x.SignerName)
	case *RT:
		compressionLenHelper(c, x.Host)
	case *SIG:
		compressionLenHelper(c, x.SignerName)
	case *SOA:
		compressionLenHelper(c, x.Ns)
		compressionLenHelper(c, x.Mbox)
	case *SRV:
		compressionLenHelper(c, x.Target)
	case *TALINK:
		compressionLenHelper(c, x.PreviousName)
		compressionLenHelper(c, x.NextName)
	case *TKEY:
		compressionLenHelper(c, x.Algorithm)
	case *TSIG:
		compressionLenHelper(c, x.Algorithm)
	}
}

func compressionLenSearchType(c map[string]int, r RR) (int, bool) {
	switch x := r.(type) {
	case *AFSDB:
		k1, ok1 := compressionLenSearch(c, x.Hostname)
		return k1, ok1
	case *CNAME:
		k1, ok1 := compressionLenSearch(c, x.Target)
		return k1, ok1
	case *MB:
		k1, ok1 := compressionLenSearch(c, x.Mb)
		return k1, ok1
	case *MD:
		k1, ok1 := compressionLenSearch(c, x.Md)
		return k1, ok1
	case *MF:
		k1, ok1 := compressionLenSearch(c, x.Mf)
		return k1, ok1
	case *MG:
		k1, ok1 := compressionLenSearch(c, x.Mg)
		return k1, ok1
	case *MINFO:
		k1, ok1 := compressionLenSearch(c, x.Rmail)
		k2, ok2 := compressionLenSearch(c, x.Email)
		return k1 + k2, ok1 && ok2
	case *MR:
		k1, ok1 := compressionLenSearch(c, x.Mr)
		return k1, ok1
	case *MX:
		k1, ok1 := compressionLenSearch(c, x.Mx)
		return k1, ok1
	case *NS:
		k1, ok1 := compressionLenSearch(c, x.Ns)
		return k1, ok1
	case *PTR:
		k1, ok1 := compressionLenSearch(c, x.Ptr)
		return k1, ok1
	case *RT:
		k1, ok1 := compressionLenSearch(c, x.Host)
		return k1, ok1
	case *SOA:
		k1, ok1 := compressionLenSearch(c, x.Ns)
		k2, ok2 := compressionLenSearch(c, x.Mbox)
		return k1 + k2, ok1 && ok2
	}
	return 0, false
}