# NullLinkProvider topology description (config file).
#
# Dot-style topology graph. Each controller's topology begins with
#
#   graph <node ID>, followed by a list of links between braces.
#
# The links are either bidirectional (--) or directed (->). The directed
# edges are used to connect together Null devices of different controllers.
# The endpoint has the format:
# 
#   devID:port:NodeId
#
# The NodeId is only added if the destination is another node's device.
#
graph 192.168.56.20 {
    0:0 -- 1:0
    1:1 -> 0:0:192.168.56.30
    1:2 -- 2:0
    2:1 -> 1:0:192.168.56.30
}
graph 192.168.56.30 {
    0:0 -> 1:1:192.168.56.20
    0:1 -- 1:1
    1:0 -> 2:1:192.168.56.20
    1:2 -- 2:0
}
# Bugs: Comments cannot be appended to a line to be read.
