/** 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: * * ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe * * 1. Start server: * * $ ./node etc/loopback.conf * * 2. Send random data to server: * * $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 * * 3. Receive data from server: * * $ ./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 2017, Institute for Automation of Complex Power Systems, EONERC *********************************************************************************/ stats = 1; debug = 10; nodes = { node1 = { type = "socket", layer = "udp", local = "*:12000", # Local ip:port, use '*' for random port remote = "127.0.0.1:12001", header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used netem = { enabled = false, delay = 1000000, # In micro seconds! jitter = 300000, distribution = "normal" } vectorize = 1 # Number of samples to fetch per iteration from the socket }, node2 = { type = "socket", layer = "udp", local = "*:12001", # Local ip:port, use '*' for random port remote = "127.0.0.1:12002", header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used vectorize = 1 # Number of samples to fetch per iteration from the socket } }; paths = ( { in = "node1", # Name of the node we listen to (see above) out = "node2", # And we loop back to the origin } );