# 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 stand-alone RAMCloud
# coord-node : run ONOS with RAMCloud coordinator
# server-node: run ONOS with RAMCloud server
# coord-and-server-node: run ONOS with RAMCloud coordinator and 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

# RAMCloud clusterName (ONOS-RC by default)
#ramcloud.clusterName = ONOS-RC

# RAMCloud transport timeout (1000 by ONOS default)
#ramcloud.timeout = 1000

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

# Listening address of RAMCloud coordinator (host.ip or 0.0.0.0 by default)
#ramcloud.coordinator.ip = 127.0.0.1

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

# RAMCloud coordinator option deadServerTimeout (1000 by ONOS default)
# Increase this value if server failing due to false positive failure detection.
#ramcloud.coordinator.deadServerTimeout = 1000

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

# Listening address of RAMCloud server (host.ip or 0.0.0.0 by default)
#ramcloud.server.ip = 127.0.0.1

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

# RAMCloud server option masterServiceThreads (5 by default)
#ramcloud.server.masterServiceThreads = 5

# RAMCloud server option logCleanerThreads (1 by default)
#ramcloud.server.logCleanerThreads = 1

# RAMCloud server option detectFailures [0=disabled] (1 by default)
# Note: Disable this option when running on low performing VM, etc.
#ramcloud.server.detectFailures = 1

# RAMCloud server option replicas (0 by default)
# This value must be the same cluster wide.
# On N node cluster, maximum value will be N-1 replicas.
# A replication factor 2 is probably reasonably safe, 3 is conservative.
#ramcloud.server.replicas = 0

# RAMCloud server option file (/var/tmp/ramclouddata/backup.`hostname`.log by default)
# Note: Cannot be placed int ONOS_HOME, if it is on VirtualBox sharedfolder.
#       File specified must be open()-able with O_DIRECT | O_SYNC options.
#ramcloud.server.file = /var/tmp/ramclouddata/backup.${ONOS_HOST_NAME}.log

# Port number of Hazelcast (5701 by default)
#hazelcast.host.port = 5701

# List of hostname/ip[:port] which forms Hazelcast grid
# If this value is empty, Hazelcast will be set to multicast mode.
# Inversely, if this value is set, multicast settings will be ignored.
hazelcast.tcp-ip.members = 127.0.0.1:5701
#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

