SWOC System
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  * *
47  ************************************************************************
48  */
49 
50 #ifndef SWOCSERVERD_INTERNAL_H
51 #define SWOCSERVERD_INTERNAL_H
52 
53 #include <limits.h>
54 
55 /* Standard GNU AC_HEADER_STDBOOL ifdeffery. */
56 #ifdef HAVE_STDBOOL_H
57  #include <stdbool.h>
58 #else
59  #ifndef HAVE__BOOL
60  #ifdef __cplusplus /* clang-format off */
61  typedef bool _Bool; /* clang-format on */
62  #else
63  #define _Bool signed char
64  #endif
65  #endif
66  #define bool _Bool
67  #define false 0
68  #define true 1
69  #define __bool_true_false_are_defined 1
70 #endif
71 
72 #include <bstree.h>
73 #include <libswoccommon.h>
74 #include <mgemessage.h>
75 #include <portability.h>
76 
77 BEGIN_C_DECLS
78 
79 #define MAX_LISTEN_PORTS 10
80 #define MAX_EPOLL_EVENTS 64
85 struct comm_spec {
86  int portno;
87  int socketfd;
88 };
89 
90 extern int swsd_err;
91 extern char client[_POSIX_HOST_NAME_MAX];
92 extern int debug;
93 extern int end;
94 extern int cursockfd;
95 extern struct comm_spec *port_spec;
96 extern bool srv_blocked;
97 extern struct bstree *cli_locks, *cli_blocked, *port_sock;
98 
99 int swsd_validate_config(void);
100 
101 int prepare_sockets(void);
102 
103 int process_comms(void);
104 
105 int srv_end_req(struct mgemessage *msg, enum msg_arguments *msg_args);
106 
107 int srv_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
108 
109 int srv_cli_blocklist_req(struct mgemessage *msg, enum msg_arguments *msg_args);
110 
111 int srv_cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
112 
113 int srv_cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
114 
115 int srv_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
116 
117 int srv_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
118 
119 int srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
120 
121 int cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args);
122 
123 int cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
124 
125 int cli_srv_block_status_req(struct mgemessage *msg,
126  enum msg_arguments *msg_args);
127 
128 int srv_cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args);
129 
130 int cli_lock_req(struct mgemessage *msg, enum msg_arguments *msg_args);
131 
132 int cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args);
133 
134 int srv_reload_req(struct mgemessage *msg, enum msg_arguments *msg_args);
135 
136 int swsd_reload_config(void);
137 
138 int cli_status_req(struct mgemessage *msg, enum msg_arguments *msg_args);
139 
140 int cli_reset_req(struct mgemessage *msg, enum msg_arguments *msg_args);
141 
142 char *swocserverd_get_pkg_version(void);
143 
144 char *swocserverd_get_src_version(void);
145 
147 
149 
150 END_C_DECLS
151 
152 #endif /* ndef SWOCSERVERD_INTERNAL_H */
153 
int srv_reload_req(struct mgemessage *msg, enum msg_arguments *msg_args)
swocserver request to reload config file.
Definition: request.c:142
int srv_cli_blocklist_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server client block list request.
Definition: request.c:266
int debug
Debug - 0 false, 1 true.
Definition: main.c:105
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:494
struct comm_spec * port_spec
Port / socket config mappings.
Definition: main.c:108
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:112
int srv_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests server level blocking.
Definition: request.c:466
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:103
int cursockfd
Socket file descriptor in use.
Definition: main.c:107
msg_arguments
enum specifying error status of arguments.
Definition: libswoccommon.h:87
int portno
Port number.
Definition: internal.h:86
int srv_end_req(struct mgemessage *msg, enum msg_arguments *msg_args)
swocserver requesting the daemon to terminate.
Definition: request.c:106
int srv_cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests client to be blocked.
Definition: request.c:368
int swsd_reload_config(void)
Reload the config file.
Definition: request.c:170
int cli_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Status request from client.
Definition: request.c:760
int prepare_sockets(void)
Prepare all sockets.
Definition: comms.c:112
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:418
#define _Bool
Definition: internal.h:63
int srv_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server status request.
Definition: request.c:195
int end
End pending.
Definition: main.c:106
int socketfd
Socket file descriptor.
Definition: internal.h:87
int cli_srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client requests status of server level blocking.
Definition: request.c:651
Map sockets to ports.
Definition: internal.h:85
int cli_unblock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client unblock further locks request.
Definition: request.c:604
int process_comms(void)
Wait and then process communications.
Definition: comms.c:209
int srv_block_status_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests status of server level blocking.
Definition: request.c:523
int cli_lock_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client lock request.
Definition: request.c:664
bool srv_blocked
Server is blocked?
Definition: main.c:109
int srv_cli_rel_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Server requests client lock release.
Definition: request.c:321
int cli_reset_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Reset request from client.
Definition: request.c:819
char client[_POSIX_HOST_NAME_MAX]
Client name.
Definition: main.c:104
int cli_block_req(struct mgemessage *msg, enum msg_arguments *msg_args)
Client block further locks request.
Definition: request.c:553
struct bstree * cli_locks
Clients and locks.
Definition: main.c:110
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:717
struct bstree * cli_blocked
Blocked client list.
Definition: main.c:111