From: Otto Moerbeek Date: Mon, 8 Jul 2024 13:18:07 +0000 (+0200) Subject: Fix SNMP, add a few more features X-Git-Tag: rec-5.2.0-alpha1~173^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=446c05460408f4688ec916d7d5c5f7eafb1b68e3;p=thirdparty%2Fpdns.git Fix SNMP, add a few more features --- diff --git a/meson/dnstap/meson.build b/meson/dnstap/meson.build new file mode 100644 index 0000000000..e7a487ef51 --- /dev/null +++ b/meson/dnstap/meson.build @@ -0,0 +1,17 @@ +opt_dnstap = get_option('dnstap') +dep_dnstap = dependency('libfstrm', required: opt_dnstap) + +if dep_dnstap.found() + funcs = [ + 'fstrm_tcp_writer_init', + ] + + foreach func: funcs + has = cxx.has_function(func, dependencies: dep_dnstap) + conf.set('HAVE_' + func.to_upper(), has, description: 'Have libfstram ' + func) + endforeach +endif + +conf.set('HAVE_FSTRM', dep_dnstap.found(), description: 'libfstrm') +summary('DNSTAP', dep_dnstap.found(), bool_yn: true, section: 'Configuration') + diff --git a/meson/libcurl/meson.build b/meson/libcurl/meson.build new file mode 100644 index 0000000000..1f434ba45d --- /dev/null +++ b/meson/libcurl/meson.build @@ -0,0 +1,4 @@ +opt_libcurl = get_option('libcurl') +dep_libcurl = dependency('libcurl', version: '>= 7.21.3', required: opt_libcurl) +conf.set('HAVE_LIBCURL', dep_libcurl.found(), description: 'Whether we have libcurl') +summary('CURL', dep_libcurl.found(), bool_yn: true, section: 'Configuration') diff --git a/meson/libsnmp/meson.build b/meson/libsnmp/meson.build index 52f441a2ea..8f06725bf5 100644 --- a/meson/libsnmp/meson.build +++ b/meson/libsnmp/meson.build @@ -1,5 +1,28 @@ opt_libsnmp = get_option('snmp') -dep_libsnmp = dependency('libsnmp', required: opt_libsnmp) + +if get_option('snmp') + snmp_config = find_program('net-snmp-config', required: true) + snmp_ldflags_res = run_command(snmp_config, '--libs', check: true) + snmp_ldflags = snmp_ldflags_res.stdout().strip().split() + snmp_ldflags_res = run_command(snmp_config, '--agent-libs', check: true) + snmp_ldflags += snmp_ldflags_res.stdout().strip().split() + + dep_libsnmp = declare_dependency( + link_args: snmp_ldflags, + ) +endif + +if dep_libsnmp.found() + funcs = [ + 'snmp_select_info2', + ] + + foreach func: funcs + define = 'HAVE_' + func.to_upper() + have_func = cxx.has_function(func, dependencies: dep_libsnmp) + conf.set(define, have_func, description: 'Have libsnmp ' + func) + endforeach +endif conf.set('HAVE_LIBSSNMP', dep_libsnmp.found(), description: 'libsnmp') summary('SNMP', dep_libsnmp.found(), bool_yn: true, section: 'Configuration') diff --git a/pdns/recursordist/meson.build b/pdns/recursordist/meson.build index 9701f1cde3..a673791cc4 100644 --- a/pdns/recursordist/meson.build +++ b/pdns/recursordist/meson.build @@ -23,6 +23,7 @@ summary('Build Dir', product_build_dir, section: 'Build') # Create the configuration object and dependencies list. conf = configuration_data() +conf.set_quoted('PACKAGE_STRING', meson.project_version(), description: 'version') # Feature detection and system configuration subdir('meson' / 'config') # Config @@ -66,6 +67,8 @@ subdir('meson' / 'socket-dir') # Socket Dir subdir('meson' / 'various-functions') # Various Functions subdir('meson' / 'various-headers') # Various Headers subdir('meson' / 'libresolv') # res_query XXX +subdir('meson' / 'dnstap') # DNSTAP through libfstream +subdir('meson' / 'libcurl') # Curl common_sources = [] @@ -106,7 +109,6 @@ common_sources += files( src_dir / 'ednspadding.cc', src_dir / 'ednssubnet.cc', src_dir / 'filterpo.cc', - src_dir / 'fstrm_logger.cc', src_dir / 'gettime.cc', src_dir / 'gss_context.cc', src_dir / 'iputils.cc', @@ -178,6 +180,29 @@ common_sources += files( src_dir / 'zoneparser-tng.cc', ) +conditional_sources = { + 'minicurl': { + 'sources': [ + src_dir / 'minicurl.cc', + src_dir / 'minicurl.hh', + ], + 'condition': dep_libcurl.found(), + }, + 'dnstap': { + 'sources': [ + src_dir / 'dnstap.cc', + src_dir / 'fstrm_logger.cc', + ], + 'condition': dep_dnstap.found(), + }, +} + +foreach name, info: conditional_sources + if info['condition'] + common_sources += files(info['sources']) + endif +endforeach + # Generate config.h config_h = configure_file(configuration: conf, output: 'config.h') @@ -205,14 +230,19 @@ deps = [ dep_libsnmp, dep_libsodium, dep_libssl, + dep_gnutls, dep_lua, dep_protozero, dep_rust_settings, dep_settings, dep_yahttp, dep_htmlfiles, + dep_dnstap, + dep_libcurl, ] +# XXX pub suffix list + libpdns_dnslabeltext_source = src_dir / 'dnslabeltext.rl' libpdns_dnslabeltext_gen = src_dir / 'dnslabeltext.cc' if not fs.is_file(libpdns_dnslabeltext_gen) diff --git a/pdns/recursordist/meson_options.txt b/pdns/recursordist/meson_options.txt index f56a7e7246..e950a34a7b 100644 --- a/pdns/recursordist/meson_options.txt +++ b/pdns/recursordist/meson_options.txt @@ -20,3 +20,5 @@ option('auto-var-init', type: 'combo', value: 'disabled', choices: ['zero', 'pat option('malloc-trace', type: 'boolean', value: false, description: 'Enable malloc-trace') option('socket-dir', type: 'string', value: '/var/run', description: 'Where the control socket lives') option('snmp', type: 'boolean', value: false, description: 'Enable SNMP') +option('dnstap', type: 'feature', value: 'auto', description: 'Enable DNSTAP support through libfstrm') +option('libcurl', type: 'feature', value: 'auto', description: 'Enable Curl support')