init/cleanup functions pflana
[ana-net.git] / src / core.c
blob0675cf3df50dbeac7262ca1135e1fa2ffa66a61b
1 /*
2 * Lightweight Autonomic Network Architecture
4 * Collector and loader for all core extensions (xt_*).
6 * Copyright 2011 Daniel Borkmann <dborkma@tik.ee.ethz.ch>,
7 * Swiss federal institute of technology (ETH Zurich)
8 * Subject to the GPL.
9 */
11 #include <linux/module.h>
12 #include <linux/kernel.h>
13 #include <linux/proc_fs.h>
14 #include <net/net_namespace.h>
16 #include "xt_fblock.h"
17 #include "xt_vlink.h"
18 #include "xt_builder.h"
19 #include "xt_user.h"
21 struct proc_dir_entry *lana_proc_dir;
22 EXPORT_SYMBOL(lana_proc_dir);
23 struct proc_dir_entry *fblock_proc_dir;
24 EXPORT_SYMBOL(fblock_proc_dir);
26 static int __init init_lana_core_module(void)
28 int ret;
30 printk(KERN_INFO "[lana] bootstrapping core ...\n");
31 lana_proc_dir = proc_mkdir("lana", init_net.proc_net);
32 if (!lana_proc_dir)
33 return -ENOMEM;
34 fblock_proc_dir = proc_mkdir("fblock", lana_proc_dir);
35 if (!fblock_proc_dir)
36 goto err;
37 ret = init_vlink_system();
38 if (ret)
39 goto err1;
40 ret = init_fblock_tables();
41 if (ret)
42 goto err2;
43 ret = init_fblock_builder();
44 if (ret)
45 goto err3;
46 ret = init_userctl_system();
47 if (ret)
48 goto err4;
49 printk(KERN_INFO "[lana] core up and running!\n");
50 return 0;
51 err4:
52 cleanup_fblock_builder();
53 err3:
54 cleanup_fblock_tables();
55 err2:
56 cleanup_vlink_system();
57 err1:
58 remove_proc_entry("fblock", lana_proc_dir);
59 err:
60 remove_proc_entry("lana", init_net.proc_net);
61 return -ENOMEM;
64 static void __exit cleanup_lana_core_module(void)
66 printk(KERN_INFO "[lana] halting core ...\n");
67 cleanup_userctl_system();
68 cleanup_fblock_tables();
69 cleanup_fblock_builder();
70 cleanup_vlink_system();
71 remove_proc_entry("fblock", lana_proc_dir);
72 remove_proc_entry("lana", init_net.proc_net);
73 printk(KERN_INFO "[lana] core shut down!\n");
76 module_init(init_lana_core_module);
77 module_exit(cleanup_lana_core_module);
79 MODULE_LICENSE("GPL");
80 MODULE_AUTHOR("Daniel Borkmann <dborkma@tik.ee.ethz.ch>");
81 MODULE_DESCRIPTION("LANA core driver");