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
12struct cifs_tcon;
13struct sk_buff;
14struct genl_info;
15
16#ifdef CONFIG_CIFS_SWN_UPCALL
17extern int cifs_swn_register(struct cifs_tcon *tcon);
18
19extern int cifs_swn_unregister(struct cifs_tcon *tcon);
20
21extern int cifs_swn_notify(struct sk_buff *skb, struct genl_info *info);
22
23extern void cifs_swn_dump(struct seq_file *m);
24
25extern void cifs_swn_check(void);
26
27static 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
36static inline void cifs_swn_reset_server_dstaddr(struct TCP_Server_Info *server)
37{
38	server->use_swn_dstaddr = false;
39}
40
41#else
42
43static inline int cifs_swn_register(struct cifs_tcon *tcon) { return 0; }
44static inline int cifs_swn_unregister(struct cifs_tcon *tcon) { return 0; }
45static inline int cifs_swn_notify(struct sk_buff *s, struct genl_info *i) { return 0; }
46static inline void cifs_swn_dump(struct seq_file *m) {}
47static inline void cifs_swn_check(void) {}
48static inline bool cifs_swn_set_server_dstaddr(struct TCP_Server_Info *server) { return false; }
49static 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