# SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
# SPDX-License-Identifier: Apache-2.0

nodes = {
    udp_node = {					# The dictionary is indexed by the name of the node.
        type = "socket",			# For a list of available node-types run: 'villas-node -h'
        vectorize = 30,				# Receive and sent 30 samples per message (combining).
        samplelen = 10				# The maximum number of samples this node can receive

        builtin = false,			# By default, all nodes will have a few builtin hooks attached to them.
                                    # When collecting statistics or measurements these are undesired.

    ### The following settings are specific to the socket node-type!! ###

        layer	= "udp",			# Layer can be one of:
                            #   - udp	 Send / receive L4 UDP packets
                            #   - ip	  Send / receive L3 IP packets
                            #   - eth	 Send / receive L2 Ethernet frames (IEEE802.3)

        format	= "gtnet",			# For a list of available node-types run: 'villas-node -h'

        in = {
            address = "127.0.0.1:12001"	# This node only received messages on this IP:Port pair

            verify_source = true 		# Check if source address of incoming packets matches the remote address.
        },
        out = {
            address = "127.0.0.1:12000",	# This node sends outgoing messages to this IP:Port pair
        }
    }

    ethernet_node = {
        type	= "socket",			# See above.

    ### The following settings are specific to the socket node-type!! ###

        layer	= "eth",
        in = {
            address	= "12:34:56:78:90:AB%lo:12002"
        },
        out = {
            address = "12:34:56:78:90:AB%lo:12002"
        }
    },

    unix_domain_node = {
        type	= "socket",
        layer	= "unix",			# Datagram UNIX domain sockets require two endpoints

        in = {
            address = "/var/run/villas-node/node.sock"
        },
        out = {
            address	= "/var/run/villas-node/client.sock"
        }
    }

    udp_multicast_node = {					# The dictionary is indexed by the name of the node.
        type = "socket",			# For a list of available node-types run: 'villas-node -h'

    ### The following settings are specific to the socket node-type!! ###

        in = {
            address = "127.0.0.1:12001"	# This node only received messages on this IP:Port pair

            multicast = {			# IGMP multicast is only support for layer = (ip|udp)
                enabled	= true,

                group = "224.1.2.3",	# The multicast group. Must be within 224.0.0.0/4
                interface = "1.2.3.4",	# The IP address of the interface which should receive multicast packets.
                ttl = 128,		# The time to live for outgoing multicast packets.
                loop = false,		# Whether or not to loopback outgoing multicast packets to the local host.
            }
        },
        out = {
            address = "127.0.0.1:12000",	# This node sends outgoing messages to this IP:Port pair
        }
    }
}
