329ccd3eb928d49bebe191b5658af07bc361d14e
[ocaml-bitstring.git] / examples / make_ipv4_header.ml
1 (* Create an IPv4 header.
2  * $Id: make_ipv4_header.ml,v 1.2 2008-04-01 17:31:12 rjones Exp $
3  *)
4
5 open Printf
6
7 let version = 4
8 let hdrlen = 5                          (* no options *)
9 let tos = 16
10 let length = 64                         (* total packet length *)
11 let identification = 0
12 let flags = 0
13 let fragoffset = 0
14 let ttl = 255
15 let protocol = 17                       (* UDP *)
16 let checksum = 0
17 let source = 0xc0a80202                 (* 192.168.2.2 *)
18 let dest = 0xc0a80201                   (* 192.168.2.1 *)
19 let options = Bitmatch.empty_bitstring
20 let payload_length = (length - hdrlen*4) * 8
21 let payload = Bitmatch.create_bitstring payload_length
22
23 let header =
24   BITSTRING {
25     version : 4; hdrlen : 4; tos : 8; length : 16;
26     identification : 16; flags : 3; fragoffset : 13;
27     ttl : 8; protocol : 8; checksum : 16;
28     source : 32;
29     dest : 32;
30     options : -1, bitstring;
31     payload : payload_length, bitstring
32   }
33
34 let () = Bitmatch.file_of_bitstring header "ipv4_header_out.dat"