2 containers.h -- Declarations for Container Management API
3 Copyright (C) 2018 Guus Sliepen <guus@meshlink.io>
4 Manav Kumar Mehta <manavkumarm@yahoo.com>
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.
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.
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.
24 #include <lxc/lxccontainer.h>
26 #define DAEMON_ARGV_LEN 2000
27 #define CONTAINER_SHUTDOWN_TIMEOUT 5
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"
36 #define FULLCONE_NAT 1
37 #define ADDRESS_RESTRICTED_NAT 2
38 #define PORT_RESTRICTED_NAT 3
39 #define SYMMERTIC_NAT 4
41 extern char *lxc_path;
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);
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);
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);
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);
84 #endif // CONTAINERS_H