c063cfd22e52874494fbe72aeed14f5e2e7aa9a3
[fwknop.git] / common / common.h
1 /*
2  ******************************************************************************
3  *
4  * File:    common.h
5  *
6  * Author:  Damien Stuart
7  *
8  * Purpose: Common header file for fwknop client and server programs.
9  *
10  * Copyright 2010 Damien Stuart (dstuart@dstuart.org)
11  *
12  *  License (GNU Public License):
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
27  *  USA
28  *
29  ******************************************************************************
30 */
31 #ifndef _COMMON_H
32 #define _COMMON_H
33
34 /* Common includes for our other fwknop client and server source files.
35 */
36 #if HAVE_CONFIG_H
37   #include "config.h"
38 #endif
39
40 #include <stdio.h>
41
42 #if HAVE_SYS_TYPES_H
43   #include <sys/types.h>
44 #endif
45
46 #if HAVE_ERRNO_H
47   #include <errno.h>
48 #endif
49
50 #if STDC_HEADERS
51   #include <stdlib.h>
52   #include <string.h>
53 #elif HAVE_STRINGS_H
54   #include <strings.h>
55 #endif /* STDC_HEADERS*/
56
57 #if HAVE_UNISTD_H
58   #include <unistd.h>
59 #endif
60
61 #if HAVE_NETINET_IN_H
62   #include <netinet/in.h>
63 #endif
64
65 #if HAVE_CTYPE_H
66   #include <ctype.h>
67 #endif
68
69 #if HAVE_TIME_H
70   #include <time.h>
71 #endif
72
73 #ifdef WIN32
74   #define strcasecmp    _stricmp
75   #define strncasecmp   _strnicmp
76   #define snprintf              _snprintf
77   #define unlink                _unlink
78   #define PATH_SEP      '\\'
79 #else
80   #include <signal.h>
81   #define PATH_SEP      '/'
82 #endif
83
84 #include "fko.h"
85
86 /* Get our program version from VERSION (defined in config.h).
87 */
88 #define MY_VERSION VERSION
89
90 enum {
91     FKO_PROTO_UDP,
92     FKO_PROTO_TCP,
93     FKO_PROTO_TCP_RAW,
94     FKO_PROTO_ICMP,
95     FKO_PROTO_HTTP,
96 };
97
98 /* Other common defines
99 */
100 #define FKO_DEFAULT_PROTO   FKO_PROTO_UDP
101 #define FKO_DEFAULT_PORT    62201
102 #define DEFAULT_NAT_PORT    55000
103 #define MIN_HIGH_PORT       10000  /* sensible minimum for SPA dest port */
104 #define MAX_PORT            65535
105 #define MAX_PORT_STR_LEN    6
106 #define MAX_PROTO_STR_LEN   6
107 #define MAX_IPV4_STR_LEN    16
108 #define MIN_IPV4_STR_LEN    9
109 #define MAX_SERVER_STR_LEN  50
110
111 #define MAX_LINE_LEN        1024
112 #define MAX_PATH_LEN        1024
113 #define MAX_GPG_KEY_ID      128
114 #define MAX_USERNAME_LEN    30
115
116 /* Some convenience macros */
117
118 /* Characters allowed between a config parameter and its value.
119 */
120 #define IS_CONFIG_PARAM_DELIMITER(x) (x == ' ' || x == '\t' || x == '=');
121
122 /* End of line characters.
123 */
124 #define IS_LINE_END(x) (x == '\n' || x == '\r' || x == ';');
125
126 /* Characters in the first position of a line that make it considered
127  * empty or otherwise non-interesting (like a comment).
128 */
129 #define IS_EMPTY_LINE(x) ( \
130     x == '#' || x == '\n' || x == '\r' || x == ';' || x == '\0' \
131 )
132
133 #endif /* _COMMON_H */
134
135 /***EOF***/