Documentation
¶
Index ¶
- type AssignedAddress
- type CloseError
- type Conn
- func (c *Conn) AdvertiseRoute(ctx context.Context, routes []IPRoute) error
- func (c *Conn) AssignAddresses(ctx context.Context, prefixes []netip.Prefix) error
- func (c *Conn) Close() error
- func (c *Conn) LocalPrefixes(ctx context.Context) ([]netip.Prefix, error)
- func (c *Conn) ReadPacket(b []byte, allowAny bool) (n int, err error)
- func (c *Conn) ReadPacketZeroCopy(allowAny bool) ([]byte, error)
- func (c *Conn) Routes(ctx context.Context) ([]IPRoute, error)
- func (c *Conn) WritePacket(b []byte) (icmp []byte, err error)
- func (c *Conn) WritePacketBuffer(buf []byte, packetOffset, packetLen int) (icmp []byte, err error)
- type IPRoute
- type Proxy
- type Request
- type RequestParseError
- type RequestedAddress
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AssignedAddress ¶
AssignedAddress represents an Assigned Address within an ADDRESS_ASSIGN capsule
type CloseError ¶
type CloseError struct {
Remote bool
}
func (*CloseError) Error ¶
func (e *CloseError) Error() string
func (*CloseError) Is ¶
func (e *CloseError) Is(target error) bool
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is a connection that proxies IP packets over HTTP/3.
func Dial ¶
func Dial(ctx context.Context, conn *http3.ClientConn, template *uritemplate.Template, requestProtocol string, additionalHeaders http.Header, ignoreExtendedConnect bool) (*Conn, *http.Response, error)
Dial dials a proxied connection to a target server.
func DialH2 ¶
func DialH2(ctx context.Context, client *http.Client, template *uritemplate.Template, additionalHeaders http.Header) (*Conn, *http.Response, error)
DialH2 dials a proxied connection over HTTP/2 CONNECT-IP.
This transport carries proxied packets inside HTTP capsule DATAGRAM frames.
func (*Conn) AdvertiseRoute ¶
AdvertiseRoute informs the peer about available routes. This function can be called multiple times, but only the routes from the most recent call will be active. Previous route advertisements are overwritten by each new call to this function.
func (*Conn) AssignAddresses ¶
AssignAddresses assigned address prefixes to the peer. This function can be called multiple times, but only the addresses from the most recent call will be active. Previous address assignments are overwritten by each new call to this function.
func (*Conn) LocalPrefixes ¶
LocalPrefixes returns the prefixes that the peer currently assigned. Note that at any point during the connection, the peer can change the assignment. It is therefore recommended to call this function in a loop.
func (*Conn) ReadPacketZeroCopy ¶
ReadPacketZeroCopy reads and validates an IP packet, returning a slice backed by the transport's receive buffer. The caller must finish using the returned packet before calling ReadPacketZeroCopy again.
func (*Conn) Routes ¶
Routes returns the routes that the peer currently advertised. Note that at any point during the connection, the peer can change the advertised routes. It is therefore recommended to call this function in a loop.
func (*Conn) WritePacket ¶
WritePacket writes an IP packet to the stream. If sending the packet fails, it might return an ICMP packet. It is the caller's responsibility to send the ICMP packet to the sender.
func (*Conn) WritePacketBuffer ¶
WritePacketBuffer writes an IP packet from buf[packetOffset:packetOffset+packetLen]. If packetOffset leaves enough room for the DATAGRAM context ID, the packet is sent in place without allocating or copying the packet payload.
type IPRoute ¶
type IPRoute struct {
StartIP netip.Addr
EndIP netip.Addr
// IPProtocol is the Internet Protocol Number for traffic that can be sent to this range.
// If the value is 0, all protocols are allowed.
IPProtocol uint8
}
IPRoute represents an IP Address Range
type Request ¶
type Request struct{}
Request is the parsed CONNECT-IP request returned from ParseRequest. It currently doesn't have any fields, since masque-go doesn't support IP flow forwarding.
func ParseRequest ¶
func ParseRequest(r *http.Request, template *uritemplate.Template, requestProtocol string) (*Request, error)
ParseRequest parses a CONNECT-IP request. The template is the URI template that clients will use to configure this proxy.
type RequestParseError ¶
RequestParseError is returned from ParseRequest if parsing the CONNECT-UDP request fails. It is recommended that the request is rejected with the corresponding HTTP status code.
func (*RequestParseError) Error ¶
func (e *RequestParseError) Error() string
func (*RequestParseError) Unwrap ¶
func (e *RequestParseError) Unwrap() error
type RequestedAddress ¶
RequestedAddress represents an Requested Address within an ADDRESS_REQUEST capsule