vm_state = get_vm_ext_data(guest, "SOCKET_INTERFACE");
if (vm_state == NULL) {
- printk("ERROR: Could not locate vm socket state for extension SOCKET_INTERFACE\n");
+ ERROR("ERROR: Could not locate vm socket state for extension SOCKET_INTERFACE\n");
return NULL;
}
}
- sock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ sock = palacios_alloc(sizeof(struct palacios_socket));
+
+ if (!sock) {
+ ERROR("Cannot allocate TCP socket\n");
+ return NULL;
+ }
+
memset(sock, 0, sizeof(struct palacios_socket));
err = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &(sock->sock));
if (err < 0) {
- kfree(sock);
+ ERROR("Cannot create TCP socket\n");
+ palacios_free(sock);
return NULL;
}
vm_state = get_vm_ext_data(guest, "SOCKET_INTERFACE");
if (vm_state == NULL) {
- printk("ERROR: Could not locate vm socket state for extension SOCKET_INTERFACE\n");
+ ERROR("ERROR: Could not locate vm socket state for extension SOCKET_INTERFACE\n");
return NULL;
}
}
- sock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ sock = palacios_alloc(sizeof(struct palacios_socket));
+ if (!sock) {
+ ERROR("Cannot allocate UDP socket\n");
+ return NULL;
+ }
+
memset(sock, 0, sizeof(struct palacios_socket));
err = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &(sock->sock)) ;
if (err < 0){
- kfree(sock);
+ ERROR("Cannot create UDP socket\n");
+ palacios_free(sock);
return NULL;
}
sock->sock->ops->release(sock->sock);
list_del(&(sock->sock_node));
- kfree(sock);
+ palacios_free(sock);
}
}
vm_state = get_vm_ext_data(sock->guest, "SOCKET_INTERFACE");
if (vm_state == NULL) {
- printk("ERROR: Could not locate vm socket state for extension SOCKET_INTERFACE\n");
+ ERROR("Could not locate vm socket state for extension SOCKET_INTERFACE\n");
return NULL;
}
}
- newsock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ newsock = palacios_alloc(sizeof(struct palacios_socket));
+
+ if (!newsock) {
+ ERROR("Cannot allocate new socket on accept\n");
+ return NULL;
+ }
err = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &(newsock->sock));
if (err < 0) {
- kfree(newsock);
+ ERROR("Cannot create new socket on accept\n");
+ palacios_free(newsock);
return NULL;
}
err = newsock->sock->ops->accept(sock->sock, newsock->sock, 0);
if (err < 0){
- kfree(newsock);
+ ERROR("Cannot accept\n");
+ palacios_free(newsock);
return NULL;
}
msg.msg_namelen = 0;
msg.msg_control = NULL;
msg.msg_controllen = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
+#else
+ iov_iter_init(&(msg.msg_iter),WRITE,&iov,1,0);
+#endif
iov.iov_base = (char *)buf;
iov.iov_len = (size_t)len;
msg.msg_namelen = 0;
msg.msg_control = NULL;
msg.msg_controllen = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
+#else
+ iov_iter_init(&(msg.msg_iter),READ,&iov,1,0);
+#endif
iov.iov_base = (void *)&buf[0];
iov.iov_len = (size_t)len;
msg.msg_namelen = sizeof(struct sockaddr_in);
msg.msg_control = NULL;
msg.msg_controllen = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
+#else
+ iov_iter_init(&(msg.msg_iter),WRITE,&iov,1,0);
+#endif
iov.iov_base = (char *)buf;
iov.iov_len = (size_t)len;
{
struct palacios_socket * sock = (struct palacios_socket *)sock_ptr;
struct sockaddr_in src;
- int alen;
struct msghdr msg;
mm_segment_t oldfs;
struct iovec iov;
src.sin_family = AF_INET;
src.sin_port = htons(port);
src.sin_addr.s_addr = htonl(ip_addr);
- alen = sizeof(src);
msg.msg_flags = 0;
msg.msg_namelen = sizeof(struct sockaddr_in);
msg.msg_control = NULL;
msg.msg_controllen = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
+#else
+ iov_iter_init(&(msg.msg_iter),READ,&iov,1,0);
+#endif
iov.iov_base = (void *)&buf[0];
iov.iov_len = (size_t)len;
static int socket_deinit( void ) {
if (!list_empty(&(global_sockets))) {
- printk("Error removing module with open sockets\n");
+ ERROR("Error removing module with open sockets\n");
}
return 0;