From 6f86ce7057dd7cd1b491e8f09501258822d2ea74 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 23 May 2017 17:06:09 +0200 Subject: Import j1demo --- j1demo/firmware/defines_tcpip2.py | 215 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 j1demo/firmware/defines_tcpip2.py (limited to 'j1demo/firmware/defines_tcpip2.py') diff --git a/j1demo/firmware/defines_tcpip2.py b/j1demo/firmware/defines_tcpip2.py new file mode 100644 index 0000000..1d9e556 --- /dev/null +++ b/j1demo/firmware/defines_tcpip2.py @@ -0,0 +1,215 @@ +layout = [ + ('ETH', [ + ('DST', 6), + ('SRC', 6), + ('TYPE', 2), + [ + ('ARP', [ + ('SOMETHING', 6), + ('OPCODE', 2), + ('SRC_ETH', 6), + ('SRC_IP', 4), + ('DST_ETH', 6), + ('DST_IP', 4) ]), + ('IP', [ + ('VHLTOS', 2), + ('LENGTH', 2), + ('IPID', 2), + ('IPOFFSET', 2), + ('TTLPROTO', 2), + ('CHKSUM', 2), + ('SRCIP', 4), + ('DSTIP', 4), + [ + ('ICMP', [ + ('TYPECODE', 2), + ('CHKSUM', 2), + ('IDENTIFIER', 2), + ('SEQUENCE', 2) ]), + ('TCP', [ + ('SOURCEPORT', 2), + ('DESTPORT', 2), + ('SEQNUM', 4), + ('ACK', 4), + ('FLAGS', 2), + ('WINDOW', 2), + ('CHECKSUM', 2), + ('URGENT', 2) ]), + ('UDP', [ + ('SOURCEPORT', 2), + ('DESTPORT', 2), + ('LENGTH', 2), + ('CHECKSUM', 2), + [ + ('DHCP', [ + ('OP', 1), + ('HTYPE', 1), + ('HLEN', 1), + ('HOPS', 1), + ('XID', 4), + ('SECS', 2), + ('FLAGS', 2), + ('CIADDR', 4), + ('YIADDR', 4), + ('SIADDR', 4), + ('GIADDR', 4), + ('CHADDR', 16), + ('SNAME', 64), + ('FILE', 128), + ('OPTIONS', 312) + ]), + ('DNS', [ + ('IDENTIFICATION', 2), + ('FLAGS', 2), + ('NOQ', 2), + ('NOA', 2), + ('NORR', 2), + ('NOARR', 2), + ('QUERY', 1) + ]), + ('NTP', [ + ('FLAGS', 4), + ('ROOTDELAY', 4), + ('ROOTDISPERSION', 4), + ('REFID', 4), + ('REFERENCE', 8), + ('ORIGINATE', 8), + ('RECEIVE', 8), + ('TRANSMIT', 8), + ]), + ('TFTP', [ + ('OPCODE', 2), + [ + ('RWRQ', [ + ('FILENAME', 512) + ]), + ('DATA', [ + ('BLOCK', 2), + ('DATA', 512) + ]), + ('ACK', [ + ('BLOCK', 2), + ]), + ('ERROR', [ + ('NUMBER', 2), + ('MESSAGE', 512), + ]), + ] + ]), + ('LOADER', [ + ('SEQNO', 2), + ('OPCODE', 2), + [ + ('RAMREAD', [ + ('ADDR', 2) + ]), + ('RAMWRITE', [ + ('ADDR', 2), + ('DATA', 128) + ]), + ('FLASHREAD', [ + ('ADDR', 4) + ]), + ('FLASHWRITE', [ + ('ADDR', 4), + ('DATA', 128) + ]), + ] + ]), + ('WGE', [ + ('MAGIC', 4), + ('TYPE', 4), + ('HRT', 16), + ('REPLYTO', [ + ('MAC', 8), + ('IP', 4), + ('PORT', 2), + ]), + ('PAD', 2), + [ + ('DISCOVER', [ + ('IP', 4) + ]), + ('CONFIGURE', [ + ('PRODUCT', 4), + ('SERIAL', 4), + ('IP', 4) + ]), + ('FLASHREAD', [ + ('ADDRESS', 4) + ]), + ('FLASHWRITE', [ + ('ADDRESS', 4), + ('DATA', 264), + ]), + ('TRIGCONTROL', [ + ('TRIGSTATE', 4), + ]), + ('SENSORREAD', [ + ('ADDRESS', 1), + ]), + ('SENSORWRITE', [ + ('ADDRESS', 1), + ('DATA', 2), + ]), + ('SENSORSELECT', [ + ('INDEX', 1), + ('ADDRESS', 4), + ]), + ('IMAGERMODE', [ + ('MODE', 4), + ]), + ('IMAGERSETRES', [ + ('HORIZONTAL', 2), + ('VERTICAL', 2), + ]), + ('SYSCONFIG', [ + ('MAC', 6), + ('SERIAL', 4), + ]), + ('VIDSTART', [ + ('MAC', 8), + ('IP', 4), + ('PORT', 2), + ]), + ] + ]), + ] + ]) + ] + ]) + ]]) +] + +offsets = {} +def descend(offset, prefix, node): + start = offset + if isinstance(node, list): + for n in node: + descend(offset, prefix, n) + else: + (name, members) = node + offsets[".".join((prefix + [name]))] = offset + if isinstance(members, int): + offset += members + else: + for n in members: + offset = descend(offset, prefix + [name], n) + # offsets["%s%s_SIZE" % (prefix, name)] = offset - start + return offset + +descend(0, [], layout[0]) + +offsets['TCP_FIN'] = 1 +offsets['TCP_SYN'] = 2 +offsets['TCP_RST'] = 4 +offsets['TCP_PSH'] = 8 +offsets['TCP_ACK'] = 16 +offsets['TCP_URG'] = 32 + +offsets['IP_PROTO_ICMP'] = 1 +offsets['IP_PROTO_IGMP'] = 2 +offsets['IP_PROTO_TCP'] = 6 +offsets['IP_PROTO_UDP'] = 17 + +offsets['NUM_TCPS'] = 2 -- cgit v1.2.3