新增dnst隧道
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user