31 Commits
Author SHA1 Message Date
zx 7733d5d663 fx workflow 17
Archlinux build / build (push) Successful in 3m13s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
2025-04-12 22:13:05 +03:00
zx 6a2320d922 fx workflow 16 2025-04-12 22:12:42 +03:00
zx 5f10b52c77 fx workflow 15
Archlinux build / build (push) Successful in 3m18s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
2025-04-12 21:49:23 +03:00
zx 55fc94a95b fx workflow 14
Archlinux build / build (push) Failing after 24s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
2025-04-12 21:40:39 +03:00
zx 1667d8a800 fx workflow 13
Archlinux build / build (push) Failing after 8s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
2025-04-12 21:35:56 +03:00
zx 5eced105c8 fx workflow 12
Archlinux build / build (push) Failing after 38s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 19s
2025-04-12 21:32:20 +03:00
zx 7486b9c141 fx workflow 11
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 30s
2025-04-12 21:22:49 +03:00
zx 2fbe1d3e54 fx workflow 10
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 18s
2025-04-12 21:16:51 +03:00
zx fa8e081584 fx workflow 9
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 17s
2025-04-12 21:09:10 +03:00
zx 981d4f00b3 fx workflow 8 2025-04-12 21:07:19 +03:00
zx 26ecb8b64c fx actions 7
Archlinux build / build (push) Failing after 1m17s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 18s
2025-04-12 15:49:58 +03:00
zx 526338f720 fx actions 6
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 23s
Archlinux build / build (push) Failing after 42s
2025-04-12 15:45:35 +03:00
zx 06f48fe1c1 fx actions 5
Archlinux build / build (push) Failing after 15s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 18s
2025-04-12 15:37:10 +03:00
zx 4767b57ec9 fx actions 4
Archlinux build / build (push) Failing after 16s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 21s
2025-04-12 15:32:47 +03:00
zx 8892e3f740 fx actions 3
Archlinux build / build (push) Failing after 9s
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 20s
2025-04-12 15:30:13 +03:00
zx 21eeae69cc fx actions 2
Archlinux build / build (push) Failing after 7s
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 0s
2025-04-12 15:26:21 +03:00
zx 9799f977b9 fx actions
Archlinux build / build (push) Failing after 4m46s
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
2025-04-12 15:13:29 +03:00
zx 727f7cfdf3 Testing arch workflow 2
Archlinux build / build (push) Failing after 2s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m58s
2025-04-12 15:01:26 +03:00
zx 36747d9071 Testing arch workflow 2025-04-12 15:00:46 +03:00
zx 9fa59cacca fx demo workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 23s
2025-04-12 11:16:47 +03:00
zx b66dd2156c fx demo workflow 2025-04-12 11:14:05 +03:00
zx 80275d30d3 fx demo workflow 2025-04-12 11:11:51 +03:00
zx a62ae3afca fx demo workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 3s
2025-04-12 11:08:28 +03:00
zx a9f98cdee9 fx demo workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1m28s
2025-04-12 10:44:21 +03:00
zx 10d30223d1 Added demo workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 4m51s
2025-04-12 10:25:35 +03:00
zx c5fc6e9245 added .gitea folder 2025-04-11 12:28:15 +03:00
zx 29000cfdd7 Fixes 2025-04-08 20:45:32 +03:00
zx de6ef3936b small fix checknodefalgs 2025-03-23 20:36:07 +03:00
zx 8db2ee4260 confread diag 2025-03-23 20:21:50 +03:00
zx 25081b1bae . 2025-03-22 22:50:53 +03:00
zx deaa8140f5 Fix binkp overrides 2025-03-22 21:52:08 +03:00
17 changed files with 271 additions and 145 deletions
View File
+28
View File
@@ -0,0 +1,28 @@
name: Archlinux build
run-name: ${{ github.event.name}} building 🚀
on: [push]
jobs:
build:
runs-on: arch-latest
if: github.ref == 'refs/heads/zx'
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event.name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: Checking environment
continue-on-error: true
run: printenv
- name: Installing prerequisites - update pacman
run: pacman -Sy
- name: Installing prerequisites - install git
run: pacman --disable-sandbox --noconfirm -v -S git
- name: Downloading
continue-on-error: true
run: useradd -d ${{ gitea.basedir }}/builder -g users -m builder
- run: su - builder -c pwd
- run: su - builder -c "curl -O http://zxprj:3001/zx/bforce/raw/branch/${GITHUB_REF_NAME}/archlinux/bforce.install"
- run: su - builder -c "curl -o PKGBUILD http://zxprj:3001/zx/bforce/raw/branch/${GITHUB_REF_NAME}/archlinux/PKGBUILD.ci"
- run: su --w GITHUB_SHA,GITHUB_REF_NAME,GITHUB_REF_TYPE - builder -c makepkg
- run: echo "🍏 This job's status is ${{ github.state }}."
+20
View File
@@ -0,0 +1,20 @@
name: Gitea Actions Demo
run-name: $ is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event.name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.basedir }} && pwd
- run: printenv
- run: echo "🍏 This job's status is ${{ gitea.job.status }}."
-3
View File
@@ -7,6 +7,3 @@ source/config.log
source/config.status source/config.status
source/include/config.h source/include/config.h
bforce.geany bforce.geany
+2
View File
@@ -273,3 +273,5 @@ Alexey Khromov (zx@zxalexis.ru)
0.26 0.26
+ Fixed incorrect binkp protocol realization in unprotected sessions. + Fixed incorrect binkp protocol realization in unprotected sessions.
+ Fixed binkp override appliance in incoming handshake
+58
View File
@@ -0,0 +1,58 @@
pkgname=bforce
pkgver=r235.a1c93b8
pkgrel=1
pkgdesc="binkleyforce FTN mailer"
arch=('i686' 'x86_64' 'aarch64')
url="https://prj.zxalexis.ru/gitea/zx/bforce/"
license=('GPL2')
source=(
"${pkgname}::git+https://prj.zxalexis.ru/gitea/${GITHUB_REF_NAME}/bforce.git"
)
makedepends=('git' 'gcc' 'make' 'glibc')
provides=('bforce')
build() {
cd "${srcdir}/${pkgname}/source"
./configure --prefix=/ --disable-syslog --with-owner=fido --with-group=uucp
make
}
prepare() {
cd "${pkgname}"
git checkout "${GITHUB_SHA}"
printf "$( pwd )\n"
}
pkgver() {
cd "$pkgname"
printf "r%s.%s.%s" "$(git rev-list --count ${GITHUB_SHA})" "$(git rev-parse --short ${GITHUB_SHA})" "${GITHUB_REF_NAME}"
}
package() {
cd ${pkgdir}
mkdir -p ${pkgdir}/etc
mkdir -p ${pkgdir}/usr/bin
mkdir -p ${pkgdir}/usr/local/bin
mkdir -p ${pkgdir}/usr/share/doc/bforce
mkdir -p ${pkgdir}/var/log/bforce
mkdir -p ${pkgdir}/var/spool/bforce
mkdir -p ${pkgdir}/var/spool/bforce/bt/in
mkdir -p ${pkgdir}/var/spool/bforce/bt/pin
mkdir -p ${pkgdir}/var/spool/bforce/bt/out
mkdir -p ${pkgdir}/var/spool/bforce/ndl
mkdir -p ${pkgdir}/var/spool/bforce/bforce
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bforce ${pkgdir}/usr/bin/bforce
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfindex ${pkgdir}/usr/bin/bfindex
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/bfstat ${pkgdir}/usr/bin/bfstat
/usr/bin/install -c ${srcdir}/${pkgname}/source/bin/nlookup ${pkgdir}/usr/bin/nlookup
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.conf ${pkgdir}/etc/bforce.conf.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.subst ${pkgdir}/etc/bforce.subst.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/bforce.passwd ${pkgdir}/etc/bforce.passwd.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/freq.aliases ${pkgdir}/etc/freq.aliases.sample
/usr/bin/install -c -m 644 ${srcdir}/${pkgname}/examples/freq.dirs ${pkgdir}/etc/freq.dirs.sample
/usr/bin/install -c ${srcdir}/${pkgname}/contrib/outman ${pkgdir}/usr/local/bin/outman
echo "Please, edit /usr/local/bin/outman"
cp ${srcdir}/${pkgname}/docs/* ${pkgdir}/usr/share/doc/bforce/
}
sha256sums=('SKIP')
View File
View File
View File
View File
View File
+12 -6
View File
@@ -20,10 +20,14 @@ s_cval_entry *conf_first(bforce_config_keyword keyword)
{ {
s_cval_entry *ptrl; s_cval_entry *ptrl;
for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next ) DEB((D_CONFIG, "conf_first entry nr %d",(int16_t)keyword));
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) )
return ptrl;
for( ptrl = bforce_config[keyword].data; ptrl; ptrl = ptrl->next )
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) {
DEB((D_CONFIG, "conf_first ptrl found"));
return ptrl;
}
DEB((D_CONFIG, "conf_first ptrl not found"));
return NULL; return NULL;
} }
@@ -32,9 +36,11 @@ s_cval_entry *conf_next(s_cval_entry *ptrl)
ASSERT(ptrl); ASSERT(ptrl);
for( ptrl = ptrl->next; ptrl; ptrl = ptrl->next ) for( ptrl = ptrl->next; ptrl; ptrl = ptrl->next )
if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) if( !ptrl->expr.expr || eventexpr(&ptrl->expr) ) {
DEB((D_CONFIG, "conf_next ptrl found"));
return ptrl; return ptrl;
}
DEB((D_CONFIG, "conf_next ptrl not found"));
return NULL; return NULL;
} }
@@ -91,7 +97,7 @@ long conf_number(bforce_config_keyword keyword)
s_override *conf_override(bforce_config_keyword keyword, s_faddr addr) s_override *conf_override(bforce_config_keyword keyword, s_faddr addr)
{ {
s_cval_entry *ptrl; s_cval_entry *ptrl;
DEB((D_CONFIG, "conf_override entry"));
for( ptrl = conf_first(keyword); ptrl; ptrl = conf_next(ptrl) ) for( ptrl = conf_first(keyword); ptrl; ptrl = conf_next(ptrl) )
if( !ftn_addrcomp(ptrl->d.override.addr, addr) ) if( !ftn_addrcomp(ptrl->d.override.addr, addr) )
return &ptrl->d.override; return &ptrl->d.override;
+11 -4
View File
@@ -56,18 +56,25 @@ int nodelist_checkflag(const char *nodeflags, const char *flag)
const char *searchbase = nodeflags; const char *searchbase = nodeflags;
char *q; char *q;
while( p = strstr(searchbase, flag) ) DEB((D_NODELIST, "nodelist: checking flag \"%s\" in flags \"%s\"", flag, nodeflags));
if ( nodeflags ) {
while( p = strcasestr(searchbase, flag) ) // p - found flag
{ {
if( p == searchbase || *(p-1) == ',' ) if( (p == searchbase) || (p != searchbase && *(p-1) == ',') )
{ {
if( (q = strchr(p, ',')) == NULL || (q - p) == strlen(flag) ) if( (q = strchr(p, ',')) == NULL || (q - p) == strlen(flag) ) {
DEB((D_NODELIST, "nodelist: found flag %s", flag));
return 0; return 0;
if( (strchrnul(p, ':') - p) == strlen(flag) ) }
if( (strchrnul(p, ':') - p) == strlen(flag) ) {
DEB((D_NODELIST, "nodelist: found flag %s", flag));
return 0; return 0;
} }
}
searchbase = p + 1; // avoid finding again the same searchbase = p + 1; // avoid finding again the same
} }
}
return 1; return 1;
} }
+8 -2
View File
@@ -717,14 +717,17 @@ case BPMSG_ADR: /* List of addresses */
bstate->extraislast = false; bstate->extraislast = false;
sprintf(bstate->extracmd+1,"OPT MB CRYPT"); sprintf(bstate->extracmd+1,"OPT MB CRYPT");
s_override ovr; s_override ovr;
DEB((D_24554, "process adr overrides"));
for(i = 0; i < state.n_remoteaddr; i++) { for(i = 0; i < state.n_remoteaddr; i++) {
ovr.sFlags = ""; ovr.sFlags = "";
override_get (&ovr, state.remoteaddrs[i].addr, 0); override_get (&ovr, state.remoteaddrs[i].addr, 0);
DEB((D_24554, "got adr overrides"));
if (nodelist_checkflag (ovr.sFlags, "NR")==0) { if (nodelist_checkflag (ovr.sFlags, "NR")==0) {
strcat (bstate->extracmd+1, " NR"); strcat (bstate->extracmd+1, " NR");
break; break;
} }
} }
DEB((D_24554, "process adr overrides"));
} }
// further use extracmd only for errors // further use extracmd only for errors
@@ -1217,13 +1220,16 @@ void binkp_process_ADR(char *buffer)
{ {
s_faddr addr; s_faddr addr;
char *p, *q; char *p, *q;
DEB((D_24554, "process ADR: %s", buffer));
for( p = string_token(buffer, &q, NULL, 0); p; p = string_token(NULL, &q, NULL, 0) ) for( p = string_token(buffer, &q, NULL, 0); p; p = string_token(NULL, &q, NULL, 0) )
{ {
DEB((D_24554, "binkp_process_ADR got token \"%s\" ",p ));
if( ftn_addrparse(&addr, p, FALSE) ) if( ftn_addrparse(&addr, p, FALSE) )
log("BinkP got unparsable address \"%s\"", string_printable(p)); log("BinkP got unparsable address \"%s\"", string_printable(p));
else else {
session_addrs_add(&state.remoteaddrs, &state.n_remoteaddr, addr); session_addrs_add(&state.remoteaddrs, &state.n_remoteaddr, addr);
DEB((D_24554, "process ADR complete"));
}
} }
} }
+3 -1
View File
@@ -135,15 +135,17 @@ int override_get(s_override *dest, s_faddr addr, int line)
{ {
s_override *p; s_override *p;
int curline = 0; int curline = 0;
p = conf_override(cf_override, addr); p = conf_override(cf_override, addr);
curline = 0; curline = 0;
if (line > 0)
{
while( p && curline < line ) while( p && curline < line )
{ {
p = p->hidden; p = p->hidden;
++curline; ++curline;
} }
}
if( p && curline == line ) if( p && curline == line )
{ {
+115 -115
View File
@@ -159,130 +159,130 @@ typedef struct filebox {
} s_filebox; } s_filebox;
typedef enum { typedef enum {
cf_address, cf_address, // 0
cf_amiga_outbound_directory, cf_amiga_outbound_directory, // 1
cf_binkp_timeout, cf_binkp_timeout, // 2
cf_daemon_circle, cf_daemon_circle, // 3
cf_daemon_circle_crash, cf_daemon_circle_crash, // 4
cf_daemon_circle_direct, cf_daemon_circle_direct, // 5
cf_daemon_circle_immed, cf_daemon_circle_immed, // 6
cf_daemon_circle_modem, cf_daemon_circle_modem, // 7
cf_daemon_circle_normal, cf_daemon_circle_normal, // 8
cf_daemon_circle_rescan, cf_daemon_circle_rescan, // 9
cf_daemon_maxclients_modem, cf_daemon_maxclients_modem, // 10
cf_daemon_maxclients_tcpip, cf_daemon_maxclients_tcpip, // 11
cf_daemon_pid_file, cf_daemon_pid_file, // 12
cf_delay_files_recv, cf_delay_files_recv, // 13
cf_delay_files_send, cf_delay_files_send, // 14
cf_disable_aka_matching, cf_disable_aka_matching, // 15
cf_domain, cf_domain, // 16
cf_emsi_FR_time, cf_emsi_FR_time, // 17
cf_emsi_OH_time, cf_emsi_OH_time, // 18
cf_emsi_slave_sends_nak, cf_emsi_slave_sends_nak, // 19
cf_emsi_send_tz, cf_emsi_send_tz, // 20
cf_emsi_send_time, cf_emsi_send_time, // 21
cf_filebox, cf_filebox, // 22
cf_filebox_directory, cf_filebox_directory, // 23
cf_flags, cf_flags, // 24
cf_flo_translate, cf_flo_translate, // 25
cf_freq_alias_list, cf_freq_alias_list, // 26
cf_freq_dir_list, cf_freq_dir_list, // 27
cf_freq_ignore_masks, cf_freq_ignore_masks, // 28
cf_freq_limit_number, cf_freq_limit_number, // 29
cf_freq_limit_size, cf_freq_limit_size, // 30
cf_freq_limit_time, cf_freq_limit_time, // 31
cf_freq_min_speed, cf_freq_min_speed, // 32
cf_freq_srif_command, cf_freq_srif_command, // 33
cf_incnet_flag, cf_incnet_flag, // 34
cf_incarc_flag, cf_incarc_flag, // 35
cf_inctic_flag, cf_inctic_flag, // 36
cf_incfile_flag, cf_incfile_flag, // 37
cf_hide_our_aka, cf_hide_our_aka, // 38
cf_history_file, cf_history_file, // 39
cf_hydra_options, cf_hydra_options, // 40
cf_hydra_mincps_recv, cf_hydra_mincps_recv, // 41
cf_hydra_mincps_send, cf_hydra_mincps_send, // 42
cf_hydra_tx_window, cf_hydra_tx_window, // 43
cf_hydra_rx_window, cf_hydra_rx_window, // 44
cf_inbound_directory, cf_inbound_directory, // 45
cf_location, cf_location, // 46
cf_log_file, cf_log_file, // 47
cf_log_file_daemon, cf_log_file_daemon, // 48
cf_max_speed, cf_max_speed, // 49
cf_maxtries, cf_maxtries, // 50
cf_maxtries_nodial, cf_maxtries_nodial, // 51
cf_maxtries_noansw, cf_maxtries_noansw, // 52
cf_maxtries_noconn, cf_maxtries_noconn, // 53
cf_maxtries_hshake, cf_maxtries_hshake, // 54
cf_maxtries_sessions, cf_maxtries_sessions, // 55
cf_min_cps_recv, cf_min_cps_recv, // 56
cf_min_cps_send, cf_min_cps_send, // 57
cf_min_cps_time, cf_min_cps_time, // 58
cf_min_free_space, cf_min_free_space, // 59
cf_min_speed_in, cf_min_speed_in, // 60
cf_min_speed_out, cf_min_speed_out, // 61
cf_mode_netmail, cf_mode_netmail, // 62
cf_mode_arcmail, cf_mode_arcmail, // 63
cf_mode_request, cf_mode_request, // 64
cf_mode_ticfile, cf_mode_ticfile, // 65
cf_mode_default, cf_mode_default, // 66
cf_modem_can_send_break, cf_modem_can_send_break, // 67
cf_modem_dial_prefix, cf_modem_dial_prefix, // 68
cf_modem_dial_suffix, cf_modem_dial_suffix, // 69
cf_modem_dial_response, cf_modem_dial_response, // 70
cf_modem_hangup_command, cf_modem_hangup_command, // 71
cf_modem_port, cf_modem_port, // 72
cf_modem_reset_command, cf_modem_reset_command, // 73
cf_modem_stat_command, cf_modem_stat_command, // 74
cf_nodelist, cf_nodelist, // 75
cf_nodelist_directory, cf_nodelist_directory, // 76
cf_nodial_flag, cf_nodial_flag, // 77
cf_override, cf_override, // 78
cf_options, cf_options, // 79
cf_outbound_directory, cf_outbound_directory, // 80
cf_password, cf_password, // 81
cf_phone, cf_phone, // 82
cf_phone_translate, cf_phone_translate, // 83
cf_proto_order, cf_proto_order, // 84
cf_recode_file_in, cf_recode_file_in, // 85
cf_recode_file_out, cf_recode_file_out, // 86
cf_recode_intro_in, cf_recode_intro_in, // 87
cf_recv_buffer_size, cf_recv_buffer_size, // 88
cf_rescan_delay, cf_rescan_delay, // 89
cf_run_after_handshake, cf_run_after_handshake, // 90
cf_run_after_session, cf_run_after_session, // 91
cf_run_before_session, cf_run_before_session, // 92
cf_session_limit_in, cf_session_limit_in, // 93
cf_session_limit_out, cf_session_limit_out, // 94
cf_skip_files_recv, cf_skip_files_recv, // 95
cf_status_directory, cf_status_directory, // 96
cf_system_name, cf_system_name, // 97
cf_sysop_name, cf_sysop_name, // 98
cf_uucp_lock_directory, cf_uucp_lock_directory, // 99
cf_wait_carrier_in, cf_wait_carrier_in, // 100
cf_wait_carrier_out, cf_wait_carrier_out, // 101
cf_zmodem_mincps_recv, cf_zmodem_mincps_recv, // 102
cf_zmodem_mincps_send, cf_zmodem_mincps_send, // 103
cf_zmodem_send_dummy_pkt, cf_zmodem_send_dummy_pkt, // 104
cf_zmodem_skip_by_pos, cf_zmodem_skip_by_pos, // 105
cf_zmodem_start_block_size, cf_zmodem_start_block_size, // 106
cf_zmodem_tx_window, cf_zmodem_tx_window, // 107
cf_nomail_flag, cf_nomail_flag, // 108
cf_bind_ip, cf_bind_ip, // 109
cf_recieved_to_lower, cf_recieved_to_lower, // 110
#ifdef USE_SYSLOG #ifdef USE_SYSLOG
cf_syslog_facility, cf_syslog_facility,
#endif #endif
#ifdef DEBUG #ifdef DEBUG
cf_debug_file, cf_debug_file, // 111
cf_debug_level, cf_debug_level, // 112
#endif #endif
cf_split_inbound, cf_split_inbound, // 113
#ifdef NETSPOOL #ifdef NETSPOOL
cf_netspool_host, cf_netspool_host,
cf_netspool_port, cf_netspool_port,
#endif #endif
cf_fidodnszone, cf_fidodnszone, // 114
BFORCE_NUMBER_OF_KEYWORDS BFORCE_NUMBER_OF_KEYWORDS
} bforce_config_keyword; } bforce_config_keyword;