diff options
Diffstat (limited to 'yaml/headers.yaml')
-rwxr-xr-x | yaml/headers.yaml | 429 |
1 files changed, 429 insertions, 0 deletions
diff --git a/yaml/headers.yaml b/yaml/headers.yaml new file mode 100755 index 00000000..d22eedc1 --- /dev/null +++ b/yaml/headers.yaml @@ -0,0 +1,429 @@ +# This yaml describes packet headers and their fields + + +####################################################################### +# Root, reserved starting point + + + - class: 'root' + gui_representation: + help: 'Root' + next_headers: ['ethernet', 'llc', '_802-3', 'ipv4'] + + +####################################################################### +# Protocols + + +# L2 + + + - class: 'ethernet' + gui_representation: + help: 'Ethernet-L2' + properties: ['external'] + default: [0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00] + fields: + - name: 'Dst' + gui_representation: + help: 'Destination MAC' + type: 'c-mac-addr' + default: [0x77, 0x55, 0x01, 0x00, 0x00, 0x01] + + - name: 'Src' + gui_representation: + help: 'Source MAC' + type: 'c-mac-addr' + + - name: 'Ethertype' + gui_representation: + help: 'Ethertype' + type: 'uint16' + default: [0x0800] + value_based_next_header: + 0x0800: 'ipv4' + # not implemented + # 0x0806: 'arp' + # 0x86DD: 'ipv6' + # 0x8100: 'vlan' # field of 4 bytes added in this case, what to do? + # 0x8847: 'mpls unicast' # unicast or multicast? multicast is 0x8848 + default: 'payload' + + +# L3 + + + - class: 'ipv4' + gui_representation: + help: 'IPv4' + properties: ['external'] + fields: + - name: 'ver' + gui_representation: + help: 'Version' + type: 'c-bit' + array_size: 4 + default: [0, 1, 0, 0] + properties: ['const'] + + - name: 'ihl' + gui_representation: + help: 'IHL' + type: 'c-bit' + array_size: 4 + default: [0, 1, 0, 1] + properties: ['ipv4_ihl'] + + - name: 'DSCP' + gui_representation: + help: 'Differentiated Services Code Point' + type: 'c-bit' + array_size: 6 + default: [0, 0, 0, 0, 0, 0] + + - name: 'ECN' + gui_representation: + help: 'Explicit Congestion Notification' + type: 'c-bit' + array_size: 2 + default: [0, 0] + + - name: 'total_len' + gui_representation: + help: 'Total Length' + type: 'uint8' + array_size: 2 + default: [0, 57] + properties: ['total_length'] + + - name: 'Identification' + gui_representation: + help: 'Identification' + type: 'uint8' + array_size: 2 + default: [0x00, 0x00] + + - name: 'Flags' + gui_representation: + help: 'IPv4 Flags' + type: 'c-bit' + array_size: 3 + default: [0, 0, 0] + fields: + - name: 'Reserved' + gui_representation: + help: 'Reserved' + type: 'bit' + default: 0 + properties: ['const'] + + - name: 'DF' + gui_representation: + help: "Don't Fragment" + type: 'bit' + default: 0 + + - name: 'MF' + gui_representation: + help: 'More Fragments' + type: 'bit' + default: 0 + + - name: 'Fragment Offset' + gui_representation: + help: 'Fragment Offset' + type: 'c-bit' + array_size: 13 + default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + + - name: 'TTL' + gui_representation: + help: 'Time To Live' + type: 'uint8' + default: 0x80 + + - name: 'protocol' + type: 'uint8' + default: 0x06 + value_based_next_header: &ipv4_next_header + 0x06: 'tcp' + 0x11: 'udp' + # not implemented + # 0x29: 'ipv6' + # 0x2F: 'gre' + default: 'payload' + gui_representation: + help: 'IPv4 next protocol field' + combobox_values: + <<: *ipv4_next_header + 0x11: 'Next header is UDP' # overrides the description for combo-box + + - name: 'ipv4_chksum' + gui_representation: + help: 'IPv4 Header Checksum' + type: 'uint16' + default: [0x0000] + properties: ['ipv4_checksum', 'const'] + + - name: 'Src' + gui_representation: + help: 'Source IPv4' + type: 'c-ipv4-addr' + + - name: 'Dst' + gui_representation: + help: 'Destination IPv4' + type: 'c-ipv4-addr' + + # not implemented + # - name: 'Opts' # presence of this field and it's size should be determined in python/java + # help: 'IPv4 options' + # type: 'c-ipv4-options' + + +# L4 + + + - class: 'tcp' + gui_representation: + help: 'TCP' + properties: ['external'] + next_headers: ['ipv6', 'ipv4'] + fields: + - name: 'src_port' + gui_representation: + help: 'Source Port' + type: 'c-port-16bit' + + - name: 'dest_port' + gui_representation: + help: 'Destination Port' + type: 'c-port-16bit' + + - name: 'Seq' + gui_representation: + help: 'Sequence number' + type: uint32 + default: 0x30000000 + + - name: 'Ack' + gui_representation: + help: 'Acknowledgment number' + type: uint32 + default: 0x30000000 + + - name: 'Data offset' + gui_representation: + help: 'Data offset' + type: 'c-bit' + array_size: 4 + default: [0, 1, 0, 1] + + - name: 'Reserved' + gui_representation: + help: 'TCP Reserved' + type: 'bit' + array_size: 3 + default: [0, 0, 0] + properties: ['const'] + + - name: 'flags' # tree with leaf of bits + gui_representation: + help: 'TCP flags' + type: 'c-bit' + array_size: 9 + default: [0, 0, 0, 0, 0, 0, 0, 0, 0] + fields: + - name: 'ns' + gui_representation: + help: 'NS flag' + type: 'bit' + default: 0 + + - name: 'cwr' + gui_representation: + help: 'CWR flag' + type: 'bit' + default: 0 + + - name: 'ece' + gui_representation: + help: 'ECE flag' + type: 'bit' + default: 0 + + - name: 'urg' + gui_representation: + help: 'URG flag' + type: 'bit' + default: 0 + + - name: 'ack' + gui_representation: + help: 'ACK flag' + type: 'bit' + default: 0 + + - name: 'psh' + gui_representation: + help: 'PSH flag' + type: 'bit' + default: 0 + + - name: 'rst' + gui_representation: + help: 'RST flag' + type: 'bit' + default: 0 + + - name: 'syn' + gui_representation: + help: 'SYN flag' + type: 'bit' + default: 0 + + - name: 'window_size' + gui_representation: + help: 'Window size' + type: uint16 + default: 0x0000 + + - name: 'checksum' + gui_representation: + help: 'Checksum' + type: uint16 + default: 0x0000 + properties: ['tcp_checksum'] + + - name: 'urgent_pointer' + gui_representation: + help: 'Urgent pointer' + type: uint16 + default: 0x0000 + + # not implemented + # - name: 'tcp options' + # type: 'c-tcp-options' + + + - class: 'udp' + gui_representation: + help: 'UDP' + properties: ['external'] + next_headers: ['ipv6', 'ipv4'] + fields: + - name: 'src_port' + gui_representation: + help: 'Source Port' + type: 'c-port-16bit' + + - name: 'dest_port' + gui_representation: + help: 'Destination Port' + type: 'c-port-16bit' + + - name: 'length' + gui_representation: + help: 'Length' + type: 'uint16' + default: 0x0020 + properties: ['total_length'] + + - name: 'checksum' + gui_representation: + help: 'UDP Checksum' + type: uint16 + default: 0x0000 + properties: ['udp_checksum'] + + +####################################################################### +# Fields + + + - class: 'c-mac-addr' + type: 'uint8' + array_size: 6 + default: [0x00, 0x00, 0x01, 0x00, 0x00, 0x00] + gui_representation: + help: 'MAC address' + data_type: 'mac-addr_t' # format ([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2} + form_type: 'combo_with_edit' + + + - class: 'c-ipv4-addr' + type: 'uint8' + array_size: 4 + default: [1, 1, 1, 1] + gui_representation: + help: 'IPv4 address' + data_type: 'ipv4_t' + form_type: 'combo_with_edit' + + + - class: 'c-port-16bit' + type: 'uint16' + default: 0x1234 + gui_representation: + help: 'ports of TCP/UDP etc.' + form_type: 'combo_with_edit' + + + - class: 'c-bit' + type: 'bit' + gui_representation: + help: 'bit with checkbox representation' + form_type: 'checkbox' + + +###################### +# incomplete + + - class: 'c-ipv4-option' + type: 'vlen_t' + default: 0x01 + fields: + - name: 'copied flag' + help: 'Copy the option to all fragments flag' + type: 'c-bit' + default: 0 + + - name: 'option class' + help: '0 = controls, 2 = debugging' + type: 'bit' + array_size: 2 + default: 0 + + - name: 'option number' + help: 'Option Number' + type: 'bit' + array_size: 5 + value_based_next_class: + 0: 'end' # reserved name for ending options + 1: 'ip_option' # back to itself + 2: 'c-ipv4opt-security' + 3: 'c-ipv4opt-loose-source-routing' + 4: 'c-ipv4opt-internet-timestamp' + 7: 'c-ipv4opt-record-route' + 8: 'c-ipv4opt-stream-id' + 9: 'c-ipv4opt-strict-source-routing' + default: 'end' + + + - class: 'c-ipv4opt-security' + help: 'ipv4 option security' + type: 'bit' + array_size: 11 + default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + fields: + value_based_next_class: + default: 'c-ipv4-option' + + - class: 'c-ipv4opt-loose-source-routing' + help: 'ipv4 option loose source routing' + type: 'bit' + default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + fields: + value_based_next_class: + default: 'c-ipv4-option' + |