annotate extensions/app_acct/acct_conf.y @ 1281:ab6457399be2 1.2.1-rc1

Updated copyright information
author Sebastien Decugis <sdecugis@freediameter.net>
date Sat, 03 Jan 2015 02:23:28 +0800
parents 25fad6714991
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1 /*********************************************************************************************************
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
740
4a9f08d6b6ba Updated my mail address
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 528
diff changeset
3 * Author: Sebastien Decugis <sdecugis@freediameter.net> *
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
4 * *
1281
ab6457399be2 Updated copyright information
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1268
diff changeset
5 * Copyright (c) 2015, WIDE Project and NICT *
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
6 * All rights reserved. *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
7 * *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without modification, are *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
10 * *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
13 * following disclaimer. *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
14 * *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
18 * materials provided with the distribution. *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
19 * *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
22 * promote products derived from this software without *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
24 * NICT. *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
25 * *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
34 *********************************************************************************************************/
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
35
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
36 /* Yacc extension's configuration parser.
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
37 * See doc/app_acct.conf.sample for configuration file format
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
38 */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
39
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
40 /* For development only : */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
41 %debug
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
42 %error-verbose
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
43
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
44 /* The parser receives the configuration file filename as parameter */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
45 %parse-param {char * conffile}
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
46
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
47 /* Keep track of location */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
48 %locations
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
49 %pure-parser
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
50
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
51 %{
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
52 #include "app_acct.h"
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
53 #include "acct_conf.tab.h"
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
54
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
55 #include <string.h>
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
56 #include <errno.h>
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
57
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
58 /* Forward declaration */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
59 int yyparse(char * conffile);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
60
403
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
61 /* The Lex parser prototype */
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
62 int acct_conflex(YYSTYPE *lvalp, YYLTYPE *llocp);
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
63
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
64 /* the global configuration */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
65 struct acct_conf * acct_config = NULL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
66
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
67 /* Initialize the blank configuration structure */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
68 int acct_conf_init(void)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
69 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
70 TRACE_ENTRY();
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
71
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
72 CHECK_MALLOC( acct_config = malloc(sizeof(struct acct_conf)) );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
73 memset(acct_config, 0, sizeof(struct acct_conf) );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
74 fd_list_init(&acct_config->avps, NULL);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
75
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
76 return 0;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
77 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
78
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
79 /* Validate and eventually display the content of the configuration file for debug */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
80 int acct_conf_check(char * conffile)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
81 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
82 CHECK_PARAMS(acct_config);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
83
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
84 if ( ! acct_config->conninfo) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
85 fd_log_debug("[app_acct] ERROR: 'ConnInfo' is missing in file '%s'."
979
b90cb4c07160 Remove more newlines.
Thomas Klausner <tk@giga.or.at>
parents: 974
diff changeset
86 " You can specify 'ConnInfo=\"\";' to use default parameters.", conffile);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
87 return EINVAL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
88 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
89 if ( ! acct_config->tablename) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
90 fd_log_debug("[app_acct] ERROR: 'Table' value is missing in file '%s'.", conffile);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
91 return EINVAL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
92 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
93
403
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
94 if (!TRACE_BOOL(FULL))
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
95 return 0;
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
96
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
97 struct fd_list * li;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
98
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
99 fd_log_debug("[app_acct] Configuration dump:");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
100 fd_log_debug(" Database:");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
101 fd_log_debug(" ConnInfo ...... : '%s'", acct_config->conninfo ?: "<null>");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
102 fd_log_debug(" Table name .... : '%s'", acct_config->tablename ?: "<null>");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
103 fd_log_debug(" Timestamp field : '%s'", acct_config->tsfield ?: "<null>");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
104 fd_log_debug(" Server name fld : '%s'", acct_config->srvnfield ?: "<null>");
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
105 fd_log_debug(" AVPs that will be saved to the database:");
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
106 for (li = acct_config->avps.next; li != &acct_config->avps; li = li->next) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
107 struct acct_conf_avp * a = (struct acct_conf_avp *)li;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
108 fd_log_debug(" %-*s AVP%s saved in ", 30, a->avpname, a->required ? " [required]":"" );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
109 if (a->multi) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
110 fd_log_debug("fields '%s[1..%d]' ", a->field?:a->avpname, a->multi);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
111 } else {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
112 fd_log_debug("field '%s' ", a->field?:a->avpname);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
113 }
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
114 fd_log_debug("as ::%s", diam2db_types_mapping[a->avptype]);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
115 }
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
116 fd_log_debug("[app_acct] Complete.");
403
26aafbbc1640 Cleanup all compilation warnings in base code for 32 bit arch
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 284
diff changeset
117 return 0;
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
118 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
119
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
120 void acct_conf_free(void)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
121 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
122 TRACE_ENTRY();
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
123
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
124 if (!acct_config)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
125 return;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
126
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
127 /* Destroy the list */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
128 while (!FD_IS_LIST_EMPTY(&acct_config->avps)) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
129 struct acct_conf_avp * a = (struct acct_conf_avp *)(acct_config->avps.next);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
130 fd_list_unlink(&a->chain);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
131 free(a->avpname);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
132 free(a->field);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
133 free(a);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
134 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
135
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
136 /* destroy other data */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
137 free(acct_config->conninfo);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
138 free(acct_config->tablename);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
139 free(acct_config->tsfield);
528
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
140 free(acct_config->srvnfield);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
141
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
142 /* Done */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
143 free(acct_config);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
144 acct_config = NULL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
145 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
146
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
147 /* Parse the configuration file */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
148 int acct_conf_parse(char * conffile)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
149 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
150 extern FILE * acct_confin;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
151 int ret;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
152
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
153 TRACE_ENTRY("%p", conffile);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
154
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
155 TRACE_DEBUG (FULL, "Parsing configuration file: %s...", conffile);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
156
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
157 acct_confin = fopen(conffile, "r");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
158 if (acct_confin == NULL) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
159 ret = errno;
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 808
diff changeset
160 fd_log_debug("Unable to open extension configuration file %s for reading: %s", conffile, strerror(ret));
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
161 return ret;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
162 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
163
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
164 ret = yyparse(conffile);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
165
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
166 fclose(acct_confin);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
167
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
168 if (ret != 0) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
169 TRACE_DEBUG (INFO, "Unable to parse the configuration file.");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
170 return EINVAL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
171 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
172
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
173 return 0;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
174 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
175
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
176 /* Function to report the errors */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
177 void yyerror (YYLTYPE *ploc, char * conffile, char const *s)
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
178 {
1264
abf1e51047a1 Display errors in app_acct at error level
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1127
diff changeset
179 LOG_E( "Error in configuration parsing");
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
180
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
181 if (ploc->first_line != ploc->last_line)
1264
abf1e51047a1 Display errors in app_acct at error level
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1127
diff changeset
182 LOG_E("%s:%d.%d-%d.%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_line, ploc->last_column, s);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
183 else if (ploc->first_column != ploc->last_column)
1264
abf1e51047a1 Display errors in app_acct at error level
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1127
diff changeset
184 LOG_E("%s:%d.%d-%d : %s", conffile, ploc->first_line, ploc->first_column, ploc->last_column, s);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
185 else
1264
abf1e51047a1 Display errors in app_acct at error level
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1127
diff changeset
186 LOG_E("%s:%d.%d : %s", conffile, ploc->first_line, ploc->first_column, s);
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
187 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
188
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
189 static struct acct_conf_avp avpdata;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
190
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
191 %}
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
192
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
193 /* Values returned by lex for token */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
194 %union {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
195 char *string; /* The string is allocated by strdup in lex.*/
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
196 int integer; /* Store integer values */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
197 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
198
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
199 /* In case of error in the lexical analysis */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
200 %token LEX_ERROR
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
201
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
202 /* Keywords */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
203 %token FIELD
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
204 %token REQUIRED
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
205 %token MULTI
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
206 %token CONNINFO
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
207 %token TABLE
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
208 %token TSFIELD
528
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
209 %token SRVNFIELD
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
210
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
211 /* Tokens and types */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
212 /* A (de)quoted string (malloc'd in lex parser; it must be freed after use) */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
213 %token <string> QSTRING
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
214
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
215 /* An integer value */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
216 %token <integer> INTEGER
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
217
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
218
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
219
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
220 /* -------------------------------------- */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
221 %%
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
222
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
223 /* The grammar definition */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
224 conffile: /* empty grammar is OK for the parser (will be validated afterwards) */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
225 | conffile avpline
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
226 | conffile conninfoline
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
227 | conffile tableline
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
228 | conffile tsfieldline
528
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
229 | conffile srvnfieldline
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
230 | conffile errors
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
231 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
232 yyerror(&yylloc, conffile, "An error occurred while parsing the configuration file.");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
233 return EINVAL;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
234 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
235 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
236
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
237 /* Catch lexical and syntax errors */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
238 errors: LEX_ERROR
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
239 | error
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
240 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
241
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
242 /* The tokens */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
243 avpline: {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
244 memset(&avpdata, 0, sizeof(struct acct_conf_avp));
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
245 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
246 QSTRING avpcontents ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
247 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
248 struct acct_conf_avp *new;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
249 struct dict_object * dict;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
250 struct dict_avp_data dictdata;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
251
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
252 /* Validate the avp name first */
762
513edd0d31b9 Enable vendor AVPs in app_acct
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 741
diff changeset
253 CHECK_FCT_DO( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME_ALL_VENDORS, $2, &dict, ENOENT),
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
254 { yyerror (&yylloc, conffile, "AVP definition not found in the dictionary. Was the appropriate dict_*.fdx extension loaded?"); YYERROR; } );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
255 CHECK_FCT( fd_dict_getval( dict, &dictdata ));
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
256
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
257 /* Create a new entry */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
258 CHECK_MALLOC_DO( new = malloc(sizeof(struct acct_conf_avp)),
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
259 { yyerror (&yylloc, conffile, "Out of memory"); YYERROR; } );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
260
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
261 /* Retrieve all the data from avpcontents parsing (field, required, multi) */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
262 memcpy(new, &avpdata, sizeof(struct acct_conf_avp));
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
263
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
264 /* Initialize the other data */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
265 fd_list_init(&new->chain, NULL);
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
266 new->avpname = $2;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
267 new->avpobj = dict;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
268 new->avptype = dictdata.avp_basetype;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
269
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
270 /* Add this new entry at the end of the list */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
271 fd_list_insert_before( &acct_config->avps, &new->chain );
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
272 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
273 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
274
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
275 avpcontents: /* Empty content is fine */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
276 | '=' '{' avpflagline '}'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
277 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
278
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
279 avpflagline: /* Empty flags is also fine */
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
280 | avpflagline FIELD '=' QSTRING ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
281 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
282 if (avpdata.field) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
283 yyerror (&yylloc, conffile, "Duplicate entry");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
284 YYERROR;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
285 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
286 avpdata.field = $4;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
287 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
288 | avpflagline REQUIRED ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
289 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
290 avpdata.required = 1;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
291 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
292 | avpflagline MULTI '=' INTEGER ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
293 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
294 avpdata.multi = (unsigned) $4;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
295 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
296 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
297
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
298 conninfoline: CONNINFO '=' QSTRING ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
299 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
300 if (acct_config->conninfo) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
301 yyerror (&yylloc, conffile, "Duplicate entry");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
302 YYERROR;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
303 }
796
514c898fb99c Fix compilation warning
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 762
diff changeset
304 acct_config->conninfo = $3;
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
305 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
306 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
307
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
308 tableline: TABLE '=' QSTRING ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
309 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
310 if (acct_config->tablename) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
311 yyerror (&yylloc, conffile, "Duplicate entry");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
312 YYERROR;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
313 }
796
514c898fb99c Fix compilation warning
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 762
diff changeset
314 acct_config->tablename = $3;
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
315 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
316 ;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
317
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
318 tsfieldline: TSFIELD '=' QSTRING ';'
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
319 {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
320 if (acct_config->tsfield) {
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
321 yyerror (&yylloc, conffile, "Duplicate entry");
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
322 YYERROR;
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
323 }
796
514c898fb99c Fix compilation warning
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 762
diff changeset
324 acct_config->tsfield = $3;
284
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
325 }
397cdcd41f53 New app_acct in progress, backup only
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
326 ;
528
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
327
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
328 srvnfieldline: SRVNFIELD '=' QSTRING ';'
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
329 {
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
330 if (acct_config->srvnfield) {
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
331 yyerror (&yylloc, conffile, "Duplicate entry");
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
332 YYERROR;
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
333 }
796
514c898fb99c Fix compilation warning
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 762
diff changeset
334 acct_config->srvnfield = $3;
528
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
335 }
1b3b9790e7cb Add a new field in the app_acct.fdx database to receive the name of the local server.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 403
diff changeset
336 ;
"Welcome to our mercurial repository"