12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package layers
- import (
- "encoding/binary"
- "github.com/google/gopacket"
- "net"
- "strconv"
- )
- var (
-
-
-
- EndpointIPv4 = gopacket.RegisterEndpointType(1, gopacket.EndpointTypeMetadata{Name: "IPv4", Formatter: func(b []byte) string {
- return net.IP(b).String()
- }})
- EndpointIPv6 = gopacket.RegisterEndpointType(2, gopacket.EndpointTypeMetadata{Name: "IPv6", Formatter: func(b []byte) string {
- return net.IP(b).String()
- }})
- EndpointMAC = gopacket.RegisterEndpointType(3, gopacket.EndpointTypeMetadata{Name: "MAC", Formatter: func(b []byte) string {
- return net.HardwareAddr(b).String()
- }})
- EndpointTCPPort = gopacket.RegisterEndpointType(4, gopacket.EndpointTypeMetadata{Name: "TCP", Formatter: func(b []byte) string {
- return strconv.Itoa(int(binary.BigEndian.Uint16(b)))
- }})
- EndpointUDPPort = gopacket.RegisterEndpointType(5, gopacket.EndpointTypeMetadata{Name: "UDP", Formatter: func(b []byte) string {
- return strconv.Itoa(int(binary.BigEndian.Uint16(b)))
- }})
- EndpointSCTPPort = gopacket.RegisterEndpointType(6, gopacket.EndpointTypeMetadata{Name: "SCTP", Formatter: func(b []byte) string {
- return strconv.Itoa(int(binary.BigEndian.Uint16(b)))
- }})
- EndpointRUDPPort = gopacket.RegisterEndpointType(7, gopacket.EndpointTypeMetadata{Name: "RUDP", Formatter: func(b []byte) string {
- return strconv.Itoa(int(b[0]))
- }})
- EndpointUDPLitePort = gopacket.RegisterEndpointType(8, gopacket.EndpointTypeMetadata{Name: "UDPLite", Formatter: func(b []byte) string {
- return strconv.Itoa(int(binary.BigEndian.Uint16(b)))
- }})
- EndpointPPP = gopacket.RegisterEndpointType(9, gopacket.EndpointTypeMetadata{Name: "PPP", Formatter: func([]byte) string {
- return "point"
- }})
- )
- func NewIPEndpoint(a net.IP) gopacket.Endpoint {
- ipv4 := a.To4()
- if ipv4 != nil {
- return gopacket.NewEndpoint(EndpointIPv4, []byte(ipv4))
- }
- ipv6 := a.To16()
- if ipv6 != nil {
- return gopacket.NewEndpoint(EndpointIPv6, []byte(ipv6))
- }
- return gopacket.InvalidEndpoint
- }
- func NewMACEndpoint(a net.HardwareAddr) gopacket.Endpoint {
- return gopacket.NewEndpoint(EndpointMAC, []byte(a))
- }
- func newPortEndpoint(t gopacket.EndpointType, p uint16) gopacket.Endpoint {
- return gopacket.NewEndpoint(t, []byte{byte(p >> 8), byte(p)})
- }
- func NewTCPPortEndpoint(p TCPPort) gopacket.Endpoint {
- return newPortEndpoint(EndpointTCPPort, uint16(p))
- }
- func NewUDPPortEndpoint(p UDPPort) gopacket.Endpoint {
- return newPortEndpoint(EndpointUDPPort, uint16(p))
- }
- func NewSCTPPortEndpoint(p SCTPPort) gopacket.Endpoint {
- return newPortEndpoint(EndpointSCTPPort, uint16(p))
- }
- func NewRUDPPortEndpoint(p RUDPPort) gopacket.Endpoint {
- return gopacket.NewEndpoint(EndpointRUDPPort, []byte{byte(p)})
- }
- func NewUDPLitePortEndpoint(p UDPLitePort) gopacket.Endpoint {
- return newPortEndpoint(EndpointUDPLitePort, uint16(p))
- }
|