all repos

scratch @ efb5ed15320b248d9b358b1345854925b84788f6

⭐ me doing recreational ~~drugs~~ programming
1 files changed, 13 insertions(+), 16 deletions(-)
dns: premable writter
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-03-26 18:32:17 +0200
Change ID: mlnrrnlqwtprnlxwylkyrqxlqmqxyovw
Parent: 0d2ab83
M dns-server/record.go
···
                84
                84
                 	start := b.Len()

              
                85
                85
                 	switch r.Type {

              
                86
                86
                 	case AType:

              
                87
                
                -		_ = writeName(b, r.Name)

              
                88
                
                -		_ = binary.Write(b, binary.BigEndian, r.Type)

              
                89
                
                -		_ = binary.Write(b, binary.BigEndian, r.Class)

              
                90
                
                -		_ = binary.Write(b, binary.BigEndian, r.TTL)

              
                
                87
                +		_ = r.writePremable(b)

              
                91
                88
                 		_ = binary.Write(b, binary.BigEndian, uint16(4))

              
                92
                89
                 

              
                93
                90
                 		ip := net.ParseIP(r.Data).To4()

              ···
                98
                95
                 		_, _ = b.Write(ip)

              
                99
                96
                 

              
                100
                97
                 	case AAAAType:

              
                101
                
                -		_ = writeName(b, r.Name)

              
                102
                
                -		_ = binary.Write(b, binary.BigEndian, r.Type)

              
                103
                
                -		_ = binary.Write(b, binary.BigEndian, r.Class)

              
                104
                
                -		_ = binary.Write(b, binary.BigEndian, r.TTL)

              
                
                98
                +		_ = r.writePremable(b)

              
                105
                99
                 		_ = binary.Write(b, binary.BigEndian, uint16(16))

              
                106
                100
                 

              
                107
                101
                 		ip := net.ParseIP(r.Data).To16()

              ···
                112
                106
                 		_, _ = b.Write(ip)

              
                113
                107
                 

              
                114
                108
                 	case NSType, CNAMEType:

              
                115
                
                -		_ = writeName(b, r.Name)

              
                116
                
                -		_ = binary.Write(b, binary.BigEndian, r.Type)

              
                117
                
                -		_ = binary.Write(b, binary.BigEndian, r.Class)

              
                118
                
                -		_ = binary.Write(b, binary.BigEndian, r.TTL)

              
                
                109
                +		_ = r.writePremable(b)

              
                119
                110
                 

              
                120
                111
                 		encoded := encodeName(r.Data)

              
                121
                112
                 		_ = binary.Write(b, binary.BigEndian, uint16(len(encoded)))

              
                122
                113
                 		_, _ = b.Write(encoded)

              
                123
                114
                 

              
                124
                115
                 	case MXType:

              
                125
                
                -		_ = writeName(b, r.Name)

              
                126
                
                -		_ = binary.Write(b, binary.BigEndian, r.Type)

              
                127
                
                -		_ = binary.Write(b, binary.BigEndian, r.Class)

              
                128
                
                -		_ = binary.Write(b, binary.BigEndian, r.TTL)

              
                
                116
                +		_ = r.writePremable(b)

              
                129
                117
                 

              
                130
                118
                 		encoded := encodeName(r.Data)

              
                131
                119
                 		_ = binary.Write(b, binary.BigEndian, uint16(2+len(encoded)))

              ···
                137
                125
                 	}

              
                138
                126
                 

              
                139
                127
                 	return b.Len() - start, nil

              
                
                128
                +}

              
                
                129
                +

              
                
                130
                +func (r Record) writePremable(b *bytes.Buffer) error {

              
                
                131
                +	// TODO: errors

              
                
                132
                +	_ = writeName(b, r.Name)

              
                
                133
                +	_ = binary.Write(b, binary.BigEndian, r.Type)

              
                
                134
                +	_ = binary.Write(b, binary.BigEndian, r.Class)

              
                
                135
                +	_ = binary.Write(b, binary.BigEndian, r.TTL)

              
                
                136
                +	return nil

              
                140
                137
                 }

              
                141
                138
                 

              
                142
                139
                 func readName(r *bytes.Reader, packet []byte) (string, error) {