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

Reply via email to