The first fields of every OpenFlow message, no matter what the version, have the same shape. This is unlikely to change in subsequent OpenFlow versions because there needs to be some standard way to determine the version of each message. So we define that here.
val parse : Cstruct.t ‑> t
parse pkt
takes a message buffer and returns a OpenFlow_Header.t. The message buffer
can be a complete OpenFlow raw message yanked from the wire - not just the header.
val marshal : Cstruct.t ‑> t ‑> unit
marshal pkt hdr
fills a message buffer with the header fields of a OpenFlow_Header.t.
The message buffer can be a complete OpenFlow raw message, with the other stuff possibly filled in.
val to_string : t ‑> string
to_string hdr
gives a human-readable, printable rep of a OpenFlow_Header.t