package cstruct

  1. Overview
  2. No Docs
access C structures via a camlp4 extension

Install

Dune Dependency

Authors

Maintainers

Sources

v1.9.0.tar.gz
sha256=2d175bf1e2cdc5ca43cb30bd3fa507beee2f18b2cbecae801ab6ffaecde16c9c
md5=59b512261058e1fe649d10d6ac268285

Description

Cstruct is a library and syntax extension to make it easier to access C-like structures directly from OCaml. It supports both reading and writing to these structures, and they are accessed via the Bigarray module.

An example pcap description using PPX extension points is:

[%%cstruct
type pcap_header = {
  magic_number: uint32_t;   (* magic number *)
  version_major: uint16_t;  (* major version number *)
  version_minor: uint16_t;  (* minor version number *)
  thiszone: uint32_t;       (* GMT to local correction *)
  sigfigs: uint32_t;        (* accuracy of timestamps *)
  snaplen: uint32_t;        (* max length of captured packets, in octets *)
  network: uint32_t;        (* data link type *)
} [@@little_endian]]

An example pcap description using Camlp4 is:

cstruct pcap_header {
  uint32_t magic_number;   (* magic number *)
  uint16_t version_major;  (* major version number *)
  uint16_t version_minor;  (* minor version number *)
  uint32_t thiszone;       (* GMT to local correction *)
  uint32_t sigfigs;        (* accuracy of timestamps *)
  uint32_t snaplen;        (* max length of captured packets, in octets *)
  uint32_t network         (* data link type *)
} as little_endian

Tags

org:mirage org:xapi-project

Published: 19 Feb 2016

Dev Dependencies (1)

  1. ounit with-test

  1. albatross < "1.3.0"
  2. angstrom < "0.7.0"
  3. arakoon >= "1.8.6" & < "1.8.12"
  4. asn1-combinators >= "0.1.2" & != "0.2.0-1" & < "0.2.6"
  5. awa-mirage < "0.0.2"
  6. balancer
  7. buffer-pool
  8. capnp-rpc-net >= "1.1" & < "1.2.1"
  9. channel
  10. charrua-client < "0.9"
  11. charrua-core < "0.8"
  12. charrua-unix < "0.3" | = "0.6"
  13. cohttp >= "0.9.7" & < "0.10.0"
  14. conduit >= "0.6.0" & < "0.15.2"
  15. conduit-async = "3.0.0"
  16. conduit-lwt = "3.0.0"
  17. conex < "0.10.0"
  18. conex-mirage-crypto
  19. conex-nocrypto
  20. cowabloga >= "0.0.5"
  21. crc
  22. crunch >= "2.0.0" & < "3.0.0"
  23. cstruct-lwt < "3.0.0"
  24. cstruct-unix < "3.0.0"
  25. datakit-ci >= "0.10.0" & < "0.12.4"
  26. datakit-client < "0.9.0"
  27. datakit-server < "0.9.0"
  28. depyt
  29. dns >= "0.15.0" & < "0.19.0"
  30. dream < "1.0.0~alpha2"
  31. duff < "0.3"
  32. eqaf >= "0.8"
  33. fat-filesystem >= "0.10.0" & < "0.11.0"
  34. frenetic < "2.0.0" | >= "3.2.0" & < "5.0.5"
  35. git >= "1.4.3" & < "1.6.0" | >= "2.0.0" & < "3.0.0"
  36. git-http < "1.11.0"
  37. git-mirage = "1.11.0"
  38. github-hooks >= "0.2.0"
  39. gluten-mirage < "0.3.0"
  40. gpt
  41. h2-mirage
  42. hacl-star >= "0.7.0"
  43. hex >= "0.2.0"
  44. hkdf < "1.0.3"
  45. httpun-mirage
  46. hvsock < "1.0.0"
  47. io-page < "2.0.0"
  48. io-page-unix < "2.0.0"
  49. io-page-xen < "2.0.0"
  50. ipaddr-cstruct < "5.2.0"
  51. irmin >= "0.9.0" & < "2.0.0"
  52. irmin-git >= "2.3.0"
  53. irmin-indexeddb >= "0.3"
  54. iso-filesystem
  55. key-parsers >= "0.5.0" & < "1.2.1"
  56. launchd
  57. letsencrypt = "0.2.5"
  58. letsencrypt-app < "0.4.0"
  59. macaddr-cstruct < "5.2.0"
  60. mbr-format < "1.0.0"
  61. metrics-mirage
  62. mirage >= "0.7.2" & < "0.9.1" | >= "0.10.0" & < "2.4.0"
  63. mirage-block < "1.0.0"
  64. mirage-block-ccm < "1.1.0"
  65. mirage-block-ramdisk
  66. mirage-block-solo5 < "0.6.2"
  67. mirage-block-unix < "2.8.3"
  68. mirage-block-xen < "2.1.1"
  69. mirage-btrees
  70. mirage-channel-lwt
  71. mirage-clock-unix < "1.0.0"
  72. mirage-clock-xen < "1.0.0"
  73. mirage-conduit = "2.3.1"
  74. mirage-console-lwt
  75. mirage-console-solo5 >= "0.2.0"
  76. mirage-console-unix < "2.3.2"
  77. mirage-console-xen = "4.0.0"
  78. mirage-console-xen-backend >= "2.3.2" & < "2.3.4" | = "4.0.0"
  79. mirage-console-xen-cli
  80. mirage-dns < "2.6.0"
  81. mirage-entropy < "0.5.0"
  82. mirage-entropy-unix
  83. mirage-entropy-xen
  84. mirage-flow < "1.2.0"
  85. mirage-flow-rawlink >= "1.1.0"
  86. mirage-fs >= "0.4.0" & < "1.0.0"
  87. mirage-fs-lwt
  88. mirage-fs-mem
  89. mirage-fs-unix < "1.4.1"
  90. mirage-kv-lwt
  91. mirage-nat < "2.2.4"
  92. mirage-net = "0.5.2"
  93. mirage-net-fd < "0.2.1"
  94. mirage-net-lwt
  95. mirage-net-macosx
  96. mirage-net-solo5
  97. mirage-net-unix != "2.4.1"
  98. mirage-net-xen < "1.7.0"
  99. mirage-profile < "0.8.0"
  100. mirage-protocols-lwt
  101. mirage-qubes < "0.8.0"
  102. mirage-qubes-ipv4 < "0.9.3"
  103. mirage-random < "2.0.0"
  104. mirage-random-stdlib
  105. mirage-random-test
  106. mirage-solo5
  107. mirage-stack-lwt < "1.1.0"
  108. mirage-tc
  109. mirage-tcpip-unix
  110. mirage-tcpip-xen
  111. mirage-types-lwt < "3.4.0"
  112. mirage-unix < "3.0.8"
  113. mirage-vnetif < "0.4.0"
  114. mirage-www < "0.4.0" | >= "1.1.0"
  115. mirage-xen < "2.0.0" | >= "2.3.2"
  116. monorobot
  117. mrt-format
  118. mstruct < "1.3.4"
  119. nbd >= "0.9.2" & < "4.0.3"
  120. nocrypto < "0.5.4"
  121. noise
  122. openflow
  123. otr < "0.3.9"
  124. ox < "1.1.1"
  125. packet
  126. pbkdf < "0.3.0" | = "1.1.0"
  127. pcap-format >= "0.3.3"
  128. pcf-format
  129. ppx_cstruct < "3.0.1"
  130. protocol-9p < "0.11.2"
  131. protocol-9p-tool = "0.12.0" | >= "2.0.0" & < "2.0.2"
  132. protocol-9p-unix < "0.11.2"
  133. qcow < "0.11.0"
  134. qcow-format
  135. qcow-tool
  136. randomconv < "0.2.0"
  137. rawlink < "0.6"
  138. resp-mirage = "0.10.0"
  139. rfc6287 >= "1.0.2" & < "1.0.4"
  140. salsa20 < "1.1.0"
  141. salsa20-core < "1.0.0"
  142. scrypt-kdf < "1.1.0"
  143. sendmail >= "0.4.1" & < "0.5.0"
  144. shared-block-ring < "2.3.0"
  145. shared-memory-ring < "2.0.0"
  146. slack
  147. ssh-agent
  148. tar < "2.0.0"
  149. tar-format >= "0.2.0"
  150. tar-mirage
  151. tar-unix < "2.0.0"
  152. tcpip < "3.0.0"
  153. tftp
  154. tls < "0.9.0"
  155. u2f = "0.1.1"
  156. vchan != "3.0.0" & < "6.0.1"
  157. vchan-unix >= "4.0.0"
  158. vchan-xen >= "4.0.0"
  159. vhd-format
  160. vhd-format-lwt
  161. vhd-tool
  162. vmnet
  163. websocket = "2.2"
  164. x509 < "0.6.3"
  165. xapi-rrd-transport
  166. xe
  167. xe-unikernel-upload
  168. xen-api-client >= "0.9.6"
  169. xen-block-driver >= "0.2.5"
  170. xen-gnt
  171. xenstore >= "1.2.0" & < "1.3.0"
  172. xentropyd

Conflicts

None

OCaml

Innovation. Community. Security.