From 096f382eaa869457f200bf2a21ed825ea96efb35 Mon Sep 17 00:00:00 2001 From: Sergey Dorofeev Date: Thu, 23 Feb 2012 23:14:33 +0400 Subject: [PATCH] Added support for FIDO DNS zone --- source/bforce/conf_proc.c | 1 + source/bforce/sess_call.c | 15 +++++++++++++++ source/include/confread.h | 1 + 3 files changed, 17 insertions(+) diff --git a/source/bforce/conf_proc.c b/source/bforce/conf_proc.c index 85ab298..1b224ad 100644 --- a/source/bforce/conf_proc.c +++ b/source/bforce/conf_proc.c @@ -180,6 +180,7 @@ s_conf_entry bforce_config[BFORCE_NUMBER_OF_KEYWORDS+1] = { CONF_KEY(netspool_host, CT_STRING), CONF_KEY(netspool_port, CT_STRING), #endif + CONF_KEY(fidodnszone, CT_STRING), CONF_END() }; diff --git a/source/bforce/sess_call.c b/source/bforce/sess_call.c index ebfec47..a5b5a35 100644 --- a/source/bforce/sess_call.c +++ b/source/bforce/sess_call.c @@ -758,6 +758,21 @@ int call_system(s_faddr addr, const s_bforce_opts *opts) state.override.sIpaddr, sizeof(state.node.host)); } + if( call_mayuse & CALL_TCPIP_ANY && !tcpip_isgood_host(state.node.host) ) { + char *fidodnszone = conf_string(cf_fidodnszone); + if (fidodnszone) { + if (addr.point) { + snprintf(state.node.host, BNI_MAXHOST, "p%d.f%d.n%d.z%d.%s", + addr.point, addr.node, addr.net, addr.zone, fidodnszone); + } + else { + snprintf(state.node.host, BNI_MAXHOST, "f%d.n%d.z%d.%s", + addr.node, addr.net, addr.zone, fidodnszone); + } + log("use fido DNS zone: %s", state.node.host); + } + } + if( call_mayuse & CALL_TCPIP_ANY && !tcpip_isgood_host(state.node.host) ) { call_mayuse &= ~CALL_TCPIP_ANY; diff --git a/source/include/confread.h b/source/include/confread.h index 547d89c..797ddb0 100644 --- a/source/include/confread.h +++ b/source/include/confread.h @@ -275,6 +275,7 @@ typedef enum { cf_netspool_host, cf_netspool_port, #endif + cf_fidodnszone, BFORCE_NUMBER_OF_KEYWORDS } bforce_config_keyword;