From be288b60278c78eccfd347aacf4d3dd8771215a9 Mon Sep 17 00:00:00 2001
From: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Date: Tue, 12 Jan 2016 14:01:42 +0100
Subject: [PATCH] Port one/one_udp.c to Linux 4.1

Kernel commit c0371da6047a replaced msg_iov and msg_iovlen with msg_iter
in struct msghdr since 3.19

one/one_udp.c: In function 'ksocket_send_iov':
one/one_udp.c:186:9: error: 'struct msghdr' has no member named 'msg_iov'
one/one_udp.c:187:9: error: 'struct msghdr' has no member named 'msg_iovlen'

one/one_udp.c: In function 'ksocket_receive':
one/one_udp.c:221:9: error: 'struct msghdr' has no member named 'msg_iov'
one/one_udp.c:222:9: error: 'struct msghdr' has no member named 'msg_iovlen'

The iov_iter interface
https://lwn.net/Articles/625077/

Kernel commit d8725c86aeba dropped the len parameter in sock_sendmsg
since 4.1

one/one_udp.c: In function 'ksocket_send_iov':
one/one_udp.c:192:13: error: too many arguments to function 'sock_sendmsg'

Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>

Kernel commit 2da62906b1e29 dropped the size parameter in sock_recvmsg
since 4.7

In function 'ksocket_receive'
one/one_udp.c:235:13: error: too many arguments to function 'sock_recvmsg'

Signed-off-by: Matthew Shyu <matthew.shyu@amlogic.com>
---
 one/one_udp.c | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/one/one_udp.c b/one/one_udp.c
index 26b9e6a..9b59529 100644
--- a/one/one_udp.c
+++ b/one/one_udp.c
@@ -161,7 +161,7 @@ ksocket_send_iov( struct socket      *sock,
                   const struct iovec *iov,
                   size_t              iov_count )
 {
-     struct msghdr msg;
+     struct msghdr msg = { addr, sizeof *addr };
      mm_segment_t oldfs;
      int size = 0;
      size_t len = 0;
@@ -178,18 +178,20 @@ ksocket_send_iov( struct socket      *sock,
      for (i=0; i<iov_count; i++)
           len += iov[i].iov_len;
 
-     msg.msg_flags = 0;
-     msg.msg_name = addr;
-     msg.msg_namelen  = sizeof(struct sockaddr_in);
-     msg.msg_control = NULL;
-     msg.msg_controllen = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) // commit c0371da6047a
      msg.msg_iov = (struct iovec*) iov;
      msg.msg_iovlen = iov_count;
-     msg.msg_control = NULL;
+#else
+     iov_iter_init(&msg.msg_iter, WRITE, iov, iov_count, len);
+#endif
 
      oldfs = get_fs();
      set_fs(KERNEL_DS);
-     size = sock_sendmsg(sock,&msg,len);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) // commit d8725c86aeba
+     size = sock_sendmsg(sock, &msg, len);
+#else
+     size = sock_sendmsg(sock, &msg);
+#endif
      set_fs(oldfs);
 
      return size;
@@ -198,7 +200,7 @@ ksocket_send_iov( struct socket      *sock,
 static int
 ksocket_receive(struct socket* sock, struct sockaddr_in* addr, void *buf, int len)
 {
-     struct msghdr msg;
+     struct msghdr msg = { addr, sizeof *addr };
      struct iovec iov;
      mm_segment_t oldfs;
      int size = 0;
@@ -213,18 +215,20 @@ ksocket_receive(struct socket* sock, struct sockaddr_in* addr, void *buf, int le
      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;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) // commit c0371da6047a
      msg.msg_iov = &iov;
      msg.msg_iovlen = 1;
-     msg.msg_control = NULL;
+#else
+     iov_iter_init(&msg.msg_iter, READ, &iov, 1, len);
+#endif
 
      oldfs = get_fs();
      set_fs(KERNEL_DS);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) // commit 2da62906b1e29
      size = sock_recvmsg(sock,&msg,len,msg.msg_flags);
+#else
+     size = sock_recvmsg(sock, &msg,msg.msg_flags);
+#endif
      set_fs(oldfs);
 
      return size;
-- 
2.11.0

