TUN-8641: Expose methods to simplify V3 Datagram parsing on the edge

This commit is contained in:
Gonçalo Garcia
2024-11-04 15:23:36 -08:00
parent 589c198d2d
commit 3d33f559b1
5 changed files with 37 additions and 11 deletions

View File

@@ -27,7 +27,7 @@ const (
maxDatagramPayloadLen = 1280
)
func parseDatagramType(data []byte) (DatagramType, error) {
func ParseDatagramType(data []byte) (DatagramType, error) {
if len(data) < datagramTypeLen {
return 0, ErrDatagramHeaderTooSmall
}
@@ -140,7 +140,7 @@ func (s *UDPSessionRegistrationDatagram) MarshalBinary() (data []byte, err error
}
func (s *UDPSessionRegistrationDatagram) UnmarshalBinary(data []byte) error {
datagramType, err := parseDatagramType(data)
datagramType, err := ParseDatagramType(data)
if err != nil {
return err
}
@@ -192,10 +192,10 @@ type UDPSessionPayloadDatagram struct {
}
const (
datagramPayloadHeaderLen = datagramTypeLen + datagramRequestIdLen
DatagramPayloadHeaderLen = datagramTypeLen + datagramRequestIdLen
// The maximum size that a proxied UDP payload can be in a [UDPSessionPayloadDatagram]
maxPayloadPlusHeaderLen = maxDatagramPayloadLen + datagramPayloadHeaderLen
maxPayloadPlusHeaderLen = maxDatagramPayloadLen + DatagramPayloadHeaderLen
)
// The datagram structure for UDPSessionPayloadDatagram is:
@@ -230,7 +230,7 @@ func MarshalPayloadHeaderTo(requestID RequestID, payload []byte) error {
}
func (s *UDPSessionPayloadDatagram) UnmarshalBinary(data []byte) error {
datagramType, err := parseDatagramType(data)
datagramType, err := ParseDatagramType(data)
if err != nil {
return err
}
@@ -332,7 +332,7 @@ func (s *UDPSessionRegistrationResponseDatagram) MarshalBinary() (data []byte, e
}
func (s *UDPSessionRegistrationResponseDatagram) UnmarshalBinary(data []byte) error {
datagramType, err := parseDatagramType(data)
datagramType, err := ParseDatagramType(data)
if err != nil {
return wrapUnmarshalErr(err)
}