From 7efc61cbe41429c44151d4a3a7d1c9c89a23ecf9 Mon Sep 17 00:00:00 2001 From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com> Date: Sat, 5 Apr 2025 03:24:04 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=9D=E8=AF=95=E6=B7=BB=E5=8A=A0IPV?= =?UTF-8?q?6=E8=B7=AF=E7=94=B1=E8=BF=BD=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bk/{trace.go => trace_ipv4.go} | 0 bk/trace_ipv6.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) rename bk/{trace.go => trace_ipv4.go} (100%) create mode 100644 bk/trace_ipv6.go diff --git a/bk/trace.go b/bk/trace_ipv4.go similarity index 100% rename from bk/trace.go rename to bk/trace_ipv4.go diff --git a/bk/trace_ipv6.go b/bk/trace_ipv6.go new file mode 100644 index 0000000..0253cf9 --- /dev/null +++ b/bk/trace_ipv6.go @@ -0,0 +1,30 @@ +package bk + +import ( + "net" + + "golang.org/x/net/icmp" + "golang.org/x/net/ipv6" +) + +func newPacketV6(id uint16, dst net.IP, ttl int) []byte { + msg := icmp.Message{ + Type: ipv6.ICMPTypeEchoRequest, + Body: &icmp.Echo{ + ID: int(id), + Seq: int(id), + }, + } + p, _ := msg.Marshal(nil) + ip := &ipv6.Header{ + Version: ipv6.Version, + NextHeader: ProtocolIPv6ICMP, + HopLimit: ttl, + Dst: dst, + } + buf, err := ip.Marshal() + if err != nil { + return nil + } + return append(buf, p...) +}