# Name of this host (`hostname` by default)
#host.name = onosdev1

# IP address of this host used for ONOS communication
host.ip = 127.0.0.1

# Role of this host
# single-node: run ONOS with RAMCloud coordinator and server
# coord-node : run ONOS with RAMCloud coordinator
# server-node: run ONOS with RAMCloud server
host.role = single-node

# Back-end module to store topology/flows
host.backend = hazelcast
#host.backend = ramcloud

# List of host name/IPs that constitute ZooKeeper cluster (only current host by default)
# myid will be assigned incrementally according to order of list
#zookeeper.hosts = onosdev1,onosdev2,onosdev3,onosdev4

# Protocol used by RAMCloud coordinator (fast+udp by default)
#ramcloud.coordinator.protocol = fast+udp

# IP address of RAMCloud coordinator (host.ip by default)
#ramcloud.coordinator.ip = 127.0.0.1

# Port number of RAMCloud coordinator (12246 by default)
#ramcloud.coordinator.port = 12246

# Protocol used by RAMCloud server (fast+udp by default)
#ramcloud.server.protocol = fast+udp

# IP address of RAMCloud server (host.ip by default)
#ramcloud.server.ip = 127.0.0.1

# Port number of RAMCloud server (12242 by default)
#ramcloud.server.port = 12242

# List of hostname/ip[:port] which forms Hazelcast grid
# If this value is empty, Hazelcast will be set to muticast mode.
# Inversely, if this value is set, multicast settings will be ignored.
#hazelcast.tcp-ip.members = 192.168.56.11, 192.168.56.12, 192.168.56.13, 192.168.56.14

# Multicast address used by Hazelcast. (224.2.2.3 by default)
#hazelcast.multicast.group = 224.2.2.3

# Multicast port used by Hazelcast. (54327 by default)
#hazelcast.multicast.port = 54327

