12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package dns
- import "strconv"
- const (
- year68 = 1 << 31
- defaultTtl = 3600
-
- DefaultMsgSize = 4096
-
- MinMsgSize = 512
-
- MaxMsgSize = 65535
- )
- type Error struct{ err string }
- func (e *Error) Error() string {
- if e == nil {
- return "dns: <nil>"
- }
- return "dns: " + e.err
- }
- type RR interface {
-
-
- Header() *RR_Header
-
- String() string
-
- copy() RR
-
- len() int
-
- pack([]byte, int, map[string]int, bool) (int, error)
- }
- type RR_Header struct {
- Name string `dns:"cdomain-name"`
- Rrtype uint16
- Class uint16
- Ttl uint32
- Rdlength uint16
- }
- func (h *RR_Header) Header() *RR_Header { return h }
- func (h *RR_Header) copy() RR { return nil }
- func (h *RR_Header) String() string {
- var s string
- if h.Rrtype == TypeOPT {
- s = ";"
-
- }
- s += sprintName(h.Name) + "\t"
- s += strconv.FormatInt(int64(h.Ttl), 10) + "\t"
- s += Class(h.Class).String() + "\t"
- s += Type(h.Rrtype).String() + "\t"
- return s
- }
- func (h *RR_Header) len() int {
- l := len(h.Name) + 1
- l += 10
- return l
- }
- func (rr *RFC3597) ToRFC3597(r RR) error {
- buf := make([]byte, r.len()*2)
- off, err := PackRR(r, buf, 0, nil, false)
- if err != nil {
- return err
- }
- buf = buf[:off]
- if int(r.Header().Rdlength) > off {
- return ErrBuf
- }
- rfc3597, _, err := unpackRFC3597(*r.Header(), buf, off-int(r.Header().Rdlength))
- if err != nil {
- return err
- }
- *rr = *rfc3597.(*RFC3597)
- return nil
- }
|