可显示MPLS LABEL

This commit is contained in:
tsosunchia
2023-10-05 05:12:01 +08:00
parent db9b3fed9a
commit 13aaa54067

View File

@@ -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)
}
}