本文整理匯總了Golang中code/google/com/p/gopacket/layers.IPv4.Protocol方法的典型用法代碼示例。如果您正苦於以下問題:Golang IPv4.Protocol方法的具體用法?Golang IPv4.Protocol怎麽用?Golang IPv4.Protocol使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類code/google/com/p/gopacket/layers.IPv4
的用法示例。
在下文中一共展示了IPv4.Protocol方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Unshim
/*Unshim removes the shim layer from an IPv4 packet, if it's present.*/
func Unshim(ipLayer *layers.IPv4) *RouteRecord {
if Shimmed(ipLayer) {
/*Remove the route record from the payload*/
ipPayload := bytes.NewBuffer(ipLayer.LayerPayload())
var rr RouteRecord
rr.ReadFrom(ipPayload)
ipLayer.Length -= uint16(rr.Len())
ipLayer.Protocol = layers.IPProtocol(rr.Protocol)
ipLayer.Checksum = 0
ipLayer.Payload = ipPayload.Bytes()
return &rr
}
return nil
}
示例2: Shim
/*Shim inserts the given router into the shim layer route record of the given
IPv4 packet, creating a new route record if it's not already present.*/
func Shim(ipLayer *layers.IPv4, r Router) {
ipPayload := bytes.NewBuffer(ipLayer.LayerPayload())
var modifiedIPPayload bytes.Buffer
var rr RouteRecord
if Shimmed(ipLayer) {
rr.ReadFrom(ipPayload)
ipLayer.Length -= uint16(rr.Len())
} else {
rr.Protocol = uint8(ipLayer.Protocol)
}
/*Add the specified router to the route record and put the record at the
beginning of the payload.*/
rr.AddRouter(r)
rr.WriteTo(&modifiedIPPayload)
ipPayload.WriteTo(&modifiedIPPayload)
ipLayer.Length += uint16(rr.Len())
ipLayer.Protocol = layers.IPProtocol(IPProtocolAITFRouteRecord)
ipLayer.Checksum = 0
ipLayer.Payload = modifiedIPPayload.Bytes()
}