*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
static struct options options;
static struct list *clconfs, *srvconfs;
static struct options options;
static struct list *clconfs, *srvconfs;
+#if defined(WANT_FTICKS)
+ if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject)
+ if (options.fticks_reporting && from->conf->fticks_viscountry != NULL)
+ fticks_log(&options, from, msg, rqout);
+#endif
+
msg->id = (char)rqout->rq->rqid;
memcpy(msg->auth, rqout->rq->rqauth, 16);
msg->id = (char)rqout->rq->rqid;
memcpy(msg->auth, rqout->rq->rqauth, 16);
close(fd[1]);
pushgconffile(&cf, fdopen(fd[0], "r"), conf->dynamiclookupcommand);
close(fd[1]);
pushgconffile(&cf, fdopen(fd[0], "r"), conf->dynamiclookupcommand);
- ok = getgenericconfig(&cf, NULL,
- "Server", CONF_CBK, confserver_cb, (void *)conf,
- NULL
- );
+ ok = getgenericconfig(&cf, NULL, "Server", CONF_CBK, confserver_cb,
+ (void *) conf, NULL);
- debug(DBG_INFO, "dynamicconfig: command exited with status %d", WEXITSTATUS(status));
- goto errexit;
+ if (WEXITSTATUS(status) == 10) {
+ debug(DBG_INFO, "dynamicconfig: command signals empty config");
+ }
+ else {
+ debug(DBG_INFO, "dynamicconfig: command exited with status %d",
+ WEXITSTATUS(status));
+ goto errexit;
+ }
!mergeconfstring(&dst->matchcertattr, &src->matchcertattr) ||
!mergeconfstring(&dst->confrewritein, &src->confrewritein) ||
!mergeconfstring(&dst->confrewriteout, &src->confrewriteout) ||
!mergeconfstring(&dst->matchcertattr, &src->matchcertattr) ||
!mergeconfstring(&dst->confrewritein, &src->confrewritein) ||
!mergeconfstring(&dst->confrewriteout, &src->confrewriteout) ||
- !mergeconfstring(&dst->dynamiclookupcommand, &src->dynamiclookupcommand))
+ !mergeconfstring(&dst->confrewriteusername, &src->confrewriteusername) ||
+ !mergeconfstring(&dst->dynamiclookupcommand, &src->dynamiclookupcommand) ||
+ !mergeconfstring(&dst->fticks_viscountry, &src->fticks_viscountry) ||
+ !mergeconfstring(&dst->fticks_visinst, &src->fticks_visinst))
- if (!getgenericconfig(cf, block,
- "type", CONF_STR, &conftype,
- "host", CONF_MSTR, &conf->hostsrc,
- "secret", CONF_STR, &conf->secret,
+ if (!getgenericconfig(
+ cf, block,
+ "type", CONF_STR, &conftype,
+ "host", CONF_MSTR, &conf->hostsrc,
+ "secret", CONF_STR, &conf->secret,
- "tls", CONF_STR, &conf->tls,
- "matchcertificateattribute", CONF_STR, &conf->matchcertattr,
- "CertificateNameCheck", CONF_BLN, &conf->certnamecheck,
+ "tls", CONF_STR, &conf->tls,
+ "matchcertificateattribute", CONF_STR, &conf->matchcertattr,
+ "CertificateNameCheck", CONF_BLN, &conf->certnamecheck,
- "DuplicateInterval", CONF_LINT, &dupinterval,
- "addTTL", CONF_LINT, &addttl,
- "rewrite", CONF_STR, &rewriteinalias,
- "rewriteIn", CONF_STR, &conf->confrewritein,
- "rewriteOut", CONF_STR, &conf->confrewriteout,
- "rewriteattribute", CONF_STR, &conf->confrewriteusername,
- NULL
+ "DuplicateInterval", CONF_LINT, &dupinterval,
+ "addTTL", CONF_LINT, &addttl,
+ "rewrite", CONF_STR, &rewriteinalias,
+ "rewriteIn", CONF_STR, &conf->confrewritein,
+ "rewriteOut", CONF_STR, &conf->confrewriteout,
+ "rewriteattribute", CONF_STR, &conf->confrewriteusername,
+#if defined(WANT_FTICKS)
+ "fticksVISCOUNTRY", CONF_STR, &conf->fticks_viscountry,
+ "fticksVISINST", CONF_STR, &conf->fticks_visinst,
+#endif
+ NULL
- conf->tlsconf = conf->tls ? tlsgettls(conf->tls, NULL) : tlsgettls("defaultclient", "default");
+ conf->tlsconf = conf->tls
+ ? tlsgettls(conf->tls, NULL)
+ : tlsgettls("defaultClient", "default");
if (!conf->tlsconf)
debugx(1, DBG_ERR, "error in block %s, no tls context defined", block);
if (conf->matchcertattr && !addmatchcertattr(conf))
if (!conf->tlsconf)
debugx(1, DBG_ERR, "error in block %s, no tls context defined", block);
if (conf->matchcertattr && !addmatchcertattr(conf))
- conf->rewritein = conf->confrewritein ? getrewrite(conf->confrewritein, NULL) : getrewrite("defaultclient", "default");
+ conf->rewritein = conf->confrewritein
+ ? getrewrite(conf->confrewritein, NULL)
+ : getrewrite("defaultClient", "default");
if (conf->confrewriteout)
conf->rewriteout = getrewrite(conf->confrewriteout, NULL);
if (conf->confrewriteout)
conf->rewriteout = getrewrite(conf->confrewriteout, NULL);
if (!addhostport(&conf->hostports, conf->hostsrc, conf->pdef->portdefault, 1) ||
!resolvehostports(conf->hostports, conf->pdef->socktype))
if (!addhostport(&conf->hostports, conf->hostsrc, conf->pdef->portdefault, 1) ||
!resolvehostports(conf->hostports, conf->pdef->socktype))
- debugx(1, DBG_ERR, "resolve failed, exiting");
+ debugx(1, DBG_ERR, "%s: resolve failed, exiting", __func__);
int compileserverconfig(struct clsrvconf *conf, const char *block) {
#if defined(RADPROT_TLS) || defined(RADPROT_DTLS)
if (conf->type == RAD_TLS || conf->type == RAD_DTLS) {
int compileserverconfig(struct clsrvconf *conf, const char *block) {
#if defined(RADPROT_TLS) || defined(RADPROT_DTLS)
if (conf->type == RAD_TLS || conf->type == RAD_DTLS) {
- conf->tlsconf = conf->tls ? tlsgettls(conf->tls, NULL) : tlsgettls("defaultserver", "default");
+ conf->tlsconf = conf->tls
+ ? tlsgettls(conf->tls, NULL)
+ : tlsgettls("defaultServer", "default");
if (!conf->tlsconf) {
debug(DBG_ERR, "error in block %s, no tls context defined", block);
return 0;
if (!conf->tlsconf) {
debug(DBG_ERR, "error in block %s, no tls context defined", block);
return 0;
- conf->rewritein = conf->confrewritein ? getrewrite(conf->confrewritein, NULL) : getrewrite("defaultserver", "default");
+ conf->rewritein = conf->confrewritein
+ ? getrewrite(conf->confrewritein, NULL)
+ : getrewrite("defaultServer", "default");
if (conf->confrewriteout)
conf->rewriteout = getrewrite(conf->confrewriteout, NULL);
if (!addhostport(&conf->hostports, conf->hostsrc, conf->portsrc, 0)) {
if (conf->confrewriteout)
conf->rewriteout = getrewrite(conf->confrewriteout, NULL);
if (!addhostport(&conf->hostports, conf->hostsrc, conf->portsrc, 0)) {
- debug(DBG_ERR, "error in block %s, failed to parse %s", block, conf->hostsrc);
+ debug(DBG_ERR, "error in block %s, failed to parse %s", block, *conf->hostsrc);
if (resconf || !conf->dynamiclookupcommand) {
if (!compileserverconfig(conf, block))
if (resconf || !conf->dynamiclookupcommand) {
if (!compileserverconfig(conf, block))
- "ListenUDP", CONF_MSTR, &listenargs[RAD_UDP],
- "SourceUDP", CONF_STR, &sourcearg[RAD_UDP],
+ "ListenUDP", CONF_MSTR, &listenargs[RAD_UDP],
+ "SourceUDP", CONF_STR, &sourcearg[RAD_UDP],
- "ListenTCP", CONF_MSTR, &listenargs[RAD_TCP],
- "SourceTCP", CONF_STR, &sourcearg[RAD_TCP],
+ "ListenTCP", CONF_MSTR, &listenargs[RAD_TCP],
+ "SourceTCP", CONF_STR, &sourcearg[RAD_TCP],
- "ListenTLS", CONF_MSTR, &listenargs[RAD_TLS],
- "SourceTLS", CONF_STR, &sourcearg[RAD_TLS],
+ "ListenTLS", CONF_MSTR, &listenargs[RAD_TLS],
+ "SourceTLS", CONF_STR, &sourcearg[RAD_TLS],
- "ListenDTLS", CONF_MSTR, &listenargs[RAD_DTLS],
- "SourceDTLS", CONF_STR, &sourcearg[RAD_DTLS],
+ "ListenDTLS", CONF_MSTR, &listenargs[RAD_DTLS],
+ "SourceDTLS", CONF_STR, &sourcearg[RAD_DTLS],
- "TTLAttribute", CONF_STR, &options.ttlattr,
- "addTTL", CONF_LINT, &addttl,
- "LogLevel", CONF_LINT, &loglevel,
- "LogDestination", CONF_STR, &options.logdestination,
- "LoopPrevention", CONF_BLN, &options.loopprevention,
- "Client", CONF_CBK, confclient_cb, NULL,
- "Server", CONF_CBK, confserver_cb, NULL,
- "Realm", CONF_CBK, confrealm_cb, NULL,
+ "TTLAttribute", CONF_STR, &options.ttlattr,
+ "addTTL", CONF_LINT, &addttl,
+ "LogLevel", CONF_LINT, &loglevel,
+ "LogDestination", CONF_STR, &options.logdestination,
+ "LoopPrevention", CONF_BLN, &options.loopprevention,
+ "Client", CONF_CBK, confclient_cb, NULL,
+ "Server", CONF_CBK, confserver_cb, NULL,
+ "Realm", CONF_CBK, confrealm_cb, NULL,
- "TLS", CONF_CBK, conftls_cb, NULL,
+ "TLS", CONF_CBK, conftls_cb, NULL,
- "Rewrite", CONF_CBK, confrewrite_cb, NULL,
- NULL
+ "Rewrite", CONF_CBK, confrewrite_cb, NULL,
+#if defined(WANT_FTICKS)
+ "FTicksReporting", CONF_STR, &fticks_reporting_str,
+ "FTicksMAC", CONF_STR, &fticks_mac_str,
+ "FTicksKey", CONF_STR, &fticks_key_str,
+ "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility,
+#endif
+ NULL
if (!setttlattr(&options, DEFAULT_TTL_ATTR))
debugx(1, DBG_ERR, "Failed to set TTLAttribute, exiting");
if (!setttlattr(&options, DEFAULT_TTL_ATTR))
debugx(1, DBG_ERR, "Failed to set TTLAttribute, exiting");
for (i = 0; i < RAD_PROTOCOUNT; i++)
if (listenargs[i] || sourcearg[i])
setprotoopts(i, listenargs[i], sourcearg[i]);
for (i = 0; i < RAD_PROTOCOUNT; i++)
if (listenargs[i] || sourcearg[i])
setprotoopts(i, listenargs[i], sourcearg[i]);
options.loglevel = loglevel;
else if (options.loglevel)
debug_set_level(options.loglevel);
options.loglevel = loglevel;
else if (options.loglevel)
debug_set_level(options.loglevel);
- if (!foreground)
- debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///");
+ if (!foreground) {
+ debug_set_destination(options.logdestination
+ ? options.logdestination
+ : "x-syslog:///", LOG_TYPE_DEBUG);
+#if defined(WANT_FTICKS)
+ if (options.ftickssyslogfacility) {
+ debug_set_destination(options.ftickssyslogfacility,
+ LOG_TYPE_FTICKS);
+ free(options.ftickssyslogfacility);
+ }
+#endif
+ }