# 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

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

