]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Fix SNMP, add a few more features
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 8 Jul 2024 13:18:07 +0000 (15:18 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 10 Jul 2024 11:25:48 +0000 (13:25 +0200)
meson/dnstap/meson.build [new file with mode: 0644]
meson/libcurl/meson.build [new file with mode: 0644]
meson/libsnmp/meson.build
pdns/recursordist/meson.build
pdns/recursordist/meson_options.txt

diff --git a/meson/dnstap/meson.build b/meson/dnstap/meson.build
new file mode 100644 (file)
index 0000000..e7a487e
--- /dev/null
@@ -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 (file)
index 0000000..1f434ba
--- /dev/null
@@ -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')
index 52f441a2ea757307b2cd64d69ed9ffc571303dca..8f06725bf5f30a05171c9ba6e048eac797e78515 100644 (file)
@@ -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')
index 9701f1cde3d6678ee1c1af58d331dd7de66e6685..a673791cc4446c837e68530e2a524e03dc97dbf3 100644 (file)
@@ -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)
index f56a7e7246ac8f1c2cb4101d4dc1d19d433bc75b..e950a34a7b5d148445c4749f4b3eac8f718515c6 100644 (file)
@@ -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')