Server Wait On Clients System - Full Internal Documentation  v1.4.2
Server Wait On Clients System.
internal.h
Go to the documentation of this file.
1 
14 /* **********************************************************************
15  * *
16  * Changelog *
17  * *
18  * Date Author Version Description *
19  * *
20  * 19/11/2016 MG 1.0.0 First release. *
21  * 17/12/2016 MG 1.0.1 Re-distribute over libswoccommon and *
22  * libswocserver. *
23  * 13/02/2017 MG 1.0.2 Implement config file reload *
24  * functionality in daemon. *
25  * 22/04/2017 MG 1.0.3 Change to use new bstree struct. *
26  * 04/06/2017 MG 1.0.4 Use more meaningful name for client *
27  * lock bstree. *
28  * 07/06/2017 MG 1.0.5 Implement epoll controlled use of *
29  * multiple ports. *
30  * 14/09/2017 MG 1.0.6 Change 'force unlock' to just 'unlock'. *
31  * 29/10/2017 MG 1.0.7 Remove references to TLS. Security now *
32  * implemented from client side via SSH *
33  * tunnelling. *
34  * 17/11/2017 MG 1.0.8 Add Doxygen comments. *
35  * Add SPDX license tag. *
36  * 10/05/2018 MG 1.0.9 Add support for blocked clients list. *
37  * Add server client block and unblock. *
38  * Add server block and unblock. *
39  * 18/05/2018 MG 1.0.10 Add client show server block status. *
40  * 22/05/2018 MG 1.0.11 Change from swocserverd.h to internal.h *
41  * 05/08/2018 MG 1.0.12 Remove spurious include of sys/types.h *
42  * 25/08/2018 MG 1.0.13 Add prototype for swsd_reload_config. *
43  * 18/05/2019 MG 1.0.14 Merge sub-projects into one. *
44  * 08/11/2019 MG 1.0.15 Use standard GNU ifdeffery around use *
45  * of AC_HEADER_STDBOOL. *
46  * 14/03/2020 MG 1.0.16 Add support for id_req. *
47  * *
48  ************************************************************************
49  */
50 
51 #ifndef SWOCSERVERD_INTERNAL_H
52 #define SWOCSERVERD_INTERNAL_H
53 
54 #include <limits.h>
55 
56 /* Standard GNU AC_HEADER_STDBOOL ifdeffery. */
57 #ifdef HAVE_STDBOOL_H
58  #include <stdbool.h>
59 #else
60  #ifndef HAVE__BOOL
61  #ifdef __cplusplus /* clang-format off */
62  typedef bool _Bool; /* clang-format on */
63  #else
64  #define _Bool signed char
65  #endif
66  #endif
67  #define bool _Bool
68  #define false 0
69  #define true 1
70  #define __bool_true_false_are_defined 1
71 #endif
72 
73 #include <bstree.h>
74 #include <libswoccommon.h>
75 #include <mgemessage.h>
76 #include <portability.h>
77 
78 BEGIN_C_DECLS
79 
80 #define MAX_LISTEN_PORTS 10
81 #define MAX_EPOLL_EVENTS 64
86 struct comm_spec {
87  int portno;
88  int socketfd;
89 };
90 
91 extern int swsd_err;
92 extern char client[_POSIX_HOST_NAME_MAX];
93 extern int debug;
94 extern int end;
95 extern int cursockfd;
96 extern struct comm_spec *port_spec;
97 extern bool srv_blocked;
98 extern struct bstree *cli_locks, *cli_blocked, *port_sock;
99 
100 int swsd_validate_config(void);
101 
102 int prepare_sockets(void);
103 
104 int process_comms(void);
105 
106 int srv_end_req(struct mgemessage *msg, enum msg_arguments *msg_args);
107 
108 int srv_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
109 
110 int srv_cli_blocklist_req(struct mgemessage *msg, enum msg_arguments *msg_args);
111 
112 int srv_cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
113 
114 int srv_cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
115 
116 int srv_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
117 
118 int srv_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
119 
120 int srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
121 
122 int cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
123 
124 int cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
125 
126 int cli_srv_block_status_req(struct mgemessage *msg,
127  enum msg_arguments *msg_args);
128 
129 int srv_cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args);
130 
131 int cli_lock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
132 
133 int cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args);
134 
135 int srv_reload_req(struct mgemessage *msg, enum msg_arguments *msg_args);
136 
137 int swsd_reload_config(void);
138 
139 int cli_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
140 
141 int cli_reset_req(struct mgemessage *msg, enum msg_arguments *msg_args);
142 
143 void id_req(struct mgemessage *msg, enum msg_arguments *msg_args);
144 
145 char *swocserverd_get_pkg_version(void);
146 
147 char *swocserverd_get_src_version(void);
148 
150 
152 
153 END_C_DECLS
154 
155 #endif /* ndef SWOCSERVERD_INTERNAL_H */
156 
int srv_reload_req(struct mgemessage *msg, enum msg_arguments *msg_args)
swocserver request to reload config file.
Definition: request.c:148
int srv_cli_blocklist_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server client block list request.
Definition: request.c:272
int debug
Debug - 0 false, 1 true.
Definition: main.c:106
void swocserverd_print_pkg_version(void)
Print the package version string to stdout.
Definition: version.c:57
char * swocserverd_get_pkg_version(void)
Get the git-describe based package version.
Definition: version.c:40
int srv_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests removal of server level blocking.
Definition: request.c:500
struct comm_spec * port_spec
Port / socket config mappings.
Definition: main.c:109
int swsd_validate_config(void)
Parse and validate the config file.
Definition: validateconfig.c:62
struct bstree * port_sock
Port / socket actual mappings.
Definition: main.c:113
int srv_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests server level blocking.
Definition: request.c:472
void swocserverd_print_src_version(void)
Print the source version string to stdout.
Definition: version.c:66
int swsd_err
swoc daemon error number.
Definition: main.c:104
int cursockfd
Socket file descriptor in use.
Definition: main.c:108
msg_arguments
enum specifying error status of arguments.
Definition: libswoccommon.h:89
int portno
Port number.
Definition: internal.h:87
int srv_end_req(struct mgemessage *msg, enum msg_arguments *msg_args)
swocserver requesting the daemon to terminate.
Definition: request.c:112
int srv_cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests client to be blocked.
Definition: request.c:374
int swsd_reload_config(void)
Reload the config file.
Definition: request.c:176
int cli_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Status request from client.
Definition: request.c:766
int prepare_sockets(void)
Prepare all sockets.
Definition: comms.c:113
char * swocserverd_get_src_version(void)
Get the source version.
Definition: version.c:49
int srv_cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests client to be unblocked.
Definition: request.c:424
#define _Bool
Definition: internal.h:64
int srv_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server status request.
Definition: request.c:201
int end
End pending.
Definition: main.c:107
int socketfd
Socket file descriptor.
Definition: internal.h:88
int cli_srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client requests status of server level blocking.
Definition: request.c:657
Map sockets to ports.
Definition: internal.h:86
int cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client unblock further locks request.
Definition: request.c:610
int process_comms(void)
Wait and then process communications.
Definition: comms.c:210
int srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests status of server level blocking.
Definition: request.c:529
int cli_lock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client lock request.
Definition: request.c:670
bool srv_blocked
Server is blocked?
Definition: main.c:110
int srv_cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests client lock release.
Definition: request.c:327
int cli_reset_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Reset request from client.
Definition: request.c:825
char client[_POSIX_HOST_NAME_MAX]
Client name.
Definition: main.c:105
int cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client block further locks request.
Definition: request.c:559
struct bstree * cli_locks
Clients and locks.
Definition: main.c:111
Header file for Server Wait on Client common library.
int cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Release request from client.
Definition: request.c:723
struct bstree * cli_blocked
Blocked client list.
Definition: main.c:112
void id_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server or client submits id.
Definition: request.c:872