Hello,
has someone an idea, why I get constantly an error 14? Sometimes (like every 100 UDP packets), there is no error and I can process the packet.
Regarding to another forum, the buffer might not be correct initialized, but I cant see why:
Code:
int ksocket_receive(struct socket* sock, struct sockaddr_in* addr, unsigned char* buf, int len) {
struct msghdr msg;
struct iovec iov;
mm_segment_t oldfs;
int size = 0;
if (sock->sk == NULL) return 0;
iov.iov_base = buf;
iov.iov_len = len;
msg.msg_flags = 0;
msg.msg_name = addr;
msg.msg_namelen = sizeof(struct sockaddr_in);
msg.msg_control = NULL;
msg.msg_controllen = 0;
msg.msg_iter.iov = &iov;
msg.msg_iter.count = len;
msg.msg_iter.type = ITER_IOVEC;
msg.msg_iter.nr_segs = 1;
msg.msg_control = NULL;
oldfs = get_fs();
set_fs(KERNEL_DS);
size = sock_recvmsg(sock, &msg, msg.msg_flags);
set_fs(oldfs);
return size;
}
int bufsize = 10;
unsigned char buf[bufsize + 1];
memset(&buf, 0, bufsize + 1);
size = ksocket_receive(kthread->sock, &kthread->addr, buf, bufsize);
can anyone point me in the right direction?