-
Notifications
You must be signed in to change notification settings - Fork 19
/
data_wire.go
93 lines (78 loc) · 2.16 KB
/
data_wire.go
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
/*
Copyright (c) Meta Platforms, Inc. and affiliates.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package dnsdata
import (
"fmt"
)
// WireRecord is the interface implemented by all record types which could be
// transferred on a wire directly (non-composite or specialized ones)
type WireRecord interface {
WireType() WireType
DomainName() string
Location() Loc
TTL() uint32
}
// DomainName returns associated record domain name
func (r *rshared) DomainName() string {
if r.iswildcard {
return fmt.Sprintf("*.%s", string(r.dom))
}
return string(r.dom)
}
// Location returns location for which record could be used
func (r *rshared) Location() Loc {
return r.lo
}
// TTL returns TTL for the record
func (r *rshared) TTL() uint32 {
return r.ttl
}
// WireType implements WireRecord interface
func (r *Raddr) WireType() WireType {
if ip4 := r.ip.To4(); ip4 != nil {
return TypeA
}
return TypeAAAA
}
// WireType implements WireRecord interface
func (r *Rns1) WireType() WireType {
return TypeNS
}
// WireType implements WireRecord interface
func (r *Rcname) WireType() WireType {
return TypeCNAME
}
// WireType implements WireRecord interface
func (r *Rsoa) WireType() WireType {
return TypeSOA
}
// WireType implements WireRecord interface
func (r *Rptr) WireType() WireType {
return TypePTR
}
// WireType implements WireRecord interface
func (r *Rmx1) WireType() WireType {
return TypeMX
}
// WireType implements WireRecord interface
func (r *Rtxt) WireType() WireType {
return TypeTXT
}
// WireType implements WireRecord interface
func (r *Rsrv1) WireType() WireType {
return TypeSRV
}
// WireType implements WireRecord interface
func (r *Rhttps) WireType() WireType {
return TypeHTTPS
}