sig
  type errorcode =
      UNDEFINED
    | FILE_NOT_FOUND
    | ACCESS_VIOLATION
    | DISK_FULL
    | ILLEGAL_OP
    | UNKNOWN_TID
    | FILE_EXISTS
    | UNKNOWN_USER
  val int_to_errorcode : int -> Wire.errorcode option
  val errorcode_to_int : Wire.errorcode -> int
  val errorcode_to_string : Wire.errorcode -> string
  val string_to_errorcode : string -> Wire.errorcode option
  type opcode = RRQ | WRQ | DATA | ACK | ERROR
  val int_to_opcode : int -> Wire.opcode option
  val opcode_to_int : Wire.opcode -> int
  val opcode_to_string : Wire.opcode -> string
  val string_to_opcode : string -> Wire.opcode option
  val sizeof_hreq : int
  val get_hreq_opcode : Cstruct.t -> Cstruct.uint16
  val set_hreq_opcode : Cstruct.t -> Cstruct.uint16 -> unit
  val hexdump_hreq_to_buffer : Buffer.t -> Cstruct.t -> unit
  val hexdump_hreq : Cstruct.t -> unit
  val sizeof_hdat : int
  val get_hdat_opcode : Cstruct.t -> Cstruct.uint16
  val set_hdat_opcode : Cstruct.t -> Cstruct.uint16 -> unit
  val get_hdat_blockno : Cstruct.t -> Cstruct.uint16
  val set_hdat_blockno : Cstruct.t -> Cstruct.uint16 -> unit
  val hexdump_hdat_to_buffer : Buffer.t -> Cstruct.t -> unit
  val hexdump_hdat : Cstruct.t -> unit
  val sizeof_herr : int
  val get_herr_opcode : Cstruct.t -> Cstruct.uint16
  val set_herr_opcode : Cstruct.t -> Cstruct.uint16 -> unit
  val get_herr_errorcode : Cstruct.t -> Cstruct.uint16
  val set_herr_errorcode : Cstruct.t -> Cstruct.uint16 -> unit
  val hexdump_herr_to_buffer : Buffer.t -> Cstruct.t -> unit
  val hexdump_herr : Cstruct.t -> unit
  val string0 : Cstruct.t -> string * Cstruct.t
end