新增dnst隧道

This commit is contained in:
wenyifan
2026-07-04 13:48:22 +08:00
parent 74fef8838e
commit 5b1e38e2c0
3 changed files with 107 additions and 0 deletions
+34
View File
@@ -21,6 +21,7 @@ const (
var (
ErrInvalidPacket = errors.New("dns: invalid packet")
ErrShortBuffer = errors.New("dns: short buffer")
ErrUnsupported = errors.New("dns: unsupported operation")
)
type options struct {
@@ -28,6 +29,11 @@ type options struct {
udpSize uint16
}
type setBuffer interface {
SetReadBuffer(int) error
SetWriteBuffer(int) error
}
// Option configures a DNS packet wrapper.
type Option func(*options)
@@ -117,6 +123,20 @@ func (c *clientConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
return len(b), nil
}
func (c *clientConn) SetReadBuffer(n int) error {
if pc, ok := c.PacketConn.(setBuffer); ok {
return pc.SetReadBuffer(n)
}
return ErrUnsupported
}
func (c *clientConn) SetWriteBuffer(n int) error {
if pc, ok := c.PacketConn.(setBuffer); ok {
return pc.SetWriteBuffer(n)
}
return ErrUnsupported
}
type queryState struct {
id uint16
question []mdns.Question
@@ -184,6 +204,20 @@ func (c *serverConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
return len(b), nil
}
func (c *serverConn) SetReadBuffer(n int) error {
if pc, ok := c.PacketConn.(setBuffer); ok {
return pc.SetReadBuffer(n)
}
return ErrUnsupported
}
func (c *serverConn) SetWriteBuffer(n int) error {
if pc, ok := c.PacketConn.(setBuffer); ok {
return pc.SetWriteBuffer(n)
}
return ErrUnsupported
}
func (c *serverConn) storeQuery(addr net.Addr, m *mdns.Msg) {
if addr == nil {
return