]> git.meshlink.io Git - meshlink/blob - test/blackbox/common/containers.h
Add meshlink_get_submesh API
[meshlink] / test / blackbox / common / containers.h
1 /*
2     containers.h -- Declarations for Container Management API
3     Copyright (C) 2018  Guus Sliepen <guus@meshlink.io>
4                         Manav Kumar Mehta <manavkumarm@yahoo.com>
5
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License along
17     with this program; if not, write to the Free Software Foundation, Inc.,
18     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21 #ifndef CONTAINERS_H
22 #define CONTAINERS_H
23
24 #include <lxc/lxccontainer.h>
25
26 #define DAEMON_ARGV_LEN 2000
27 #define CONTAINER_SHUTDOWN_TIMEOUT 5
28
29 #define DHCP_RANGE "172.16.0.2,172.16.255.254,12h"
30 #define PUB_INTERFACE "eth0"
31 #define PRIV_INTERFACE "eth1"
32 #define LISTEN_ADDRESS "172.16.0.1"
33 #define NET_MASK "255.255.255.0"
34 #define SUBNET_MASK "172.16.0.0/24"
35
36 #define FULLCONE_NAT 1
37 #define ADDRESS_RESTRICTED_NAT 2
38 #define PORT_RESTRICTED_NAT 3
39 #define SYMMERTIC_NAT 4
40
41 extern char *lxc_path;
42
43 extern struct lxc_container *find_container(const char *name);
44 extern void rename_container(const char *old_name, const char *new_name);
45 extern char *run_in_container(const char *cmd, const char *node, bool daemonize);
46 extern void container_wait_ip(int node);
47 extern void create_containers(const char *node_names[], int num_nodes);
48 extern void setup_containers(void **state);
49 extern void destroy_containers(void);
50 extern void restart_all_containers(void);
51 extern char *invite_in_container(const char *inviter, const char *invitee);
52 extern char *submesh_invite_in_container(const char *inviter, const char *invitee, const char *submesh);
53 extern void node_sim_in_container(const char *node, const char *device_class, const char *invite_url);
54 extern void node_sim_in_container_event(const char *node, const char *device_class,
55                                         const char *invite_url, const char *clientId, const char *import);
56 extern void node_step_in_container(const char *node, const char *sig);
57 extern void change_ip(int node);
58
59 extern char *get_container_ip(const char *node_name);
60 extern void install_in_container(const char *node, const char *app);
61 extern void unblock_node_ip(const char *node);
62 extern void block_node_ip(const char *node);
63 extern void accept_port_rule(const char *node, const char *chain, const char *protocol, int port);
64 extern void nat_create(const char *nat_name, const char *nat_bridge, int nat_type);
65 extern void container_switch_bridge(const char *container_name, char *lxc_conf_path, const char *current_bridge, const char *new_bridge);
66 extern void bridge_add(const char *bridge_name);
67 extern void bridge_delete(const char *bridge_name);
68 extern void bridge_add_interface(const char *bridge_name, const char *interface_name);
69
70 extern void nat_destroy(const char *nat_name);
71 extern char *run_in_container_ex(const char *cmd, struct lxc_container *container, bool daemonize);
72 extern char *execute_in_container(const char *cmd, const char *container_name, bool daemonize);
73 extern char *block_icmp(const char *container_name);
74 extern char *unblock_icmp(const char *container_name);
75 extern char *change_container_mtu(const char *container_name, const char *interface_name, int mtu);
76 extern char *flush_conntrack(const char *container_name);
77
78 extern char **get_container_interface_ips(const char *container_name, const char *interface_name);
79 extern void flush_nat_rules(const char *container_name, const char *chain);
80 extern void add_full_cone_nat_rules(const char *container_name, const char *pub_interface, const char *priv_interface_listen_address);
81 extern void add_port_rest_nat_rules(const char *container_name, const char *pub_interface);
82 extern char *container_wait_ip_ex(const char *container_name);
83
84 #endif // CONTAINERS_H