aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/lockd/lockd.h43
-rw-r--r--include/linux/sunrpc/clnt.h48
2 files changed, 48 insertions, 43 deletions
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
index c325b187966b..e7a251a988c0 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -338,49 +338,6 @@ static inline int nlm_privileged_requester(const struct svc_rqst *rqstp)
338 } 338 }
339} 339}
340 340
341static inline int __nlm_cmp_addr4(const struct sockaddr *sap1,
342 const struct sockaddr *sap2)
343{
344 const struct sockaddr_in *sin1 = (const struct sockaddr_in *)sap1;
345 const struct sockaddr_in *sin2 = (const struct sockaddr_in *)sap2;
346 return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr;
347}
348
349#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
350static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
351 const struct sockaddr *sap2)
352{
353 const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1;
354 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
355 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
356}
357#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
358static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
359 const struct sockaddr *sap2)
360{
361 return 0;
362}
363#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
364
365/*
366 * Compare two host addresses
367 *
368 * Return TRUE if the addresses are the same; otherwise FALSE.
369 */
370static inline int nlm_cmp_addr(const struct sockaddr *sap1,
371 const struct sockaddr *sap2)
372{
373 if (sap1->sa_family == sap2->sa_family) {
374 switch (sap1->sa_family) {
375 case AF_INET:
376 return __nlm_cmp_addr4(sap1, sap2);
377 case AF_INET6:
378 return __nlm_cmp_addr6(sap1, sap2);
379 }
380 }
381 return 0;
382}
383
384/* 341/*
385 * Compare two NLM locks. 342 * Compare two NLM locks.
386 * When the second lock is of type F_UNLCK, this acts like a wildcard. 343 * When the second lock is of type F_UNLCK, this acts like a wildcard.
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index ab3f6e90caa5..b17df361be82 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -22,6 +22,7 @@
22#include <linux/sunrpc/timer.h> 22#include <linux/sunrpc/timer.h>
23#include <asm/signal.h> 23#include <asm/signal.h>
24#include <linux/path.h> 24#include <linux/path.h>
25#include <net/ipv6.h>
25 26
26struct rpc_inode; 27struct rpc_inode;
27 28
@@ -188,5 +189,52 @@ static inline void rpc_set_port(struct sockaddr *sap,
188#define IPV6_SCOPE_DELIMITER '%' 189#define IPV6_SCOPE_DELIMITER '%'
189#define IPV6_SCOPE_ID_LEN sizeof("%nnnnnnnnnn") 190#define IPV6_SCOPE_ID_LEN sizeof("%nnnnnnnnnn")
190 191
192static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1,
193 const struct sockaddr *sap2)
194{
195 const struct sockaddr_in *sin1 = (const struct sockaddr_in *)sap1;
196 const struct sockaddr_in *sin2 = (const struct sockaddr_in *)sap2;
197
198 return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr;
199}
200
201#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
202static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1,
203 const struct sockaddr *sap2)
204{
205 const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1;
206 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
207 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
208}
209#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
210static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1,
211 const struct sockaddr *sap2)
212{
213 return false;
214}
215#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
216
217/**
218 * rpc_cmp_addr - compare the address portion of two sockaddrs.
219 * @sap1: first sockaddr
220 * @sap2: second sockaddr
221 *
222 * Just compares the family and address portion. Ignores port, scope, etc.
223 * Returns true if the addrs are equal, false if they aren't.
224 */
225static inline bool rpc_cmp_addr(const struct sockaddr *sap1,
226 const struct sockaddr *sap2)
227{
228 if (sap1->sa_family == sap2->sa_family) {
229 switch (sap1->sa_family) {
230 case AF_INET:
231 return __rpc_cmp_addr4(sap1, sap2);
232 case AF_INET6:
233 return __rpc_cmp_addr6(sap1, sap2);
234 }
235 }
236 return false;
237}
238
191#endif /* __KERNEL__ */ 239#endif /* __KERNEL__ */
192#endif /* _LINUX_SUNRPC_CLNT_H */ 240#endif /* _LINUX_SUNRPC_CLNT_H */