Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
workflow_dispatch:

env:
GO_VERSION: "1.24"
GO_VERSION: "1.25"
K8S_VERSION: "v1.34.0"
KIND_VERSION: "v0.30.0"
KIND_CLUSTER_NAME: "kindnet"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
strategy:
fail-fast: false
matrix:
go-version: [1.24.x]
go-version: [1.25.x]
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v6
Expand Down
7 changes: 2 additions & 5 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
# Copyright 2025 Antonio Ojea
# SPDX-License-Identifier: Apache-2.0
version: 2

run:
timeout: 30m
tests: false # TODO lint tests too

linters:
disable-all: true
default: none
enable:
- gocritic
- gosimple
- govet
- errcheck
- ineffassign
- staticcheck
- stylecheck
- typecheck

formatters:
disable-all: true
enable:
- goimports
- gofmt
7 changes: 6 additions & 1 deletion cmd/kindnetd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,12 @@ func checkHTTP(address string) bool {
if err != nil {
return false
}
defer resp.Body.Close()

defer func() {
if err := resp.Body.Close(); err != nil {
klog.ErrorS(err, "failed to close response body")
}
}()

_, err = io.ReadAll(resp.Body)
if err != nil {
Expand Down
4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
module sigs.k8s.io/kindnet

go 1.24.3

toolchain go1.24.7
go 1.25

require (
github.com/aws/aws-sdk-go-v2 v1.41.1
Expand Down
2 changes: 1 addition & 1 deletion hack/lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ set -o nounset
set -o pipefail

REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
VERSION=v1.64.7
VERSION=v2.7.2

cd $REPO_ROOT
docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:${VERSION} golangci-lint run -v
15 changes: 13 additions & 2 deletions pkg/conntrack/conntrack.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ func StartConntrackMetricsAgent(ctx context.Context) error {
if err != nil {
return err
}
defer statsConn.Close()

defer func() {
if err := statsConn.Close(); err != nil {
klog.V(4).Infof("failed to close conntrack stats conn: %v", err)
}
}()

// Start a goroutine to process all conntrack stats.
go func() {
Expand Down Expand Up @@ -111,7 +116,13 @@ func StartConntrackMetricsAgent(ctx context.Context) error {
if err != nil {
return err
}
defer eventsConn.Close()

defer func() {
if err := eventsConn.Close(); err != nil {
klog.V(4).Infof("failed to close conntrack events conn: %v", err)
}
}()

// reference https://lore.kernel.org/netdev/49C789F4.4050906@trash.net/T/#mfa68b0c462d1342869f4a2a152285910220f72bc
err = eventsConn.SetOption(netlink.BroadcastError, true)
if err != nil {
Expand Down
13 changes: 11 additions & 2 deletions pkg/dnscache/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,12 @@ func (d *DNSCacheAgent) Run(ctx context.Context) error {
logger.Info("could not open nfqueue socket", "error", err)
return err
}
defer nf.Close()

defer func() {
if err := nf.Close(); err != nil {
klog.V(4).Infof("failed to close nfqueue: %v", err)
}
}()

d.nfq = nf

Expand Down Expand Up @@ -271,8 +276,12 @@ func printNfnetlinkQueueStats() {
klog.Infof("can not get nfqueue stats: %v", err)
return
}
defer f.Close()

defer func() {
if err := f.Close(); err != nil {
klog.V(4).Infof("failed to close nfqueue stats file: %v", err)
}
}()
reader := io.LimitReader(f, maxBufferSize)

scanner := bufio.NewScanner(reader)
Expand Down
4 changes: 2 additions & 2 deletions pkg/dnscache/connection_pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (p *ConnectionPool) Put(conn *net.TCPConn) {
p.mu.Lock()
defer p.mu.Unlock()
p.activeConns--
conn.Close()
_ = conn.Close()
}
}

Expand All @@ -138,6 +138,6 @@ func (p *ConnectionPool) newConnection(address string) (*net.TCPConn, error) {
// Close closes all connections in the pool.
func (p *ConnectionPool) Close() {
for conn := range p.conns {
conn.Close()
_ = conn.Close()
}
}
7 changes: 6 additions & 1 deletion pkg/dnscache/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,12 @@ func parseResolvConf(resolvPath string) (nameservers []string, searches []string
klog.ErrorS(err, "Could not open resolv conf file.", "path", resolvPath)
return nil, nil, nil, err
}
defer f.Close()

defer func() {
if cerr := f.Close(); cerr != nil {
klog.V(4).Infof("failed to close resolv conf file %s: %v", resolvPath, cerr)
}
}()

file, err := utilio.ReadAtMost(f, maxResolvConfLength)
if err != nil {
Expand Down
37 changes: 27 additions & 10 deletions pkg/nat64/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,11 @@ func (n *NAT64Agent) Run(ctx context.Context) error {
if err != nil {
return err
}
defer conn.Close()

defer func() {
if err := conn.Close(); err != nil {
klog.V(4).Infof("failed to close UDP listener: %v", err)
}
}()
klog.V(2).Infof("listening on UDP %s", conn.LocalAddr().String())
_, port, err := net.SplitHostPort(conn.LocalAddr().String())
if err != nil {
Expand Down Expand Up @@ -138,7 +141,12 @@ func (n *NAT64Agent) Run(ctx context.Context) error {
if err != nil {
return err
}
defer tcpListener.Close()

defer func() {
if err := tcpListener.Close(); err != nil {
klog.V(4).Infof("failed to close TCP listener: %v", err)
}
}()

klog.V(2).Infof("listening on TCP %s", tcpListener.Addr().String())
_, port, err = net.SplitHostPort(tcpListener.Addr().String())
Expand Down Expand Up @@ -341,8 +349,11 @@ func CleanRules() {
}

func handleTCPConn(conn net.Conn) {
defer conn.Close()

defer func() {
if err := conn.Close(); err != nil {
klog.V(4).Infof("failed to close TCP connection: %v", err)
}
}()
host, port, err := net.SplitHostPort(conn.LocalAddr().String())
if err != nil {
klog.V(2).Infof("Failed to get remote address [%s]: %v", conn.LocalAddr().String(), err)
Expand All @@ -363,8 +374,11 @@ func handleTCPConn(conn net.Conn) {
klog.V(2).Infof("Failed to connect to original destination [%s]: %s", conn.LocalAddr().String(), err)
return
}
defer remoteConn.Close()

defer func() {
if err := conn.Close(); err != nil {
klog.V(4).Infof("failed to close remote TCP connection: %v", err)
}
}()
var streamWait sync.WaitGroup
streamWait.Add(2)

Expand All @@ -389,15 +403,18 @@ func handleUDPConn(origAddr *net.UDPAddr, dstAddr *net.UDPAddr, data []byte) {
// assume 64:ff9b::/96 and last 4 digits
// https://www.rfc-editor.org/rfc/rfc6052.html
ip4 := ip4in6[12:16]
dstV4Addr := fmt.Sprintf("%s:%d", ip4.String(), dstAddr.Port)
dstV4Addr := net.JoinHostPort(ip4.String(), strconv.Itoa(dstAddr.Port))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

heh, this ip is always ipv4, it is fine to change it so we keep the linter happy, but previous was correct too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, agreed!

klog.V(4).Infof("Connecting to %s", dstV4Addr)
remoteConn, err := net.Dial("udp", dstV4Addr)
if err != nil {
klog.V(2).Infof("Failed to connect to original destination %s: %v", dstV4Addr, err)
return
}
defer remoteConn.Close()

defer func() {
if err := remoteConn.Close(); err != nil {
klog.V(4).Infof("failed to close remote TCP connection: %v", err)
}
}()
n, err := remoteConn.Write(data)
if err != nil {
klog.V(2).Infof("Fail to write to remote %s: %s", remoteConn.RemoteAddr(), err)
Expand Down
8 changes: 7 additions & 1 deletion pkg/network/ethtool.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
"fmt"
"syscall"
"unsafe"

"k8s.io/klog/v2"
)

const (
Expand Down Expand Up @@ -54,8 +56,12 @@ func ethtool(iface string, cmd, val uint32) (retval uint32, err error) {
if err != nil {
return 0, err
}
defer syscall.Close(socket)

defer func() {
if err := syscall.Close(socket); err != nil {
klog.V(4).Infof("failed to close ethtool socket: %v", err)
}
}()
// prepare ethtool request
value := ethtoolValue{cmd, val}
request := ifreq{Data: uintptr(unsafe.Pointer(&value))}
Expand Down
7 changes: 6 additions & 1 deletion pkg/nflog/nflog.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,12 @@ func (n *NFLogAgent) Run(ctx context.Context) error {
if err != nil {
return fmt.Errorf("could not open nflog socket: %v", err)
}
defer nf.Close()

defer func() {
if err := nf.Close(); err != nil {
klog.V(4).Infof("failed to close nflog socket: %v", err)
}
}()

// Avoid receiving ENOBUFS errors.
if err := nf.SetOption(netlink.NoENOBUFS, true); err != nil {
Expand Down
8 changes: 7 additions & 1 deletion pkg/node/cni.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,13 @@ func WriteCNIConfig(ranges []string) (err error) {

f1, err := os.Open(cniFile)
if err == nil {
defer f1.Close()

defer func() {
if cerr := f1.Close(); cerr != nil {
klog.V(4).Infof("failed to close %s: %v", cniFile, cerr)
}
}()

// Calculate the MD5 checksum of the existing file
h1 := md5.New()
if _, err := io.Copy(h1, f1); err != nil {
Expand Down
Loading