xref: /linux/fs/smb/client/cifs_swn.h (revision 4f77c3462308c62ffe7129cc18b9ac937f44b5a5)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Witness Service client for CIFS
4  *
5  * Copyright (c) 2020 Samuel Cabrero <scabrero@suse.de>
6  */
7 
8 #ifndef _CIFS_SWN_H
9 #define _CIFS_SWN_H
10 #include "cifsglob.h"
11 
12 struct cifs_tcon;
13 struct sk_buff;
14 struct genl_info;
15 
16 #ifdef CONFIG_CIFS_SWN_UPCALL
17 extern int cifs_swn_register(struct cifs_tcon *tcon);
18 
19 extern int cifs_swn_unregister(struct cifs_tcon *tcon);
20 
21 extern int cifs_swn_notify(struct sk_buff *skb, struct genl_info *info);
22 
23 extern void cifs_swn_dump(struct seq_file *m);
24 
25 extern void cifs_swn_check(void);
26 
27 static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server)
28 {
29 	if (server->use_swn_dstaddr) {
30 		server->dstaddr = server->swn_dstaddr;
31 		return true;
32 	}
33 	return false;
34 }
35 
36 static inline void cifs_swn_reset_server_dstaddr(struct TCP_Server_Info *server)
37 {
38 	server->use_swn_dstaddr = false;
39 }
40 
41 #else
42 
43 static inline int cifs_swn_register(struct cifs_tcon *tcon) { return 0; }
44 static inline int cifs_swn_unregister(struct cifs_tcon *tcon) { return 0; }
45 static inline int cifs_swn_notify(struct sk_buff *s, struct genl_info *i) { return 0; }
46 static inline void cifs_swn_dump(struct seq_file *m) {}
47 static inline void cifs_swn_check(void) {}
48 static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server) { return false; }
49 static inline void cifs_swn_reset_server_dstaddr(struct TCP_Server_Info *server) {}
50 
51 #endif /* CONFIG_CIFS_SWN_UPCALL */
52 #endif /* _CIFS_SWN_H */
53