/** This is an example for a minimal loopback configuration. * * All messages will be sent back to the origin using UDP packets. * * You can use this configuration in conjunction with the 'send', 'receive' and 'random' * utilities as shown below (run all three steps in parallel). * * 0. Overview: * * villas signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe * * 1. Start server: * * $ villas node etc/loopback.conf * * 2. Send random data to server: * * $ villas signal random -r 10 -v 4 | villas pipe etc/loopback.conf node1 * * 3. Receive data from server: * * $ villas pipe etc/loopback.conf node2 * * The syntax of this file is similar to JSON. * A detailed description of the format can be found here: * http://www.hyperrealm.com/libconfig/libconfig_manual.html#Configuration-Files * * @author Steffen Vogel * @copyright 2014-2020, Institute for Automation of Complex Power Systems, EONERC * @license GNU General Public License (version 3) * * VILLASnode * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . *********************************************************************************/ nodes = { node1 = { type = "socket" layer = "udp" in = { address = "127.0.0.1:12000" # Local ip:port, use '*' for random port } out = { address = "127.0.0.1:12001" netem = { enabled = false delay = 1000000 # In micro seconds! jitter = 300000 distribution = "normal" } } }, node2 = { type = "socket" layer = "udp" in = { address = "127.0.0.1:12001" # Local ip:port, use '*' for random port } out = { address = "127.0.0.1:12002" } }, node3 = { type = "socket" layer = "udp" in = { address = "127.0.0.1:12002" # Local ip:port, use '*' for random port } out = { address = "127.0.0.1:12000" } }, loopback = { type = "socket" layer = "udp" in = { address = "127.0.0.1:12003" # Local ip:port, use '*' for random port } out = { address = "127.0.0.1:12003" } } } paths = ( { in = "node1" # Name of the node we listen to (see above) out = "node2" # And we loop back to the origin hooks = ( { type = "print" } ) } )