2 * Copyright (c) 1997 Joerg Wunsch. All rights reserved.
4 * Copyright (c) 1997, 2002 Hellmuth Michaelis. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 *---------------------------------------------------------------------------
30 * i4b daemon - runtime configuration parser
31 * -----------------------------------------
35 * last edit-date: [Sun Aug 11 12:27:28 2002]
37 *---------------------------------------------------------------------------*/
41 /* #define YYDEBUG 1 */
47 #include "monitor.h" /* monitor access rights bit definitions */
58 extern void cfg_setval(int keyword);
59 extern void cfg_set_controller_default();
60 extern void reset_scanner(FILE *infile);
61 extern void yyerror(const char *msg);
70 int controllercount = -1;
84 %token BUDGETCALLOUTPERIOD
85 %token BUDGETCALLOUTNCALLS
86 %token BUDGETCALLOUTSFILE
87 %token BUDGETCALLOUTSFILEROTATE
88 %token BUDGETCALLBACKPERIOD
89 %token BUDGETCALLBACKNCALLS
90 %token BUDGETCALLBACKSFILE
91 %token BUDGETCALLBACKSFILEROTATE
104 %token DISCONNECTPROG
117 %token ISDNCONTROLLER
121 %token LOCAL_PHONE_DIALOUT
122 %token LOCAL_SUBADDR_DIALOUT
123 %token LOCAL_PHONE_INCOMING
124 %token LOCAL_SUBADDR_INCOMING
128 %token MAXCONNECTTIME
137 %token PPP_AUTH_RECHALLENGE
138 %token PPP_AUTH_PARANOID
139 %token PPP_EXPECT_AUTH
140 %token PPP_EXPECT_NAME
141 %token PPP_EXPECT_PASSWORD
144 %token PPP_SEND_PASSWORD
145 %token PREFIXNATIONAL
146 %token PREFIXINTERNATIONAL
154 %token REMOTE_NUMBERS_HANDLING
155 %token REMOTE_PHONE_DIALOUT
156 %token REMOTE_SUBADDR_DIALOUT
157 %token REMOTE_PHONE_INCOMING
158 %token REMOTE_SUBADDR_INCOMING
175 %token <str> NUMBERSTR
179 %type <booln> boolean
181 %type <num> sysfilekeyword sysnumkeyword sysstrkeyword sysboolkeyword
182 %type <num> filekeyword numkeyword strkeyword boolkeyword monrights monright
183 %type <num> cstrkeyword cfilekeyword
197 sections: possible_nullentries
203 possible_nullentries:
205 | possible_nullentries error '\n'
206 | possible_nullentries nullentry
212 entrysects: entrysect
213 | entrysects entrysect
220 cfg_set_controller_default();
224 controllersects: controllersect
225 | controllersects controllersect
232 syssect: SYSTEM sysentries
238 monitor_clear_rights();
240 | sysentries sysentry
243 sysentry: sysfileentry
255 MONITOR '=' STRING '\n'
258 switch (monitor_start_rights($3)) {
262 err = "local socket name too long: %s";
265 err = "duplicate entry: %s";
268 err = "invalid CIDR specification: %s";
271 err = "could not resolve host or net specification: %s";
276 snprintf(msg, sizeof msg, err, $3);
283 MONITORACCESS '=' monrights '\n'
284 { monitor_add_rights($3); }
287 monrights: monrights ',' monright { $$ = $1 | $3; }
288 | monright { $$ = $1; }
291 monright: FULLCMD { $$ = I4B_CA_COMMAND_FULL; }
292 | RESTRICTEDCMD { $$ = I4B_CA_COMMAND_RESTRICTED; }
293 | CHANNELSTATE { $$ = I4B_CA_EVNT_CHANSTATE; }
294 | CALLIN { $$ = I4B_CA_EVNT_CALLIN; }
295 | CALLOUT { $$ = I4B_CA_EVNT_CALLOUT; }
296 | LOGEVENTS { $$ = I4B_CA_EVNT_I4B; }
299 sysfileentry: sysfilekeyword '=' filename '\n'
305 sysboolentry: sysboolkeyword '=' boolean '\n'
312 sysnumentry: sysnumkeyword '=' NUMBERSTR '\n'
314 yylval.num = atoi($3);
319 sysstrentry: sysstrkeyword '=' STRING '\n'
323 | sysstrkeyword '=' NUMBERSTR '\n'
332 yyerror("filename doesn't start with a slash");
339 boolean: NO { $$ = FALSE; }
340 | OFF { $$ = FALSE; }
345 sysfilekeyword: RATESFILE { $$ = RATESFILE; }
346 | ACCTFILE { $$ = ACCTFILE; }
347 | ALIASFNAME { $$ = ALIASFNAME; }
348 | HOLIDAYFILE { $$ = HOLIDAYFILE; }
349 | TINAINITPROG { $$ = TINAINITPROG; }
352 sysboolkeyword: USEACCTFILE { $$ = USEACCTFILE; }
353 | ALIASING { $$ = ALIASING; }
354 | ACCTALL { $$ = ACCTALL; }
355 | ADDPREFIX { $$ = ADDPREFIX; }
356 | BEEPCONNECT { $$ = BEEPCONNECT; }
357 | EXTCALLATTR { $$ = EXTCALLATTR; }
358 | ISDNTIME { $$ = ISDNTIME; }
359 | MONITORSW { $$ = MONITORSW; }
362 sysnumkeyword: MONITORPORT { $$ = MONITORPORT; }
363 | RTPRIO { $$ = RTPRIO; }
366 sysstrkeyword: MAILER { $$ = MAILER; }
367 | MAILTO { $$ = MAILTO; }
368 | PREFIXNATIONAL { $$ = PREFIXNATIONAL; }
369 | PREFIXINTERNATIONAL { $$ = PREFIXINTERNATIONAL; }
370 | ROTATESUFFIX { $$ = ROTATESUFFIX; }
371 | REGEXPR { $$ = REGEXPR; }
372 | REGPROG { $$ = REGPROG; }
399 fileentry: filekeyword '=' filename '\n'
406 strentry: strkeyword '=' STRING '\n'
410 | strkeyword '=' NUMBERSTR '\n'
416 boolentry: boolkeyword '=' boolean '\n'
423 numentry: numkeyword '=' NUMBERSTR '\n'
425 yylval.num = atoi($3);
430 filekeyword: BUDGETCALLBACKSFILE { $$ = BUDGETCALLBACKSFILE; }
431 | BUDGETCALLOUTSFILE { $$ = BUDGETCALLOUTSFILE; }
434 strkeyword: ANSWERPROG { $$ = ANSWERPROG; }
435 | B1PROTOCOL { $$ = B1PROTOCOL; }
436 | BCAP { $$ = BCAP; }
437 | CONNECTPROG { $$ = CONNECTPROG; }
438 | DIALOUTTYPE { $$ = DIALOUTTYPE; }
439 | DIRECTION { $$ = DIRECTION; }
440 | DISCONNECTPROG { $$ = DISCONNECTPROG; }
441 | IDLE_ALG_OUT { $$ = IDLE_ALG_OUT; }
442 | LOCAL_PHONE_INCOMING { $$ = LOCAL_PHONE_INCOMING; }
443 | LOCAL_SUBADDR_INCOMING { $$ = LOCAL_SUBADDR_INCOMING; }
444 | LOCAL_PHONE_DIALOUT { $$ = LOCAL_PHONE_DIALOUT; }
445 | LOCAL_SUBADDR_DIALOUT { $$ = LOCAL_SUBADDR_DIALOUT; }
446 | NAME { $$ = NAME; }
447 | PPP_EXPECT_AUTH { $$ = PPP_EXPECT_AUTH; }
448 | PPP_EXPECT_NAME { $$ = PPP_EXPECT_NAME; }
449 | PPP_EXPECT_PASSWORD { $$ = PPP_EXPECT_PASSWORD; }
450 | PPP_SEND_AUTH { $$ = PPP_SEND_AUTH; }
451 | PPP_SEND_NAME { $$ = PPP_SEND_NAME; }
452 | PPP_SEND_PASSWORD { $$ = PPP_SEND_PASSWORD; }
453 | REACTION { $$ = REACTION; }
454 | REMOTE_NUMBERS_HANDLING { $$ = REMOTE_NUMBERS_HANDLING; }
455 | REMOTE_PHONE_INCOMING { $$ = REMOTE_PHONE_INCOMING; }
456 | REMOTE_SUBADDR_INCOMING { $$ = REMOTE_SUBADDR_INCOMING; }
457 | REMOTE_PHONE_DIALOUT { $$ = REMOTE_PHONE_DIALOUT; }
458 | REMOTE_SUBADDR_DIALOUT { $$ = REMOTE_SUBADDR_DIALOUT; }
459 | UNITLENGTHSRC { $$ = UNITLENGTHSRC; }
460 | USRDEVICENAME { $$ = USRDEVICENAME; }
461 | VALID { $$ = VALID; }
462 | CLONE { $$ = CLONE; }
465 numkeyword: ALERT { $$ = ALERT; }
466 | BUDGETCALLBACKPERIOD { $$ = BUDGETCALLBACKPERIOD; }
467 | BUDGETCALLBACKNCALLS { $$ = BUDGETCALLBACKNCALLS; }
468 | BUDGETCALLOUTPERIOD { $$ = BUDGETCALLOUTPERIOD; }
469 | BUDGETCALLOUTNCALLS { $$ = BUDGETCALLOUTNCALLS; }
470 | CALLBACKWAIT { $$ = CALLBACKWAIT; }
471 | CALLEDBACKWAIT { $$ = CALLEDBACKWAIT; }
472 | DIALRETRIES { $$ = DIALRETRIES; }
473 | EARLYHANGUP { $$ = EARLYHANGUP; }
474 | IDLETIME_IN { $$ = IDLETIME_IN; }
475 | IDLETIME_OUT { $$ = IDLETIME_OUT; }
476 | ISDNCONTROLLER { $$ = ISDNCONTROLLER; }
477 | ISDNCHANNEL { $$ = ISDNCHANNEL; }
478 | ISDNTXDELIN { $$ = ISDNTXDELIN; }
479 | ISDNTXDELOUT { $$ = ISDNTXDELOUT; }
480 | RATETYPE { $$ = RATETYPE; }
481 | RECOVERYTIME { $$ = RECOVERYTIME; }
482 | UNITLENGTH { $$ = UNITLENGTH; }
483 | USRDEVICEUNIT { $$ = USRDEVICEUNIT; }
484 | DOWNTIME { $$ = DOWNTIME; }
485 | DOWNTRIES { $$ = DOWNTRIES; }
486 | MAXCONNECTTIME { $$ = MAXCONNECTTIME; }
489 boolkeyword: BUDGETCALLBACKSFILEROTATE { $$ = BUDGETCALLBACKSFILEROTATE; }
490 | BUDGETCALLOUTSFILEROTATE { $$ = BUDGETCALLOUTSFILEROTATE; }
491 | DIALRANDINCR { $$ = DIALRANDINCR; }
492 | PPP_AUTH_RECHALLENGE { $$ = PPP_AUTH_RECHALLENGE; }
493 | PPP_AUTH_PARANOID { $$ = PPP_AUTH_PARANOID; }
494 | USEDOWN { $$ = USEDOWN; }
495 | USESUBADDR { $$ = USESUBADDR; }
498 /* ================== */
499 /* controller section */
500 /* ================== */
502 controllersect: CONTROLLER
509 controllers: controller
510 | controllers controller
513 controller: strcontroller
518 strcontroller: cstrkeyword '=' STRING '\n'
522 | cstrkeyword '=' NUMBERSTR '\n'
526 | cfilekeyword '=' filename '\n'
532 cstrkeyword: PROTOCOL { $$ = PROTOCOL; }
535 cfilekeyword: FIRMWARE { $$ = FIRMWARE; }