Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package aardvark-dns for openSUSE:Factory checked in at 2024-11-12 19:20:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aardvark-dns (Old) and /work/SRC/openSUSE:Factory/.aardvark-dns.new.2017 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aardvark-dns" Tue Nov 12 19:20:04 2024 rev:14 rq:1223648 version:1.13.1 Changes: -------- --- /work/SRC/openSUSE:Factory/aardvark-dns/aardvark-dns.changes 2024-10-31 16:08:40.289321414 +0100 +++ /work/SRC/openSUSE:Factory/.aardvark-dns.new.2017/aardvark-dns.changes 2024-11-12 19:20:19.248701060 +0100 @@ -1,0 +2,17 @@ +Tue Nov 12 05:32:12 UTC 2024 - madhankumar.chellamu...@suse.com + +- Update to version 1.13.1: + * Release v1.13.1 + * release notes for 1.13.1 + * test: make jq query work on centos stream 9 + * [skip-ci] Packit/TMT: idiomatic repo addition + * [skip-ci] Packit: Remove epel jobs + * tmt: install dnsmasq dependency + * [skip-ci] Packit: disable osh-diff-scan + * [skip-ci] Packit: enable c9s downstream updates + * [skip-ci] TMT: install builddeps downstream + * [skip-ci] RPM: cleanup changelog conditionals + * support ipv6 link local addresses in resolv.conf + * cirrus: update DEST_BRANCH + +------------------------------------------------------------------- Old: ---- aardvark-dns-1.13.0.tar.gz New: ---- aardvark-dns-1.13.1.tar.gz aardvark-dns.obsinfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aardvark-dns.spec ++++++ --- /var/tmp/diff_new_pack.VNDV8B/_old 2024-11-12 19:20:21.316787708 +0100 +++ /var/tmp/diff_new_pack.VNDV8B/_new 2024-11-12 19:20:21.316787708 +0100 @@ -17,7 +17,7 @@ Name: aardvark-dns -Version: 1.13.0 +Version: 1.13.1 Release: 0 Summary: Authoritative dns server for A/AAAA container records License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.VNDV8B/_old 2024-11-12 19:20:21.348789048 +0100 +++ /var/tmp/diff_new_pack.VNDV8B/_new 2024-11-12 19:20:21.352789216 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/containers/aardvark-dns</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">v1.13.0</param> + <param name="revision">v1.13.1</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.VNDV8B/_old 2024-11-12 19:20:21.372790054 +0100 +++ /var/tmp/diff_new_pack.VNDV8B/_new 2024-11-12 19:20:21.376790222 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/containers/aardvark-dns</param> - <param name="changesrevision">8bb480684adede6b30aa57541fc3bebe7ec8228f</param></service></servicedata> + <param name="changesrevision">966017cf9252d09b0608ccb3ac7faf22e9bc847d</param></service></servicedata> (No newline at EOF) ++++++ aardvark-dns-1.13.0.tar.gz -> aardvark-dns-1.13.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/.cirrus.yml new/aardvark-dns-1.13.1/.cirrus.yml --- old/aardvark-dns-1.13.0/.cirrus.yml 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/.cirrus.yml 2024-11-06 14:42:06.000000000 +0100 @@ -5,7 +5,7 @@ # Main collection of env. vars to set for all tasks and scripts. env: # Actual|intended branch for this run - DEST_BRANCH: "main" + DEST_BRANCH: "v1.13" # The default is 'sh' if unspecified CIRRUS_SHELL: "/bin/bash" # Location where source repo. will be cloned diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/.packit.yaml new/aardvark-dns-1.13.1/.packit.yaml --- old/aardvark-dns-1.13.0/.packit.yaml 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/.packit.yaml 2024-11-06 14:42:06.000000000 +0100 @@ -28,8 +28,6 @@ aardvark-dns-centos: pkg_tool: centpkg specfile_path: rpm/aardvark-dns.spec - aardvark-dns-rhel: - specfile_path: rpm/aardvark-dns.spec aardvark-dns-eln: specfile_path: rpm/aardvark-dns.spec @@ -49,6 +47,7 @@ - fedora-all-x86_64 - fedora-all-aarch64 enable_net: true + osh_diff_scan_after_copr_build: false - job: copr_build trigger: pull_request @@ -74,15 +73,6 @@ - centos-stream-10-aarch64 enable_net: true - - job: copr_build - trigger: pull_request - packages: [aardvark-dns-rhel] - notifications: *copr_build_failure_notification - targets: - - epel-9-x86_64 - - epel-9-aarch64 - enable_net: true - # Run on commit to main branch - job: copr_build trigger: commit @@ -111,6 +101,11 @@ - fedora-latest-stable-aarch64 - fedora-40-x86_64 - fedora-40-aarch64 + tf_extra_params: + environments: + - artifacts: + - type: repository-file + id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/fedora-$releasever/rhcontainerbot-podman-next-fedora-$releasever.repo # Unit tests on CentOS Stream - job: tests @@ -118,26 +113,13 @@ packages: [aardvark-dns-centos] notifications: *test_failure_notification targets: *centos_copr_targets - - # Unit tests on RHEL - - job: tests - trigger: pull_request - packages: [aardvark-dns-rhel] - notifications: *test_failure_notification - use_internal_tf: true - targets: - epel-9-aarch64: - distros: [RHEL-9-Nightly,RHEL-9.4.0-Nightly] - epel-9-x86_64: - distros: [RHEL-9-Nightly,RHEL-9.4.0-Nightly] - # NOTE: Need to use centos-stream-10 until RHEL-10/EPEL-10 copr targets - # are available - # TODO: iptables kernel module is not available on rhel10. - # Enable these after netavark default is switched to nftables. - #centos-stream-10-aarch64: - # distros: [RHEL-10-Beta-Nightly] - #centos-stream-10-x86_64: - # distros: [RHEL-10-Beta-Nightly] + tf_extra_params: + environments: + - artifacts: + - type: repository-file + id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/centos-stream-$releasever/rhcontainerbot-podman-next-centos-stream-$releasever.repo + - type: repository-file + id: https://src.fedoraproject.org/rpms/epel-release/raw/epel$releasever/f/epel.repo # Sync to Fedora - job: propose_downstream @@ -154,6 +136,7 @@ update_release: false dist_git_branches: - c10s + - c9s - job: koji_build trigger: commit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/Cargo.lock new/aardvark-dns-1.13.1/Cargo.lock --- old/aardvark-dns-1.13.0/Cargo.lock 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/Cargo.lock 2024-11-06 14:42:06.000000000 +0100 @@ -4,7 +4,7 @@ [[package]] name = "aardvark-dns" -version = "1.13.0" +version = "1.13.1" dependencies = [ "arc-swap", "chrono", @@ -553,6 +553,15 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] name = "miniz_oxide" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -601,6 +610,7 @@ "cfg-if", "cfg_aliases", "libc", + "memoffset", ] [[package]] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/Cargo.toml new/aardvark-dns-1.13.1/Cargo.toml --- old/aardvark-dns-1.13.0/Cargo.toml 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/Cargo.toml 2024-11-06 14:42:06.000000000 +0100 @@ -1,7 +1,7 @@ [package] name = "aardvark-dns" # This version specification right below is reused by .packit.sh to generate rpm version -version = "1.13.0" +version = "1.13.1" edition = "2018" authors = ["github.com/containers"] license = "Apache-2.0" @@ -30,7 +30,7 @@ hickory-client = "0.24.1" futures-util = { version = "0.3.31", default-features = false } tokio = { version = "1.41.0", features = ["macros", "rt-multi-thread", "net", "signal"] } -nix = { version = "0.29.0", features = ["fs", "signal"] } +nix = { version = "0.29.0", features = ["fs", "signal", "net"] } libc = "0.2.161" arc-swap = "1.7.1" flume = "0.11.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/RELEASE_NOTES.md new/aardvark-dns-1.13.1/RELEASE_NOTES.md --- old/aardvark-dns-1.13.0/RELEASE_NOTES.md 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/RELEASE_NOTES.md 2024-11-06 14:42:06.000000000 +0100 @@ -1,5 +1,9 @@ # Release Notes +## v1.13.1 + +* Fix parsing of ipv6 link local addresses in resolv.conf ([#535](https://github.com/containers/aardvark-dns/issues/535)) + ## v1.13.0 * Set TTL to 0 for container names @@ -24,7 +28,7 @@ ## v1.11.0 * Do not allow "internal" networks to access DNS -* On SIGHUP, stop AV threads no longer needed and reload in memory those that are +* On SIGHUP, stop AV threads no longer needed and reload in memory those that are * updated dependencies ## v1.10.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/plans/all.fmf new/aardvark-dns-1.13.1/plans/all.fmf --- old/aardvark-dns-1.13.0/plans/all.fmf 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/plans/all.fmf 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -discover: - how: fmf -execute: - how: tmt - -/upstream: - summary: Run tests on upstream PRs - discover+: - filter: tag:upstream - adjust+: - enabled: false - when: initiator is not defined or initiator != packit - -/downstream: - summary: Run tests on bodhi / errata and dist-git PRs - discover+: - filter: tag:downstream - dist-git-source: true - dist-git-remove-fmf-root: true - adjust+: - enabled: false - when: initiator == packit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/plans/main.fmf new/aardvark-dns-1.13.1/plans/main.fmf --- old/aardvark-dns-1.13.0/plans/main.fmf 1970-01-01 01:00:00.000000000 +0100 +++ new/aardvark-dns-1.13.1/plans/main.fmf 2024-11-06 14:42:06.000000000 +0100 @@ -0,0 +1,23 @@ +discover: + how: fmf +execute: + how: tmt + +/upstream: + summary: Run tests on upstream PRs + discover+: + filter: tag:upstream + adjust+: + enabled: false + when: initiator is not defined or initiator != packit + +/downstream: + summary: Run tests on bodhi / errata and dist-git PRs + discover+: + filter: tag:downstream + dist-git-install-builddeps: true + dist-git-source: true + dist-git-remove-fmf-root: true + adjust+: + enabled: false + when: initiator == packit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/rpm/aardvark-dns.spec new/aardvark-dns-1.13.1/rpm/aardvark-dns.spec --- old/aardvark-dns-1.13.0/rpm/aardvark-dns.spec 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/rpm/aardvark-dns.spec 2024-11-06 14:42:06.000000000 +0100 @@ -88,12 +88,4 @@ %{_libexecdir}/podman/%{name} %changelog -%if %{defined autochangelog} %autochangelog -%else -# NOTE: This changelog will be visible on CentOS 8 Stream builds -# Other envs are capable of handling autochangelog -* Wed Jun 14 2023 RH Container Bot <rhcontainer...@fedoraproject.org> -- Placeholder changelog for envs that are not autochangelog-ready -- Contact upstream if you need to report an issue with the build. -%endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/src/dns/coredns.rs new/aardvark-dns-1.13.1/src/dns/coredns.rs --- old/aardvark-dns-1.13.0/src/dns/coredns.rs 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/src/dns/coredns.rs 2024-11-06 14:42:06.000000000 +0100 @@ -26,6 +26,8 @@ const DEFAULT_TIMEOUT: Duration = Duration::from_secs(5); +pub const DNS_PORT: u16 = 53; + pub struct CoreDns { rx: flume::Receiver<()>, // kill switch receiver inner: CoreDnsData, @@ -33,10 +35,10 @@ #[derive(Clone)] struct CoreDnsData { - network_name: String, // raw network name - backend: &'static ArcSwap<DNSBackend>, // server's data store - no_proxy: bool, // do not forward to external resolvers - nameservers: Arc<Mutex<Vec<IpAddr>>>, // host nameservers from resolv.conf + network_name: String, // raw network name + backend: &'static ArcSwap<DNSBackend>, // server's data store + no_proxy: bool, // do not forward to external resolvers + nameservers: Arc<Mutex<Vec<SocketAddr>>>, // host nameservers from resolv.conf } enum Protocol { @@ -52,7 +54,7 @@ backend: &'static ArcSwap<DNSBackend>, rx: flume::Receiver<()>, no_proxy: bool, - nameservers: Arc<Mutex<Vec<IpAddr>>>, + nameservers: Arc<Mutex<Vec<SocketAddr>>>, ) -> Self { CoreDns { rx, @@ -211,18 +213,18 @@ "Forwarding dns request for {} type: {}", &request_name_string, record_type ); - let mut nameservers: Vec<IpAddr> = Vec::new(); + let mut nameservers = Vec::new(); // Add resolvers configured for container if let Some(Some(dns_servers)) = backend.ctr_dns_server.get(&src_address.ip()) { for dns_server in dns_servers.iter() { - nameservers.push(*dns_server); + nameservers.push(SocketAddr::new(*dns_server, DNS_PORT)); } // Add network scoped resolvers only if container specific resolvers were not configured } else if let Some(network_dns_servers) = backend.get_network_scoped_resolvers(&src_address.ip()) { for dns_server in network_dns_servers.iter() { - nameservers.push(*dns_server); + nameservers.push(SocketAddr::new(*dns_server, DNS_PORT)); } } // Use host resolvers if no custom resolvers are set for the container. @@ -249,7 +251,7 @@ } async fn forward_to_servers( - nameservers: Vec<IpAddr>, + nameservers: Vec<SocketAddr>, mut sender: BufDnsStreamHandle, src_address: SocketAddr, req: Message, @@ -261,8 +263,7 @@ timeout = Duration::from_secs(5) / nameservers.len() as u32 } // forward dns request to hosts's /etc/resolv.conf - for nameserver in &nameservers { - let addr = SocketAddr::new(*nameserver, 53); + for addr in nameservers { let (client, handle) = match proto { Protocol::Udp => { let stream = UdpClientStream::<UdpSocket>::with_timeout(addr, timeout); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/src/server/serve.rs new/aardvark-dns-1.13.1/src/server/serve.rs --- old/aardvark-dns-1.13.0/src/server/serve.rs 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/src/server/serve.rs 2024-11-06 14:42:06.000000000 +0100 @@ -2,6 +2,7 @@ use crate::config::constants::AARDVARK_PID_FILE; use crate::config::parse_configs; use crate::dns::coredns::CoreDns; +use crate::dns::coredns::DNS_PORT; use crate::error::AardvarkError; use crate::error::AardvarkErrorList; use crate::error::AardvarkResult; @@ -17,10 +18,7 @@ use std::fs::OpenOptions; use std::hash::Hash; use std::io::Error; -use std::net::IpAddr; -use std::net::Ipv4Addr; -use std::net::Ipv6Addr; -use std::net::SocketAddr; +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; use std::os::fd::AsRawFd; use std::os::fd::OwnedFd; use std::sync::Arc; @@ -125,7 +123,7 @@ listen_ips: HashMap<String, Vec<Ip>>, thread_handles: &mut ThreadHandleMap<Ip>, no_proxy: bool, - nameservers: Arc<Mutex<Vec<IpAddr>>>, + nameservers: Arc<Mutex<Vec<SocketAddr>>>, ) -> AardvarkResult<()> where Ip: Eq + Hash + Copy + Into<IpAddr> + Send + 'static, @@ -247,7 +245,7 @@ backend: &'static ArcSwap<DNSBackend>, rx: flume::Receiver<()>, no_proxy: bool, - nameservers: Arc<Mutex<Vec<IpAddr>>>, + nameservers: Arc<Mutex<Vec<SocketAddr>>>, ) -> AardvarkResult<()> { let server = CoreDns::new(name, backend, rx, no_proxy, nameservers); server @@ -262,7 +260,7 @@ filter_search_domain: &str, handles_v4: &mut ThreadHandleMap<Ipv4Addr>, handles_v6: &mut ThreadHandleMap<Ipv6Addr>, - nameservers: Arc<Mutex<Vec<IpAddr>>>, + nameservers: Arc<Mutex<Vec<SocketAddr>>>, no_proxy: bool, ) -> AardvarkResult<()> { let (conf, listen_ip_v4, listen_ip_v6) = @@ -373,7 +371,7 @@ } // read /etc/resolv.conf and return all nameservers -fn get_upstream_resolvers() -> AardvarkResult<Vec<IpAddr>> { +fn get_upstream_resolvers() -> AardvarkResult<Vec<SocketAddr>> { let mut f = File::open("/etc/resolv.conf").wrap("open resolv.conf")?; let mut buf = String::with_capacity(4096); f.read_to_string(&mut buf).wrap("read resolv.conf")?; @@ -381,8 +379,8 @@ parse_resolv_conf(&buf) } -fn parse_resolv_conf(content: &str) -> AardvarkResult<Vec<IpAddr>> { - let mut nameservers: Vec<IpAddr> = Vec::new(); +fn parse_resolv_conf(content: &str) -> AardvarkResult<Vec<SocketAddr>> { + let mut nameservers = Vec::new(); for line in content.split('\n') { // split of comments let line = match line.split_once(['#', ';']) { @@ -395,11 +393,41 @@ if first == "nameserver" { if let Some(ip) = line_parts.next() { // split of zone, we do not support the link local zone currently with ipv6 addresses - let ip = match ip.split_once("%s") { - Some((f, _)) => f, + let mut scope = None; + let ip = match ip.split_once("%") { + Some((ip, scope_name)) => { + // allow both interface names or static ids + let id = match scope_name.parse() { + Ok(id) => id, + Err(_) => nix::net::if_::if_nametoindex(scope_name) + .wrap("resolve scope id")?, + }; + + scope = Some(id); + ip + } None => ip, }; - nameservers.push(ip.parse().wrap(ip)?); + let ip = ip.parse().wrap(ip)?; + + let addr = match ip { + IpAddr::V4(ip) => { + if scope.is_some() { + return Err(AardvarkError::msg( + "scope id not supported for ipv4 address", + )); + } + SocketAddr::V4(SocketAddrV4::new(ip, DNS_PORT)) + } + IpAddr::V6(ip) => SocketAddr::V6(SocketAddrV6::new( + ip, + DNS_PORT, + 0, + scope.unwrap_or(0), + )), + }; + + nameservers.push(addr); } } } @@ -416,9 +444,28 @@ mod tests { use super::*; - const IP_1_1_1_1: IpAddr = IpAddr::V4(Ipv4Addr::new(1, 1, 1, 1)); - const IP_1_1_1_2: IpAddr = IpAddr::V4(Ipv4Addr::new(1, 1, 1, 2)); - const IP_1_1_1_3: IpAddr = IpAddr::V4(Ipv4Addr::new(1, 1, 1, 3)); + const IP_1_1_1_1: SocketAddr = + SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(1, 1, 1, 1), DNS_PORT)); + const IP_1_1_1_2: SocketAddr = + SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(1, 1, 1, 2), DNS_PORT)); + const IP_1_1_1_3: SocketAddr = + SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(1, 1, 1, 3), DNS_PORT)); + + /// fdfd:733b:dc3:220b::2 + const IP_FDFD_733B_DC3_220B_2: SocketAddr = SocketAddr::V6(SocketAddrV6::new( + Ipv6Addr::new(0xfdfd, 0x733b, 0xdc3, 0x220b, 0, 0, 0, 2), + DNS_PORT, + 0, + 0, + )); + + /// fe80::1%lo + const IP_FE80_1: SocketAddr = SocketAddr::V6(SocketAddrV6::new( + Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 1), + DNS_PORT, + 0, + 1, + )); #[test] fn test_parse_resolv_conf() { @@ -492,4 +539,36 @@ fn test_parse_resolv_conf_with_invalid_ip() { parse_resolv_conf("nameserver abc").expect_err("invalid ip must error"); } + + #[test] + fn test_parse_resolv_ipv6() { + let res = parse_resolv_conf( + "nameserver fdfd:733b:dc3:220b::2 +nameserver 1.1.1.2", + ) + .expect("failed to parse"); + assert_eq!(res, vec![IP_FDFD_733B_DC3_220B_2, IP_1_1_1_2]); + } + + #[test] + fn test_parse_resolv_ipv6_link_local_zone() { + // Using lo here because we know that will always be id 1 and we + // cannot assume any other interface name here. + let res = parse_resolv_conf( + "nameserver fe80::1%lo +", + ) + .expect("failed to parse"); + assert_eq!(res, vec![IP_FE80_1]); + } + + #[test] + fn test_parse_resolv_ipv6_link_local_zone_id() { + let res = parse_resolv_conf( + "nameserver fe80::1%1 +", + ) + .expect("failed to parse"); + assert_eq!(res, vec![IP_FE80_1]); + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/test/100-basic-name-resolution.bats new/aardvark-dns-1.13.1/test/100-basic-name-resolution.bats --- old/aardvark-dns-1.13.0/test/100-basic-name-resolution.bats 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/test/100-basic-name-resolution.bats 2024-11-06 14:42:06.000000000 +0100 @@ -279,3 +279,46 @@ assert "$output" =~ "Host $TEST_DOMAIN not found" assert "$output" =~ "NXDOMAIN" } + +@test "host dns on ipv6 link local" { + # create a local interface with a link local ipv6 address + # disable dad as it takes some time so the initial connection fails without it + run_in_host_netns sysctl -w net.ipv6.conf.default.accept_dad=0 + run_in_host_netns ip link set lo up + run_in_host_netns ip link add test type bridge + run_in_host_netns ip link set test up + run_in_host_netns ip -j addr + link_local_addr=$(jq -r '.[] | select(.ifname=="test").addr_info[0].local' <<<"$output") + + # update our fake netns resolv.conf with the link local address as only nameserver + echo "nameserver $link_local_addr%test" >"$AARDVARK_TMPDIR/resolv.conf" + run_in_host_netns mount --bind "$AARDVARK_TMPDIR/resolv.conf" /etc/resolv.conf + + # launch dnsmasq to run a second local server with a unique name so we know custom_dns_server works + run_in_host_netns dnsmasq --conf-file=/dev/null --pid-file="$AARDVARK_TMPDIR/dnsmasq2.pid" \ + --except-interface=lo --listen-address="$link_local_addr" --bind-interfaces \ + --address=/unique-name.local/192.168.0.1 --no-resolv --no-hosts + HELPER_PID=$(cat $AARDVARK_TMPDIR/dnsmasq2.pid) + + subnet_a=$(random_subnet 5) + create_config network_name="podman1" container_id=$(random_string 64) container_name="aone" subnet="$subnet_a" + + config_a1=$config + ip_a1=$(echo "$config_a1" | jq -r .networks.podman1.static_ips[0]) + gw=$(echo "$config_a1" | jq -r .network_info.podman1.subnets[0].gateway) + create_container "$config_a1" + a1_pid=$CONTAINER_NS_PID + run_in_container_netns "$a1_pid" "dig" "aone" "@$gw" + # check for TTL 0 here as well + assert "$output" =~ "aone\.[[:space:]]*0[[:space:]]*IN[[:space:]]*A[[:space:]]*$ip_a1" + # Set recursion bit is already set if requested so output must not + # contain unexpected warning. + assert "$output" !~ "WARNING: recursion requested but not available" + + run_in_container_netns "$a1_pid" "dig" "+short" "unique-name.local" "@$gw" + # validate that we get the right ip + assert "$output" == "192.168.0.1" + # Set recursion bit is already set if requested so output must not + # contain unexpected warning. + assert "$output" !~ "WARNING: recursion requested but not available" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/test/tmt/main.fmf new/aardvark-dns-1.13.1/test/tmt/main.fmf --- old/aardvark-dns-1.13.0/test/tmt/main.fmf 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/test/tmt/main.fmf 2024-11-06 14:42:06.000000000 +0100 @@ -1,8 +1,19 @@ # Only common dependencies that are NOT required to run netavark-tests.sh are # specified here. Everything else is in netavark-tests.sh. require: + - bats + - bind-utils - cargo + - clippy + - go-md2man + - iptables + - jq - make + - netavark + - nftables + - nmap-ncat + - rustfmt + - dnsmasq adjust: duration: 10m @@ -19,12 +30,6 @@ test: make -C ../.. unit /integration: + tag: [ upstream, downstream] summary: Integration tests - - /upstream: - tag: upstream - test: bash test_integration.sh upstream - - /downstream: - tag: downstream - test: bash test_integration.sh downstream + test: bash test_integration.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aardvark-dns-1.13.0/test/tmt/test_integration.sh new/aardvark-dns-1.13.1/test/tmt/test_integration.sh --- old/aardvark-dns-1.13.0/test/tmt/test_integration.sh 2024-10-29 16:07:47.000000000 +0100 +++ new/aardvark-dns-1.13.1/test/tmt/test_integration.sh 2024-11-06 14:42:06.000000000 +0100 @@ -2,51 +2,14 @@ set -exo pipefail -if [[ $1 == '' ]]; then - echo -e "Usage: $(basename ${BASH_SOURCE[0]}) STREAM\nSTREAM can be upstream or downstream" - exit 1 -fi - -STREAM=$1 - -# `rhel` macro exists on RHEL, CentOS Stream, and Fedora ELN -# `centos` macro exists only on CentOS Stream -CENTOS_VERSION=$(rpm --eval '%{?centos}') -RHEL_VERSION=$(rpm --eval '%{?rhel}') - -# Check Distro -cat /etc/redhat-release - -# For upstream tests, we need to test with podman and other packages from the -# podman-next copr. For downstream tests (bodhi, errata), we don't need any -# additional setup -if [[ "$STREAM" == "upstream" ]]; then - # Use CentOS Stream 10 copr target for RHEL-10 until EPEL 10 becomes - # available - # `rhel` macro exists on RHEL, CentOS Stream, and Fedora ELN - # `centos` macro exists only on CentOS Stream - if [[ -n $CENTOS_VERSION || $RHEL_VERSION -ge 10 ]]; then - dnf -y copr enable rhcontainerbot/podman-next centos-stream-"$CENTOS_VERSION" - else - dnf -y copr enable rhcontainerbot/podman-next - fi - echo "priority=5" >> /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:rhcontainerbot:podman-next.repo -fi - # Remove testing-farm repos if they exist because they interfere with the # podman-next copr. The default distro repos will not be removed and can be # used wherever relevant. rm -f /etc/yum.repos.d/tag-repository.repo -# Enable EPEL on RHEL/CentOS Stream envs to fetch bats -if [[ -n $RHEL_VERSION ]]; then - # Until EPEL 10 is available use epel-9 for all RHEL and CentOS Stream - dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm - sed -i 's/$releasever/9/g' /etc/yum.repos.d/epel.repo -fi - -# Install dependencies for running tests -dnf -y install bats bind-utils cargo clippy go-md2man iptables jq make netavark nftables nmap-ncat rustfmt slirp4netns +# We want the netavark build from podman-next, so we update it after removing +# testing-farm repo. +dnf -y update netavark rpm -q aardvark-dns cargo netavark nftables ++++++ aardvark-dns.obsinfo ++++++ name: aardvark-dns version: 1.13.1 mtime: 1730900526 commit: 966017cf9252d09b0608ccb3ac7faf22e9bc847d ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/aardvark-dns/vendor.tar.gz /work/SRC/openSUSE:Factory/.aardvark-dns.new.2017/vendor.tar.gz differ: char 13, line 1