summaryrefslogtreecommitdiff
path: root/patches/collateral-evolutions/network/0054-struct-proto_ops-sig/ieee802154.patch
blob: 0497dbebad06a03f0c46e1504d66605ea6ef0a25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
--- a/net/ieee802154/socket.c
+++ b/net/ieee802154/socket.c
@@ -101,8 +101,19 @@ static int ieee802154_sock_sendmsg(struct socket *sock, struct msghdr *msg,
 {
 	struct sock *sk = sock->sk;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	return sk->sk_prot->sendmsg(sk, msg, len);
+#else
+	return sk->sk_prot->sendmsg(NULL, sk, msg, len);
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
 }
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+static int backport_ieee802154_sock_sendmsg(struct kiocb *iocb,
+					    struct socket *sock,
+					    struct msghdr *msg, size_t len){
+	return ieee802154_sock_sendmsg(sock, msg, len);
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) */
 
 static int ieee802154_sock_bind(struct socket *sock, struct sockaddr *uaddr,
 				int addr_len)
@@ -323,6 +334,12 @@ out_dev:
 out:
 	return err;
 }
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+static int backport_raw_sendmsg(struct kiocb *iocb, struct socket *sock,
+				struct msghdr *msg, size_t len){
+	return raw_sendmsg(sock, msg, len);
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) */
 
 static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 		       int noblock, int flags, int *addr_len)
@@ -356,6 +373,13 @@ out:
 		return err;
 	return copied;
 }
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+static int backport_raw_recvmsg(struct kiocb *iocb, struct socket *sock,
+				struct msghdr *msg, size_t len, int noblock,
+				int flags, int *addr_len){
+	return raw_recvmsg(sock, msg, len, noblock, flags, addr_len);
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) */
 
 static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
 {
@@ -409,8 +433,16 @@ static struct proto ieee802154_raw_prot = {
 	.obj_size	= sizeof(struct sock),
 	.close		= raw_close,
 	.bind		= raw_bind,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.sendmsg	= raw_sendmsg,
+#else
+	.sendmsg = backport_raw_sendmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.recvmsg	= raw_recvmsg,
+#else
+	.recvmsg = backport_raw_recvmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
 	.hash		= raw_hash,
 	.unhash		= raw_unhash,
 	.connect	= raw_connect,
@@ -434,7 +466,11 @@ static const struct proto_ops ieee802154_raw_ops = {
 	.shutdown	   = sock_no_shutdown,
 	.setsockopt	   = sock_common_setsockopt,
 	.getsockopt	   = sock_common_getsockopt,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.sendmsg	   = ieee802154_sock_sendmsg,
+#else
+	.sendmsg = backport_ieee802154_sock_sendmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
 	.recvmsg	   = sock_common_recvmsg,
 	.mmap		   = sock_no_mmap,
 	.sendpage	   = sock_no_sendpage,
@@ -710,6 +746,12 @@ out_dev:
 out:
 	return err;
 }
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+static int backport_dgram_sendmsg(struct kiocb *iocb, struct socket *sock,
+				  struct msghdr *msg, size_t len){
+	return dgram_sendmsg(sock, msg, len);
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) */
 
 static int dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
 			 int noblock, int flags, int *addr_len)
@@ -751,6 +793,13 @@ out:
 		return err;
 	return copied;
 }
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0)
+static int backport_dgram_recvmsg(struct kiocb *iocb, struct socket *sock,
+				  struct msghdr *msg, size_t len, int noblock,
+				  int flags, int *addr_len){
+	return dgram_recvmsg(sock, msg, len, noblock, flags, addr_len);
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) */
 
 static int dgram_rcv_skb(struct sock *sk, struct sk_buff *skb)
 {
@@ -947,8 +996,16 @@ static struct proto ieee802154_dgram_prot = {
 	.init		= dgram_init,
 	.close		= dgram_close,
 	.bind		= dgram_bind,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.sendmsg	= dgram_sendmsg,
+#else
+	.sendmsg = backport_dgram_sendmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.recvmsg	= dgram_recvmsg,
+#else
+	.recvmsg = backport_dgram_recvmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
 	.hash		= dgram_hash,
 	.unhash		= dgram_unhash,
 	.connect	= dgram_connect,
@@ -973,7 +1030,11 @@ static const struct proto_ops ieee802154_dgram_ops = {
 	.shutdown	   = sock_no_shutdown,
 	.setsockopt	   = sock_common_setsockopt,
 	.getsockopt	   = sock_common_getsockopt,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
 	.sendmsg	   = ieee802154_sock_sendmsg,
+#else
+	.sendmsg = backport_ieee802154_sock_sendmsg,
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
 	.recvmsg	   = sock_common_recvmsg,
 	.mmap		   = sock_no_mmap,
 	.sendpage	   = sock_no_sendpage,