;; -*- scheme -*- (root Ipv4Option (fields (copied u1) (class u2) (number u5) (length u8) (data (array (- length 1) u8)))) (root IpPacket (fields (version (u 4)))) (branch IpPacket.V4 (condition (= version 4)) (fields (ihl u4) ; minimum value is 5 (dscp u6) (ecn u2) (total-length u16) (id u16) (flags u3) (fragment-offset u13) (ttl u8) (protocol u8) (header-checksum u16) (source-address u32) (destination-address u32) (options (array (- ihl 5) Ipv4Option)))) (branch IpPacket.V4.Icmp (condition (= protocol 1)) (fields (type u8) (code u8) (checksum u16))) (root (IcmpV4EchoData ihl total-length) (fields (identifier u16) (sequence-number u16) (data (array (- total-length (* (+ ihl 2) 4)) u8)))) (branch IpPacket.V4.Icmp.Echo (condition (and (= type 8) (= code 0))) (implies (IcmpV4EchoData ihl total-length))) (branch IpPacket.V4.Icmp.EchoReply (condition (and (= type 0) (= code 0))) (implies (IcmpV4EchoData ihl total-length))) (branch IpPacket.V4.Unknown (condition #t) (fields (payload (array (- total-length (* ihl 4)) u8)))) ;; Local Variables: ;; eval: (put 'branch 'scheme-indent-function 1) ;; eval: (put 'enum 'scheme-indent-function 1) ;; End: