2 Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
4 Ben Kibbey <bjk@luxsci.net>
6 This file is part of pwmd.
8 Pwmd is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 2 of the License, or
11 (at your option) any later version.
13 Pwmd is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with Pwmd. If not, see <http://www.gnu.org/licenses/>.
24 #include <sys/types.h>
27 #include "pwmd-error.h"
30 #include <libxml/xmlerror.h>
43 #ifdef _POSIX2_LINE_MAX
44 #define LINE_MAX _POSIX2_LINE_MAX
53 #define _(msgid) gettext(msgid)
61 #define CLIENT_STATE_UNKNOWN 0
62 #define CLIENT_STATE_INIT 1
63 #define CLIENT_STATE_IDLE 2
64 #define CLIENT_STATE_COMMAND 3
65 #define CLIENT_STATE_DISCON 4
67 struct client_thread_s
71 pthread_mutex_t status_mutex
;
72 struct status_msg_s
*msg_queue
;
73 int status_msg_pipe
[2];
76 assuan_peercred_t peer
;
94 void *doc
; /* xmlDocPtr */
95 xmlErrorPtr xml_error
;
97 struct client_thread_s
*thd
;
98 struct crypto_s
*crypto
;
102 long lock_timeout
; /* In tenths of a second. */
104 char *last_error
; /* ELOOP element path. */
105 unsigned char *crc
; /* Of the data file. */
106 int no_access_param
; /* Treat no "access" config param as allowed. */
107 int client_state
; /* OPTION to receive client state msgs. */
109 int disco
; /* Rather than thread->state to avoid lock. */
113 pthread_key_t thread_name_key
;
114 pthread_mutex_t cn_mutex
;
115 struct slist_s
*cn_thread_list
;
117 void log_write (const char *fmt
, ...);
118 int assuan_log_cb (assuan_context_t ctx
, void *data
, unsigned cat
,
120 gpg_error_t
send_error (assuan_context_t ctx
, gpg_error_t e
);
121 void update_client_state (struct client_s
*client
, unsigned s
);
122 gpg_error_t
lock_flock (assuan_context_t ctx
, const char *filename
, int type
,
124 void unlock_flock (int *fd
);