Merge branch 'master' of ssh://github.com/mrash/fwknop
[fwknop.git] / perl / legacy / fwknop / fwknop.h
1 /*
2 ********************************************************************************
3 *
4 *  File: fwknop.h
5 *
6 *  Author: Michael Rash (mbr@cipherdyne.org)
7 *
8 *  Purpose: fwknop.h include appropriate system header files, and defines file
9 *           paths, function prototypes, and constants that are needed by
10 *           the C versions of fwknop.
11 *
12 *  Version: 1.9.12
13 *
14 *  Copyright (C) 2004-2009 Michael Rash (mbr@cipherdyne.org)
15 *
16 *  License (GNU Public License):
17 *
18 *     This program is distributed in the hope that it will be useful,
19 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
20 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 *     GNU General Public License for more details.
22 *
23 *     You should have received a copy of the GNU General Public License
24 *     along with this program; if not, write to the Free Software
25 *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
26 *     USA
27 *
28 ********************************************************************************
29 *
30 *  $Id: fwknop.h 1533 2009-09-08 02:44:02Z mbr $
31 */
32
33 #ifndef __FWKNOP_H__
34 #define __FWKNOP_H__
35
36 /* INCLUDES *******************************************************************/
37 #include <stdio.h>
38 #include <stdlib.h>
39 #include <string.h>
40 #include <unistd.h>    /* read(), write(), and close() */
41 #include <fcntl.h>     /* open() */
42 #include <sys/stat.h>  /* umask */
43 #include <sys/wait.h>
44 #include <sys/types.h>
45 #include <signal.h>
46 #include <syslog.h>
47 #include <ctype.h>
48
49 /* DEFINES ********************************************************************/
50 #define FWKNOP_VERSION      "1.9.12"
51 #define MAX_LINE_BUF 1024
52 #define MAX_PID_SIZE 6
53 #define MAX_PATH_LEN 100
54 #define MAX_MSG_LEN 300 /* might have a long string of email addresses */
55 #define MAX_GEN_LEN 80
56 #define MAX_ARG_LEN 30
57 #define MAX_NUM_LEN 6
58
59 /* This structure defines data to send an email
60  *   - cmd: command to use (sendmail, mail)
61  *   - sender: sender of the email
62  *   - recipient: recipient of the email (can be a comma separated list)
63  *   - subject: subject of the email
64  */
65 typedef struct
66 {
67     char *cmd;
68     char *sender;
69     char *recipient;
70     char  subject[MAX_GEN_LEN];
71 } fwatch_email;
72
73 /* PROTOTYPES *****************************************************************/
74 void slogr(const char *, const char *);
75 void check_unique_pid(const char *, const char *);
76 void write_pid(const char *, pid_t);
77 void daemonize_process(const char *);
78 void send_alert_email(const char *shCmd, fwatch_email stEmail);
79 int has_sub_var(char *var_name, char *value, char *sub_var,
80     char *pre_str, char *post_str);
81 void expand_sub_var_value(char *value, const char *sub_var,
82     const char *pre_str, const char *post_str);
83 int find_char_var(char *, char *, char *);
84 void *safe_malloc(const unsigned int len);
85 void list_to_array(char *ptList, const char sep, char **array,
86     unsigned char max_arg);
87
88 /* From OpenBSD */
89 size_t strlcpy(char *, const char *, size_t);
90 size_t strlcat(char *, const char *, size_t);
91
92 #endif  /* __FWKNOP_H__ */