remove some leftover debug code
[project/netifd.git] / tunnel.c
1 #include "netifd.h"
2 #include "device.h"
3 #include "config.h"
4 #include "system.h"
5
6 struct tunnel {
7 struct device dev;
8 device_state_cb set_state;
9 struct blob_attr *config;
10 };
11
12 static int
13 tunnel_set_state(struct device *dev, bool up)
14 {
15 struct tunnel *tun = container_of(dev, struct tunnel, dev);
16 int ret;
17
18 if (up) {
19 ret = system_add_ip_tunnel(dev->ifname, tun->config);
20 if (ret != 0)
21 return ret;
22 }
23
24 ret = tun->set_state(dev, up);
25 if (ret || !up)
26 system_del_ip_tunnel(dev->ifname);
27
28 return ret;
29 }
30
31 static struct device *
32 tunnel_create(const char *name, struct blob_attr *attr)
33 {
34 struct tunnel *tun;
35 struct device *dev;
36
37 tun = calloc(1, sizeof(*tun));
38 dev = &tun->dev;
39 tun->config = config_memdup(attr);
40 device_init(dev, &tunnel_device_type, name);
41 tun->set_state = dev->set_state;
42 dev->set_state = tunnel_set_state;
43 device_set_present(dev, true);
44
45 return dev;
46 }
47
48 static void
49 tunnel_free(struct device *dev)
50 {
51 struct tunnel *tun = container_of(dev, struct tunnel, dev);
52
53 free(tun);
54 }
55
56 const struct device_type tunnel_device_type = {
57 .name = "IP tunnel",
58 .config_params = &tunnel_attr_list,
59
60 .create = tunnel_create,
61 .free = tunnel_free,
62 };
63
64