Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package linkerd-cli-edge for 
openSUSE:Factory checked in at 2025-07-06 17:05:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linkerd-cli-edge (Old)
 and      /work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "linkerd-cli-edge"

Sun Jul  6 17:05:57 2025 rev:36 rq:1290079 version:25.7.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/linkerd-cli-edge/linkerd-cli-edge.changes        
2025-06-30 14:01:36.711498279 +0200
+++ 
/work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903/linkerd-cli-edge.changes  
    2025-07-06 17:07:58.851131697 +0200
@@ -1,0 +2,14 @@
+Thu Jul 03 05:13:09 UTC 2025 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- Update to version 25.7.1:
+  * no CLI-related changes (other than dependencies)
+  * Dependencies
+    - build(deps): bump rustc-demangle from 0.1.24 to 0.1.25
+      (#14187)
+    - build(deps): bump bumpalo from 3.18.1 to 3.19.0 (#14189)
+    - build(deps-dev): bump eslint-plugin-import in /web/app
+      (#14190)
+    - build(deps-dev): bump @babel/core from 7.27.4 to 7.27.7 in
+      /web/app (#14191)
+
+-------------------------------------------------------------------

Old:
----
  linkerd-cli-edge-25.6.4.obscpio

New:
----
  linkerd-cli-edge-25.7.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ linkerd-cli-edge.spec ++++++
--- /var/tmp/diff_new_pack.V1YY9S/_old  2025-07-06 17:08:00.907216775 +0200
+++ /var/tmp/diff_new_pack.V1YY9S/_new  2025-07-06 17:08:00.907216775 +0200
@@ -19,7 +19,7 @@
 %define linkerd_executable_name linkerd
 
 Name:           linkerd-cli-edge
-Version:        25.6.4
+Version:        25.7.1
 Release:        0
 Summary:        CLI for the linkerd service mesh for Kubernetes
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.V1YY9S/_old  2025-07-06 17:08:00.955218762 +0200
+++ /var/tmp/diff_new_pack.V1YY9S/_new  2025-07-06 17:08:00.959218927 +0200
@@ -3,8 +3,8 @@
     <param name="url">https://github.com/linkerd/linkerd2</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">edge-25.6.4</param>
-    <param name="match-tag">edge-25.6.4</param>
+    <param name="revision">edge-25.7.1</param>
+    <param name="match-tag">edge-25.7.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">edge-(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.V1YY9S/_old  2025-07-06 17:08:00.987220086 +0200
+++ /var/tmp/diff_new_pack.V1YY9S/_new  2025-07-06 17:08:00.991220252 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/linkerd/linkerd2</param>
-              <param 
name="changesrevision">91127be6ef8cbbd825a61ecd14ca2250a36b957e</param></service></servicedata>
+              <param 
name="changesrevision">6ebc86b2f8c60edf2aa77805493b1a07cfdc1454</param></service></servicedata>
 (No newline at EOF)
 

++++++ linkerd-cli-edge-25.6.4.obscpio -> linkerd-cli-edge-25.7.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/.proxy-version 
new/linkerd-cli-edge-25.7.1/.proxy-version
--- old/linkerd-cli-edge-25.6.4/.proxy-version  2025-06-26 20:07:02.000000000 
+0200
+++ new/linkerd-cli-edge-25.7.1/.proxy-version  2025-07-02 20:00:51.000000000 
+0200
@@ -1 +1 @@
-v2.304.0
+v2.306.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/Cargo.lock 
new/linkerd-cli-edge-25.7.1/Cargo.lock
--- old/linkerd-cli-edge-25.6.4/Cargo.lock      2025-06-26 20:07:02.000000000 
+0200
+++ new/linkerd-cli-edge-25.7.1/Cargo.lock      2025-07-02 20:00:51.000000000 
+0200
@@ -225,9 +225,9 @@
 
 [[package]]
 name = "bumpalo"
-version = "3.18.1"
+version = "3.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
 
 [[package]]
 name = "byteorder"
@@ -2059,9 +2059,9 @@
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.24"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
 
 [[package]]
 name = "rustix"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/RELEASE.md 
new/linkerd-cli-edge-25.7.1/RELEASE.md
--- old/linkerd-cli-edge-25.6.4/RELEASE.md      2025-06-26 20:07:02.000000000 
+0200
+++ new/linkerd-cli-edge-25.7.1/RELEASE.md      2025-07-02 20:00:51.000000000 
+0200
@@ -4,26 +4,18 @@
 
 ## 1. Bump the proxy version
 
-Determine the commit SHA of the `linkerd2-proxy` repo to be included in the
-release. If
-[proxy-version](https://github.com/linkerd/linkerd2/blob/main/.proxy-version)
-is already at the desired SHA, skip to step 2.
+Determine the commit SHA or tag of the `linkerd2-proxy` repo to be included in
+the release.
+
+The 
[proxy-version](https://github.com/linkerd/linkerd2/blob/main/.proxy-version)
+file is kept in sync automatically by the
+[`sync-proxy`](https://github.com/linkerd/linkerd2/actions/workflows/sync-proxy.yml)
+workflow. If the file is already at the desired SHA or tag, skip to step 2.
 
 If updating to `linkerd-proxy` HEAD, note the commit SHA at
 [latest.txt](https://build.l5d.io/linkerd2-proxy/latest.txt) (Look for
 `linkerd2-proxy-<linkerd2-proxy-sha>.tar.gz`).
 
-Create a new branch in the `linkerd2` repo, `username/proxy-version-bump`.
-
-Then run:
-
-```bash
-bin/git-commit-proxy-version <linkerd2-proxy-sha>
-```
-
-The script will update the `.proxy-version` file. Submit a PR to obtain reviews
-and approval.
-
 ## 2. Bump the proxy-init or CNI plugin version
 
 If the `linkerd2/proxy-init` or `linkerd2/cni-plugin` projects have a new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/charts/linkerd-crds/templates/serviceprofile.yaml 
new/linkerd-cli-edge-25.7.1/charts/linkerd-crds/templates/serviceprofile.yaml
--- 
old/linkerd-cli-edge-25.6.4/charts/linkerd-crds/templates/serviceprofile.yaml   
    2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/charts/linkerd-crds/templates/serviceprofile.yaml   
    2025-07-02 20:00:51.000000000 +0200
@@ -265,7 +265,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds.golden 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds.golden
--- old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds.golden    
2025-06-26 20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds.golden    
2025-07-02 20:00:51.000000000 +0200
@@ -6755,7 +6755,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds_with_gateway_api.golden
 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds_with_gateway_api.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_crds_with_gateway_api.golden
   2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_crds_with_gateway_api.golden
   2025-07-02 20:00:51.000000000 +0200
@@ -6755,7 +6755,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output.golden 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output.golden    
    2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output.golden    
    2025-07-02 20:00:51.000000000 +0200
@@ -6773,7 +6773,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output_ha.golden 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output_ha.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_output_ha.golden 
    2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_output_ha.golden 
    2025-07-02 20:00:51.000000000 +0200
@@ -6773,7 +6773,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden
 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden
        2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/install_helm_crds_without_gateway_output.golden
        2025-07-02 20:00:51.000000000 +0200
@@ -6773,7 +6773,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden
 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden
   2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_with_gateway_api.golden
   2025-07-02 20:00:51.000000000 +0200
@@ -6755,7 +6755,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden
 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden
--- 
old/linkerd-cli-edge-25.6.4/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden
        2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/cli/cmd/testdata/upgrade_crds_without_gateway_api.golden
        2025-07-02 20:00:51.000000000 +0200
@@ -6755,7 +6755,6 @@
                           isFailure:
                             type: boolean
   scope: Namespaced
-  preserveUnknownFields: false
   names:
     plural: serviceprofiles
     singular: serviceprofile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/policy-controller/core/src/outbound/target.rs 
new/linkerd-cli-edge-25.7.1/policy-controller/core/src/outbound/target.rs
--- old/linkerd-cli-edge-25.6.4/policy-controller/core/src/outbound/target.rs   
2025-06-26 20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/policy-controller/core/src/outbound/target.rs   
2025-07-02 20:00:51.000000000 +0200
@@ -8,6 +8,9 @@
 pub enum OutboundDiscoverTarget {
     Resource(ResourceTarget),
     External(SocketAddr),
+    // UndefinedPort indicates that the target is a Service on a port which is
+    // not defined in the Service's spec.
+    UndefinedPort(ResourceTarget),
 }
 
 #[derive(Clone, Debug)]
@@ -33,3 +36,18 @@
         }
     }
 }
+
+impl Kind {
+    pub fn group(&self) -> &'static str {
+        match self {
+            Kind::EgressNetwork(_) => "policy.linkerd.io",
+            Kind::Service => "core",
+        }
+    }
+    pub fn kind(&self) -> &'static str {
+        match self {
+            Kind::EgressNetwork(_) => "EgressNetwork",
+            Kind::Service => "Service",
+        }
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/policy-controller/grpc/src/outbound.rs 
new/linkerd-cli-edge-25.7.1/policy-controller/grpc/src/outbound.rs
--- old/linkerd-cli-edge-25.6.4/policy-controller/grpc/src/outbound.rs  
2025-06-26 20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/policy-controller/grpc/src/outbound.rs  
2025-07-02 20:00:51.000000000 +0200
@@ -195,6 +195,10 @@
             OutboundDiscoverTarget::External(original_dst) => {
                 Ok(tonic::Response::new(fallback(original_dst)))
             }
+
+            OutboundDiscoverTarget::UndefinedPort(resource) => {
+                Ok(tonic::Response::new(undefined_port(resource)))
+            }
         }
     }
 
@@ -205,6 +209,7 @@
         req: tonic::Request<outbound::TrafficSpec>,
     ) -> Result<tonic::Response<BoxWatchStream>, tonic::Status> {
         let metrics = self.watch_metrics.start();
+        tracing::debug!(?req, "watching outbound policy");
         let target = match self.lookup(req.into_inner()) {
             Ok(target) => target,
             Err(status) => {
@@ -251,6 +256,9 @@
                     metrics,
                 )))
             }
+            OutboundDiscoverTarget::UndefinedPort(resource) => {
+                Ok(tonic::Response::new(undefined_port_stream(drain, 
resource)))
+            }
         }
     }
 }
@@ -407,6 +415,58 @@
     }
 }
 
+fn undefined_port(target: ResourceTarget) -> outbound::OutboundPolicy {
+    let metadata = Some(Metadata {
+        kind: Some(metadata::Kind::Resource(Resource {
+            group: target.kind.group().to_string(),
+            kind: target.kind.kind().to_string(),
+            name: target.name,
+            namespace: target.namespace,
+            section: String::default(),
+            port: target.port.get() as u32,
+        })),
+    });
+
+    let opaque = outbound::proxy_protocol::Opaque {
+        routes: vec![outbound::OpaqueRoute {
+            metadata: Some(Metadata {
+                kind: 
Some(metadata::Kind::Default("undefined-port".to_string())),
+            }),
+            rules: vec![outbound::opaque_route::Rule {
+                backends: Some(outbound::opaque_route::Distribution {
+                    kind: 
Some(outbound::opaque_route::distribution::Kind::Empty(
+                        outbound::opaque_route::distribution::Empty {},
+                    )),
+                }),
+                filters: vec![outbound::opaque_route::Filter {
+                    kind: Some(outbound::opaque_route::filter::Kind::Forbidden(
+                        linkerd2_proxy_api::opaque_route::Forbidden {},
+                    )),
+                }],
+            }],
+        }],
+    };
+
+    outbound::OutboundPolicy {
+        metadata,
+        protocol: Some(outbound::ProxyProtocol {
+            kind: Some(outbound::proxy_protocol::Kind::Opaque(opaque)),
+        }),
+    }
+}
+
+fn undefined_port_stream(drain: drain::Watch, target: ResourceTarget) -> 
BoxWatchStream {
+    Box::pin(async_stream::try_stream! {
+        tokio::pin! {
+            let shutdown = drain.signaled();
+        }
+
+        yield undefined_port(target.clone());
+
+        let _ = shutdown.await;
+    })
+}
+
 fn to_proto(
     policy: OutboundPolicy,
     allow_l5d_request_headers: bool,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/policy-controller/k8s/index/src/outbound/index.rs 
new/linkerd-cli-edge-25.7.1/policy-controller/k8s/index/src/outbound/index.rs
--- 
old/linkerd-cli-edge-25.6.4/policy-controller/k8s/index/src/outbound/index.rs   
    2025-06-26 20:07:02.000000000 +0200
+++ 
new/linkerd-cli-edge-25.7.1/policy-controller/k8s/index/src/outbound/index.rs   
    2025-07-02 20:00:51.000000000 +0200
@@ -1,5 +1,5 @@
 use crate::{
-    ports::{ports_annotation, PortMap},
+    ports::{ports_annotation, PortMap, PortSet},
     routes::{ExplicitGKN, HttpRouteResource, ImpliedGKN},
     ClusterInfo,
 };
@@ -9,8 +9,8 @@
 use linkerd_policy_controller_core::{
     outbound::{
         AppProtocol, Backend, Backoff, FailureAccrual, GrpcRetryCondition, 
GrpcRoute,
-        HttpRetryCondition, HttpRoute, Kind, OutboundPolicy, ParentInfo, 
ResourceTarget,
-        RouteRetry, RouteSet, RouteTimeouts, TcpRoute, TlsRoute, TrafficPolicy,
+        HttpRetryCondition, HttpRoute, Kind, OutboundDiscoverTarget, 
OutboundPolicy, ParentInfo,
+        ResourceTarget, RouteRetry, RouteSet, RouteTimeouts, TcpRoute, 
TlsRoute, TrafficPolicy,
     },
     routes::GroupKindNamespaceName,
 };
@@ -30,7 +30,7 @@
 #[derive(Debug)]
 pub struct Index {
     namespaces: NamespaceIndex,
-    services_by_ip: HashMap<IpAddr, ResourceRef>,
+    services_by_ip: HashMap<IpAddr, ServicePorts>,
     egress_networks_by_ref: HashMap<ResourceRef, EgressNetwork>,
     // holds information about resources. currently EgressNetworks and Services
     resource_info: HashMap<ResourceRef, ResourceInfo>,
@@ -67,6 +67,12 @@
     pub namespace: String,
 }
 
+#[derive(Debug)]
+struct ServicePorts {
+    service: ResourceRef,
+    ports: PortSet,
+}
+
 /// Holds all `Pod`, `Server`, and `ServerAuthorization` indices by-namespace.
 #[derive(Debug)]
 struct NamespaceIndex {
@@ -263,6 +269,12 @@
             tracing::warn!(%error, service=name, namespace=ns, "Failed to 
parse grpc retry")
         }).unwrap_or_default();
 
+        let service_ref = ResourceRef {
+            kind: ResourceKind::Service,
+            name: name.clone(),
+            namespace: ns.clone(),
+        };
+        self.services_by_ip.retain(|_, v| v.service != service_ref);
         if let Some(cluster_ips) = service
             .spec
             .as_ref()
@@ -274,12 +286,30 @@
                 }
                 match cluster_ip.parse() {
                     Ok(addr) => {
-                        let service_ref = ResourceRef {
-                            kind: ResourceKind::Service,
-                            name: name.clone(),
-                            namespace: ns.clone(),
-                        };
-                        self.services_by_ip.insert(addr, service_ref);
+                        service.spec.as_ref().and_then(|spec| {
+                            spec.ports.as_ref().map(|ports| {
+                                ports.iter().for_each(|port| {
+                                    let port = match 
port.port.try_into().ok().and_then(NonZeroU16::new) {
+                                        Some(port) => port,
+                                        None => {
+                                            tracing::warn!(%port.port, 
service=name, "Invalid service port");
+                                            return;
+                                        }
+                                    };
+                                    tracing::debug!(
+                                        %addr,
+                                        port,
+                                        service = name,
+                                        "inserting service into ip index"
+                                    );
+                                    self.services_by_ip
+                                        .entry(addr)
+                                        .or_insert(
+                                            ServicePorts { service: 
service_ref.clone(), ports: Default::default() }
+                                        ).ports.insert(port);
+                                });
+                            })
+                        });
                     }
                     Err(error) => {
                         tracing::warn!(%error, service=name, cluster_ip, 
"Invalid cluster ip");
@@ -334,7 +364,7 @@
             namespace,
         };
         self.resource_info.remove(&service_ref);
-        self.services_by_ip.retain(|_, v| *v != service_ref);
+        self.services_by_ip.retain(|_, v| v.service != service_ref);
 
         self.reindex_resources();
     }
@@ -515,11 +545,33 @@
         Ok(watch.watch.subscribe())
     }
 
-    pub fn lookup_service(&self, addr: IpAddr) -> Option<(String, String)> {
-        self.services_by_ip
-            .get(&addr)
-            .cloned()
-            .map(|r| (r.namespace, r.name))
+    pub fn lookup_service(
+        &self,
+        addr: IpAddr,
+        port: NonZeroU16,
+        source_namespace: String,
+    ) -> Option<OutboundDiscoverTarget> {
+        tracing::debug!(?addr, "looking up service");
+
+        let service = self.services_by_ip.get(&addr)?;
+        tracing::debug!(service=?service.service, "found service");
+        if service.ports.contains(&port) {
+            Some(OutboundDiscoverTarget::Resource(ResourceTarget {
+                name: service.service.name.clone(),
+                namespace: service.service.namespace.clone(),
+                port,
+                source_namespace,
+                kind: Kind::Service,
+            }))
+        } else {
+            Some(OutboundDiscoverTarget::UndefinedPort(ResourceTarget {
+                name: service.service.name.clone(),
+                namespace: service.service.namespace.clone(),
+                port,
+                source_namespace,
+                kind: Kind::Service,
+            }))
+        }
     }
 
     pub fn lookup_egress_network(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/policy-controller/runtime/src/lib.rs 
new/linkerd-cli-edge-25.7.1/policy-controller/runtime/src/lib.rs
--- old/linkerd-cli-edge-25.6.4/policy-controller/runtime/src/lib.rs    
2025-06-26 20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/policy-controller/runtime/src/lib.rs    
2025-07-02 20:00:51.000000000 +0200
@@ -12,7 +12,7 @@
 mod lease;
 pub use self::args::Args;
 
-use std::num::NonZeroU16;
+use std::{net::IpAddr, num::NonZeroU16};
 
 #[derive(Clone, Debug)]
 struct InboundDiscover(index::inbound::SharedIndex);
@@ -123,21 +123,13 @@
 
     fn lookup_ip(
         &self,
-        addr: std::net::IpAddr,
+        addr: IpAddr,
         port: NonZeroU16,
         source_namespace: String,
     ) -> Option<core::outbound::OutboundDiscoverTarget> {
         let index = self.0.read();
-        if let Some((namespace, name)) = index.lookup_service(addr) {
-            return Some(core::outbound::OutboundDiscoverTarget::Resource(
-                core::outbound::ResourceTarget {
-                    name,
-                    namespace,
-                    port,
-                    source_namespace,
-                    kind: core::outbound::Kind::Service,
-                },
-            ));
+        if let Some(target) = index.lookup_service(addr, port, 
source_namespace.clone()) {
+            return Some(target);
         }
 
         if let Some((namespace, name)) = index.lookup_egress_network(addr, 
source_namespace.clone())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/linkerd-cli-edge-25.6.4/policy-test/src/test_route.rs 
new/linkerd-cli-edge-25.7.1/policy-test/src/test_route.rs
--- old/linkerd-cli-edge-25.6.4/policy-test/src/test_route.rs   2025-06-26 
20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/policy-test/src/test_route.rs   2025-07-02 
20:00:51.000000000 +0200
@@ -782,11 +782,20 @@
                 ..Default::default()
             },
             spec: Some(k8s::ServiceSpec {
-                ports: Some(vec![k8s::ServicePort {
-                    port: 4191,
-                    app_protocol,
-                    ..Default::default()
-                }]),
+                ports: Some(vec![
+                    k8s::ServicePort {
+                        name: Some("port-one".to_string()),
+                        port: 4191,
+                        app_protocol: app_protocol.clone(),
+                        ..Default::default()
+                    },
+                    k8s::ServicePort {
+                        name: Some("port-two".to_string()),
+                        port: 9999,
+                        app_protocol,
+                        ..Default::default()
+                    },
+                ]),
                 ..Default::default()
             }),
             ..k8s::Service::default()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/web/app/package.json 
new/linkerd-cli-edge-25.7.1/web/app/package.json
--- old/linkerd-cli-edge-25.6.4/web/app/package.json    2025-06-26 
20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/web/app/package.json    2025-07-02 
20:00:51.000000000 +0200
@@ -41,7 +41,7 @@
     "whatwg-fetch": "3.6.20"
   },
   "devDependencies": {
-    "@babel/core": "^7.27.4",
+    "@babel/core": "^7.27.7",
     "@babel/eslint-parser": "^7.27.5",
     "@babel/plugin-proposal-class-properties": "^7.17.12",
     "@babel/preset-env": "^7.27.2",
@@ -61,7 +61,7 @@
     "enzyme-adapter-react-16": "^1.15.8",
     "eslint": "^8.57.1",
     "eslint-config-airbnb": "^19.0.4",
-    "eslint-plugin-import": "^2.31.0",
+    "eslint-plugin-import": "^2.32.0",
     "eslint-plugin-jsx-a11y": "^6.10.2",
     "eslint-plugin-promise": "^7.2.1",
     "eslint-plugin-react": "^7.37.5",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/linkerd-cli-edge-25.6.4/web/app/yarn.lock 
new/linkerd-cli-edge-25.7.1/web/app/yarn.lock
--- old/linkerd-cli-edge-25.6.4/web/app/yarn.lock       2025-06-26 
20:07:02.000000000 +0200
+++ new/linkerd-cli-edge-25.7.1/web/app/yarn.lock       2025-07-02 
20:00:51.000000000 +0200
@@ -40,21 +40,21 @@
   resolved 
"https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9";
   integrity 
sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==
 
-"@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.27.4":
-  version "7.27.4"
-  resolved 
"https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce";
-  integrity 
sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==
+"@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.27.4", 
"@babel/core@^7.27.7":
+  version "7.27.7"
+  resolved 
"https://registry.yarnpkg.com/@babel/core/-/core-7.27.7.tgz#0ddeab1e7b17317dad8c3c3a887716f66b5c4428";
+  integrity 
sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==
   dependencies:
     "@ampproject/remapping" "^2.2.0"
     "@babel/code-frame" "^7.27.1"
-    "@babel/generator" "^7.27.3"
+    "@babel/generator" "^7.27.5"
     "@babel/helper-compilation-targets" "^7.27.2"
     "@babel/helper-module-transforms" "^7.27.3"
-    "@babel/helpers" "^7.27.4"
-    "@babel/parser" "^7.27.4"
+    "@babel/helpers" "^7.27.6"
+    "@babel/parser" "^7.27.7"
     "@babel/template" "^7.27.2"
-    "@babel/traverse" "^7.27.4"
-    "@babel/types" "^7.27.3"
+    "@babel/traverse" "^7.27.7"
+    "@babel/types" "^7.27.7"
     convert-source-map "^2.0.0"
     debug "^4.1.0"
     gensync "^1.0.0-beta.2"
@@ -77,18 +77,7 @@
   dependencies:
     eslint-rule-composer "^0.3.0"
 
-"@babel/generator@^7.20.14", "@babel/generator@^7.27.3":
-  version "7.27.3"
-  resolved 
"https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.3.tgz#ef1c0f7cfe3b5fc8cbb9f6cc69f93441a68edefc";
-  integrity 
sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==
-  dependencies:
-    "@babel/parser" "^7.27.3"
-    "@babel/types" "^7.27.3"
-    "@jridgewell/gen-mapping" "^0.3.5"
-    "@jridgewell/trace-mapping" "^0.3.25"
-    jsesc "^3.0.2"
-
-"@babel/generator@^7.27.5":
+"@babel/generator@^7.20.14", "@babel/generator@^7.27.5":
   version "7.27.5"
   resolved 
"https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c";
   integrity 
sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==
@@ -328,27 +317,20 @@
     "@babel/traverse" "^7.27.1"
     "@babel/types" "^7.27.1"
 
-"@babel/helpers@^7.27.4":
-  version "7.27.4"
-  resolved 
"https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.4.tgz#c79050c6a0e41e095bfc96d469c85431e9ed7fe7";
-  integrity 
sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==
+"@babel/helpers@^7.27.6":
+  version "7.27.6"
+  resolved 
"https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c";
+  integrity 
sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==
   dependencies:
     "@babel/template" "^7.27.2"
-    "@babel/types" "^7.27.3"
+    "@babel/types" "^7.27.6"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", 
"@babel/parser@^7.27.2", "@babel/parser@^7.27.3", "@babel/parser@^7.27.4":
-  version "7.27.4"
-  resolved 
"https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.4.tgz#f92e89e4f51847be05427285836fc88341c956df";
-  integrity 
sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==
-  dependencies:
-    "@babel/types" "^7.27.3"
-
-"@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.5":
-  version "7.27.5"
-  resolved 
"https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826";
-  integrity 
sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", 
"@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", 
"@babel/parser@^7.27.5", "@babel/parser@^7.27.7":
+  version "7.27.7"
+  resolved 
"https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.7.tgz#1687f5294b45039c159730e3b9c1f1b242e425e9";
+  integrity 
sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==
   dependencies:
-    "@babel/types" "^7.27.3"
+    "@babel/types" "^7.27.7"
 
 "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1":
   version "7.27.1"
@@ -1073,23 +1055,23 @@
     "@babel/parser" "^7.27.2"
     "@babel/types" "^7.27.1"
 
-"@babel/traverse@^7.18.6", "@babel/traverse@^7.27.1", 
"@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4":
-  version "7.27.4"
-  resolved 
"https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea";
-  integrity 
sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
+"@babel/traverse@^7.18.6", "@babel/traverse@^7.27.1", 
"@babel/traverse@^7.27.3", "@babel/traverse@^7.27.7":
+  version "7.27.7"
+  resolved 
"https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.7.tgz#8355c39be6818362eace058cf7f3e25ac2ec3b55";
+  integrity 
sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==
   dependencies:
     "@babel/code-frame" "^7.27.1"
-    "@babel/generator" "^7.27.3"
-    "@babel/parser" "^7.27.4"
+    "@babel/generator" "^7.27.5"
+    "@babel/parser" "^7.27.7"
     "@babel/template" "^7.27.2"
-    "@babel/types" "^7.27.3"
+    "@babel/types" "^7.27.7"
     debug "^4.3.1"
     globals "^11.1.0"
 
-"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", 
"@babel/types@^7.22.5", "@babel/types@^7.27.1", "@babel/types@^7.27.3", 
"@babel/types@^7.3.0", "@babel/types@^7.4.4":
-  version "7.27.3"
-  resolved 
"https://registry.yarnpkg.com/@babel/types/-/types-7.27.3.tgz#c0257bedf33aad6aad1f406d35c44758321eb3ec";
-  integrity 
sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==
+"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", 
"@babel/types@^7.22.5", "@babel/types@^7.27.1", "@babel/types@^7.27.3", 
"@babel/types@^7.27.6", "@babel/types@^7.27.7", "@babel/types@^7.3.0", 
"@babel/types@^7.4.4":
+  version "7.27.7"
+  resolved 
"https://registry.yarnpkg.com/@babel/types/-/types-7.27.7.tgz#40eabd562049b2ee1a205fa589e629f945dce20f";
+  integrity 
sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==
   dependencies:
     "@babel/helper-string-parser" "^7.27.1"
     "@babel/helper-validator-identifier" "^7.27.1"
@@ -2683,17 +2665,19 @@
   resolved 
"https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2";
   integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
 
-array-includes@^3.1.6, array-includes@^3.1.8:
-  version "3.1.8"
-  resolved 
"https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d";
-  integrity 
sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
+array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9:
+  version "3.1.9"
+  resolved 
"https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a";
+  integrity 
sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==
   dependencies:
-    call-bind "^1.0.7"
+    call-bind "^1.0.8"
+    call-bound "^1.0.4"
     define-properties "^1.2.1"
-    es-abstract "^1.23.2"
-    es-object-atoms "^1.0.0"
-    get-intrinsic "^1.2.4"
-    is-string "^1.0.7"
+    es-abstract "^1.24.0"
+    es-object-atoms "^1.1.1"
+    get-intrinsic "^1.3.0"
+    is-string "^1.1.1"
+    math-intrinsics "^1.1.0"
 
 array-union@^1.0.1:
   version "1.0.2"
@@ -2738,27 +2722,28 @@
     es-object-atoms "^1.0.0"
     es-shim-unscopables "^1.0.2"
 
-array.prototype.findlastindex@^1.2.5:
-  version "1.2.5"
-  resolved 
"https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d";
-  integrity 
sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==
+array.prototype.findlastindex@^1.2.6:
+  version "1.2.6"
+  resolved 
"https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564";
+  integrity 
sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==
   dependencies:
-    call-bind "^1.0.7"
+    call-bind "^1.0.8"
+    call-bound "^1.0.4"
     define-properties "^1.2.1"
-    es-abstract "^1.23.2"
+    es-abstract "^1.23.9"
     es-errors "^1.3.0"
-    es-object-atoms "^1.0.0"
-    es-shim-unscopables "^1.0.2"
+    es-object-atoms "^1.1.1"
+    es-shim-unscopables "^1.1.0"
 
-array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, 
array.prototype.flat@^1.3.2:
-  version "1.3.2"
-  resolved 
"https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18";
-  integrity 
sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
+array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, 
array.prototype.flat@^1.3.3:
+  version "1.3.3"
+  resolved 
"https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5";
+  integrity 
sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==
   dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.2.0"
-    es-abstract "^1.22.1"
-    es-shim-unscopables "^1.0.0"
+    call-bind "^1.0.8"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.5"
+    es-shim-unscopables "^1.0.2"
 
 array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3:
   version "1.3.3"
@@ -3796,12 +3781,12 @@
   dependencies:
     ms "2.0.0"
 
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
-  version "4.3.4"
-  resolved 
"https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865";
-  integrity 
sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+  version "4.4.1"
+  resolved 
"https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b";
+  integrity 
sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
   dependencies:
-    ms "2.1.2"
+    ms "^2.1.3"
 
 debug@^3.2.7:
   version "3.2.7"
@@ -3810,13 +3795,6 @@
   dependencies:
     ms "^2.1.1"
 
-debug@^4.3.4:
-  version "4.4.1"
-  resolved 
"https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b";
-  integrity 
sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
-  dependencies:
-    ms "^2.1.3"
-
 decimal.js@^10.5.0:
   version "10.5.0"
   resolved 
"https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22";
@@ -4426,6 +4404,66 @@
     unbox-primitive "^1.1.0"
     which-typed-array "^1.1.18"
 
+es-abstract@^1.24.0:
+  version "1.24.0"
+  resolved 
"https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328";
+  integrity 
sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
+  dependencies:
+    array-buffer-byte-length "^1.0.2"
+    arraybuffer.prototype.slice "^1.0.4"
+    available-typed-arrays "^1.0.7"
+    call-bind "^1.0.8"
+    call-bound "^1.0.4"
+    data-view-buffer "^1.0.2"
+    data-view-byte-length "^1.0.2"
+    data-view-byte-offset "^1.0.1"
+    es-define-property "^1.0.1"
+    es-errors "^1.3.0"
+    es-object-atoms "^1.1.1"
+    es-set-tostringtag "^2.1.0"
+    es-to-primitive "^1.3.0"
+    function.prototype.name "^1.1.8"
+    get-intrinsic "^1.3.0"
+    get-proto "^1.0.1"
+    get-symbol-description "^1.1.0"
+    globalthis "^1.0.4"
+    gopd "^1.2.0"
+    has-property-descriptors "^1.0.2"
+    has-proto "^1.2.0"
+    has-symbols "^1.1.0"
+    hasown "^2.0.2"
+    internal-slot "^1.1.0"
+    is-array-buffer "^3.0.5"
+    is-callable "^1.2.7"
+    is-data-view "^1.0.2"
+    is-negative-zero "^2.0.3"
+    is-regex "^1.2.1"
+    is-set "^2.0.3"
+    is-shared-array-buffer "^1.0.4"
+    is-string "^1.1.1"
+    is-typed-array "^1.1.15"
+    is-weakref "^1.1.1"
+    math-intrinsics "^1.1.0"
+    object-inspect "^1.13.4"
+    object-keys "^1.1.1"
+    object.assign "^4.1.7"
+    own-keys "^1.0.1"
+    regexp.prototype.flags "^1.5.4"
+    safe-array-concat "^1.1.3"
+    safe-push-apply "^1.0.0"
+    safe-regex-test "^1.1.0"
+    set-proto "^1.0.0"
+    stop-iteration-iterator "^1.1.0"
+    string.prototype.trim "^1.2.10"
+    string.prototype.trimend "^1.0.9"
+    string.prototype.trimstart "^1.0.8"
+    typed-array-buffer "^1.0.3"
+    typed-array-byte-length "^1.0.3"
+    typed-array-byte-offset "^1.0.4"
+    typed-array-length "^1.0.7"
+    unbox-primitive "^1.1.0"
+    which-typed-array "^1.1.19"
+
 es-array-method-boxes-properly@^1.0.0:
   version "1.0.0"
   resolved 
"https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e";
@@ -4517,13 +4555,6 @@
     has-tostringtag "^1.0.2"
     hasown "^2.0.2"
 
-es-shim-unscopables@^1.0.0:
-  version "1.0.0"
-  resolved 
"https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241";
-  integrity 
sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
-  dependencies:
-    has "^1.0.3"
-
 es-shim-unscopables@^1.0.2:
   version "1.0.2"
   resolved 
"https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763";
@@ -4531,6 +4562,13 @@
   dependencies:
     hasown "^2.0.0"
 
+es-shim-unscopables@^1.1.0:
+  version "1.1.0"
+  resolved 
"https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5";
+  integrity 
sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==
+  dependencies:
+    hasown "^2.0.2"
+
 es-to-primitive@^1.2.1:
   version "1.2.1"
   resolved 
"https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a";
@@ -4607,36 +4645,36 @@
     is-core-module "^2.13.0"
     resolve "^1.22.4"
 
-eslint-module-utils@^2.12.0:
-  version "2.12.0"
-  resolved 
"https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b";
-  integrity 
sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==
+eslint-module-utils@^2.12.1:
+  version "2.12.1"
+  resolved 
"https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff";
+  integrity 
sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==
   dependencies:
     debug "^3.2.7"
 
-eslint-plugin-import@^2.31.0:
-  version "2.31.0"
-  resolved 
"https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7";
-  integrity 
sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
+eslint-plugin-import@^2.32.0:
+  version "2.32.0"
+  resolved 
"https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980";
+  integrity 
sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==
   dependencies:
     "@rtsao/scc" "^1.1.0"
-    array-includes "^3.1.8"
-    array.prototype.findlastindex "^1.2.5"
-    array.prototype.flat "^1.3.2"
-    array.prototype.flatmap "^1.3.2"
+    array-includes "^3.1.9"
+    array.prototype.findlastindex "^1.2.6"
+    array.prototype.flat "^1.3.3"
+    array.prototype.flatmap "^1.3.3"
     debug "^3.2.7"
     doctrine "^2.1.0"
     eslint-import-resolver-node "^0.3.9"
-    eslint-module-utils "^2.12.0"
+    eslint-module-utils "^2.12.1"
     hasown "^2.0.2"
-    is-core-module "^2.15.1"
+    is-core-module "^2.16.1"
     is-glob "^4.0.3"
     minimatch "^3.1.2"
     object.fromentries "^2.0.8"
     object.groupby "^1.0.3"
-    object.values "^1.2.0"
+    object.values "^1.2.1"
     semver "^6.3.1"
-    string.prototype.trimend "^1.0.8"
+    string.prototype.trimend "^1.0.9"
     tsconfig-paths "^3.15.0"
 
 eslint-plugin-jsx-a11y@^6.10.2:
@@ -5064,6 +5102,13 @@
   dependencies:
     is-callable "^1.1.3"
 
+for-each@^0.3.5:
+  version "0.3.5"
+  resolved 
"https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47";
+  integrity 
sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
+  dependencies:
+    is-callable "^1.2.7"
+
 foreground-child@^3.1.0:
   version "3.3.1"
   resolved 
"https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f";
@@ -5925,10 +5970,10 @@
   resolved 
"https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945";
   integrity 
sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
 
-is-core-module@^2.13.0, is-core-module@^2.15.1:
-  version "2.15.1"
-  resolved 
"https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37";
-  integrity 
sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
+is-core-module@^2.13.0, is-core-module@^2.16.1:
+  version "2.16.1"
+  resolved 
"https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4";
+  integrity 
sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
   dependencies:
     hasown "^2.0.2"
 
@@ -6253,6 +6298,13 @@
   dependencies:
     call-bound "^1.0.2"
 
+is-weakref@^1.1.1:
+  version "1.1.1"
+  resolved 
"https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293";
+  integrity 
sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==
+  dependencies:
+    call-bound "^1.0.3"
+
 is-weakset@^2.0.3:
   version "2.0.4"
   resolved 
"https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca";
@@ -7150,13 +7202,6 @@
   dependencies:
     yallist "^3.0.2"
 
-lru-cache@^6.0.0:
-  version "6.0.0"
-  resolved 
"https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94";
-  integrity 
sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
-  dependencies:
-    yallist "^4.0.0"
-
 make-dir@^3.0.0:
   version "3.1.0"
   resolved 
"https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f";
@@ -7323,11 +7368,6 @@
   resolved 
"https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8";
   integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
 
-ms@2.1.2:
-  version "2.1.2"
-  resolved 
"https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009";
-  integrity 
sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
 ms@2.1.3, ms@^2.1.1, ms@^2.1.3:
   version "2.1.3"
   resolved 
"https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2";
@@ -7460,6 +7500,11 @@
   resolved 
"https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a";
   integrity 
sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
 
+object-inspect@^1.13.4:
+  version "1.13.4"
+  resolved 
"https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213";
+  integrity 
sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
+
 object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5:
   version "1.1.5"
   resolved 
"https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac";
@@ -7524,7 +7569,7 @@
     define-properties "^1.2.1"
     es-abstract "^1.23.2"
 
-object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7, 
object.values@^1.2.0, object.values@^1.2.1:
+object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7, 
object.values@^1.2.1:
   version "1.2.1"
   resolved 
"https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216";
   integrity 
sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==
@@ -8341,7 +8386,7 @@
     es-errors "^1.3.0"
     set-function-name "^2.0.1"
 
-regexp.prototype.flags@^1.5.3:
+regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4:
   version "1.5.4"
   resolved 
"https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19";
   integrity 
sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
@@ -8675,14 +8720,7 @@
   resolved 
"https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4";
   integrity 
sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
-semver@^7.5.4:
-  version "7.5.4"
-  resolved 
"https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e";
-  integrity 
sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
-  dependencies:
-    lru-cache "^6.0.0"
-
-semver@^7.7.2:
+semver@^7.5.4, semver@^7.7.2:
   version "7.7.2"
   resolved 
"https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58";
   integrity 
sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
@@ -9014,6 +9052,14 @@
   resolved 
"https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c";
   integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
 
+stop-iteration-iterator@^1.1.0:
+  version "1.1.0"
+  resolved 
"https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad";
+  integrity 
sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==
+  dependencies:
+    es-errors "^1.3.0"
+    internal-slot "^1.1.0"
+
 strict-uri-encode@^2.0.0:
   version "2.0.0"
   resolved 
"https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546";
@@ -9140,16 +9186,7 @@
     es-abstract "^1.23.0"
     es-object-atoms "^1.0.0"
 
-string.prototype.trimend@^1.0.4, string.prototype.trimend@^1.0.7, 
string.prototype.trimend@^1.0.8:
-  version "1.0.8"
-  resolved 
"https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229";
-  integrity 
sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
-  dependencies:
-    call-bind "^1.0.7"
-    define-properties "^1.2.1"
-    es-object-atoms "^1.0.0"
-
-string.prototype.trimend@^1.0.9:
+string.prototype.trimend@^1.0.4, string.prototype.trimend@^1.0.7, 
string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9:
   version "1.0.9"
   resolved 
"https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942";
   integrity 
sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
@@ -10102,6 +10139,19 @@
     gopd "^1.2.0"
     has-tostringtag "^1.0.2"
 
+which-typed-array@^1.1.19:
+  version "1.1.19"
+  resolved 
"https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956";
+  integrity 
sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
+  dependencies:
+    available-typed-arrays "^1.0.7"
+    call-bind "^1.0.8"
+    call-bound "^1.0.4"
+    for-each "^0.3.5"
+    get-proto "^1.0.1"
+    gopd "^1.2.0"
+    has-tostringtag "^1.0.2"
+
 which@^2.0.1:
   version "2.0.2"
   resolved 
"https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1";
@@ -10184,11 +10234,6 @@
   resolved 
"https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
   integrity 
sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
 
-yallist@^4.0.0:
-  version "4.0.0"
-  resolved 
"https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72";
-  integrity 
sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
 yaml@^1.10.0:
   version "1.10.2"
   resolved 
"https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b";

++++++ linkerd-cli-edge.obsinfo ++++++
--- /var/tmp/diff_new_pack.V1YY9S/_old  2025-07-06 17:08:01.859256169 +0200
+++ /var/tmp/diff_new_pack.V1YY9S/_new  2025-07-06 17:08:01.863256335 +0200
@@ -1,5 +1,5 @@
 name: linkerd-cli-edge
-version: 25.6.4
-mtime: 1750961222
-commit: 91127be6ef8cbbd825a61ecd14ca2250a36b957e
+version: 25.7.1
+mtime: 1751479251
+commit: 6ebc86b2f8c60edf2aa77805493b1a07cfdc1454
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/linkerd-cli-edge/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.1903/vendor.tar.gz differ: 
char 14, line 1

Reply via email to