Restore the initial invoking settings after SIGHUP.
[pwmd.git] / src / common.h
blob1be4856ae20ae28cf67d625f138773fdf553bce9
1 /*
2 Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
3 Ben Kibbey <bjk@luxsci.net>
5 This file is part of pwmd.
7 Pwmd is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 2 of the License, or
10 (at your option) any later version.
12 Pwmd is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with Pwmd. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef COMMON_H
21 #define COMMON_H
23 #include <sys/types.h>
24 #include <sys/stat.h>
25 #include <pthread.h>
26 #include "pwmd-error.h"
27 #include <gcrypt.h>
28 #include <assuan.h>
29 #include <stdint.h>
30 #include <libxml/xmlerror.h>
31 #include <pwd.h>
33 #ifdef ENABLE_NLS
34 #ifdef HAVE_LOCALE_H
35 #include <locale.h>
36 #endif
37 #endif
39 #ifdef HAVE_LIMITS_H
40 #include <limits.h>
41 #ifndef LINE_MAX
42 #ifdef _POSIX2_LINE_MAX
43 #define LINE_MAX _POSIX2_LINE_MAX
44 #else
45 #define LINE_MAX 2048
46 #endif
47 #endif
48 #endif
50 #ifndef _
51 #include "gettext.h"
52 #define _(msgid) gettext(msgid)
53 #endif
55 #ifdef WITH_GNUTLS
56 #include "tls.h"
57 #endif
58 #include "status.h"
59 #include "agent.h"
61 struct client_thread_s
63 pthread_t tid;
64 int fd;
65 pthread_mutex_t status_mutex;
66 struct status_msg_s *msg_queue;
67 int status_msg_pipe[2];
68 struct client_s *cl;
69 int atfork;
70 assuan_peercred_t peer;
71 #ifdef WITH_GNUTLS
72 int timeout;
73 int buffer_timeout;
74 int last_buffer_size;
75 int remote;
76 struct tls_s *tls;
77 #endif
80 struct client_s
82 assuan_context_t ctx;
83 void *doc; /* xmlDocPtr */
84 xmlErrorPtr xml_error;
85 char *filename;
86 unsigned char md5file[16];
87 struct client_thread_s *thd;
88 struct crypto_s *crypto;
89 uint32_t opts;
90 uint32_t flags;
91 char *import_root;
92 long lock_timeout; /* In tenths of a second. */
93 gpg_error_t last_rc;
94 char *last_error; /* ELOOP element path. */
95 unsigned char *crc; /* Of the data file. */
96 struct pinentry_option_s pinentry_opts;
99 pthread_key_t thread_name_key;
100 pthread_mutex_t cn_mutex;
101 struct slist_s *cn_thread_list;
102 char **debug_level;
104 int assuan_log_cb (assuan_context_t ctx, void *data, unsigned cat,
105 const char *msg);
106 void log_write (const char *fmt, ...);
107 gpg_error_t send_error (assuan_context_t ctx, gpg_error_t e);
108 gpg_error_t do_validate_peer (assuan_context_t ctx, const char *section,
109 assuan_peercred_t * peer);
110 gpg_error_t acl_check_common (struct client_s *client, const char *user,
111 uid_t uid, gid_t gid, int *allowed);
112 gpg_error_t peer_is_self(struct client_s *client);
114 #endif