File: make_ipv4_header.ml

package info (click to toggle)
ocaml-bitstring 5.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 908 kB
  • sloc: ml: 3,817; ansic: 136; makefile: 3
file content (31 lines) | stat: -rw-r--r-- 782 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(* Create an IPv4 header.
 * $Id$
 *)

open Printf

let version = 4
let hdrlen = 5				(* no options *)
let tos = 16
let length = 64				(* total packet length *)
let identification = 0
let flags = 0
let fragoffset = 0
let ttl = 255
let protocol = 17			(* UDP *)
let checksum = 0
let source = 0xc0a80202_l		(* 192.168.2.2 *)
let dest = 0xc0a80201_l			(* 192.168.2.1 *)
let options = Bitstring.empty_bitstring
let payload_length = (length - hdrlen*4) * 8
let payload = Bitstring.create_bitstring payload_length

let%bitstring header =
  {|
    version : 4; hdrlen : 4; tos : 8; length : 16;
    identification : 16; flags : 3; fragoffset : 13;
    ttl : 8; protocol : 8; checksum : 16;
    source : 32; dest : 32
  |}

let () = Bitstring.bitstring_to_file header "ipv4_header_out.dat"