# 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

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

# 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

# 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

# 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

# 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)
#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
#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

