File: versioning.h

package info (click to toggle)
syslog-ng 4.8.1-5%2Bdeb13u1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 20,452 kB
  • sloc: ansic: 177,631; python: 13,035; cpp: 11,611; makefile: 7,011; sh: 5,147; java: 3,651; xml: 3,344; yacc: 1,377; lex: 599; perl: 193; awk: 190; objc: 162
file content (224 lines) | stat: -rw-r--r-- 9,176 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
/*
 * Copyright (c) 2002-2016 Balabit
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * As an additional exemption you are allowed to compile & link against the
 * OpenSSL libraries as published by the OpenSSL project. See the file
 * COPYING for details.
 *
 */

#ifndef __VERSIONING_H__
#define __VERSIONING_H__

/* The aim of this header file is to make it easy to track version
 * identification in code when porting code from the PE tree to the OSE tree
 * or vice versa.  Error and warning messages should always use these macros
 * instead of inlining a concrete version number.  Runtime checks should
 * always use the get_version_value() function to convert OSE version codes
 * to PE ones.
 *
 ****************************************************************************
 * The code _should_ always use OSE version numbering, otherwise it'd break *
 * and confuse the user when code gets ported between trees.                *
 ****************************************************************************
 *
 * Versions in error messages
 * ==========================
 *
 * Whenever using an error message that needs to state a version number, it
 * should use one of the VERSION_X_Y macros, X_Y identifying the OSE version
 * number where the incompatible change was applied.
 *
 * Example:
 *
 *   msg_warning("WARNING: foo got changed to bar in " VERSION_3_4");
 *
 * Incompatible changes in non-OSE products
 * ========================================
 *
 * If you introduce an incompatible change in a private tree (but don't do
 * that), you should explicitly define a macro that identifies your version,
 * e.g.  if you have a product named foo, which is based on syslog-ng 3.3
 * and you decide to change the interpretation of a config syntax in your
 * 1.0 release, you should create a macro:
 *
 *    VERSION_FOO_1_0   "foo 1.0"
 *
 * This would be changed once the code gets integrated into syslog-ng, to
 * the "integrated-to" release.  That way, users that always used OSE gets
 * the version number properly.
 *
 * Rebasing to a tree that already has your incompatible change
 * ============================================================
 *
 * Assuming your change makes it to the OSE tree, the FOO specific version
 * references will be changed to OSE version macros, which could be a
 * problem for you when rebase your product, since your rebased product will
 * claim that the incompatible change happened _after_ it really happened.
 * The best solution is not to introduce incompatible changes or do that in
 * the OSE tree first.  If you have to something like this, make sure that
 * you take care about these at rebase time.
 *
 * Version number barrier
 * ======================
 *
 * For now there's an explicit barrier in version numbering between PE and
 * OSE, which is "4.0"; everything below "4.0" is an OSE version number,
 * everything ahead is a PE one.  This will change once there's sufficient
 * gap between the two (e.g.  PE 4.0 is long forgotten), in that case
 * OSE can also use version 4 and later.
 *
 * If there's another similar products built on syslog-ng (e.g. someone
 * other than BB creates such a product, the same scheme can be used by them
 * too).
 */

/* version references for major syslog-ng OSE versions. All error messages
 * should reference the syslog-ng version number through these macros, in order
 * to make it relatively simple to explain PE/OSE version numbers to users. */

#define PRODUCT_DOCUMENTATION "https://www.syslog-ng.com/technical-documents/list/syslog-ng-open-source-edition"
#define PRODUCT_CONTACT "\n\tGitHub Project: https://github.com/syslog-ng/syslog-ng\n\tChat with the Developers: https://gitter.im/syslog-ng/syslog-ng\n\tMailing List: https://lists.balabit.hu/mailman/listinfo/syslog-ng"

#define VERSION_3_0 "syslog-ng 3.0"
#define VERSION_3_1 "syslog-ng 3.1"
#define VERSION_3_2 "syslog-ng 3.2"
#define VERSION_3_3 "syslog-ng 3.3"
#define VERSION_3_4 "syslog-ng 3.4"
#define VERSION_3_5 "syslog-ng 3.5"
#define VERSION_3_6 "syslog-ng 3.6"
#define VERSION_3_7 "syslog-ng 3.7"
#define VERSION_3_8 "syslog-ng 3.8"
#define VERSION_3_9 "syslog-ng 3.9"
#define VERSION_3_10 "syslog-ng 3.10"
#define VERSION_3_11 "syslog-ng 3.11"
#define VERSION_3_12 "syslog-ng 3.12"
#define VERSION_3_13 "syslog-ng 3.13"
#define VERSION_3_14 "syslog-ng 3.14"
#define VERSION_3_15 "syslog-ng 3.15"
#define VERSION_3_16 "syslog-ng 3.16"
#define VERSION_3_17 "syslog-ng 3.17"
#define VERSION_3_18 "syslog-ng 3.18"
#define VERSION_3_19 "syslog-ng 3.19"
#define VERSION_3_20 "syslog-ng 3.20"
#define VERSION_3_21 "syslog-ng 3.21"
#define VERSION_3_22 "syslog-ng 3.22"
#define VERSION_3_23 "syslog-ng 3.23"
#define VERSION_3_24 "syslog-ng 3.24"
#define VERSION_3_25 "syslog-ng 3.25"
#define VERSION_3_26 "syslog-ng 3.26"
#define VERSION_3_27 "syslog-ng 3.27"
#define VERSION_3_28 "syslog-ng 3.28"
#define VERSION_3_29 "syslog-ng 3.29"
#define VERSION_3_30 "syslog-ng 3.30"
#define VERSION_3_31 "syslog-ng 3.31"
#define VERSION_3_32 "syslog-ng 3.32"
#define VERSION_3_33 "syslog-ng 3.33"
#define VERSION_3_34 "syslog-ng 3.34"
#define VERSION_3_35 "syslog-ng 3.35"
#define VERSION_3_36 "syslog-ng 3.36"
#define VERSION_3_37 "syslog-ng 3.37"
#define VERSION_3_38 "syslog-ng 3.38"

#define VERSION_4_0 "syslog-ng 4.0"
#define VERSION_4_1 "syslog-ng 4.1"
#define VERSION_4_2 "syslog-ng 4.2"
#define VERSION_4_3 "syslog-ng 4.3"
#define VERSION_4_4 "syslog-ng 4.4"
#define VERSION_4_5 "syslog-ng 4.5"
#define VERSION_4_6 "syslog-ng 4.6"
#define VERSION_4_7 "syslog-ng 4.7"
#define VERSION_4_8 "syslog-ng 4.8"

/* VERSION_VALUE_* references versions as integers to be compared against stuff like cfg->user_version */
/* VERSION_STR_* references versions as strings to be shown to the user */

#define VERSION_VALUE_3_0  0x0300
#define VERSION_VALUE_3_1  0x0301
#define VERSION_VALUE_3_2  0x0302
#define VERSION_VALUE_3_3  0x0303
#define VERSION_VALUE_3_4  0x0304
#define VERSION_VALUE_3_5  0x0305
#define VERSION_VALUE_3_6  0x0306
#define VERSION_VALUE_3_7  0x0307
#define VERSION_VALUE_3_8  0x0308
#define VERSION_VALUE_3_9  0x0309
#define VERSION_VALUE_3_10 0x030a
#define VERSION_VALUE_3_11 0x030b
#define VERSION_VALUE_3_12 0x030c
#define VERSION_VALUE_3_13 0x030d
#define VERSION_VALUE_3_14 0x030e
#define VERSION_VALUE_3_15 0x030f
#define VERSION_VALUE_3_16 0x0310
#define VERSION_VALUE_3_17 0x0311
#define VERSION_VALUE_3_18 0x0312
#define VERSION_VALUE_3_19 0x0313
#define VERSION_VALUE_3_20 0x0314
#define VERSION_VALUE_3_21 0x0315
#define VERSION_VALUE_3_22 0x0316
#define VERSION_VALUE_3_23 0x0317
#define VERSION_VALUE_3_24 0x0318
#define VERSION_VALUE_3_25 0x0319
#define VERSION_VALUE_3_26 0x031a
#define VERSION_VALUE_3_27 0x031b
#define VERSION_VALUE_3_28 0x031c
#define VERSION_VALUE_3_29 0x031d
#define VERSION_VALUE_3_30 0x031e
#define VERSION_VALUE_3_31 0x031f
#define VERSION_VALUE_3_32 0x0320
#define VERSION_VALUE_3_33 0x0321
#define VERSION_VALUE_3_34 0x0322
#define VERSION_VALUE_3_35 0x0323
#define VERSION_VALUE_3_36 0x0324
#define VERSION_VALUE_3_37 0x0325
#define VERSION_VALUE_3_38 0x0326
#define VERSION_VALUE_4_0 0x0400
#define VERSION_VALUE_4_1 0x0401
#define VERSION_VALUE_4_2 0x0402
#define VERSION_VALUE_4_3 0x0403
#define VERSION_VALUE_4_4 0x0404
#define VERSION_VALUE_4_5 0x0405
#define VERSION_VALUE_4_6 0x0406
#define VERSION_VALUE_4_7 0x0407
#define VERSION_VALUE_4_8 0x0408

/* config version code, in the same format as GlobalConfig->version */
#define VERSION_VALUE_CURRENT   VERSION_VALUE_4_8
#define VERSION_STR_CURRENT     "4.8"
#define VERSION_PRODUCT_CURRENT VERSION_4_8

/* this value points to the last syslog-ng version where we changed the
 * meaning of any setting in the configuration file.  Basically, it is the
 * highest value passed to any cfg_is_config_version_older() call.
 */
#define VERSION_VALUE_LAST_SEMANTIC_CHANGE  VERSION_VALUE_4_2
#define VERSION_STR_LAST_SEMANTIC_CHANGE    "4.2"

#define version_convert_from_user(v)  (v)

/* version based feature flips */
#define VERSION_VALUE_NEXT_MAJOR         VERSION_VALUE_4_0

/* we are already past 4.0 which introduced FEATURE_TYPING_MIN_VERSION, so
 * set min_version to an extremal value.  We should remove this macro if all
 * derived works introduce typing support.  Until that point we keep it
 * here, so the same codebase can execute with typing disabled. */
#define FEATURE_TYPING_MIN_VERSION       0
#define FEATURE_TYPING_VERSION           "syslog-ng 4.0"

#include "pe-versioning.h"
#endif