anchor.diff:      buffer_id: NO_BUFFER
       out_port: ANY
       out_group: ANY
  -    flags: [ SEND_FLOW_REM, CHECK_OVERLAP ] // <3>
  +    flags: [ SEND_FLOW_REM, CHECK_OVERLAP ]   # Flags as array of strings
       match:
         - field: IN_PORT
           value: 1
  -      - field: IPV4_SRC   // <4>
  +      - field: IPV4_SRC     # Match field dependencies added automatically
           value: '192.168.1.1'
       instructions:
         - instruction: APPLY_ACTIONS
  
positive.code: 
  == What is Libofp?
  
  The *libofp* program translates binary https://www.opennetworking.org/sdn-resources/openflow[OpenFlow] messages to http://www.yaml.org/spec/1.2/spec.html[YAML] and back again. It provides a simple, uniform object syntax for working with the OpenFlow protocol programmatically.
  
  * Supports Linux and OS X
  * Supports OpenFlow versions 1.0, 1.1, 1.2, 1.3, 1.4
  * Supports YAML 1.2 and JSON
  * Optional JSON RPC Microservice supports:
  ** multiple incoming or outgoing connections
  ** auxiliary connections
  ** TLS and DTLS
  
  Libofp is a *tool* in the unix tradition. You can use `netcat` in a pipe to feed OpenFlow messages to a switch or controller:
  
  [source,console]
  ----
  $ libofp encode input.yml | nc -w 3 10.0.0.1 6653 | libofp decode
  ----
  
  You can parse a .pcap file with `tcpflow` and then decode all the OpenFlow 
  messages, while retaining metadata such as timestamps:
  
  [source,bash]
  
negative.code: [source,yaml]
  ----
    type: FLOW_MOD
    version: 1    # OpenFlow 1.0
    msg:
      cookie: 0
      cookie_mask: 0xFFFFFFFFFFFFFFFF   # Ignored; not present in OpenFlow 1.0
      table_id: 0    # Ignored; not present in OpenFlow 1.0
      command: ADD
      idle_timeout: 10
      hard_timeout: 30
  