"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/cfg_parser.c" between
hitch-1.6.1.tar.gz and hitch-1.7.0.tar.gz

About: Hitch is a libev-based high performance SSL/TLS proxy that terminates TLS/SSL connections and forwards the unencrypted traffic to some backend.

cfg_parser.c  (hitch-1.6.1):cfg_parser.c  (hitch-1.7.0)
skipping to change at line 210 skipping to change at line 210
TOK_PEM_DIR = 320, TOK_PEM_DIR = 320,
TOK_PEM_DIR_GLOB = 321, TOK_PEM_DIR_GLOB = 321,
TOK_LOG_LEVEL = 322, TOK_LOG_LEVEL = 322,
TOK_PROXY_TLV = 323, TOK_PROXY_TLV = 323,
TOK_PROXY_AUTHORITY = 324, TOK_PROXY_AUTHORITY = 324,
TOK_TFO = 325, TOK_TFO = 325,
TOK_CLIENT_VERIFY = 326, TOK_CLIENT_VERIFY = 326,
TOK_VERIFY_NONE = 327, TOK_VERIFY_NONE = 327,
TOK_VERIFY_OPT = 328, TOK_VERIFY_OPT = 328,
TOK_VERIFY_REQ = 329, TOK_VERIFY_REQ = 329,
TOK_CLIENT_VERIFY_CA = 330 TOK_CLIENT_VERIFY_CA = 330,
TOK_PROXY_CCERT = 331
}; };
#endif #endif
/* Tokens. */ /* Tokens. */
#define INT 258 #define INT 258
#define UINT 259 #define UINT 259
#define BOOL 260 #define BOOL 260
#define STRING 261 #define STRING 261
#define TOK_CIPHERS 262 #define TOK_CIPHERS 262
#define TOK_SSL_ENGINE 263 #define TOK_SSL_ENGINE 263
#define TOK_PREFER_SERVER_CIPHERS 264 #define TOK_PREFER_SERVER_CIPHERS 264
skipping to change at line 287 skipping to change at line 288
#define TOK_PEM_DIR_GLOB 321 #define TOK_PEM_DIR_GLOB 321
#define TOK_LOG_LEVEL 322 #define TOK_LOG_LEVEL 322
#define TOK_PROXY_TLV 323 #define TOK_PROXY_TLV 323
#define TOK_PROXY_AUTHORITY 324 #define TOK_PROXY_AUTHORITY 324
#define TOK_TFO 325 #define TOK_TFO 325
#define TOK_CLIENT_VERIFY 326 #define TOK_CLIENT_VERIFY 326
#define TOK_VERIFY_NONE 327 #define TOK_VERIFY_NONE 327
#define TOK_VERIFY_OPT 328 #define TOK_VERIFY_OPT 328
#define TOK_VERIFY_REQ 329 #define TOK_VERIFY_REQ 329
#define TOK_CLIENT_VERIFY_CA 330 #define TOK_CLIENT_VERIFY_CA 330
#define TOK_PROXY_CCERT 331
/* Value type. */ /* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE union YYSTYPE
{ {
#line 36 "cfg_parser.y" /* yacc.c:352 */ #line 36 "cfg_parser.y" /* yacc.c:352 */
int i; int i;
char *s; char *s;
#line 303 "cfg_parser.c" /* yacc.c:352 */ #line 305 "cfg_parser.c" /* yacc.c:352 */
}; };
typedef union YYSTYPE YYSTYPE; typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
#endif #endif
extern YYSTYPE yylval; extern YYSTYPE yylval;
int yyparse (hitch_config *cfg); int yyparse (hitch_config *cfg);
skipping to change at line 539 skipping to change at line 541
YYSIZE_T yyi; \ YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \ for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \ (Dst)[yyi] = (Src)[yyi]; \
} \ } \
while (0) while (0)
# endif # endif
# endif # endif
#endif /* !YYCOPY_NEEDED */ #endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 150 #define YYFINAL 153
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 220 #define YYLAST 224
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 79 #define YYNTOKENS 80
/* YYNNTS -- Number of nonterminals. */ /* YYNNTS -- Number of nonterminals. */
#define YYNNTS 84 #define YYNNTS 85
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 165 #define YYNRULES 167
/* YYNSTATES -- Number of states. */ /* YYNSTATES -- Number of states. */
#define YYNSTATES 303 #define YYNSTATES 307
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
#define YYMAXUTOK 330 #define YYMAXUTOK 331
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, with out-of-bounds checking. */ as returned by yylex, with out-of-bounds checking. */
#define YYTRANSLATE(YYX) \ #define YYTRANSLATE(YYX) \
((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex. */ as returned by yylex. */
static const yytype_uint8 yytranslate[] = static const yytype_uint8 yytranslate[] =
{ {
0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 76, 2, 2, 2, 2, 2, 2, 2, 2, 2, 77, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 77, 2, 78, 2, 2, 2, 2, 2, 2, 2, 78, 2, 79, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75 75, 76
}; };
#if YYDEBUG #if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] = static const yytype_uint16 yyrline[] =
{ {
0, 69, 69, 73, 74, 78, 79, 80, 81, 82, 0, 69, 69, 73, 74, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
123, 124, 125, 129, 135, 135, 146, 148, 149, 153, 123, 124, 125, 126, 130, 136, 136, 147, 149, 150,
154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 168, 177, 179, 182, 183, 187, 188, 189, 164, 165, 166, 169, 178, 180, 183, 184, 188, 189,
190, 193, 195, 200, 207, 211, 224, 232, 239, 243, 190, 191, 194, 196, 201, 208, 212, 225, 233, 240,
247, 252, 266, 266, 281, 283, 288, 290, 295, 312, 244, 248, 253, 267, 267, 282, 284, 289, 291, 296,
329, 329, 341, 341, 343, 344, 345, 346, 347, 349, 313, 330, 330, 342, 342, 344, 345, 346, 347, 348,
353, 360, 364, 371, 373, 375, 377, 392, 407, 407, 350, 354, 361, 365, 372, 374, 376, 378, 393, 408,
417, 417, 419, 420, 421, 422, 423, 425, 427, 431, 408, 418, 418, 420, 421, 422, 423, 424, 426, 428,
438, 446, 452, 452, 471, 472, 473, 477, 483, 490, 432, 439, 447, 453, 453, 472, 473, 474, 478, 484,
497, 504, 506, 508, 512, 516, 518, 520, 522, 529, 491, 498, 505, 507, 509, 513, 517, 519, 521, 523,
537, 539, 541, 549, 551, 561, 574, 587, 600, 610, 525, 532, 540, 542, 544, 552, 554, 564, 577, 590,
614, 620, 623, 629, 635, 644 603, 613, 617, 623, 626, 632, 638, 647
}; };
#endif #endif
#if YYDEBUG || YYERROR_VERBOSE || 0 #if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] = static const char *const yytname[] =
{ {
"$end", "error", "$undefined", "INT", "UINT", "BOOL", "STRING", "$end", "error", "$undefined", "INT", "UINT", "BOOL", "STRING",
"TOK_CIPHERS", "TOK_SSL_ENGINE", "TOK_PREFER_SERVER_CIPHERS", "TOK_CIPHERS", "TOK_SSL_ENGINE", "TOK_PREFER_SERVER_CIPHERS",
skipping to change at line 649 skipping to change at line 651
"TOK_SNI_NOMATCH_ABORT", "TOK_SSL", "TOK_TLS", "TOK_HOST", "TOK_PORT", "TOK_SNI_NOMATCH_ABORT", "TOK_SSL", "TOK_TLS", "TOK_HOST", "TOK_PORT",
"TOK_MATCH_GLOBAL", "TOK_PB_CERT", "TOK_PB_OCSP_FILE", "TOK_OCSP_VERIFY", "TOK_MATCH_GLOBAL", "TOK_PB_CERT", "TOK_PB_OCSP_FILE", "TOK_OCSP_VERIFY",
"TOK_OCSP_DIR", "TOK_OCSP_RESP_TMO", "TOK_OCSP_CONN_TMO", "TOK_OCSP_DIR", "TOK_OCSP_RESP_TMO", "TOK_OCSP_CONN_TMO",
"TOK_ALPN_PROTOS", "TOK_TLS_PROTOS", "TOK_SSLv3", "TOK_TLSv1_0", "TOK_ALPN_PROTOS", "TOK_TLS_PROTOS", "TOK_SSLv3", "TOK_TLSv1_0",
"TOK_TLSv1_1", "TOK_TLSv1_2", "TOK_TLSv1_3", "TOK_CIPHERSUITES", "TOK_TLSv1_1", "TOK_TLSv1_2", "TOK_TLSv1_3", "TOK_CIPHERSUITES",
"TOK_ECDH_CURVE", "TOK_SESSION_CACHE", "TOK_SHARED_CACHE_LISTEN", "TOK_ECDH_CURVE", "TOK_SESSION_CACHE", "TOK_SHARED_CACHE_LISTEN",
"TOK_SHARED_CACHE_PEER", "TOK_SHARED_CACHE_IF", "TOK_PRIVATE_KEY", "TOK_SHARED_CACHE_PEER", "TOK_SHARED_CACHE_IF", "TOK_PRIVATE_KEY",
"TOK_BACKEND_REFRESH", "TOK_OCSP_REFRESH_INTERVAL", "TOK_PEM_DIR", "TOK_BACKEND_REFRESH", "TOK_OCSP_REFRESH_INTERVAL", "TOK_PEM_DIR",
"TOK_PEM_DIR_GLOB", "TOK_LOG_LEVEL", "TOK_PROXY_TLV", "TOK_PEM_DIR_GLOB", "TOK_LOG_LEVEL", "TOK_PROXY_TLV",
"TOK_PROXY_AUTHORITY", "TOK_TFO", "TOK_CLIENT_VERIFY", "TOK_VERIFY_NONE", "TOK_PROXY_AUTHORITY", "TOK_TFO", "TOK_CLIENT_VERIFY", "TOK_VERIFY_NONE",
"TOK_VERIFY_OPT", "TOK_VERIFY_REQ", "TOK_CLIENT_VERIFY_CA", "'='", "'{'", "TOK_VERIFY_OPT", "TOK_VERIFY_REQ", "TOK_CLIENT_VERIFY_CA",
"'}'", "$accept", "CFG", "CFG_RECORDS", "CFG_RECORD", "FRONTEND_REC", "TOK_PROXY_CCERT", "'='", "'{'", "'}'", "$accept", "CFG", "CFG_RECORDS",
"$@1", "FRONTEND_BLK", "FB_RECS", "FB_REC", "FB_HOST", "FB_PORT", "CFG_RECORD", "FRONTEND_REC", "$@1", "FRONTEND_BLK", "FB_RECS", "FB_REC",
"PEM_BLK", "PB_RECS", "PB_REC", "PB_CERT", "PB_OCSP_RESP_FILE", "FB_HOST", "FB_PORT", "PEM_BLK", "PB_RECS", "PB_REC", "PB_CERT",
"OCSP_VERIFY", "PRIVATE_KEY", "PEM_DIR", "PEM_DIR_GLOB", "OCSP_DIR", "PB_OCSP_RESP_FILE", "OCSP_VERIFY", "PRIVATE_KEY", "PEM_DIR",
"OCSP_RESP_TMO", "OCSP_CONN_TMO", "OCSP_REFRESH_INTERVAL", "FB_CERT", "PEM_DIR_GLOB", "OCSP_DIR", "OCSP_RESP_TMO", "OCSP_CONN_TMO",
"$@2", "FB_CLIENT_VERIFY", "FB_CLIENT_VERIFY_CA", "FB_MATCH_GLOBAL", "OCSP_REFRESH_INTERVAL", "FB_CERT", "$@2", "FB_CLIENT_VERIFY",
"FB_SNI_NOMATCH_ABORT", "FB_TLS", "FB_SSL", "FB_TLS_PROTOS", "$@3", "FB_CLIENT_VERIFY_CA", "FB_MATCH_GLOBAL", "FB_SNI_NOMATCH_ABORT",
"FB_TLS_PROTOS_LIST", "FB_TLS_PROTO", "FB_CIPHERS", "FB_CIPHERSUITES", "FB_TLS", "FB_SSL", "FB_TLS_PROTOS", "$@3", "FB_TLS_PROTOS_LIST",
"FB_PREF_SRV_CIPH", "QUIET_REC", "WORKERS_REC", "BACKLOG_REC", "FB_TLS_PROTO", "FB_CIPHERS", "FB_CIPHERSUITES", "FB_PREF_SRV_CIPH",
"KEEPALIVE_REC", "TLS_REC", "SSL_REC", "TLS_PROTOS_REC", "$@4", "QUIET_REC", "WORKERS_REC", "BACKLOG_REC", "KEEPALIVE_REC", "TLS_REC",
"TLS_PROTOS_LIST", "TLS_PROTO", "SSL_ENGINE_REC", "SSL_REC", "TLS_PROTOS_REC", "$@4", "TLS_PROTOS_LIST", "TLS_PROTO",
"PREFER_SERVER_CIPHERS_REC", "CHROOT_REC", "BACKEND_REC", "PEM_FILE_REC", "SSL_ENGINE_REC", "PREFER_SERVER_CIPHERS_REC", "CHROOT_REC",
"$@5", "SYSLOG_REC", "DAEMON_REC", "SNI_NOMATCH_ABORT_REC", "BACKEND_REC", "PEM_FILE_REC", "$@5", "SYSLOG_REC", "DAEMON_REC",
"CIPHERS_REC", "CIPHERSUITES_REC", "USER_REC", "GROUP_REC", "SNI_NOMATCH_ABORT_REC", "CIPHERS_REC", "CIPHERSUITES_REC", "USER_REC",
"WRITE_IP_REC", "WRITE_PROXY_REC", "WRITE_PROXY_V1_REC", "GROUP_REC", "WRITE_IP_REC", "WRITE_PROXY_REC", "WRITE_PROXY_V1_REC",
"WRITE_PROXY_V2_REC", "PROXY_TLV_REC", "PROXY_PROXY_REC", "WRITE_PROXY_V2_REC", "PROXY_TLV_REC", "PROXY_CCRT_REC",
"ALPN_PROTOS_REC", "SYSLOG_FACILITY_REC", "SEND_BUFSIZE_REC", "PROXY_PROXY_REC", "ALPN_PROTOS_REC", "SYSLOG_FACILITY_REC",
"RECV_BUFSIZE_REC", "LOG_FILENAME_REC", "LOG_LEVEL_REC", "SEND_BUFSIZE_REC", "RECV_BUFSIZE_REC", "LOG_FILENAME_REC",
"SESSION_CACHE_REC", "SHARED_CACHE_LISTEN_REC", "SHARED_CACHE_PEER_REC", "LOG_LEVEL_REC", "SESSION_CACHE_REC", "SHARED_CACHE_LISTEN_REC",
"SHARED_CACHE_IF_REC", "TFO", "BACKEND_REFRESH_REC", "ECDH_CURVE_REC", "SHARED_CACHE_PEER_REC", "SHARED_CACHE_IF_REC", "TFO",
"CLIENT_VERIFY_REC", "CLIENT_VERIFY_OPT", "CLIENT_VERIFY_CA_REC", YY_NULLPTR "BACKEND_REFRESH_REC", "ECDH_CURVE_REC", "CLIENT_VERIFY_REC",
"CLIENT_VERIFY_OPT", "CLIENT_VERIFY_CA_REC", YY_NULLPTR
}; };
#endif #endif
# ifdef YYPRINT # ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the /* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */ (internal) symbol number NUM (which must be that of a token). */
static const yytype_uint16 yytoknum[] = static const yytype_uint16 yytoknum[] =
{ {
0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 61, 123, 125 325, 326, 327, 328, 329, 330, 331, 61, 123, 125
}; };
# endif # endif
#define YYPACT_NINF -81 #define YYPACT_NINF -82
#define yypact_value_is_default(Yystate) \ #define yypact_value_is_default(Yystate) \
(!!((Yystate) == (-81))) (!!((Yystate) == (-82)))
#define YYTABLE_NINF -1 #define YYTABLE_NINF -1
#define yytable_value_is_error(Yytable_value) \ #define yytable_value_is_error(Yytable_value) \
0 0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
static const yytype_int16 yypact[] = static const yytype_int16 yypact[] =
{ {
-1, -72, -71, -56, -48, -47, -26, -25, -23, -15, 0, -56, -48, -47, -26, -25, -23, -15, 1, 8,
0, 10, 12, 13, 14, 15, 16, 17, 18, 20, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
21, 22, 23, 24, 25, 26, 28, 35, 36, 37, 19, 21, 22, 23, 24, 25, 26, 27, 28, 36,
38, 39, 40, -81, 41, 43, 44, 45, 46, 47, 37, 38, 39, -82, 40, 41, 42, 44, 45, 46,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57,
87, -1, -81, -81, -81, -81, -81, -81, -81, -81, 58, 106, 0, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, 97, 129, 131, 132, -6, 133, 136, 137, 138, -82, -82, -82, 130, 131, 133, 134, -6, 135, 138,
139, 140, 142, 143, 144, 146, 147, 148, 149, 150, 139, 140, 141, 142, 144, 145, 146, 148, 149, 150,
-5, 151, 145, 153, 152, 154, 155, 156, 157, 158, 151, 152, -5, 153, 147, 155, 154, 156, 157, 158,
159, 161, 160, 66, 162, 163, 166, 165, 167, 168, 159, 160, 161, 163, 162, 67, 164, 165, 168, 167,
171, 172, 173, 174, 177, 178, 179, 180, 11, 176, 169, 170, 173, 174, 175, 176, 179, 180, 181, 182,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -68, 178, 183, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -12, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -11,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, 68, -10, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -12, -81, 91, 96, 101, 102, 110, 70, -9, -82, -82, -82, -82, -82, -11, -82, 92,
111, 112, 113, 114, -81, 115, 116, 117, 118, 68, 97, 102, 103, 112, 113, 114, 115, 116, -82, 117,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, 118, 119, 120, 70, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, 119, 121, 122, 123, -10, -81, -82, -82, -82, -82, -82, -82, -82, -82, 121, 123,
-81, -81, -81, -81, -81, 188, 194, -4, 195, 197, 124, 125, -9, -82, -82, -82, -82, -82, -82, 191,
198, 199, 200, 202, 128, 203, 11, 204, -81, -81, 197, -4, 198, 200, 201, 202, 203, 205, 136, 206,
205, 206, 207, -81, -81, -81, -81, -81, -81, -81, -68, 208, -82, -82, 209, 210, 211, -82, -82, -82,
-81, -81, -81, -81, -81, 27, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, 29,
-81, -81, -10, -81, -81, -81, -81, -81, 27, -81, -82, -82, -82, -82, -82, -82, -9, -82, -82, -82,
130, -81, -81 -82, -82, 29, -82, 128, -82, -82
}; };
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */ means the default is an error. */
static const yytype_uint8 yydefact[] = static const yytype_uint8 yydefact[] =
{ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 3, 5, 33, 38, 39, 37, 34, 35, 0, 0, 2, 3, 5, 34, 39, 40, 38, 35,
36, 21, 15, 16, 17, 10, 11, 12, 14, 13, 36, 37, 21, 15, 16, 17, 10, 11, 12, 14,
18, 6, 7, 22, 24, 32, 8, 9, 19, 20, 13, 18, 6, 7, 22, 24, 33, 8, 9, 19,
25, 26, 27, 28, 31, 29, 30, 23, 46, 47, 20, 25, 26, 27, 28, 31, 32, 29, 30, 23,
44, 45, 40, 41, 42, 43, 49, 48, 50, 51, 47, 48, 45, 46, 41, 42, 43, 44, 50, 49,
52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 4, 137, 127, 128, 130, 53, 54, 113, 114, 0, 0, 0, 1, 4, 138, 128, 129, 131, 54,
115, 129, 139, 140, 112, 134, 149, 135, 141, 142, 55, 114, 115, 116, 130, 140, 141, 113, 135, 151,
143, 144, 131, 132, 147, 151, 150, 152, 136, 117, 136, 142, 143, 144, 145, 132, 133, 149, 153, 152,
116, 83, 87, 88, 89, 148, 0, 138, 160, 154, 154, 137, 118, 117, 84, 88, 89, 90, 150, 0,
155, 156, 157, 159, 90, 85, 86, 153, 145, 146, 139, 162, 156, 157, 158, 159, 161, 91, 86, 87,
158, 162, 163, 164, 161, 165, 0, 0, 122, 123, 155, 146, 147, 160, 164, 165, 166, 163, 167, 148,
124, 125, 126, 119, 120, 0, 0, 0, 0, 0, 0, 0, 123, 124, 125, 126, 127, 120, 121, 0,
0, 0, 0, 0, 100, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0,
57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 57, 58, 60, 61, 62, 63, 64,
68, 69, 70, 71, 0, 0, 0, 0, 74, 75, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0,
77, 78, 79, 80, 121, 0, 0, 0, 0, 0, 0, 0, 75, 76, 78, 79, 80, 81, 122, 0,
0, 0, 0, 0, 0, 0, 0, 0, 55, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 133, 76, 109, 111, 91, 92, 97, 0, 0, 56, 59, 0, 0, 0, 134, 77, 110,
99, 98, 72, 73, 96, 0, 110, 94, 95, 81, 112, 92, 93, 98, 100, 99, 73, 74, 97, 0,
82, 84, 0, 104, 105, 106, 107, 108, 101, 102, 111, 95, 96, 82, 83, 85, 0, 105, 106, 107,
0, 103, 93 108, 109, 102, 103, 0, 104, 94
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] = static const yytype_int16 yypgoto[] =
{ {
-81, -81, -81, 164, -81, -81, -81, -81, -13, -81, -82, -82, -82, 166, -82, -82, -82, -82, -22, -82,
-81, -78, -81, -31, -81, -81, 3, -81, -81, -81, -82, -77, -82, -32, -82, -82, 3, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -80, -81, -81, -81, -81, -82, -82, -82, -82, -82, -81, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, 6, -81, -82, -82, -82, -82, -82, -82, -82, -82, 5, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-81, -81, -46, -81 -82, -82, -82, -46, -82
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] = static const yytype_int16 yydefgoto[] =
{ {
-1, 50, 51, 52, 53, 206, 228, 229, 230, 231, -1, 51, 52, 53, 54, 210, 232, 233, 234, 235,
232, 247, 248, 249, 250, 251, 252, 253, 55, 56, 236, 251, 252, 253, 254, 255, 256, 257, 56, 57,
57, 58, 59, 60, 233, 292, 234, 235, 236, 237, 58, 59, 60, 61, 237, 296, 238, 239, 240, 241,
238, 239, 240, 264, 298, 299, 241, 242, 243, 61, 242, 243, 244, 268, 302, 303, 245, 246, 247, 62,
62, 63, 64, 65, 66, 67, 133, 213, 214, 68, 63, 64, 65, 66, 67, 68, 135, 217, 218, 69,
69, 70, 71, 72, 207, 73, 74, 75, 76, 77, 70, 71, 72, 73, 211, 74, 75, 76, 77, 78,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
98, 99, 204, 100 99, 100, 101, 207, 102
}; };
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule whose positive, shift that token. If negative, reduce the rule whose
number is the opposite. If YYTABLE_NINF, syntax error. */ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint16 yytable[] = static const yytype_uint16 yytable[] =
{ {
156, 172, 277, 54, 101, 102, 1, 2, 3, 4, 159, 175, 281, 55, 204, 205, 206, 1, 2, 3,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
103, 15, 16, 17, 18, 19, 20, 21, 104, 105, 14, 103, 15, 16, 17, 18, 19, 20, 21, 104,
22, 23, 24, 244, 245, 28, 25, 26, 27, 208, 105, 22, 23, 24, 248, 249, 28, 25, 26, 27,
209, 210, 211, 212, 28, 29, 30, 31, 32, 33, 212, 213, 214, 215, 216, 28, 29, 30, 31, 32,
106, 107, 246, 108, 54, 34, 35, 36, 37, 38, 33, 106, 107, 250, 108, 55, 34, 35, 36, 37,
39, 109, 40, 41, 42, 43, 44, 45, 46, 47, 38, 39, 109, 40, 41, 42, 43, 44, 45, 46,
48, 157, 173, 278, 49, 215, 110, 216, 293, 294, 47, 48, 160, 176, 282, 49, 50, 219, 110, 220,
295, 296, 297, 201, 202, 203, 111, 150, 112, 113, 297, 298, 299, 300, 301, 111, 112, 113, 114, 115,
114, 115, 116, 117, 118, 217, 119, 120, 121, 122, 116, 117, 118, 119, 120, 121, 122, 221, 123, 124,
123, 124, 125, 152, 126, 218, 219, 220, 221, 222, 125, 126, 127, 128, 129, 130, 153, 222, 223, 224,
223, 127, 128, 129, 130, 131, 132, 134, 224, 135, 225, 226, 227, 131, 132, 133, 134, 136, 137, 138,
136, 137, 138, 139, 225, 140, 141, 142, 143, 144, 228, 139, 140, 141, 142, 143, 229, 144, 145, 146,
145, 146, 147, 148, 149, 153, 154, 158, 155, 226, 147, 148, 149, 150, 151, 152, 155, 156, 157, 161,
159, 160, 186, 227, 161, 162, 163, 164, 165, 175, 158, 230, 162, 163, 189, 231, 164, 165, 166, 167,
166, 167, 168, 169, 170, 171, 174, 176, 177, 178, 168, 178, 169, 170, 171, 172, 173, 174, 177, 179,
179, 180, 181, 183, 182, 184, 185, 255, 187, 188, 180, 181, 182, 183, 184, 186, 185, 187, 188, 259,
189, 190, 256, 191, 192, 193, 194, 257, 258, 195, 190, 191, 192, 193, 260, 194, 195, 196, 197, 261,
196, 197, 205, 198, 199, 200, 259, 260, 261, 262, 262, 198, 199, 200, 208, 201, 202, 203, 209, 263,
263, 265, 266, 267, 275, 270, 268, 271, 272, 276, 264, 265, 266, 267, 269, 270, 271, 279, 274, 272,
279, 273, 280, 281, 285, 282, 283, 284, 302, 286, 275, 276, 280, 283, 277, 284, 285, 306, 286, 287,
288, 289, 290, 291, 300, 151, 269, 274, 301, 254, 288, 273, 290, 289, 292, 293, 294, 295, 154, 304,
287 278, 305, 258, 0, 291
}; };
static const yytype_uint16 yycheck[] = static const yytype_int16 yycheck[] =
{ {
6, 6, 6, 0, 76, 76, 7, 8, 9, 10, 6, 6, 6, 0, 72, 73, 74, 7, 8, 9,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
76, 22, 23, 24, 25, 26, 27, 28, 76, 76, 20, 77, 22, 23, 24, 25, 26, 27, 28, 77,
31, 32, 33, 43, 44, 45, 37, 38, 39, 51, 77, 31, 32, 33, 43, 44, 45, 37, 38, 39,
52, 53, 54, 55, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 45, 46, 47, 48, 49,
76, 76, 62, 76, 51, 56, 57, 58, 59, 60, 50, 77, 77, 62, 77, 52, 56, 57, 58, 59,
61, 76, 63, 64, 65, 66, 67, 68, 69, 70, 60, 61, 77, 63, 64, 65, 66, 67, 68, 69,
71, 77, 77, 77, 75, 7, 76, 9, 51, 52, 70, 71, 78, 78, 78, 75, 76, 7, 77, 9,
53, 54, 55, 72, 73, 74, 76, 0, 76, 76, 51, 52, 53, 54, 55, 77, 77, 77, 77, 77,
76, 76, 76, 76, 76, 27, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 27, 77, 77,
76, 76, 76, 6, 76, 37, 38, 39, 40, 41, 77, 77, 77, 77, 77, 77, 0, 37, 38, 39,
42, 76, 76, 76, 76, 76, 76, 76, 50, 76, 40, 41, 42, 77, 77, 77, 77, 77, 77, 77,
76, 76, 76, 76, 56, 76, 76, 76, 76, 76, 50, 77, 77, 77, 77, 77, 56, 77, 77, 77,
76, 76, 76, 76, 76, 6, 5, 4, 6, 71, 77, 77, 77, 77, 77, 77, 6, 6, 5, 4,
4, 4, 76, 75, 6, 6, 6, 5, 5, 4, 6, 71, 4, 4, 77, 75, 6, 6, 6, 5,
6, 5, 5, 5, 5, 5, 5, 4, 6, 5, 5, 4, 6, 5, 5, 5, 5, 5, 5, 4,
5, 5, 5, 4, 6, 4, 6, 76, 6, 6, 6, 5, 5, 5, 5, 4, 6, 4, 6, 77,
4, 6, 76, 6, 6, 4, 4, 76, 76, 6, 6, 6, 4, 6, 77, 6, 6, 4, 4, 77,
6, 4, 6, 5, 5, 5, 76, 76, 76, 76, 77, 6, 6, 4, 6, 5, 5, 5, 5, 77,
76, 76, 76, 76, 6, 76, 78, 76, 76, 5, 77, 77, 77, 77, 77, 77, 77, 6, 77, 79,
5, 78, 5, 5, 76, 6, 6, 5, 78, 6, 77, 77, 5, 5, 79, 5, 5, 79, 6, 6,
6, 6, 6, 6, 292, 51, 229, 248, 298, 213, 5, 233, 6, 77, 6, 6, 6, 6, 52, 296,
266 252, 302, 217, -1, 270
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] = static const yytype_uint8 yystos[] =
{ {
0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26,
27, 28, 31, 32, 33, 37, 38, 39, 45, 46, 27, 28, 31, 32, 33, 37, 38, 39, 45, 46,
47, 48, 49, 50, 56, 57, 58, 59, 60, 61, 47, 48, 49, 50, 56, 57, 58, 59, 60, 61,
63, 64, 65, 66, 67, 68, 69, 70, 71, 75, 63, 64, 65, 66, 67, 68, 69, 70, 71, 75,
80, 81, 82, 83, 95, 97, 98, 99, 100, 101, 76, 81, 82, 83, 84, 96, 98, 99, 100, 101,
102, 118, 119, 120, 121, 122, 123, 124, 128, 129, 102, 103, 119, 120, 121, 122, 123, 124, 125, 129,
130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140,
141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
162, 76, 76, 76, 76, 76, 76, 76, 76, 76, 161, 162, 164, 77, 77, 77, 77, 77, 77, 77,
76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
76, 76, 76, 125, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 126, 77, 77, 77, 77,
76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
0, 82, 6, 6, 5, 6, 6, 77, 4, 4, 77, 77, 77, 0, 83, 6, 6, 5, 6, 6,
4, 6, 6, 6, 5, 5, 6, 5, 5, 5, 78, 4, 4, 4, 6, 6, 6, 5, 5, 6,
5, 5, 6, 77, 5, 4, 4, 6, 5, 5, 5, 5, 5, 5, 5, 6, 78, 5, 4, 4,
5, 5, 6, 4, 4, 6, 76, 6, 6, 4, 6, 5, 5, 5, 5, 6, 4, 4, 6, 77,
6, 6, 6, 4, 4, 6, 6, 4, 5, 5, 6, 6, 4, 6, 6, 6, 4, 4, 6, 6,
5, 72, 73, 74, 161, 6, 84, 133, 51, 52, 4, 5, 5, 5, 72, 73, 74, 163, 6, 5,
53, 54, 55, 126, 127, 7, 9, 27, 37, 38, 85, 134, 51, 52, 53, 54, 55, 127, 128, 7,
39, 40, 41, 42, 50, 56, 71, 75, 85, 86, 9, 27, 37, 38, 39, 40, 41, 42, 50, 56,
87, 88, 89, 103, 105, 106, 107, 108, 109, 110, 71, 75, 86, 87, 88, 89, 90, 104, 106, 107,
111, 115, 116, 117, 43, 44, 62, 90, 91, 92, 108, 109, 110, 111, 112, 116, 117, 118, 43, 44,
93, 94, 95, 96, 127, 76, 76, 76, 76, 76, 62, 91, 92, 93, 94, 95, 96, 97, 128, 77,
76, 76, 76, 76, 112, 76, 76, 76, 78, 87, 77, 77, 77, 77, 77, 77, 77, 77, 113, 77,
76, 76, 76, 78, 92, 6, 5, 6, 77, 5, 77, 77, 79, 88, 77, 77, 77, 79, 93, 6,
5, 5, 6, 6, 5, 76, 6, 161, 6, 6, 5, 6, 78, 5, 5, 5, 6, 6, 5, 77,
6, 6, 104, 51, 52, 53, 54, 55, 113, 114, 6, 163, 6, 6, 6, 6, 105, 51, 52, 53,
90, 114, 78 54, 55, 114, 115, 91, 115, 79
}; };
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] = static const yytype_uint8 yyr1[] =
{ {
0, 79, 80, 81, 81, 82, 82, 82, 82, 82, 0, 80, 81, 82, 82, 83, 83, 83, 83, 83,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
82, 82, 82, 83, 84, 83, 85, 86, 86, 87, 83, 83, 83, 83, 84, 85, 84, 86, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
87, 87, 88, 89, 90, 91, 91, 92, 92, 92, 88, 88, 88, 89, 90, 91, 92, 92, 93, 93,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 93, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, 103, 105, 106, 107, 108, 109, 110, 102, 103, 104, 105, 104, 106, 107, 108, 109, 110,
112, 111, 113, 113, 114, 114, 114, 114, 114, 115, 111, 113, 112, 114, 114, 115, 115, 115, 115, 115,
116, 117, 118, 119, 120, 121, 122, 123, 125, 124, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126,
126, 126, 127, 127, 127, 127, 127, 128, 129, 130, 125, 127, 127, 128, 128, 128, 128, 128, 129, 130,
131, 132, 133, 132, 134, 135, 136, 137, 138, 139, 131, 132, 133, 134, 133, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 145, 146, 147, 148, 140, 141, 142, 143, 144, 145, 146, 146, 147, 148,
149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
159, 160, 161, 161, 161, 162 159, 160, 161, 162, 163, 163, 163, 164
}; };
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_uint8 yyr2[] = static const yytype_uint8 yyr2[] =
{ {
0, 2, 1, 1, 2, 1, 1, 1, 1, 1, 0, 2, 1, 1, 2, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 3, 0, 6, 1, 1, 2, 1, 1, 1, 1, 1, 3, 0, 6, 1, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 3, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 2, 1, 1,
1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 0, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 6, 3, 3, 3, 3, 3,
0, 4, 1, 2, 1, 1, 1, 1, 1, 3, 3, 0, 4, 1, 2, 1, 1, 1, 1, 1,
3, 3, 3, 3, 3, 3, 3, 3, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1, 2, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 2, 1, 1, 1, 1, 1, 3, 3,
3, 3, 0, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 6, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 1, 1, 1, 3 3, 3, 3, 3, 1, 1, 1, 3
}; };
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY) #define yyclearin (yychar = YYEMPTY)
#define YYEMPTY (-2) #define YYEMPTY (-2)
#define YYEOF 0 #define YYEOF 0
#define YYACCEPT goto yyacceptlab #define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab #define YYABORT goto yyabortlab
#define YYERROR goto yyerrorlab #define YYERROR goto yyerrorlab
skipping to change at line 1605 skipping to change at line 1608
Otherwise, the following line sets YYVAL to garbage. Otherwise, the following line sets YYVAL to garbage.
This behavior is undocumented and Bison This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */ GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen]; yyval = yyvsp[1-yylen];
YY_REDUCE_PRINT (yyn); YY_REDUCE_PRINT (yyn);
switch (yyn) switch (yyn)
{ {
case 53: case 54:
#line 129 "cfg_parser.y" /* yacc.c:1652 */ #line 130 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("frontend", (yyvsp[0].s ), cfg, "", if ((yyvsp[0].s) && config_param_validate("frontend", (yyvsp[0].s ), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 1643 "cfg_parser.c" /* yacc.c:1652 */ #line 1646 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 54: case 55:
#line 135 "cfg_parser.y" /* yacc.c:1652 */ #line 136 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* NB: Mid-rule action */ /* NB: Mid-rule action */
AZ(cur_fa); AZ(cur_fa);
cur_fa = front_arg_new(); cur_fa = front_arg_new();
} }
#line 1653 "cfg_parser.c" /* yacc.c:1652 */ #line 1656 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 55: case 56:
#line 140 "cfg_parser.y" /* yacc.c:1652 */ #line 141 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (front_arg_add(cfg, cur_fa) != 1) if (front_arg_add(cfg, cur_fa) != 1)
YYABORT; YYABORT;
cur_fa = NULL; cur_fa = NULL;
} }
#line 1663 "cfg_parser.c" /* yacc.c:1652 */ #line 1666 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 72: case 73:
#line 168 "cfg_parser.y" /* yacc.c:1652 */ #line 169 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
if (strcmp((yyvsp[0].s), "*") == 0) if (strcmp((yyvsp[0].s), "*") == 0)
cur_fa->ip = NULL; cur_fa->ip = NULL;
else else
cur_fa->ip = strdup((yyvsp[0].s)); cur_fa->ip = strdup((yyvsp[0].s));
} }
} }
#line 1676 "cfg_parser.c" /* yacc.c:1652 */ #line 1679 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 73: case 74:
#line 177 "cfg_parser.y" /* yacc.c:1652 */ #line 178 "cfg_parser.y" /* yacc.c:1652 */
{ if ((yyvsp[0].s)) cur_fa->port = strdup((yyvsp[0].s)); } { if ((yyvsp[0].s)) cur_fa->port = strdup((yyvsp[0].s)); }
#line 1682 "cfg_parser.c" /* yacc.c:1652 */ #line 1685 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 81: case 82:
#line 193 "cfg_parser.y" /* yacc.c:1652 */ #line 194 "cfg_parser.y" /* yacc.c:1652 */
{ if ((yyvsp[0].s)) cur_pem->filename = strdup((yyvsp[0].s)); } { if ((yyvsp[0].s)) cur_pem->filename = strdup((yyvsp[0].s)); }
#line 1688 "cfg_parser.c" /* yacc.c:1652 */ #line 1691 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 82: case 83:
#line 195 "cfg_parser.y" /* yacc.c:1652 */ #line 196 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) if ((yyvsp[0].s))
cur_pem->ocspfn = strdup((yyvsp[0].s)); cur_pem->ocspfn = strdup((yyvsp[0].s));
} }
#line 1697 "cfg_parser.c" /* yacc.c:1652 */ #line 1700 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 83: case 84:
#line 200 "cfg_parser.y" /* yacc.c:1652 */ #line 201 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_pem != NULL) if (cur_pem != NULL)
cur_pem->ocsp_vfy = (yyvsp[0].i); cur_pem->ocsp_vfy = (yyvsp[0].i);
else else
cfg->OCSP_VFY = (yyvsp[0].i); cfg->OCSP_VFY = (yyvsp[0].i);
} }
#line 1708 "cfg_parser.c" /* yacc.c:1652 */ #line 1711 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 84: case 85:
#line 207 "cfg_parser.y" /* yacc.c:1652 */ #line 208 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) cur_pem->priv_key_filename = strdup((yyvsp[0].s)); if ((yyvsp[0].s)) cur_pem->priv_key_filename = strdup((yyvsp[0].s));
} }
#line 1716 "cfg_parser.c" /* yacc.c:1652 */ #line 1719 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 85: case 86:
#line 211 "cfg_parser.y" /* yacc.c:1652 */ #line 212 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
size_t l; size_t l;
l = strlen((yyvsp[0].s)); l = strlen((yyvsp[0].s));
cfg->PEM_DIR = malloc(l + 2); cfg->PEM_DIR = malloc(l + 2);
strcpy(cfg->PEM_DIR, (yyvsp[0].s)); strcpy(cfg->PEM_DIR, (yyvsp[0].s));
if (cfg->PEM_DIR[l-1] != '/') if (cfg->PEM_DIR[l-1] != '/')
strcat(cfg->PEM_DIR, "/"); strcat(cfg->PEM_DIR, "/");
} }
else else
cfg->PEM_DIR = NULL; cfg->PEM_DIR = NULL;
} }
#line 1733 "cfg_parser.c" /* yacc.c:1652 */ #line 1736 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 86: case 87:
#line 224 "cfg_parser.y" /* yacc.c:1652 */ #line 225 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) if ((yyvsp[0].s))
cfg->PEM_DIR_GLOB = strdup((yyvsp[0].s)); cfg->PEM_DIR_GLOB = strdup((yyvsp[0].s));
else else
cfg->PEM_DIR_GLOB = NULL; cfg->PEM_DIR_GLOB = NULL;
} }
#line 1745 "cfg_parser.c" /* yacc.c:1652 */ #line 1748 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 87: case 88:
#line 232 "cfg_parser.y" /* yacc.c:1652 */ #line 233 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) if ((yyvsp[0].s))
cfg->OCSP_DIR = strdup((yyvsp[0].s)); cfg->OCSP_DIR = strdup((yyvsp[0].s));
else else
cfg->OCSP_DIR = NULL; cfg->OCSP_DIR = NULL;
} }
#line 1756 "cfg_parser.c" /* yacc.c:1652 */ #line 1759 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 88: case 89:
#line 239 "cfg_parser.y" /* yacc.c:1652 */ #line 240 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_RESP_TMO = (yyvsp[0].i); cfg->OCSP_RESP_TMO = (yyvsp[0].i);
} }
#line 1764 "cfg_parser.c" /* yacc.c:1652 */ #line 1767 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 89: case 90:
#line 243 "cfg_parser.y" /* yacc.c:1652 */ #line 244 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_CONN_TMO = (yyvsp[0].i); cfg->OCSP_CONN_TMO = (yyvsp[0].i);
} }
#line 1772 "cfg_parser.c" /* yacc.c:1652 */ #line 1775 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 90: case 91:
#line 247 "cfg_parser.y" /* yacc.c:1652 */ #line 248 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->OCSP_REFRESH_INTERVAL = (yyvsp[0].i); cfg->OCSP_REFRESH_INTERVAL = (yyvsp[0].i);
} }
#line 1780 "cfg_parser.c" /* yacc.c:1652 */ #line 1783 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 91: case 92:
#line 252 "cfg_parser.y" /* yacc.c:1652 */ #line 253 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s) != NULL) { if ((yyvsp[0].s) != NULL) {
int r; int r;
struct cfg_cert_file *cert; struct cfg_cert_file *cert;
cert = cfg_cert_file_new(); cert = cfg_cert_file_new();
cert->filename = strdup((yyvsp[0].s)); cert->filename = strdup((yyvsp[0].s));
r = cfg_cert_vfy(cert); r = cfg_cert_vfy(cert);
if (r == 0) { if (r == 0) {
cfg_cert_file_free(&cert); cfg_cert_file_free(&cert);
YYABORT; YYABORT;
} }
cfg_cert_add(cert, &cur_fa->certs); cfg_cert_add(cert, &cur_fa->certs);
} }
} }
#line 1799 "cfg_parser.c" /* yacc.c:1652 */ #line 1802 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 92: case 93:
#line 266 "cfg_parser.y" /* yacc.c:1652 */ #line 267 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* NB: Mid-rule action */ /* NB: Mid-rule action */
AZ(cur_pem); AZ(cur_pem);
cur_pem = cfg_cert_file_new(); cur_pem = cfg_cert_file_new();
} }
#line 1809 "cfg_parser.c" /* yacc.c:1652 */ #line 1812 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 93: case 94:
#line 271 "cfg_parser.y" /* yacc.c:1652 */ #line 272 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg_cert_vfy(cur_pem) != 0) if (cfg_cert_vfy(cur_pem) != 0)
cfg_cert_add(cur_pem, &cur_fa->certs); cfg_cert_add(cur_pem, &cur_fa->certs);
else { else {
cfg_cert_file_free(&cur_pem); cfg_cert_file_free(&cur_pem);
YYABORT; YYABORT;
} }
cur_pem = NULL; cur_pem = NULL;
} }
#line 1823 "cfg_parser.c" /* yacc.c:1652 */ #line 1826 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 95: case 96:
#line 283 "cfg_parser.y" /* yacc.c:1652 */ #line 284 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->client_verify_ca = strdup((yyvsp[0].s)); cur_fa->client_verify_ca = strdup((yyvsp[0].s));
} }
#line 1831 "cfg_parser.c" /* yacc.c:1652 */ #line 1834 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 96: case 97:
#line 288 "cfg_parser.y" /* yacc.c:1652 */ #line 289 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->match_global_certs = (yyvsp[0].i); } { cur_fa->match_global_certs = (yyvsp[0].i); }
#line 1837 "cfg_parser.c" /* yacc.c:1652 */ #line 1840 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 97: case 98:
#line 290 "cfg_parser.y" /* yacc.c:1652 */ #line 291 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->sni_nomatch_abort = (yyvsp[0].i); cur_fa->sni_nomatch_abort = (yyvsp[0].i);
} }
#line 1845 "cfg_parser.c" /* yacc.c:1652 */ #line 1848 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 98: case 99:
#line 295 "cfg_parser.y" /* yacc.c:1652 */ #line 296 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls after ssl," " It is illegal to specify tls after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cur_fa->selected_protos = TLS_OPTION_PROTOS; cur_fa->selected_protos = TLS_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: tls = off is deprecated and has no effect.\n"); "Warning: tls = off is deprecated and has no effect.\n");
} }
#line 1866 "cfg_parser.c" /* yacc.c:1652 */ #line 1869 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 99: case 100:
#line 312 "cfg_parser.y" /* yacc.c:1652 */ #line 313 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify ssl after ssl," " It is illegal to specify ssl after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cur_fa->selected_protos = SSL_OPTION_PROTOS; cur_fa->selected_protos = SSL_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: ssl = off is deprecated and has no effect.\n"); "Warning: ssl = off is deprecated and has no effect.\n");
} }
#line 1887 "cfg_parser.c" /* yacc.c:1652 */ #line 1890 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 100: case 101:
#line 329 "cfg_parser.y" /* yacc.c:1652 */ #line 330 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa->selected_protos != 0) { if (cur_fa->selected_protos != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls-protos after" " It is illegal to specify tls-protos after"
" ssl, tls or tls-protos\nSelected before was %d\n", " ssl, tls or tls-protos\nSelected before was %d\n",
__func__, __FILE__, __LINE__, cur_fa->selected_protos); __func__, __FILE__, __LINE__, cur_fa->selected_protos);
front_arg_destroy(cur_fa); front_arg_destroy(cur_fa);
cur_fa = NULL; cur_fa = NULL;
YYABORT; YYABORT;
} }
} }
#line 1903 "cfg_parser.c" /* yacc.c:1652 */ #line 1906 "cfg_parser.c" /* yacc.c:1652 */
break;
case 104:
#line 343 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= SSLv3_PROTO; }
#line 1909 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 105: case 105:
#line 344 "cfg_parser.y" /* yacc.c:1652 */ #line 344 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_0_PROTO; } { cur_fa->selected_protos |= SSLv3_PROTO; }
#line 1915 "cfg_parser.c" /* yacc.c:1652 */ #line 1912 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 106: case 106:
#line 345 "cfg_parser.y" /* yacc.c:1652 */ #line 345 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_1_PROTO; } { cur_fa->selected_protos |= TLSv1_0_PROTO; }
#line 1921 "cfg_parser.c" /* yacc.c:1652 */ #line 1918 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 107: case 107:
#line 346 "cfg_parser.y" /* yacc.c:1652 */ #line 346 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_2_PROTO; } { cur_fa->selected_protos |= TLSv1_1_PROTO; }
#line 1927 "cfg_parser.c" /* yacc.c:1652 */ #line 1924 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 108: case 108:
#line 347 "cfg_parser.y" /* yacc.c:1652 */ #line 347 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_3_PROTO; } { cur_fa->selected_protos |= TLSv1_2_PROTO; }
#line 1933 "cfg_parser.c" /* yacc.c:1652 */ #line 1930 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 109: case 109:
#line 349 "cfg_parser.y" /* yacc.c:1652 */ #line 348 "cfg_parser.y" /* yacc.c:1652 */
{ cur_fa->selected_protos |= TLSv1_3_PROTO; }
#line 1936 "cfg_parser.c" /* yacc.c:1652 */
break;
case 110:
#line 350 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) cur_fa->ciphers_tlsv12 = strdup((yyvsp[0].s)); if ((yyvsp[0].s)) cur_fa->ciphers_tlsv12 = strdup((yyvsp[0].s));
} }
#line 1941 "cfg_parser.c" /* yacc.c:1652 */ #line 1944 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 110: case 111:
#line 353 "cfg_parser.y" /* yacc.c:1652 */ #line 354 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
CHECK_OBJ_NOTNULL(cur_fa, FRONT_ARG_MAGIC); CHECK_OBJ_NOTNULL(cur_fa, FRONT_ARG_MAGIC);
cur_fa->ciphersuites_tlsv13 = strdup((yyvsp[0].s)); cur_fa->ciphersuites_tlsv13 = strdup((yyvsp[0].s));
} }
} }
#line 1952 "cfg_parser.c" /* yacc.c:1652 */ #line 1955 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 111: case 112:
#line 360 "cfg_parser.y" /* yacc.c:1652 */ #line 361 "cfg_parser.y" /* yacc.c:1652 */
{ {
cur_fa->prefer_server_ciphers = (yyvsp[0].i); cur_fa->prefer_server_ciphers = (yyvsp[0].i);
} }
#line 1960 "cfg_parser.c" /* yacc.c:1652 */ #line 1963 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 112: case 113:
#line 364 "cfg_parser.y" /* yacc.c:1652 */ #line 365 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->LOG_LEVEL = 0; cfg->LOG_LEVEL = 0;
else else
cfg->LOG_LEVEL = 1; cfg->LOG_LEVEL = 1;
} }
#line 1971 "cfg_parser.c" /* yacc.c:1652 */ #line 1974 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 113: case 114:
#line 371 "cfg_parser.y" /* yacc.c:1652 */ #line 372 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->NCORES = (yyvsp[0].i); } { cfg->NCORES = (yyvsp[0].i); }
#line 1977 "cfg_parser.c" /* yacc.c:1652 */ #line 1980 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 114: case 115:
#line 373 "cfg_parser.y" /* yacc.c:1652 */ #line 374 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->BACKLOG = (yyvsp[0].i); } { cfg->BACKLOG = (yyvsp[0].i); }
#line 1983 "cfg_parser.c" /* yacc.c:1652 */ #line 1986 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 115: case 116:
#line 375 "cfg_parser.y" /* yacc.c:1652 */ #line 376 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->TCP_KEEPALIVE_TIME = (yyvsp[0].i); } { cfg->TCP_KEEPALIVE_TIME = (yyvsp[0].i); }
#line 1989 "cfg_parser.c" /* yacc.c:1652 */ #line 1992 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 116: case 117:
#line 377 "cfg_parser.y" /* yacc.c:1652 */ #line 378 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls after ssl," " It is illegal to specify tls after ssl,"
" tls or tls-protos\n", " tls or tls-protos\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->SELECTED_TLS_PROTOS = TLS_OPTION_PROTOS; cfg->SELECTED_TLS_PROTOS = TLS_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: tls = off is deprecated and has no effect.\n"); "Warning: tls = off is deprecated and has no effect.\n");
} }
#line 2008 "cfg_parser.c" /* yacc.c:1652 */ #line 2011 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 117: case 118:
#line 392 "cfg_parser.y" /* yacc.c:1652 */ #line 393 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify ssl after ssl," " It is illegal to specify ssl after ssl,"
" tls or tls-protos.\n", " tls or tls-protos.\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
if ((yyvsp[0].i)) if ((yyvsp[0].i))
cfg->SELECTED_TLS_PROTOS = SSL_OPTION_PROTOS; cfg->SELECTED_TLS_PROTOS = SSL_OPTION_PROTOS;
else else
fprintf(stderr, fprintf(stderr,
"Warning: ssl = off is deprecated and has no effect.\n"); "Warning: ssl = off is deprecated and has no effect.\n");
} }
#line 2027 "cfg_parser.c" /* yacc.c:1652 */ #line 2030 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 118: case 119:
#line 407 "cfg_parser.y" /* yacc.c:1652 */ #line 408 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg->SELECTED_TLS_PROTOS != 0) { if (cfg->SELECTED_TLS_PROTOS != 0) {
fprintf(stderr, "%s (%s, line %d):" fprintf(stderr, "%s (%s, line %d):"
" It is illegal to specify tls-protos after" " It is illegal to specify tls-protos after"
" ssl, tls or tls-protos\n", " ssl, tls or tls-protos\n",
__func__, __FILE__, __LINE__); __func__, __FILE__, __LINE__);
YYABORT; YYABORT;
} }
} }
#line 2041 "cfg_parser.c" /* yacc.c:1652 */ #line 2044 "cfg_parser.c" /* yacc.c:1652 */
break;
case 122:
#line 419 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= SSLv3_PROTO; }
#line 2047 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 123: case 123:
#line 420 "cfg_parser.y" /* yacc.c:1652 */ #line 420 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_0_PROTO; } { cfg->SELECTED_TLS_PROTOS |= SSLv3_PROTO; }
#line 2053 "cfg_parser.c" /* yacc.c:1652 */ #line 2050 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 124: case 124:
#line 421 "cfg_parser.y" /* yacc.c:1652 */ #line 421 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_1_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_0_PROTO; }
#line 2059 "cfg_parser.c" /* yacc.c:1652 */ #line 2056 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 125: case 125:
#line 422 "cfg_parser.y" /* yacc.c:1652 */ #line 422 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_2_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_1_PROTO; }
#line 2065 "cfg_parser.c" /* yacc.c:1652 */ #line 2062 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 126: case 126:
#line 423 "cfg_parser.y" /* yacc.c:1652 */ #line 423 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SELECTED_TLS_PROTOS |= TLSv1_3_PROTO; } { cfg->SELECTED_TLS_PROTOS |= TLSv1_2_PROTO; }
#line 2071 "cfg_parser.c" /* yacc.c:1652 */ #line 2068 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 127: case 127:
#line 425 "cfg_parser.y" /* yacc.c:1652 */ #line 424 "cfg_parser.y" /* yacc.c:1652 */
{ if ((yyvsp[0].s)) cfg->ENGINE = strdup((yyvsp[0].s)); } { cfg->SELECTED_TLS_PROTOS |= TLSv1_3_PROTO; }
#line 2077 "cfg_parser.c" /* yacc.c:1652 */ #line 2074 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 128: case 128:
#line 427 "cfg_parser.y" /* yacc.c:1652 */ #line 426 "cfg_parser.y" /* yacc.c:1652 */
{ if ((yyvsp[0].s)) cfg->ENGINE = strdup((yyvsp[0].s)); }
#line 2080 "cfg_parser.c" /* yacc.c:1652 */
break;
case 129:
#line 428 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->PREFER_SERVER_CIPHERS = (yyvsp[0].i); cfg->PREFER_SERVER_CIPHERS = (yyvsp[0].i);
} }
#line 2085 "cfg_parser.c" /* yacc.c:1652 */ #line 2088 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 129: case 130:
#line 431 "cfg_parser.y" /* yacc.c:1652 */ #line 432 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("chroot", (yyvsp[0].s), cfg, "" , if ((yyvsp[0].s) && config_param_validate("chroot", (yyvsp[0].s), cfg, "" ,
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2096 "cfg_parser.c" /* yacc.c:1652 */ #line 2099 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 130: case 131:
#line 438 "cfg_parser.y" /* yacc.c:1652 */ #line 439 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("backend", (yyvsp[0].s), cfg, " ", if ((yyvsp[0].s) && config_param_validate("backend", (yyvsp[0].s), cfg, " ",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2107 "cfg_parser.c" /* yacc.c:1652 */ #line 2110 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 131: case 132:
#line 446 "cfg_parser.y" /* yacc.c:1652 */ #line 447 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("pem-file", (yyvsp[0].s ), cfg, "", if ((yyvsp[0].s) && config_param_validate("pem-file", (yyvsp[0].s ), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2118 "cfg_parser.c" /* yacc.c:1652 */ #line 2121 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 132: case 133:
#line 452 "cfg_parser.y" /* yacc.c:1652 */ #line 453 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* NB: Mid-rule action */ /* NB: Mid-rule action */
AZ(cur_pem); AZ(cur_pem);
cur_pem = cfg_cert_file_new(); cur_pem = cfg_cert_file_new();
} }
#line 2128 "cfg_parser.c" /* yacc.c:1652 */ #line 2131 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 133: case 134:
#line 457 "cfg_parser.y" /* yacc.c:1652 */ #line 458 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cfg_cert_vfy(cur_pem) != 0) { if (cfg_cert_vfy(cur_pem) != 0) {
if (cfg->CERT_DEFAULT != NULL) { if (cfg->CERT_DEFAULT != NULL) {
struct cfg_cert_file *tmp = cfg->CERT_DEFAULT; struct cfg_cert_file *tmp = cfg->CERT_DEFAULT;
cfg_cert_add(tmp, &cfg->CERT_FILES); cfg_cert_add(tmp, &cfg->CERT_FILES);
} }
cfg->CERT_DEFAULT = cur_pem; cfg->CERT_DEFAULT = cur_pem;
} else { } else {
cfg_cert_file_free(&cur_pem); cfg_cert_file_free(&cur_pem);
YYABORT; YYABORT;
} }
cur_pem = NULL; cur_pem = NULL;
} }
#line 2146 "cfg_parser.c" /* yacc.c:1652 */ #line 2149 "cfg_parser.c" /* yacc.c:1652 */
break;
case 134:
#line 471 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SYSLOG = (yyvsp[0].i); }
#line 2152 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 135: case 135:
#line 472 "cfg_parser.y" /* yacc.c:1652 */ #line 472 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->DAEMONIZE = (yyvsp[0].i); } { cfg->SYSLOG = (yyvsp[0].i); }
#line 2158 "cfg_parser.c" /* yacc.c:1652 */ #line 2155 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 136: case 136:
#line 473 "cfg_parser.y" /* yacc.c:1652 */ #line 473 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->DAEMONIZE = (yyvsp[0].i); }
#line 2161 "cfg_parser.c" /* yacc.c:1652 */
break;
case 137:
#line 474 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->SNI_NOMATCH_ABORT = (yyvsp[0].i); cfg->SNI_NOMATCH_ABORT = (yyvsp[0].i);
} }
#line 2166 "cfg_parser.c" /* yacc.c:1652 */ #line 2169 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 137: case 138:
#line 477 "cfg_parser.y" /* yacc.c:1652 */ #line 478 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
cfg->CIPHERS_TLSv12 = strdup((yyvsp[0].s)); cfg->CIPHERS_TLSv12 = strdup((yyvsp[0].s));
} }
} }
#line 2176 "cfg_parser.c" /* yacc.c:1652 */ #line 2179 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 138: case 139:
#line 483 "cfg_parser.y" /* yacc.c:1652 */ #line 484 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
cfg->CIPHERSUITES_TLSv13 = strdup((yyvsp[0].s)); cfg->CIPHERSUITES_TLSv13 = strdup((yyvsp[0].s));
} }
} }
#line 2186 "cfg_parser.c" /* yacc.c:1652 */ #line 2189 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 139: case 140:
#line 490 "cfg_parser.y" /* yacc.c:1652 */ #line 491 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("user", (yyvsp[0].s), cfg, "", if ((yyvsp[0].s) && config_param_validate("user", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2197 "cfg_parser.c" /* yacc.c:1652 */ #line 2200 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 140: case 141:
#line 497 "cfg_parser.y" /* yacc.c:1652 */ #line 498 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("group", (yyvsp[0].s), cfg, "", if ((yyvsp[0].s) && config_param_validate("group", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2208 "cfg_parser.c" /* yacc.c:1652 */ #line 2211 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 141: case 142:
#line 504 "cfg_parser.y" /* yacc.c:1652 */ #line 505 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->WRITE_IP_OCTET = (yyvsp[0].i); } { cfg->WRITE_IP_OCTET = (yyvsp[0].i); }
#line 2214 "cfg_parser.c" /* yacc.c:1652 */ #line 2217 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 142: case 143:
#line 506 "cfg_parser.y" /* yacc.c:1652 */ #line 507 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); } { cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); }
#line 2220 "cfg_parser.c" /* yacc.c:1652 */ #line 2223 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 143: case 144:
#line 508 "cfg_parser.y" /* yacc.c:1652 */ #line 509 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->WRITE_PROXY_LINE_V1 = (yyvsp[0].i); cfg->WRITE_PROXY_LINE_V1 = (yyvsp[0].i);
} }
#line 2228 "cfg_parser.c" /* yacc.c:1652 */ #line 2231 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 144: case 145:
#line 512 "cfg_parser.y" /* yacc.c:1652 */ #line 513 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i); cfg->WRITE_PROXY_LINE_V2 = (yyvsp[0].i);
} }
#line 2236 "cfg_parser.c" /* yacc.c:1652 */ #line 2239 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 145: case 146:
#line 516 "cfg_parser.y" /* yacc.c:1652 */ #line 517 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_TLV = (yyvsp[0].i); } { cfg->PROXY_TLV = (yyvsp[0].i); }
#line 2242 "cfg_parser.c" /* yacc.c:1652 */ #line 2245 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 146: case 147:
#line 518 "cfg_parser.y" /* yacc.c:1652 */ #line 519 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_AUTHORITY = (yyvsp[0].i); } { cfg->PROXY_AUTHORITY = (yyvsp[0].i); }
#line 2248 "cfg_parser.c" /* yacc.c:1652 */ #line 2251 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 147: case 148:
#line 520 "cfg_parser.y" /* yacc.c:1652 */ #line 521 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_CLIENT_CERT = (yyvsp[0].i); }
#line 2257 "cfg_parser.c" /* yacc.c:1652 */
break;
case 149:
#line 523 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->PROXY_PROXY_LINE = (yyvsp[0].i); } { cfg->PROXY_PROXY_LINE = (yyvsp[0].i); }
#line 2254 "cfg_parser.c" /* yacc.c:1652 */ #line 2263 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 148: case 150:
#line 522 "cfg_parser.y" /* yacc.c:1652 */ #line 525 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("alpn-protos", (yyvsp[0].s), cf g, "", if ((yyvsp[0].s) && config_param_validate("alpn-protos", (yyvsp[0].s), cf g, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2265 "cfg_parser.c" /* yacc.c:1652 */ #line 2274 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 149: case 151:
#line 529 "cfg_parser.y" /* yacc.c:1652 */ #line 532 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && if ((yyvsp[0].s) &&
config_param_validate("syslog-facility", (yyvsp[0].s), cfg, "", config_param_validate("syslog-facility", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2277 "cfg_parser.c" /* yacc.c:1652 */ #line 2286 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 150: case 152:
#line 537 "cfg_parser.y" /* yacc.c:1652 */ #line 540 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->SEND_BUFSIZE = (yyvsp[0].i); } { cfg->SEND_BUFSIZE = (yyvsp[0].i); }
#line 2283 "cfg_parser.c" /* yacc.c:1652 */ #line 2292 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 151: case 153:
#line 539 "cfg_parser.y" /* yacc.c:1652 */ #line 542 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->RECV_BUFSIZE = (yyvsp[0].i); } { cfg->RECV_BUFSIZE = (yyvsp[0].i); }
#line 2289 "cfg_parser.c" /* yacc.c:1652 */ #line 2298 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 152: case 154:
#line 541 "cfg_parser.y" /* yacc.c:1652 */ #line 544 "cfg_parser.y" /* yacc.c:1652 */
{ {
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && if ((yyvsp[0].s) &&
config_param_validate("log-filename", (yyvsp[0].s), cfg, "", config_param_validate("log-filename", (yyvsp[0].s), cfg, "",
yyget_lineno()) != 0) yyget_lineno()) != 0)
YYABORT; YYABORT;
} }
#line 2301 "cfg_parser.c" /* yacc.c:1652 */ #line 2310 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 153: case 155:
#line 549 "cfg_parser.y" /* yacc.c:1652 */ #line 552 "cfg_parser.y" /* yacc.c:1652 */
{ cfg->LOG_LEVEL = (yyvsp[0].i); } { cfg->LOG_LEVEL = (yyvsp[0].i); }
#line 2307 "cfg_parser.c" /* yacc.c:1652 */ #line 2316 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 154: case 156:
#line 551 "cfg_parser.y" /* yacc.c:1652 */ #line 554 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
cfg->SHARED_CACHE = (yyvsp[0].i); cfg->SHARED_CACHE = (yyvsp[0].i);
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2321 "cfg_parser.c" /* yacc.c:1652 */ #line 2330 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 155: case 157:
#line 561 "cfg_parser.y" /* yacc.c:1652 */ #line 564 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-listen", (yyvsp[0 ].s), cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-listen", (yyvsp[0 ].s), cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2338 "cfg_parser.c" /* yacc.c:1652 */ #line 2347 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 156: case 158:
#line 574 "cfg_parser.y" /* yacc.c:1652 */ #line 577 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-peer", (yyvsp[0]. s), cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-peer", (yyvsp[0]. s), cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2355 "cfg_parser.c" /* yacc.c:1652 */ #line 2364 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 157: case 159:
#line 587 "cfg_parser.y" /* yacc.c:1652 */ #line 590 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef USE_SHARED_CACHE #ifdef USE_SHARED_CACHE
/* XXX: passing an empty string for file */ /* XXX: passing an empty string for file */
if ((yyvsp[0].s) && config_param_validate("shared-cache-if", (yyvsp[0].s) , cfg, if ((yyvsp[0].s) && config_param_validate("shared-cache-if", (yyvsp[0].s) , cfg,
"", yyget_lineno()) != 0) "", yyget_lineno()) != 0)
YYABORT; YYABORT;
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache " fprintf(stderr, "Hitch needs to be compiled with --enable-sessioncache "
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2372 "cfg_parser.c" /* yacc.c:1652 */ #line 2381 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 158: case 160:
#line 600 "cfg_parser.y" /* yacc.c:1652 */ #line 603 "cfg_parser.y" /* yacc.c:1652 */
{ {
#ifdef TCP_FASTOPEN_WORKS #ifdef TCP_FASTOPEN_WORKS
{ cfg->TFO = (yyvsp[0].i); }; { cfg->TFO = (yyvsp[0].i); };
#else #else
fprintf(stderr, "Hitch needs to be compiled with --enable-tfo" fprintf(stderr, "Hitch needs to be compiled with --enable-tfo"
"for '%s'", input_line); "for '%s'", input_line);
YYABORT; YYABORT;
#endif #endif
} }
#line 2386 "cfg_parser.c" /* yacc.c:1652 */ #line 2395 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 159: case 161:
#line 610 "cfg_parser.y" /* yacc.c:1652 */ #line 613 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->BACKEND_REFRESH_TIME = (yyvsp[0].i); cfg->BACKEND_REFRESH_TIME = (yyvsp[0].i);
} }
#line 2394 "cfg_parser.c" /* yacc.c:1652 */ #line 2403 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 160: case 162:
#line 614 "cfg_parser.y" /* yacc.c:1652 */ #line 617 "cfg_parser.y" /* yacc.c:1652 */
{ {
if ((yyvsp[0].s)) { if ((yyvsp[0].s)) {
cfg->ECDH_CURVE = strdup((yyvsp[0].s)); cfg->ECDH_CURVE = strdup((yyvsp[0].s));
} }
} }
#line 2404 "cfg_parser.c" /* yacc.c:1652 */ #line 2413 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 162: case 164:
#line 623 "cfg_parser.y" /* yacc.c:1652 */ #line 626 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = SSL_VERIFY_NONE; cur_fa->client_verify = SSL_VERIFY_NONE;
else else
cfg->CLIENT_VERIFY = SSL_VERIFY_NONE; cfg->CLIENT_VERIFY = SSL_VERIFY_NONE;
} }
#line 2415 "cfg_parser.c" /* yacc.c:1652 */ #line 2424 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 163: case 165:
#line 629 "cfg_parser.y" /* yacc.c:1652 */ #line 632 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = SSL_VERIFY_PEER; cur_fa->client_verify = SSL_VERIFY_PEER;
else else
cfg->CLIENT_VERIFY = SSL_VERIFY_PEER; cfg->CLIENT_VERIFY = SSL_VERIFY_PEER;
} }
#line 2426 "cfg_parser.c" /* yacc.c:1652 */ #line 2435 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 164: case 166:
#line 635 "cfg_parser.y" /* yacc.c:1652 */ #line 638 "cfg_parser.y" /* yacc.c:1652 */
{ {
if (cur_fa) if (cur_fa)
cur_fa->client_verify = cur_fa->client_verify =
SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
else else
cfg->CLIENT_VERIFY = cfg->CLIENT_VERIFY =
SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT; SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
} }
#line 2439 "cfg_parser.c" /* yacc.c:1652 */ #line 2448 "cfg_parser.c" /* yacc.c:1652 */
break; break;
case 165: case 167:
#line 644 "cfg_parser.y" /* yacc.c:1652 */ #line 647 "cfg_parser.y" /* yacc.c:1652 */
{ {
cfg->CLIENT_VERIFY_CA = strdup((yyvsp[0].s)); cfg->CLIENT_VERIFY_CA = strdup((yyvsp[0].s));
} }
#line 2447 "cfg_parser.c" /* yacc.c:1652 */ #line 2456 "cfg_parser.c" /* yacc.c:1652 */
break; break;
#line 2451 "cfg_parser.c" /* yacc.c:1652 */ #line 2460 "cfg_parser.c" /* yacc.c:1652 */
default: break; default: break;
} }
/* User semantic actions sometimes alter yychar, and that requires /* User semantic actions sometimes alter yychar, and that requires
that yytoken be updated with the new translation. We take the that yytoken be updated with the new translation. We take the
approach of translating immediately before every use of yytoken. approach of translating immediately before every use of yytoken.
One alternative is translating here after every semantic action, One alternative is translating here after every semantic action,
but that translation would be missed if the semantic action invokes but that translation would be missed if the semantic action invokes
YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
incorrect destructor might then be invoked immediately. In the incorrect destructor might then be invoked immediately. In the
skipping to change at line 2640 skipping to change at line 2649
#ifndef yyoverflow #ifndef yyoverflow
if (yyss != yyssa) if (yyss != yyssa)
YYSTACK_FREE (yyss); YYSTACK_FREE (yyss);
#endif #endif
#if YYERROR_VERBOSE #if YYERROR_VERBOSE
if (yymsg != yymsgbuf) if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg); YYSTACK_FREE (yymsg);
#endif #endif
return yyresult; return yyresult;
} }
#line 648 "cfg_parser.y" /* yacc.c:1918 */ #line 651 "cfg_parser.y" /* yacc.c:1918 */
void void
yyerror(hitch_config *cfg, const char *s) yyerror(hitch_config *cfg, const char *s)
{ {
(void) cfg; (void) cfg;
/* Clean up if FRONTEND_BLK parsing failed */ /* Clean up if FRONTEND_BLK parsing failed */
if (cur_fa != NULL) if (cur_fa != NULL)
FREE_OBJ(cur_fa); FREE_OBJ(cur_fa);
 End of changes. 185 change blocks. 
460 lines changed or deleted 469 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)