all repos

scratch @ bc17d48

⭐ me doing recreational ~~drugs~~ programming

scratch/dns-server/question.go (view raw)

1
package main
2
3
import (
4
	"bytes"
5
	"encoding/binary"
6
)
7
8
type Question struct {
9
	Name  string
10
	Type  uint16
11
	Class uint16
12
}
13
14
func ReadQuestion(r *bytes.Reader, packet []byte) (Question, error) {
15
	name, err := readName(r, packet)
16
	if err != nil {
17
		return Question{}, err
18
	}
19
20
	var qtype, qclass uint16
21
	_ = binary.Read(r, binary.BigEndian, &qtype)
22
	_ = binary.Read(r, binary.BigEndian, &qclass)
23
24
	return Question{
25
		Name:  name,
26
		Type:  qtype,
27
		Class: qclass,
28
	}, nil
29
}
30
31
func (q Question) Write(b *bytes.Buffer) error {
32
	_ = writeName(b, q.Name)
33
	_ = binary.Write(b, binary.BigEndian, q.Type)
34
	_ = binary.Write(b, binary.BigEndian, q.Class)
35
	return nil
36
}