From 13aaa540673cf3c20d8902a149f4ac7e603a908d Mon Sep 17 00:00:00 2001 From: tsosunchia <59512455+tsosunchia@users.noreply.github.com> Date: Thu, 5 Oct 2023 05:12:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E6=98=BE=E7=A4=BAMPLS=20LABEL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- trace/icmp_ipv4.go | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/trace/icmp_ipv4.go b/trace/icmp_ipv4.go index f7c80eb..af5178b 100644 --- a/trace/icmp_ipv4.go +++ b/trace/icmp_ipv4.go @@ -182,18 +182,15 @@ func (t *ICMPTracer) handleICMPMessage(msg ReceivedMessage, icmpType int8, data extensionBody := data[extensionOffset:] if len(extensionBody) >= 8 && len(extensionBody)%8 == 0 { - log.Println("ICMP Multi-Part Extensions detected for TTL:", ttl) - //TODO: Parse MPLS extensions - //for i := 0; i < len(extensionBody); i += 4 { - // labelData := binary.BigEndian.Uint32(extensionBody[i : i+4]) - // - // label := (labelData & 0xFFFFF000) >> 12 - // tc := (labelData & 0x00000E00) >> 9 - // s := (labelData & 0x00000100) >> 8 - // mplsTTL := labelData & 0x000000FF - // - // log.Printf("MPLS for TTL %d: Lbl %d TC %d S %d TTL %d\n", ttl, label, tc, s, mplsTTL) - //} + //log.Println("ICMP Multi-Part Extensions detected for TTL:", ttl) + //这里感觉会有问题,能力所限先这样吧,等有缘人来改 + tmp := fmt.Sprintf("%x", msg.Msg[:*msg.N]) + substring := tmp[len(tmp)-7 : len(tmp)-3] + label, err := strconv.ParseInt(substring, 16, 32) + if err != nil { + return + } + log.Printf("MPLS for TTL %d: Lbl %d\n", ttl, label) } }