annotate freeDiameterd/main.c @ 1554:566bb46cc73f

Updated copyright information
author Sebastien Decugis <sdecugis@freediameter.net>
date Tue, 06 Oct 2020 21:34:53 +0800
parents 32f158d0d859
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1 /*********************************************************************************************************
13530e1f02e3 Initial files imported
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: 683
diff changeset
3 * Author: Sebastien Decugis <sdecugis@freediameter.net> *
0
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
4 * *
1554
566bb46cc73f Updated copyright information
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1450
diff changeset
5 * Copyright (c) 2020, WIDE Project and NICT *
0
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
6 * All rights reserved. *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
7 * *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
10 * *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
13 * following disclaimer. *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
14 * *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
18 * materials provided with the distribution. *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
19 * *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
22 * promote products derived from this software without *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
24 * NICT. *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
25 * *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
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 *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
34 *********************************************************************************************************/
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
35
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
36 #if defined(__GLIBC__)
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
37 #define _BSD_SOURCE /* for vsyslog */
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
38 #endif
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
39
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
40 #include <freeDiameter/freeDiameter-host.h>
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
41 #include <freeDiameter/libfdcore.h>
0
13530e1f02e3 Initial files imported
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
42
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
43 #include <signal.h>
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
44 #include <getopt.h>
16
013ce9851131 Started including TLS code
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 14
diff changeset
45 #include <locale.h>
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
46 #include <syslog.h>
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
47 #include <stdarg.h>
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
48 #include <stdio.h>
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
49 #include <stdlib.h>
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
50 #include <string.h>
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
51 #include <unistd.h>
16
013ce9851131 Started including TLS code
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 14
diff changeset
52
10
c5c99c73c2bf Added some extensions and functions in the daemon
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 9
diff changeset
53 /* forward declarations */
c5c99c73c2bf Added some extensions and functions in the daemon
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 9
diff changeset
54 static int main_cmdline(int argc, char *argv[]);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
55 static void * catch_signals(void * arg);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
56 static pthread_t signals_thr;
213
890a9b6379f0 Fix initialization order for gnutls
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 212
diff changeset
57
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
58 static char *conffile = NULL;
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
59 static int daemon_mode = 0;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
60 static int gnutls_debug = 0;
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
61 static char *pidfile = NULL;
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
62
501
e5f06199cee7 New command-line option to enable GNUTLS debugging
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 453
diff changeset
63 /* gnutls debug */
e5f06199cee7 New command-line option to enable GNUTLS debugging
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 453
diff changeset
64 static void fd_gnutls_debug(int level, const char * str) {
e5f06199cee7 New command-line option to enable GNUTLS debugging
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 453
diff changeset
65 fd_log_debug(" [gnutls:%d] %s", level, str);
e5f06199cee7 New command-line option to enable GNUTLS debugging
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 453
diff changeset
66 }
e5f06199cee7 New command-line option to enable GNUTLS debugging
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 453
diff changeset
67
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
68 static void pidfile_cleanup(void)
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
69 {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
70 if (pidfile != NULL) {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
71 LOG_I("Removing pidfile '%s'", pidfile);
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
72 CHECK_SYS_DO( unlink(pidfile), /* ignore */ );
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
73 pidfile = NULL;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
74 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
75 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
76
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
77 static int pidfile_create(void)
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
78 {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
79 if (pidfile == NULL) {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
80 return 0;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
81 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
82
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
83 /* Create pidfile */
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
84 FILE * fp = fopen(pidfile, "w");
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
85 if (fp == NULL) {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
86 int ret = errno;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
87 LOG_F("Unable to write pidfile '%s'; Error: %s",
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
88 pidfile, strerror(ret));
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
89 pidfile = NULL; /* disable pidfile_cleanup() */
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
90 return ret;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
91 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
92
1450
32f158d0d859 Fix typo in comment.
Thomas Klausner <tk@giga.or.at>
parents: 1412
diff changeset
93 /* Cleanup pidfile on exit */
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
94 if (atexit(pidfile_cleanup) != 0) {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
95 LOG_F("Unable to setup pidfile cleanup");
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
96 CHECK_SYS( fclose(fp) );
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
97 pidfile_cleanup();
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
98 return EINVAL;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
99 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
100
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
101 /* Write the pid and close pidfile */
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
102 fprintf(fp, "%d\n", getpid());
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
103 CHECK_SYS_DO( fclose(fp), { pidfile_cleanup(); return __ret__; } );
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
104
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
105 LOG_I("Created pidfile '%s'", pidfile);
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
106 return 0;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
107 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
108
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
109
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
110 static void syslog_logger(int loglevel, const char * format, va_list args)
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
111 {
1409
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
112 if (loglevel < fd_g_debug_lvl) {
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
113 return;
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
114 }
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
115
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
116 int level;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
117
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
118 switch (loglevel) {
1407
d4a4ab5239c7 add log level FD_LOG_INFO
Luke Mewburn <luke@mewburn.net>
parents: 1389
diff changeset
119 case FD_LOG_INFO:
d4a4ab5239c7 add log level FD_LOG_INFO
Luke Mewburn <luke@mewburn.net>
parents: 1389
diff changeset
120 level = LOG_INFO;
d4a4ab5239c7 add log level FD_LOG_INFO
Luke Mewburn <luke@mewburn.net>
parents: 1389
diff changeset
121 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
122 case FD_LOG_NOTICE:
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
123 level = LOG_NOTICE;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
124 break;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
125 case FD_LOG_ERROR:
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
126 level = LOG_ERR;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
127 break;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
128 case FD_LOG_FATAL:
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
129 level = LOG_CRIT;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
130 break;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
131 default:
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
132 /* fallthrough */
1409
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
133 case FD_LOG_ANNOYING:
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
134 case FD_LOG_DEBUG:
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
135 level = LOG_DEBUG;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
136 break;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
137 }
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
138
1409
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
139 vsyslog(level | LOG_DAEMON, format, args);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
140 }
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
141
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
142
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
143 /* freeDiameter starting point */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
144 int main(int argc, char * argv[])
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
145 {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
146 int ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
147 sigset_t sig_all;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
148
683
d59effdf5256 Improve management of the signals in freeDiameterd
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 662
diff changeset
149 /* Block all signals from the current thread and all its future children -- we will catch everything in catch_signals */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
150 sigfillset(&sig_all);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
151 ret = pthread_sigmask(SIG_BLOCK, &sig_all, NULL);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
152 ASSERT(ret == 0);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
153
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
154 /* Parse the command-line */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
155 ret = main_cmdline(argc, argv);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
156 if (ret != 0) {
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
157 return EXIT_FAILURE;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
158 }
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
159
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
160 if (daemon_mode) {
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
161 TRACE_DEBUG(INFO, "entering background mode");
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
162 CHECK_SYS_DO( daemon(1, 0), return EXIT_FAILURE );
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
163 }
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
164
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
165 CHECK_FCT_DO( pidfile_create(), return EXIT_FAILURE );
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
166
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
167 /* Initialize the core library */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
168 ret = fd_core_initialize();
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
169 if (ret != 0) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
170 fprintf(stderr, "An error occurred during freeDiameter core library initialization.\n");
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
171 return EXIT_FAILURE;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
172 }
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
173
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
174 /* Set gnutls debug level ? */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
175 if (gnutls_debug) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
176 gnutls_global_set_log_function((gnutls_log_func)fd_gnutls_debug);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
177 gnutls_global_set_log_level (gnutls_debug);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
178 TRACE_DEBUG(INFO, "Enabled GNUTLS debug at level %d", gnutls_debug);
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
179 }
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
180
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
181 /* Parse the configuration file */
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
182 CHECK_FCT_DO( fd_core_parseconf(conffile), goto error );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
183
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
184 /* Start the servers */
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
185 CHECK_FCT_DO( fd_core_start(), goto error );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
186
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
187 /* Allow SIGINT and SIGTERM from this point to terminate the application */
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
188 CHECK_POSIX_DO( pthread_create(&signals_thr, NULL, catch_signals, NULL), goto error );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
189
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
190 TRACE_DEBUG(INFO, FD_PROJECT_BINARY " daemon initialized.");
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
191
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
192 /* Now, just wait for termination */
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
193 CHECK_FCT_DO( fd_core_wait_shutdown_complete(), return EXIT_FAILURE );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
194
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
195 /* Just in case it was not the result of a signal, we cancel signals_thr */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
196 fd_thr_term(&signals_thr);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
197
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
198 return EXIT_SUCCESS;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
199 error:
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
200 CHECK_FCT_DO( fd_core_shutdown(), );
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
201 CHECK_FCT_DO( fd_core_wait_shutdown_complete(), return EXIT_FAILURE );
1182
cc96a4dfb3d1 Early shutdown situation: detect the race condition and delay the shutdown in freeDiameterd. Alternative would be to initialize in a separate thread that we can cancel before calling shutdown.
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1159
diff changeset
202 fd_thr_term(&signals_thr);
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
203 return EXIT_FAILURE;
14
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
204 }
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
205
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
206
14
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
207 /* Display package version */
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
208 static void main_version_core(void)
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
209 {
1159
05f74dc19c49 Include source rev number in version information when available
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1134
diff changeset
210 printf("%s, version %s\n", FD_PROJECT_NAME, fd_core_version);
14
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
211 }
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
212
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
213 /* Display package version and general info */
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
214 static void main_version(void)
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
215 {
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
216 main_version_core();
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
217 printf( "%s\n", FD_PROJECT_COPYRIGHT);
335
603791d2dcc4 Updated website information
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 304
diff changeset
218 printf( "\nSee " FD_PROJECT_NAME " homepage at http://www.freediameter.net/\n"
14
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
219 " for information, updates and bug reports on this software.\n");
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
220 }
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
221
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
222 /* Print command-line options */
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
223 static void main_help( void )
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
224 {
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
225 main_version_core();
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
226 printf( " This daemon is an implementation of the Diameter protocol\n"
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
227 " used for Authentication, Authorization, and Accounting (AAA).\n");
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
228 printf("\nUsage: " FD_PROJECT_BINARY " [OPTIONS]...\n");
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
229 printf( " -h, --help Print help and exit\n"
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
230 " -V, --version Print version and exit\n"
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
231 " -c, --config=filename Read configuration from this file instead of the \n"
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
232 " default location (" DEFAULT_CONF_PATH "/" FD_DEFAULT_CONF_FILENAME ")\n"
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
233 " -D, --daemon Start program in background\n"
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
234 " -p, --pidfile=filename Write PID to filename\n"
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
235 " -s, --syslog Write log output to syslog (instead of stdout)\n");
14
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
236 printf( "\nDebug:\n"
14cf6daf716d Some progress on peers module
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 13
diff changeset
237 " These options are mostly useful for developers\n"
1409
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
238 " -d, --debug Increase verbosity of log messages\n"
1134
51ce5a30df2d Fix the dbg_func and dbg_file parameters
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1088
diff changeset
239 " -f, --dbg_func <func> Enable all traces within the function <func>\n"
51ce5a30df2d Fix the dbg_func and dbg_file parameters
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1088
diff changeset
240 " -F, --dbg_file <file.c> Enable all traces within the file <file.c> (basename match)\n"
1408
23e224d22f45 freeDiameterd: add -g to help
Luke Mewburn <luke@mewburn.net>
parents: 1407
diff changeset
241 " -g, --dbg_gnutls <int> Enable GNU TLS debug at level <int>\n"
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
242 " -l, --dbglocale Set the locale for error messages\n"
1409
cbd9dbc85476 freeDiameter: improve syslog logging
Luke Mewburn <luke@mewburn.net>
parents: 1408
diff changeset
243 " -q, --quiet Decrease verbosity of log messages\n"
1134
51ce5a30df2d Fix the dbg_func and dbg_file parameters
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1088
diff changeset
244 );
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
245 }
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
246
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
247 /* Parse the command-line */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
248 static int main_cmdline(int argc, char *argv[])
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
249 {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
250 int c;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
251 int option_index = 0;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
252 char * locale;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
253
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
254 struct option long_options[] = {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
255 { "help", no_argument, NULL, 'h' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
256 { "version", no_argument, NULL, 'V' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
257 { "config", required_argument, NULL, 'c' },
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
258 { "syslog", no_argument, NULL, 's' },
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
259 { "daemon", no_argument, NULL, 'D' },
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
260 { "pidfile", required_argument, NULL, 'p' },
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
261 { "debug", no_argument, NULL, 'd' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
262 { "quiet", no_argument, NULL, 'q' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
263 { "dbglocale", optional_argument, NULL, 'l' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
264 { "dbg_func", required_argument, NULL, 'f' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
265 { "dbg_file", required_argument, NULL, 'F' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
266 { "dbg_gnutls", required_argument, NULL, 'g' },
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
267 { NULL, 0, NULL, 0 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
268 };
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
269
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
270 /* Loop on arguments */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
271 while (1) {
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
272 c = getopt_long (argc, argv, "hVc:Dp:dql:f:F:g:s", long_options, &option_index);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
273 if (c == -1)
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
274 break; /* Exit from the loop. */
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
275
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
276 switch (c) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
277 case 'h': /* Print help and exit. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
278 main_help();
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
279 exit(EXIT_SUCCESS);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
280
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
281 case 'V': /* Print version and exit. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
282 main_version();
1412
4768e3bf1c9b freeDiameter: use standard exit codes
Luke Mewburn <luke@mewburn.net>
parents: 1411
diff changeset
283 exit(EXIT_SUCCESS);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
284
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
285 case 'c': /* Read configuration from this file instead of the default location.. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
286 if (optarg == NULL ) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
287 fprintf(stderr, "Missing argument with --config directive\n");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
288 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
289 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
290 conffile = optarg;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
291 break;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
292
1389
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
293 case 'D':
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
294 daemon_mode = 1;
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
295 break;
de90cf7f381e freeDiameterd: add background (daemon) mode
Thomas Klausner <tk@giga.or.at>
parents: 1339
diff changeset
296
1410
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
297 case 'p': /* Write pidfile */
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
298 if (optarg == NULL ) {
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
299 fprintf(stderr, "Missing argument with --pidfile directive\n");
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
300 return EINVAL;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
301 }
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
302 pidfile = optarg;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
303 break;
4ddd4dcd6bb6 freeDiameterd: add pidfile support
Luke Mewburn <luke@mewburn.net>
parents: 1409
diff changeset
304
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
305 case 'l': /* Change the locale. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
306 locale = setlocale(LC_ALL, optarg?:"");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
307 if (!locale) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
308 fprintf(stderr, "Unable to set locale (%s)\n", optarg);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
309 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
310 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
311 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
312
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
313 case 'd': /* Increase verbosity of debug messages. */
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1081
diff changeset
314 fd_g_debug_lvl--;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
315 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
316
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
317 case 'f': /* Full debug for the function with this name. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
318 #ifdef DEBUG
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
319 fd_debug_one_function = optarg;
1303
090390e89b1d Fix --dbg-file and --dbg-function usage. However there is something weird on MacOS X still...
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1302
diff changeset
320 fd_g_debug_lvl = FD_LOG_DEBUG;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
321 #else /* DEBUG */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
322 fprintf(stderr, "Error: must compile with DEBUG support to use --dbg_func feature!\n");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
323 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
324 #endif /* DEBUG */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
325 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
326
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
327 case 'F': /* Full debug for the file with this name. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
328 #ifdef DEBUG
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
329 fd_debug_one_file = basename(optarg);
1303
090390e89b1d Fix --dbg-file and --dbg-function usage. However there is something weird on MacOS X still...
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1302
diff changeset
330 fd_g_debug_lvl = FD_LOG_DEBUG;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
331 #else /* DEBUG */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
332 fprintf(stderr, "Error: must compile with DEBUG support to use --dbg_file feature!\n");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
333 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
334 #endif /* DEBUG */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
335 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
336
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
337 case 'g': /* Set a debug level and function for GNU TLS calls. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
338 gnutls_debug = (int)atoi(optarg);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
339 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
340
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
341 case 'q': /* Decrease verbosity then remove debug messages. */
1088
1d1a20a0779d Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1081
diff changeset
342 fd_g_debug_lvl++;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
343 break;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
344
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
345 case 's': /* Write log data using syslog(3) */
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
346 if (fd_log_handler_register(syslog_logger) != 0) {
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
347 fprintf(stderr, "Cannot initialize syslog logger\n");
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
348 return EINVAL;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
349 }
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
350 break;
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
351
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
352 case '?': /* Invalid option. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
353 /* `getopt_long' already printed an error message. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
354 fprintf(stderr, "getopt_long found an invalid character\n");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
355 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
356
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
357 default: /* bug: option not considered. */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
358 fprintf(stderr, "A command-line option is missing in parser: %c\n", c);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
359 ASSERT(0);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
360 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
361 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
362 }
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
363
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
364 return 0;
8
3e143f047f78 Backup for the week-end
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 3
diff changeset
365 }
628
e1c6f45f5fcd Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 502
diff changeset
366
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
367 /* Handle some signals */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
368 static void * catch_signals(void * arg)
628
e1c6f45f5fcd Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 502
diff changeset
369 {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
370 sigset_t ss;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
371 fd_log_threadname ( "signals catcher" );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
372
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
373 sigemptyset(&ss);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
374
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
375 /* Signals that terminate the daemon */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
376 sigaddset(&ss, SIGTERM);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
377 sigaddset(&ss, SIGINT);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
378
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
379 /* Signals that send an event */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
380 sigaddset(&ss, SIGUSR1);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
381 sigaddset(&ss, SIGUSR2);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
382
683
d59effdf5256 Improve management of the signals in freeDiameterd
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 662
diff changeset
383 /* We unblock all other signals, so that their default handler is used (such as SIGTSTP) */
d59effdf5256 Improve management of the signals in freeDiameterd
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 662
diff changeset
384 CHECK_SYS_DO( pthread_sigmask( SIG_SETMASK, &ss, NULL ), goto out );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
385
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
386 /* Now loop on the reception of the signal */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
387 while (1) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
388 int sig, *ps;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
389
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
390 /* Wait to receive the next signal */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
391 CHECK_POSIX_DO( sigwait(&ss, &sig), break );
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
392
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
393 TRACE_DEBUG(FULL, "Signal %d caught", sig);
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
394
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
395 switch (sig) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
396 case SIGUSR1:
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
397 case SIGUSR2:
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
398 CHECK_MALLOC_DO( ps = malloc(sizeof(int)), goto out);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
399 *ps = sig;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
400 CHECK_FCT_DO( fd_event_send(fd_g_config->cnf_main_ev, FDEV_TRIGGER, sizeof(int), ps), goto out );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
401 break;
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
402
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
403 case SIGINT:
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
404 case SIGTERM:
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
405 CHECK_FCT_DO( fd_core_shutdown(), goto out );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
406
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
407 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
408 }
1339
e70ce64ce689 freeDiameterd: support syslog() logging.
Thomas Klausner <tk@giga.or.at>
parents: 1305
diff changeset
409 out:
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
410 /* Better way to handle this ? */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
411 ASSERT(0);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 628
diff changeset
412 return NULL;
628
e1c6f45f5fcd Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 502
diff changeset
413 }
"Welcome to our mercurial repository"