fix: 修复 IP 包识别问题

This commit is contained in:
lynx
2023-07-31 16:39:19 +08:00
parent 61775e2105
commit fbdbaf8f95
2 changed files with 11 additions and 2 deletions
+1
View File
@@ -161,6 +161,7 @@ func (e *Engine) Start() error {
go e.RoutineTUNReader()
go e.RoutineTUNWriter()
go e.RoutineRouteTableWriter()
if err := <-e.errChan; err != nil {
return err
+10 -2
View File
@@ -24,8 +24,16 @@ func ParseIP(buff []byte) (IP, error) {
func ParseIPv4(buff []byte) (*IPv4, error) {
headerLength := (buff[0] & 0xF0) * 5
src := netip.AddrFrom4([4]byte{buff[12], buff[13], buff[14], buff[15]})
dst := netip.AddrFrom4([4]byte{buff[16], buff[17], buff[18], buff[19]})
src, ok := netip.AddrFromSlice(buff[12:16])
if !ok || src.IsValid() {
return nil, errors.New("invalid IP packet")
}
dst, ok := netip.AddrFromSlice(buff[16:20])
if !ok || dst.IsValid() {
return nil, errors.New("invalid IP packet")
}
return &IPv4{
headerLength: int(headerLength),