Linux 3.19: Use mgs_iter in struct msghdr
authorMarc Dionne <marc.dionne@your-file-system.com>
Mon, 5 Jan 2015 12:13:37 +0000 (07:13 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Thu, 8 Jan 2015 11:43:33 +0000 (06:43 -0500)
struct msghdr gets msg_iov replaced by msg_iter.  Add a configure
test and adjust the affected code.

Change-Id: I9b9e3987e55a10e48087b318d98a5a7bb17a4612
Reviewed-on: http://gerrit.openafs.org/11647
Reviewed-by: Daria Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

acinclude.m4
src/rx/LINUX/rx_knet.c

index 4b09e75..3d7aaab 100644 (file)
@@ -918,6 +918,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h])
                 AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h])
                 AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
+                AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h])
                 AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
                 AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
                 AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
index a58947b..ec1cd60 100644 (file)
@@ -225,8 +225,13 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *from, struct iovec *iov,
 
     memcpy(tmpvec, iov, iovcnt * sizeof(struct iovec));
     msg.msg_name = from;
+#if defined(STRUCT_MSGHDR_HAS_MSG_ITER)
+    msg.msg_iter.iov = tmpvec;
+    msg.msg_iter.nr_segs = iovcnt;
+#else
     msg.msg_iov = tmpvec;
     msg.msg_iovlen = iovcnt;
+#endif
     msg.msg_control = NULL;
     msg.msg_controllen = 0;
     msg.msg_flags = 0;