# This is the N1KV VEM configuration file.
# <n1kv.conf> file contains all the configuration parameters for VEM operation.
# Please find below a brief explanation of these parameters and their meaning.
# Optional Parameters and Default Values of parameters are explicitly stated.
# Note:
# a)Mandatory parameters are needed for proper VEM operation.
#   N1KV DP/DPA should start even if these are not specified.
#   But there will be functional impact. For eg: in VSM connectivity
# b)For any updates to parameters to take effect, you just need to execute
#   'vemcmd reread config'. Its the least-disruptive way for changes to
#   take effect. However for certain params, n1kv service need to be restarted.
#    These parameter are stated explicitly (restart_on_modify: YES).
#

#
#<vsm-connection-params>
#
# TAG: switch-domain
# Description:
# Optional: No
# Default: 1000
# restart_on_modify: No
switch-domain <%= @n1kv_vsm_domain_id %>

# TAG: l3control-ipaddr
# Description: IP Address of VSM Mgmt I/F
# Optional: No
# Default: 127.0.0.1
# restart_on_modify: No
l3control-ipaddr <%= @n1kv_vsm_ip %>

# TAG: l3control-ipv6addr
# Description: IPv6 Address of VSM Mgmt I/F
# Optional: No
# Default: ::1
# restart_on_modify: No
l3control-ipv6addr <%= @n1kv_vsm_ipv6 %>

# Set svs-mode to V6 if IPv6 address for VSM
# is set to something other than default ::1.
# This tells VEM to communicate with VSM on
# IPv6 instead of the default IPv4 option
<% if @n1kv_vsm_ipv6 != '::1' -%>
svs-mode V6
<% end -%>

# TAG: host-mgmt-intf
# Description: Management interface of the Host
# Optional: No (on N1KV, we need this
#               for Host Identification on VSM).
# Default: lo
# restart_on_modify: Yes
host-mgmt-intf <%= @host_mgmt_intf %>

#<Port-Profile Mapping>
# Description: Port-Profile mapping for all VEM managed Interfaces.
# Optional: Yes
# restart_on_modify: No
#
# Note: Do not specify Host Management Interface here.
# We do yet support System Ports (Ports which need to be up all time: Post Reboot/VEM Upgrade).
#
# Format for physical ports:
# phys <port-name> profile  <profile-name>
#phys eth1 profile sys-uplink
#phys eth2 profile uplink2

<% @uplink_profile.each do |port, profile| -%>
phys <%= port%> profile <%= profile%>
<% end -%>

# Format for non-vm virt ports. For instance: VTEP ports.
# virt <port-name> profile <profile-name> [mode static|dhcp] [address <ipaddr>]
#      [netmask <netmask ip>] [mac <macaddr>]
# [] -->indicates optional parameters.
#Eg:
#virt vtep3 profile profint mode dhcp
#virt vtep1 profile profint mode dhcp mac 00:11:22:33:44:55
#virt vtep2 profile profint mode static address 192.168.2.91 netmask 255.255.255.0
#virt vtep2 profile profint mode static address 192.168.2.91 netmask 255.255.255.0 mac 00:22:22:33:44:55

<% @vtep_config.each do |port, params| -%>
<% if params['ipmode'] == 'dhcp'  -%>
virt <%= port%> profile <%= params['profile']%> mode dhcp
<% else-%>
virt <%= port%> profile <%= params['profile']%> mode static address <%= params['ipaddress']%> netmask <%= params['netmask']%>
<% end -%>
<% end -%>

# TAG: uvem-ovs-brname
# Description: Default Open VSwitch Bridge Name
# Optional: YES.
# Default: n1kvdvs
# restart_on_modify: Yes
# Format:
# uvem-ovs-brname n1kvdvs
uvem-ovs-brname br-int

# TAG: portdb
# Description: PortDB (ovs|vem)
# Optional: YES.
# Default: ovs
# restart_on_modify: Yes
# Format:
# portdb vem
portdb <%= @portdb %>

# TAG: node-type
# Description: Type of Node: 'compute' (or) 'neutron'
# Optional: YES.
# Default: compute
# restart_on_modify: No
# Format:
# node-type compute
node-type <%= @node_type %>

# The below parameters are not commonly modified.
#
#
#<system-port-profile-Info>
# Description:  System Port Profiles.
# Optional: Yes (If there are no System Interfaces: Mgmt I/F etc)
# restart_on_modify: No
#
#Trunk Profile Format
#profile <name> trunk <vlan>
#profile <name> native-vlan <vlan>
#profile <name> mtu <mtu-size>
#
#Access Profile
#profile <name> access <vlan>
#profile <name> mtu <mtu-size>

# TAG: dp-np-threads
# Description: Number of datapath threads to process normal priority packets
# Optional: YES
# Default: 4
# restart_on_modify: Yes
# Format: dp-np-threads <1..32>

# TAG: dp-lp-threads
# Description: Number of datapath threads to process low priority packets
# Optional: YES
# Default: 1
# restart_on_modify: Yes
# Format: dp-lp-threads <1..32>

# TAG: dp-hp-threads
# Description: Number of datapath threads to process high priority packets
# Optional: YES
# Default: 1
# restart_on_modify: Yes
# Format: dp-hp-threads <1..32>

# TAG: dp-thread-sockets
# Description: Number of packet sockets each datapath thread creates
# Optional: YES
# Default: 1
# restart_on_modify: Yes
# Format: dp-thread-sockets <1..16>

# TAG: dp-thread-socket-rbuflen
# Description: Receive buffer length of each packet socket
# Optional: YES
# Default: 8 MBytes
# restart_on_modify: Yes
# Format: dp-thread-socket-rbuflen <0..255>
# Note: 0 - use system default

# TAG: dp-thread-socket-rrnglen
# Description: Rx-ring length of each packet socket
# Optional: YES
# Default: 4096
# restart_on_modify: Yes
# Format: dp-thread-socket-rrnglen <0..16384>
# Note: 0 - disables memory map I/O

# TAG: fastpath-flood
# Description: Enable flood of broadcast and unknown pkts in KLM
# Optional: YES
# Default: disable
# restart_on_modify: Yes
# Format: fastpath-flood <enable|disable>
fastpath-flood <%= @fastpath_flood %>
