added some dhcp4 packet functions and generic byte reading functions

This commit is contained in:
2025-09-17 19:31:37 +09:00
parent 67b3e9727b
commit 90365bfdd4
8 changed files with 394 additions and 65 deletions

47
haza.go
View File

@ -1,5 +1,9 @@
package haza
import "bytes"
import "encoding/binary"
import "io"
import "net"
import "sync"
import "unsafe"
@ -75,3 +79,46 @@ func Ntoh32(v uint32) uint32 {
if _is_big_endian { return v }
return ((v >> 24) & 0xFF) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | ((v << 24) & 0xFF000000)
}
// ---------------------------------------------------------
type ByteReader struct {
r *bytes.Reader
}
func NewByteReader(b []byte) *ByteReader {
return &ByteReader{ r: bytes.NewReader(b) }
}
func (br* ByteReader) ReadByte() (byte, error) {
return br.r.ReadByte()
}
func (br* ByteReader) ReadUint16() (uint16, error) {
var v uint16
var err error
err = binary.Read(br.r, binary.BigEndian, &v)
if err != nil { return 0, err }
return v, nil
}
func (br* ByteReader) ReadUint32() (uint32, error) {
var v uint32
var err error
err = binary.Read(br.r, binary.BigEndian, &v)
if err != nil { return 0, err }
return v, nil
}
func (br* ByteReader) ReadIp4() (net.IP, error) {
var buf [4]byte
var err error
_, err = io.ReadFull(br.r, buf[:])
if err != nil { return nil, err }
return net.IP(buf[:]), nil
}
func (br *ByteReader) ReadAllBytes(buf []byte) error {
var err error
_, err = io.ReadFull(br.r, buf)
return err
}