# Location definitions for packet matching
#
# name         alignment  offset  mask     shift
ip.version     u8         net+0   0xF0     4
ip.hdrlen      u8         net+0   0x0F
ip.diffserv    u8         net+1
ip.length      u16        net+2
ip.id          u16        net+4
ip.flag.res    u8         net+6   0xff     7
ip.df          u8         net+6   0x40     6
ip.mf          u8         net+6   0x20     5
ip.offset      u16        net+6   0x1FFF
ip.ttl         u8         net+8
ip.proto       u8         net+9
ip.chksum      u16        net+10
ip.src         u32        net+12
ip.dst         u32        net+16

# if ip.ihl > 5
#
# name         alignment  offset  mask     shift
ip.opts        u32        net+20


# IP version 6
#
# name         alignment  offset  mask     shift
ip6.version    u8         net+0   0xF0     4
ip6.tc         u16        net+0   0xFF0    4
ip6.flowlabel  u32        net+0   0xFFFFF
ip6.length     u16        net+4
ip6.nexthdr    u8         net+6
ip6.hoplimit   u8         net+7
ip6.src        16         net+8
ip6.dst        16         net+24

# Transmission Control Protocol (TCP)
#
# name         alignment  offset  mask     shift
tcp.sport      u16        tcp+0
tcp.dport      u16        tcp+2
tcp.seq        u32        tcp+4
tcp.ack        u32        tcp+8

# Data offset (4 bits)
#
# name         alignment  offset  mask     shift
tcp.off        u8         tcp+12  0xF0     4

# Reserved [0 0 0] (3 bits)
#
# name         alignment  offset  mask     shift
tcp.reserved   u8         tcp+12  0x04     1

# ECN [N C E] (3 bits)
#
# name         alignment  offset  mask     shift
tcp.ecn        u16        tcp+12  0x01C00  6

# Individual TCP flags (0|1) (6 bits in total)
#
# name         alignment  offset  mask     shift
tcp.flag.urg   u8         tcp+13  0x20     5
tcp.flag.ack   u8         tcp+13  0x10     4
tcp.flag.psh   u8         tcp+13  0x08     3
tcp.flag.rst   u8         tcp+13  0x04     2
tcp.flag.syn   u8         tcp+13  0x02     1
tcp.flag.fin   u8         tcp+13  0x01

tcp.win        u16        tcp+14
tcp.csum       u16        tcp+16
tcp.urg        u16        tcp+18
tcp.opts       u32        tcp+20

# User Datagram Protocol (UDP)
#
# name         alignment  offset  mask     shift
udp.sport      u16        tcp+0
udp.dport      u16        tcp+2
udp.length     u16        tcp+4
udp.csum       u16        tcp+6
