anchor.diff: -= LIBOFP: OpenFlow to YAML Converter and Microservice image:https://travis-ci.org/byllyfish/libofp.svg?branch=develop["Build Status", link="https://travis-ci.org/byllyfish/libofp"]
  -:source-highlighter: pygments
  += LIBOFP: OpenFlow to YAML Converter image:https://travis-ci.org/byllyfish/libofp.svg?branch=develop["Build Status", link="https://travis-ci.org/byllyfish/libofp"]
  +:icons: font
   :toc:
  +ifdef::env-github[]
  +:toc-placement: preamble
  +endif::[]
   
   == What is Libofp?
   
  -The `libofp` program translates binary OpenFlow messages to YAML and back
  +The *libofp* program translates binary OpenFlow messages to YAML and back
   again. It provides a simple, uniform object syntax for directly working with the
   OpenFlow protocol programmatically.
   
   NOTE: Libofp also supports JSON natively; JSON is a valid subset of YAML 1.2.
   
  -For example, the following YAML input will produce an OpenFlow 1.3 message:
  +=== YAML to OpenFlow
  +
  +The following YAML input will produce an OpenFlow 1.3 message:
   
   [source,yaml]
   ----
  
positive.code: <3> YAML supports hexadecimal numbers.
  
  The YAML syntax is based on OpenFlow 1.4, but the same input
  can generate earlier protocol version messages. `libofp` is intelligent about
  translating between OpenFlows versions. For example,
  here's a FlowMod message specified using OpenFlow 1.4 syntax, but which will 
  output a "1.0" message because version 1 is explicitly specified.
  
negative.code: <3> Flags are specified using arrays of strings.
  <4> Match field dependencies are automatically added when necessary.
  
  === OpenFlow to YAML
  
  Given a binary OpenFlow message, `libofp` can translate it back to a human-readable
  YAML (or JSON) object. Here's the binary for an OpenFlow OFPT_ERROR message in hexadecimal:
  
  