Skip to content

Commit

Permalink
Fix linkerd dg endpoints to work with IPv6 (#12541)
Browse files Browse the repository at this point in the history
```
# BEFORE
$ bin/linkerd dg endpoints family-server.default.svc.cluster.local:8080
NAMESPACE   IP        PORT   POD                              SERVICE
default     0.0.0.0   8080   family-server-7cf95b6b89-x6cb9   family-server.default

# AFTER
$ bin/linkerd dg endpoints family-server.default.svc.cluster.local:8080
NAMESPACE   IP                      PORT   POD                              SERVICE
default     fd00:10:244::5          8080   family-server-7cf95b6b89-x6cb9   family-server.default
```
  • Loading branch information
alpeb committed May 2, 2024
1 parent 137eac9 commit 5114e8e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
12 changes: 6 additions & 6 deletions cli/cmd/endpoints.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@ package cmd
import (
"bytes"
"context"
"encoding/binary"
"encoding/json"
"errors"
"fmt"
"net"
"os"
"sort"
"strings"
Expand All @@ -17,6 +15,7 @@ import (
destinationPb "github.com/linkerd/linkerd2-proxy-api/go/destination"
netPb "github.com/linkerd/linkerd2-proxy-api/go/net"
"github.com/linkerd/linkerd2/controller/api/destination"
"github.com/linkerd/linkerd2/pkg/addr"
pkgcmd "github.com/linkerd/linkerd2/pkg/cmd"
"github.com/linkerd/linkerd2/pkg/k8s"
log "github.com/sirupsen/logrus"
Expand Down Expand Up @@ -218,10 +217,11 @@ func requestEndpointsFromAPI(client destinationPb.DestinationClient, token strin
}

func getIP(tcpAddr *netPb.TcpAddress) string {
ip := tcpAddr.GetIp().GetIpv4()
b := make([]byte, 4)
binary.BigEndian.PutUint32(b, ip)
return net.IP(b).String()
ip := addr.FromProxyAPI(tcpAddr.GetIp())
if ip == nil {
return ""
}
return addr.PublicIPToString(ip)
}

func renderEndpoints(endpoints endpointsInfo, options *endpointsOptions) string {
Expand Down
10 changes: 6 additions & 4 deletions pkg/addr/addr.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func PublicIPToString(ip *l5dNetPb.IPAddress) string {

// ProxyAddressToString formats a Proxy API TCPAddress as a string.
func ProxyAddressToString(addr *pb.TcpAddress) string {
vizIP := proxyToVizIPAddr(addr.GetIp())
vizIP := FromProxyAPI(addr.GetIp())
if vizIP == nil {
return ""
}
Expand Down Expand Up @@ -90,21 +90,23 @@ func ParsePublicIP(ip string) (*l5dNetPb.IPAddress, error) {
if err != nil {
return nil, err
}
return proxyToVizIPAddr(addr), nil
return FromProxyAPI(addr), nil
}

// NetToPublic converts a Proxy API TCPAddress to a Viz API
// TCPAddress.
func NetToPublic(net *pb.TcpAddress) *l5dNetPb.TcpAddress {
ip := proxyToVizIPAddr(net.GetIp())
ip := FromProxyAPI(net.GetIp())

return &l5dNetPb.TcpAddress{
Ip: ip,
Port: net.GetPort(),
}
}

func proxyToVizIPAddr(net *pb.IPAddress) *l5dNetPb.IPAddress {
// FromProxyAPI casts an IPAddress from the linkerd2-proxy-api.go.net package
// to the linkerd2.controller.gen.common.net package
func FromProxyAPI(net *pb.IPAddress) *l5dNetPb.IPAddress {
switch ip := net.GetIp().(type) {
case *pb.IPAddress_Ipv6:
return &l5dNetPb.IPAddress{
Expand Down

0 comments on commit 5114e8e

Please sign in to comment.