diff --git a/.golangci.yml b/.golangci.yml index 17756fb9..aa6c0355 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -5,6 +5,7 @@ linters: - gofumpt - ineffassign - misspell + - nonamedreturns - staticcheck disable: - errcheck diff --git a/pkg/ip/link_linux.go b/pkg/ip/link_linux.go index bac79350..4fe83fda 100644 --- a/pkg/ip/link_linux.go +++ b/pkg/ip/link_linux.go @@ -67,38 +67,37 @@ func peerExists(name string) bool { return true } -func makeVeth(name, vethPeerName string, mtu int, mac string, hostNS ns.NetNS) (peerName string, veth netlink.Link, err error) { +func makeVeth(name, vethPeerName string, mtu int, mac string, hostNS ns.NetNS) (string, netlink.Link, error) { + var peerName string + var veth netlink.Link + var err error for i := 0; i < 10; i++ { if vethPeerName != "" { peerName = vethPeerName } else { peerName, err = RandomVethName() if err != nil { - return + return peerName, nil, err } } veth, err = makeVethPair(name, peerName, mtu, mac, hostNS) switch { case err == nil: - return + return peerName, veth, err case os.IsExist(err): if peerExists(peerName) && vethPeerName == "" { continue } - err = fmt.Errorf("container veth name provided (%v) already exists", name) - return - + return peerName, veth, fmt.Errorf("container veth name provided (%v) already exists", name) default: - err = fmt.Errorf("failed to make veth pair: %v", err) - return + return peerName, veth, fmt.Errorf("failed to make veth pair: %v", err) } } // should really never be hit - err = fmt.Errorf("failed to find a unique veth name") - return + return peerName, nil, fmt.Errorf("failed to find a unique veth name") } // RandomVethName returns string "veth" with random prefix (hashed from entropy) diff --git a/plugins/ipam/dhcp/lease.go b/plugins/ipam/dhcp/lease.go index 8adc91e0..9fbe6946 100644 --- a/plugins/ipam/dhcp/lease.go +++ b/plugins/ipam/dhcp/lease.go @@ -84,8 +84,11 @@ var requestOptionsDefault = map[dhcp4.OptionCode]bool{ } func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptions []RequestOption) ( - optsRequesting map[dhcp4.OptionCode]bool, optsProviding map[dhcp4.OptionCode][]byte, err error, + map[dhcp4.OptionCode]bool, map[dhcp4.OptionCode][]byte, error, ) { + var optsRequesting map[dhcp4.OptionCode]bool + var optsProviding map[dhcp4.OptionCode][]byte + var err error // parse CNI args cniArgsParsed := map[string]string{} for _, argPair := range strings.Split(cniArgs, ";") { @@ -101,20 +104,17 @@ func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptio for _, opt := range ProvideOptions { optParsed, err = parseOptionName(string(opt.Option)) if err != nil { - err = fmt.Errorf("Can not parse option %q: %w", opt.Option, err) - return + return nil, nil, fmt.Errorf("Can not parse option %q: %w", opt.Option, err) } if len(opt.Value) > 0 { if len(opt.Value) > 255 { - err = fmt.Errorf("value too long for option %q: %q", opt.Option, opt.Value) - return + return nil, nil, fmt.Errorf("value too long for option %q: %q", opt.Option, opt.Value) } optsProviding[optParsed] = []byte(opt.Value) } if value, ok := cniArgsParsed[opt.ValueFromCNIArg]; ok { if len(value) > 255 { - err = fmt.Errorf("value too long for option %q from CNI_ARGS %q: %q", opt.Option, opt.ValueFromCNIArg, opt.Value) - return + return nil, nil, fmt.Errorf("value too long for option %q from CNI_ARGS %q: %q", opt.Option, opt.ValueFromCNIArg, opt.Value) } optsProviding[optParsed] = []byte(value) } @@ -129,8 +129,7 @@ func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptio } optParsed, err = parseOptionName(string(opt.Option)) if err != nil { - err = fmt.Errorf("Can not parse option %q: %w", opt.Option, err) - return + return nil, nil, fmt.Errorf("Can not parse option %q: %w", opt.Option, err) } optsRequesting[optParsed] = true } @@ -140,7 +139,7 @@ func prepareOptions(cniArgs string, ProvideOptions []ProvideOption, RequestOptio optsRequesting[k] = v } } - return + return optsRequesting, optsProviding, err } // AcquireLease gets an DHCP lease and then maintains it in the background