mirror of
https://github.com/soypat/lneto.git
synced 2026-08-21 15:09:05 +00:00
StackNode refactor: add offsetToIP argument to Encapsulate
This commit is contained in:
@@ -61,24 +61,25 @@ func (sudp *StackUDPPort) Demux(carrierData []byte, frameOffset int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (sudp *StackUDPPort) Encapsulate(carrierData []byte, frameOffset int) (int, error) {
|
||||
func (sudp *StackUDPPort) Encapsulate(carrierData []byte, offsetToIP, offsetToFrame int) (int, error) {
|
||||
if sudp.h.IsInvalid() {
|
||||
sudp.h.destroy()
|
||||
return 0, net.ErrClosed
|
||||
}
|
||||
ufrm, err := udp.NewFrame(carrierData[frameOffset:])
|
||||
ufrm, err := udp.NewFrame(carrierData[offsetToFrame:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
ufrm.SetSourcePort(sudp.h.port)
|
||||
ufrm.SetDestinationPort(sudp.rmport)
|
||||
if len(sudp.raddr) > 0 && frameOffset >= 20 {
|
||||
err = internal.SetIPAddrs(carrierData, 0, nil, sudp.raddr)
|
||||
if len(sudp.raddr) > 0 && offsetToIP >= 0 {
|
||||
err = internal.SetIPAddrs(carrierData[offsetToIP:], 0, nil, sudp.raddr)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
n, err := sudp.h.encapsulate(carrierData, frameOffset+8)
|
||||
// Child payload starts 8 bytes after UDP header start.
|
||||
n, err := sudp.h.encapsulate(carrierData, offsetToIP, offsetToFrame+8)
|
||||
if n == 0 {
|
||||
if err != nil {
|
||||
slog.Error("stackudp:encapsulate", slog.String("err", err.Error()))
|
||||
|
||||
Reference in New Issue
Block a user