Add initial .mli

Refactored the footer types into a set of modules of the form:

  module Geometry: sig
    type t
    ...
  end

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Add a 'module Platform_code' (not currently part of the external interface)

This is only needed to interpret the parent locators,
of which only one type (Platform_code) is relevant in
modern types (MacX)

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Add a 'module Parent_locator' to the implementation

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Remove unused mutability in 'type vhd_header'

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Create a 'module Header' in the implementation.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Move dump_{header,footer} into {Header,Footer}.dump

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
We only understand one header version (0x00010000)

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
We only support one footer version(0x00010000)

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Rename Header.expected_header_version to Header.expected_version

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
We always expect the Footer cookie to say 'conectix'

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Move the CHS calculation into Geometry.of_sectors

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Add dependency on uuidm

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Regenerate OASIS

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Use Uuidm rather than custom UUID functions

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Add dependency on cstruct

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Regenerate OASIS

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Switch footer marshalling to cstruct

Signed-off-by: David Scott <dave.scott@eu.citrix.com>