diff --git a/.golangci.yml b/.golangci.yml index c77f4cc9..def34c8e 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -2,6 +2,7 @@ linters: enable: - contextcheck - gci + - gocritic - gofumpt - gosimple - ineffassign diff --git a/pkg/testutils/echo/server/main.go b/pkg/testutils/echo/server/main.go index 192548d2..2fe4f563 100644 --- a/pkg/testutils/echo/server/main.go +++ b/pkg/testutils/echo/server/main.go @@ -44,11 +44,13 @@ func main() { // Start UDP server addr, err := net.ResolveUDPAddr("udp", fmt.Sprintf(":%s", port)) if err != nil { - log.Fatalf("Error from net.ResolveUDPAddr(): %s", err) + log.Printf("Error from net.ResolveUDPAddr(): %s", err) + return } sock, err := net.ListenUDP("udp", addr) if err != nil { - log.Fatalf("Error from ListenUDP(): %s", err) + log.Printf("Error from ListenUDP(): %s", err) + return } defer sock.Close() @@ -56,7 +58,8 @@ func main() { for { n, addr, err := sock.ReadFrom(buffer) if err != nil { - log.Fatalf("Error from ReadFrom(): %s", err) + log.Printf("Error from ReadFrom(): %s", err) + return } sock.SetWriteDeadline(time.Now().Add(1 * time.Minute)) _, err = sock.WriteTo(buffer[0:n], addr) diff --git a/pkg/utils/sysctl/sysctl_linux_test.go b/pkg/utils/sysctl/sysctl_linux_test.go index 52752cc6..917b1532 100644 --- a/pkg/utils/sysctl/sysctl_linux_test.go +++ b/pkg/utils/sysctl/sysctl_linux_test.go @@ -75,7 +75,7 @@ var _ = Describe("Sysctl tests", func() { Describe("Sysctl", func() { It("reads keys with dot separators", func() { beforeEach() - sysctlIfaceName := strings.Replace(testIfaceName, ".", "/", -1) + sysctlIfaceName := strings.ReplaceAll(testIfaceName, ".", "/") sysctlKey := fmt.Sprintf(sysctlDotKeyTemplate, sysctlIfaceName) _, err := sysctl.Sysctl(sysctlKey) @@ -96,7 +96,7 @@ var _ = Describe("Sysctl tests", func() { Describe("Sysctl", func() { It("writes keys with dot separators", func() { beforeEach() - sysctlIfaceName := strings.Replace(testIfaceName, ".", "/", -1) + sysctlIfaceName := strings.ReplaceAll(testIfaceName, ".", "/") sysctlKey := fmt.Sprintf(sysctlDotKeyTemplate, sysctlIfaceName) _, err := sysctl.Sysctl(sysctlKey, "1") diff --git a/plugins/ipam/dhcp/lease.go b/plugins/ipam/dhcp/lease.go index 6420257b..2fa0e37e 100644 --- a/plugins/ipam/dhcp/lease.go +++ b/plugins/ipam/dhcp/lease.go @@ -83,7 +83,7 @@ var requestOptionsDefault = map[dhcp4.OptionCode]bool{ dhcp4.OptionSubnetMask: true, } -func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptions []RequestOption) ( +func prepareOptions(cniArgs string, provideOptions []ProvideOption, requestOptions []RequestOption) ( map[dhcp4.OptionCode]bool, map[dhcp4.OptionCode][]byte, error, ) { var optsRequesting map[dhcp4.OptionCode]bool @@ -101,7 +101,7 @@ func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptio // parse providing options map var optParsed dhcp4.OptionCode optsProviding = make(map[dhcp4.OptionCode][]byte) - for _, opt := range ProvideOptions { + for _, opt := range provideOptions { optParsed, err = parseOptionName(string(opt.Option)) if err != nil { return nil, nil, fmt.Errorf("Can not parse option %q: %w", opt.Option, err) @@ -123,7 +123,7 @@ func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptio // parse necessary options map optsRequesting = make(map[dhcp4.OptionCode]bool) skipRequireDefault := false - for _, opt := range RequestOptions { + for _, opt := range requestOptions { if opt.SkipDefault { skipRequireDefault = true } diff --git a/plugins/ipam/host-local/backend/allocator/range_set.go b/plugins/ipam/host-local/backend/allocator/range_set.go index da957f53..40d6b2be 100644 --- a/plugins/ipam/host-local/backend/allocator/range_set.go +++ b/plugins/ipam/host-local/backend/allocator/range_set.go @@ -67,10 +67,8 @@ func (s *RangeSet) Canonicalize() error { } if i == 0 { fam = len((*s)[i].RangeStart) - } else { - if fam != len((*s)[i].RangeStart) { - return fmt.Errorf("mixed address families") - } + } else if fam != len((*s)[i].RangeStart) { + return fmt.Errorf("mixed address families") } } diff --git a/plugins/ipam/host-local/backend/disk/backend.go b/plugins/ipam/host-local/backend/disk/backend.go index 4b7fed1f..40c7863b 100644 --- a/plugins/ipam/host-local/backend/disk/backend.go +++ b/plugins/ipam/host-local/backend/disk/backend.go @@ -198,7 +198,7 @@ func (s *Store) GetByID(id string, ifname string) []net.IP { func GetEscapedPath(dataDir string, fname string) string { if runtime.GOOS == "windows" { - fname = strings.Replace(fname, ":", "_", -1) + fname = strings.ReplaceAll(fname, ":", "_") } return filepath.Join(dataDir, fname) } diff --git a/plugins/main/bridge/bridge_test.go b/plugins/main/bridge/bridge_test.go index d434df49..32d9454b 100644 --- a/plugins/main/bridge/bridge_test.go +++ b/plugins/main/bridge/bridge_test.go @@ -51,10 +51,11 @@ type Net struct { Type string `json:"type,omitempty"` BrName string `json:"bridge"` IPAM *allocator.IPAMConfig `json:"ipam"` - //RuntimeConfig struct { // The capability arg + // RuntimeConfig struct { // The capability arg // IPRanges []RangeSet `json:"ipRanges,omitempty"` - //} `json:"runtimeConfig,omitempty"` - //Args *struct { + // Args *struct { + // } `json:"runtimeConfig,omitempty"` + // A *IPAMArgs `json:"cni"` DNS types.DNS `json:"dns"` RawPrevResult map[string]interface{} `json:"prevResult,omitempty"` @@ -1497,11 +1498,12 @@ func (tester *testerV01xOr02x) cmdDelTest(tc testCase, dataDir string) { err := testutils.CmdDelWithArgs(tester.args, func() error { return cmdDel(tester.args) }) - if expect020DelError(tc) { + switch { + case expect020DelError(tc): Expect(err).To(MatchError(tc.DelErr020)) - } else if expect010DelError(tc) { + case expect010DelError(tc): Expect(err).To(MatchError(tc.DelErr010)) - } else { + default: Expect(err).NotTo(HaveOccurred()) } return nil diff --git a/plugins/main/host-device/host-device.go b/plugins/main/host-device/host-device.go index e035dcf9..cd31c6ad 100644 --- a/plugins/main/host-device/host-device.go +++ b/plugins/main/host-device/host-device.go @@ -322,10 +322,11 @@ func getLink(devname, hwaddr, kernelpath, pciaddr string) (netlink.Link, error) if err != nil { return nil, fmt.Errorf("failed to list node links: %v", err) } + switch { - if len(devname) > 0 { + case len(devname) > 0: return netlink.LinkByName(devname) - } else if len(hwaddr) > 0 { + case len(hwaddr) > 0: hwAddr, err := net.ParseMAC(hwaddr) if err != nil { return nil, fmt.Errorf("failed to parse MAC address %q: %v", hwaddr, err) @@ -336,7 +337,7 @@ func getLink(devname, hwaddr, kernelpath, pciaddr string) (netlink.Link, error) return link, nil } } - } else if len(kernelpath) > 0 { + case len(kernelpath) > 0: if !filepath.IsAbs(kernelpath) || !strings.HasPrefix(kernelpath, "/sys/devices/") { return nil, fmt.Errorf("kernel device path %q must be absolute and begin with /sys/devices/", kernelpath) } @@ -355,7 +356,7 @@ func getLink(devname, hwaddr, kernelpath, pciaddr string) (netlink.Link, error) } } } - } else if len(pciaddr) > 0 { + case len(pciaddr) > 0: netDir := filepath.Join(sysBusPCI, pciaddr, "net") if _, err := os.Lstat(netDir); err != nil { virtioNetDir := filepath.Join(sysBusPCI, pciaddr, "virtio*", "net") diff --git a/plugins/main/macvlan/macvlan_test.go b/plugins/main/macvlan/macvlan_test.go index 3b4ab467..968bd8e1 100644 --- a/plugins/main/macvlan/macvlan_test.go +++ b/plugins/main/macvlan/macvlan_test.go @@ -48,10 +48,10 @@ type Net struct { Master string `json:"master"` Mode string `json:"mode"` IPAM *allocator.IPAMConfig `json:"ipam"` - //RuntimeConfig struct { // The capability arg + // RuntimeConfig struct { // The capability arg // IPRanges []RangeSet `json:"ipRanges,omitempty"` - //} `json:"runtimeConfig,omitempty"` - //Args *struct { + // Args *struct { + // } `json:"runtimeConfig,omitempty"` // A *IPAMArgs `json:"cni"` DNS types.DNS `json:"dns"` RawPrevResult map[string]interface{} `json:"prevResult,omitempty"` diff --git a/plugins/main/tap/tap.go b/plugins/main/tap/tap.go index f97ec8e8..c8a6c9f8 100644 --- a/plugins/main/tap/tap.go +++ b/plugins/main/tap/tap.go @@ -173,14 +173,15 @@ func createLinkWithNetlink(tmpName string, mtu int, nsFd int, multiqueue bool, m } func createLink(tmpName string, conf *NetConf, netns ns.NetNS) error { - if conf.SelinuxContext != "" { + switch { + case conf.SelinuxContext != "": if err := selinux.SetExecLabel(conf.SelinuxContext); err != nil { return fmt.Errorf("failed set socket label: %v", err) } return createTapWithIptool(tmpName, conf.MTU, conf.MultiQueue, conf.Mac, conf.Owner, conf.Group) - } else if conf.Owner == nil || conf.Group == nil { + case conf.Owner == nil || conf.Group == nil: return createTapWithIptool(tmpName, conf.MTU, conf.MultiQueue, conf.Mac, conf.Owner, conf.Group) - } else { + default: return createLinkWithNetlink(tmpName, conf.MTU, int(netns.Fd()), conf.MultiQueue, conf.Mac, conf.Owner, conf.Group) } } diff --git a/plugins/main/vlan/vlan.go b/plugins/main/vlan/vlan.go index d3d3dac0..00e98118 100644 --- a/plugins/main/vlan/vlan.go +++ b/plugins/main/vlan/vlan.go @@ -369,7 +369,7 @@ func validateCniContainerInterface(intf current.Interface, masterIndex int, vlan } // TODO This works when unit testing via cnitool; fails with ./test.sh - //if masterIndex != vlan.Attrs().ParentIndex { + // if masterIndex != vlan.Attrs().ParentIndex { // return fmt.Errorf("Container vlan Master %d does not match expected value: %d", vlan.Attrs().ParentIndex, masterIndex) //} diff --git a/plugins/meta/firewall/iptables.go b/plugins/meta/firewall/iptables.go index 999c68b6..8221d01d 100644 --- a/plugins/meta/firewall/iptables.go +++ b/plugins/meta/firewall/iptables.go @@ -143,7 +143,7 @@ func (ib *iptablesBackend) checkRules(conf *FirewallNetConf, result *current.Res } } - if len(rules) <= 0 { + if len(rules) == 0 { return nil } diff --git a/plugins/meta/tuning/tuning.go b/plugins/meta/tuning/tuning.go index 427b8a19..e23b84f1 100644 --- a/plugins/meta/tuning/tuning.go +++ b/plugins/meta/tuning/tuning.go @@ -334,7 +334,7 @@ func cmdAdd(args *skel.CmdArgs) error { err = ns.WithNetNSPath(args.Netns, func(_ ns.NetNS) error { for key, value := range tuningConf.SysCtl { - key = strings.Replace(key, ".", string(os.PathSeparator), -1) + key = strings.ReplaceAll(key, ".", string(os.PathSeparator)) // If the key contains `IFNAME` - substitute it with args.IfName // to allow setting sysctls on a particular interface, on which @@ -439,7 +439,7 @@ func cmdCheck(args *skel.CmdArgs) error { err = ns.WithNetNSPath(args.Netns, func(_ ns.NetNS) error { // Check each configured value vs what's currently in the container for key, confValue := range tuningConf.SysCtl { - fileName := filepath.Join("/proc/sys", strings.Replace(key, ".", "/", -1)) + fileName := filepath.Join("/proc/sys", strings.ReplaceAll(key, ".", "/")) contents, err := os.ReadFile(fileName) if err != nil {