Fix svnignore in the examples subdirectory.
[ocaml-bitstring.git] / tests / 60_ping.ml
index c3a380e..7a274cb 100644 (file)
@@ -1,21 +1,21 @@
 (* Read in IPv4 and IPv6 ping packets and display them.
- * $Id: 60_ping.ml,v 1.1 2008-04-01 10:58:53 rjones Exp $
+ * $Id: 60_ping.ml,v 1.3 2008-04-25 11:08:43 rjones Exp $
  *)
 
 open Printf
 
 let display pkt =
   bitmatch pkt with
-  | version : 4; hdrlen : 4; tos : 8; length : 16;
-    identification : 16; flags : 3; fragoffset : 13;
-    ttl : 8; protocol : 8; checksum : 16;
-    source : 32;
-    dest : 32;
-    options : (hdrlen-5)*32 : bitstring;
-    payload : -1 : bitstring
-      when version = 4 ->
+  (* IPv4 packet header *)
+  | { 4 : 4; hdrlen : 4; tos : 8; length : 16;
+      identification : 16; flags : 3; fragoffset : 13;
+      ttl : 8; protocol : 8; checksum : 16;
+      source : 32;
+      dest : 32;
+      options : (hdrlen-5)*32 : bitstring;
+      payload : -1 : bitstring } ->
 
-    printf "IPv%d:\n" version;         (* IPv4 packet *)
+    printf "IPv4:\n";
     printf "  header length: %d * 32 bit words\n" hdrlen;
     printf "  type of service: %d\n" tos;
     printf "  packet length: %d bytes\n" length;
@@ -31,14 +31,14 @@ let display pkt =
     printf "  packet payload:\n";
     Bitmatch.hexdump_bitstring stdout payload
 
-  | version : 4; tclass : 8; flow : 20;
-    length : 16; nexthdr : 8; ttl : 8;
-    source : 128 : bitstring;
-    dest : 128 : bitstring;
-    payload : -1 : bitstring
-      when version = 6 ->
+  (* IPv6 packet header *)
+  | { 6 : 4; tclass : 8; flow : 20;
+      length : 16; nexthdr : 8; ttl : 8;
+      source : 128 : bitstring;
+      dest : 128 : bitstring;
+      payload : -1 : bitstring } ->
 
-    printf "IPv%d:\n" version;         (* IPv6 packet *)
+    printf "IPv6:\n";
     printf "  traffic class: %d\n" tclass;
     printf "  flow label: %d\n" flow;
     printf "  packet (payload) length: %d bytes\n" length;
@@ -51,11 +51,11 @@ let display pkt =
     printf "packet payload:\n";
     Bitmatch.hexdump_bitstring stdout payload
 
-  | version : 4 ->
+  | { version : 4 } ->
     eprintf "unknown IP version %d\n" version;
     exit 1
 
-  | _ as pkt ->
+  | { _ } as pkt ->
     eprintf "data is smaller than one nibble:\n";
     Bitmatch.hexdump_bitstring stderr pkt;
     exit 1