33 #include <linux/ioport.h>
34 #include <linux/kobject.h>
35 #include <linux/klist.h>
36 #include <linux/list.h>
37 #include <linux/lockdep.h>
38 #include <linux/compiler.h>
39 #include <linux/types.h>
40 #include <linux/mutex.h>
42 #include <linux/atomic.h>
43 #include <linux/ratelimit.h>
44 #include <asm/device.h>
48 #include <linux/kernel.h>
49 #include <linux/kthread.h>
50 #include <linux/sched.h>
51 #include <linux/module.h>
52 #include <linux/errno.h>
53 #include <linux/fcntl.h>
54 #include <linux/net.h>
56 #include <linux/inet.h>
57 #include <linux/udp.h>
58 #include <linux/tcp.h>
59 #include <linux/string.h>
60 #include <linux/unistd.h>
61 #include <linux/slab.h>
62 #include <linux/netdevice.h>
63 #include <linux/skbuff.h>
64 #include <linux/file.h>
65 #include <linux/freezer.h>
67 #include <net/checksum.h>
71 #include <net/tcp_states.h>
72 #include <asm/uaccess.h>
73 #include <asm/ioctls.h>
74 #include <trace/events/skb.h>
76 #include <linux/module.h>
77 #include <linux/types.h>
78 #include <linux/uio.h>
79 #include <linux/unistd.h>
82 #include <linux/sunrpc/types.h>
83 #include <linux/sunrpc/clnt.h>
84 #include <linux/sunrpc/xdr.h>
85 #include <linux/sunrpc/msg_prot.h>
86 #include <linux/sunrpc/svcsock.h>
87 #include <linux/sunrpc/stats.h>
88 #include <linux/sunrpc/xprt.h>
90 #include <linux/sunrpc/xprt.h>
94 typedef int (*FPTR)(
void *args);
96 int virgocloudexec_create(
void);
97 int virgocloudexec_recvfrom(
struct socket*);
98 int virgocloudexec_sendto(
struct socket*);
100 int virgo_cloudexec_service(
void* args);
102 void do_virgocloudexec_init(
void);
104 extern int virgo_cloud_test_kernelspace(
void* args);
114 int use_as_kingcobra_service=1;
133 int (*virgo_create)(void);
134 int (*virgo_recvfrom)(
struct socket*);
135 int (*virgo_sendto)(
struct socket*);
139 .virgo_create = virgocloudexec_create,
140 .virgo_recvfrom = virgocloudexec_recvfrom,
141 .virgo_sendto = virgocloudexec_sendto,
145 const char* m_virgo_name;
146 struct module* m_virgo_owner;
151 .m_virgo_name =
"virgo",
152 .m_virgo_owner = THIS_MODULE,
153 .m_virgo_ops = &virgo_ops
156 struct task_struct *task;
157 int (*cloneFunction_ptr)(
void*);
160 char buffer[BUF_SIZE];
161 static struct socket *sock;
162 static struct sockaddr_in sin;
176 int parameterIsExecutable=2;
177 struct file* file_stdout;
179 void print_buffer(
char*);
180 int tokenize_list_of_ip_addrs(
char* buf);
181 void read_virgo_config();
182 int kernel_space_func(
void* args);
183 char* strip_control_M(
char*);
185 int virgo_client_thread(
void* args);