Mercurial > hg > freeDiameter
diff freeDiameter/config.c @ 10:c5c99c73c2bf
Added some extensions and functions in the daemon
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Fri, 25 Sep 2009 16:12:08 +0900 |
parents | 3e143f047f78 |
children | ab3c58d88be3 |
line wrap: on
line diff
--- a/freeDiameter/config.c Thu Sep 24 14:01:48 2009 +0900 +++ b/freeDiameter/config.c Fri Sep 25 16:12:08 2009 +0900 @@ -42,25 +42,25 @@ { TRACE_ENTRY(); - fd_g_config->eyec = EYEC_CONFIG; - fd_g_config->conf_file = DEFAULT_CONF_FILE; + fd_g_config->cnf_eyec = EYEC_CONFIG; + fd_g_config->cnf_file = DEFAULT_CONF_FILE; + + fd_g_config->cnf_timer_tc = 30; + fd_g_config->cnf_timer_tw = 30; - fd_g_config->loc_port = 3868; - fd_g_config->loc_port_tls = 3869; - fd_g_config->loc_sctp_str = 30; - fd_list_init(&fd_g_config->loc_endpoints, NULL); - + fd_g_config->cnf_port = 3868; + fd_g_config->cnf_port_tls = 3869; + fd_g_config->cnf_sctp_str = 30; + fd_list_init(&fd_g_config->cnf_endpoints, NULL); + fd_list_init(&fd_g_config->cnf_apps, NULL); #ifdef DISABLE_SCTP - fd_g_config->flags.no_sctp = 1; + fd_g_config->cnf_flags.no_sctp = 1; #endif /* DISABLE_SCTP */ - fd_g_config->timer_tc = 30; - fd_g_config->timer_tw = 30; + fd_g_config->cnf_orstateid = (uint32_t) time(NULL); - fd_g_config->or_state_id = (uint32_t) time(NULL); - - CHECK_FCT( fd_dict_init(&fd_g_config->g_dict) ); - CHECK_FCT( fd_fifo_new(&fd_g_config->g_fifo_main) ); + CHECK_FCT( fd_dict_init(&fd_g_config->cnf_dict) ); + CHECK_FCT( fd_fifo_new(&fd_g_config->cnf_main_ev) ); return 0; } @@ -72,39 +72,56 @@ fd_log_debug("-- Configuration :\n"); fd_log_debug(" Debug trace level ...... : %+d\n", fd_g_debug_lvl); - fd_log_debug(" Configuration file ..... : %s\n", fd_g_config->conf_file); - fd_log_debug(" Diameter Identity ...... : %s (l:%Zi)\n", fd_g_config->diam_id, fd_g_config->diam_id_len); - fd_log_debug(" Diameter Realm ......... : %s (l:%Zi)\n", fd_g_config->diam_realm, fd_g_config->diam_realm_len); - fd_log_debug(" Local port ............. : %hu\n", fd_g_config->loc_port); - fd_log_debug(" Local secure port ...... : %hu\n", fd_g_config->loc_port_tls); - fd_log_debug(" Number of SCTP streams . : %hu\n", fd_g_config->loc_sctp_str); - if (FD_IS_LIST_EMPTY(&fd_g_config->loc_endpoints)) { + fd_log_debug(" Configuration file ..... : %s\n", fd_g_config->cnf_file); + fd_log_debug(" Diameter Identity ...... : %s (l:%Zi)\n", fd_g_config->cnf_diamid, fd_g_config->cnf_diamid_len); + fd_log_debug(" Diameter Realm ......... : %s (l:%Zi)\n", fd_g_config->cnf_diamrlm, fd_g_config->cnf_diamrlm_len); + fd_log_debug(" Tc Timer ............... : %u\n", fd_g_config->cnf_timer_tc); + fd_log_debug(" Tw Timer ............... : %u\n", fd_g_config->cnf_timer_tw); + fd_log_debug(" Local port ............. : %hu\n", fd_g_config->cnf_port); + fd_log_debug(" Local secure port ...... : %hu\n", fd_g_config->cnf_port_tls); + fd_log_debug(" Number of SCTP streams . : %hu\n", fd_g_config->cnf_sctp_str); + if (FD_IS_LIST_EMPTY(&fd_g_config->cnf_endpoints)) { fd_log_debug(" Local endpoints ........ : Default (use all available)\n"); } else { - struct fd_list * li = fd_g_config->loc_endpoints.next; + struct fd_list * li = fd_g_config->cnf_endpoints.next; fd_log_debug(" Local endpoints ........ : "); - while (li != &fd_g_config->loc_endpoints) { + while (li != &fd_g_config->cnf_endpoints) { struct fd_endpoint * ep = (struct fd_endpoint *)li; - if (li != fd_g_config->loc_endpoints.next) fd_log_debug(" "); + if (li != fd_g_config->cnf_endpoints.next) fd_log_debug(" "); sSA_DUMP_NODE( &ep->ss, NI_NUMERICHOST ); fd_log_debug("\n"); li = li->next; } } - fd_log_debug(" Flags : - IP ........... : %s\n", fd_g_config->flags.no_ip4 ? "DISABLED" : "Enabled"); - fd_log_debug(" - IPv6 ......... : %s\n", fd_g_config->flags.no_ip6 ? "DISABLED" : "Enabled"); - fd_log_debug(" - Relay app .... : %s\n", fd_g_config->flags.no_fwd ? "DISABLED" : "Enabled"); - fd_log_debug(" - TCP .......... : %s\n", fd_g_config->flags.no_tcp ? "DISABLED" : "Enabled"); + if (FD_IS_LIST_EMPTY(&fd_g_config->cnf_apps)) { + fd_log_debug(" Local applications ..... : (none)\n"); + } else { + struct fd_list * li = fd_g_config->cnf_apps.next; + fd_log_debug(" Local applications ..... : "); + while (li != &fd_g_config->cnf_apps) { + struct fd_app * app = (struct fd_app *)li; + if (li != fd_g_config->cnf_apps.next) fd_log_debug(" "); + fd_log_debug("App: %u\t%s%s%s\tVnd: %u\n", + app->appid, + app->flags.auth ? "Au" : "--", + app->flags.acct ? "Ac" : "--", + app->flags.common ? "C" : "-", + app->vndid); + li = li->next; + } + } + fd_log_debug(" Flags : - IP ........... : %s\n", fd_g_config->cnf_flags.no_ip4 ? "DISABLED" : "Enabled"); + fd_log_debug(" - IPv6 ......... : %s\n", fd_g_config->cnf_flags.no_ip6 ? "DISABLED" : "Enabled"); + fd_log_debug(" - Relay app .... : %s\n", fd_g_config->cnf_flags.no_fwd ? "DISABLED" : "Enabled"); + fd_log_debug(" - TCP .......... : %s\n", fd_g_config->cnf_flags.no_tcp ? "DISABLED" : "Enabled"); #ifdef DISABLE_SCTP fd_log_debug(" - SCTP ......... : DISABLED (at compilation)\n"); #else /* DISABLE_SCTP */ - fd_log_debug(" - SCTP ......... : %s\n", fd_g_config->flags.no_sctp ? "DISABLED" : "Enabled"); + fd_log_debug(" - SCTP ......... : %s\n", fd_g_config->cnf_flags.no_sctp ? "DISABLED" : "Enabled"); #endif /* DISABLE_SCTP */ - fd_log_debug(" - Pref. proto .. : %s\n", fd_g_config->flags.pr_tcp ? "TCP" : "SCTP"); - fd_log_debug(" - TLS method ... : %s\n", fd_g_config->flags.tls_alg ? "INBAND" : "Separate port"); - fd_log_debug(" Tc Timer ............... : %u\n", fd_g_config->timer_tc); - fd_log_debug(" Tw Timer ............... : %u\n", fd_g_config->timer_tw); - fd_log_debug(" Origin-State-Id ........ : %u\n", fd_g_config->or_state_id); + fd_log_debug(" - Pref. proto .. : %s\n", fd_g_config->cnf_flags.pr_tcp ? "TCP" : "SCTP"); + fd_log_debug(" - TLS method ... : %s\n", fd_g_config->cnf_flags.tls_alg ? "INBAND" : "Separate port"); + fd_log_debug(" Origin-State-Id ........ : %u\n", fd_g_config->cnf_orstateid); } /* Parse the configuration file (using the yacc parser) */ @@ -112,12 +129,12 @@ { extern FILE * fddin; - TRACE_DEBUG (FULL, "Parsing configuration file: %s", fd_g_config->conf_file); + TRACE_DEBUG (FULL, "Parsing configuration file: %s", fd_g_config->cnf_file); - fddin = fopen(fd_g_config->conf_file, "r"); + fddin = fopen(fd_g_config->cnf_file, "r"); if (fddin == NULL) { int ret = errno; - fprintf(stderr, "Unable to open configuration file %s for reading: %s\n", fd_g_config->conf_file, strerror(ret)); + fprintf(stderr, "Unable to open configuration file %s for reading: %s\n", fd_g_config->cnf_file, strerror(ret)); return ret; } @@ -128,7 +145,7 @@ fclose(fddin); /* Resolve hostname if not provided */ - if (fd_g_config->diam_id == NULL) { + if (fd_g_config->cnf_diamid == NULL) { #ifndef HOST_NAME_MAX #define HOST_NAME_MAX 1024 #endif /* HOST_NAME_MAX */ @@ -151,36 +168,36 @@ buf, gai_strerror(ret)); return EINVAL; } - CHECK_MALLOC( fd_g_config->diam_id = strdup(info->ai_canonname) ); + CHECK_MALLOC( fd_g_config->cnf_diamid = strdup(info->ai_canonname) ); freeaddrinfo(info); } /* cache the length of the diameter id for the session module */ - fd_g_config->diam_id_len = strlen(fd_g_config->diam_id); + fd_g_config->cnf_diamid_len = strlen(fd_g_config->cnf_diamid); /* Handle the realm part */ - if (fd_g_config->diam_realm == NULL) { + if (fd_g_config->cnf_diamrlm == NULL) { char * start = NULL; /* Check the diameter identity is a fqdn */ - start = strchr(fd_g_config->diam_id, '.'); + start = strchr(fd_g_config->cnf_diamid, '.'); if ((start == NULL) || (start[1] == '\0')) { fprintf(stderr, "Unable to extract realm from the LocalIdentity '%s'.\n" "Please fix your LocalIdentity setting or provide LocalRealm.\n", - fd_g_config->diam_id); + fd_g_config->cnf_diamid); return EINVAL; } - CHECK_MALLOC( fd_g_config->diam_realm = strdup( start + 1 ) ); + CHECK_MALLOC( fd_g_config->cnf_diamrlm = strdup( start + 1 ) ); } - fd_g_config->diam_realm_len = strlen(fd_g_config->diam_realm); + fd_g_config->cnf_diamrlm_len = strlen(fd_g_config->cnf_diamrlm); /* Validate some flags */ - if (fd_g_config->flags.no_ip4 && fd_g_config->flags.no_ip6) { + if (fd_g_config->cnf_flags.no_ip4 && fd_g_config->cnf_flags.no_ip6) { fprintf(stderr, "IP and IPv6 cannot be disabled at the same time.\n"); return EINVAL; } - if (fd_g_config->flags.no_tcp && fd_g_config->flags.no_sctp) { + if (fd_g_config->cnf_flags.no_tcp && fd_g_config->cnf_flags.no_sctp) { fprintf(stderr, "TCP and SCTP cannot be disabled at the same time.\n"); return EINVAL; }