@@ -18,6 +18,11 @@ import (
1818 cniTypesCurr "github.com/containernetworking/cni/pkg/types/100"
1919)
2020
21+ const (
22+ bytesSize4 = 4
23+ bytesSize16 = 16
24+ )
25+
2126type AzureIPAMInvoker struct {
2227 plugin delegatePlugin
2328 nwInfo * network.NetworkInfo
@@ -122,7 +127,7 @@ func (invoker *AzureIPAMInvoker) deleteIpamState() {
122127 }
123128}
124129
125- func (invoker * AzureIPAMInvoker ) Delete (address * net.IPNet , nwCfg * cni.NetworkConfig , _ * cniSkel.CmdArgs , options map [string ]interface {}) error {
130+ func (invoker * AzureIPAMInvoker ) Delete (address * net.IPNet , nwCfg * cni.NetworkConfig , _ * cniSkel.CmdArgs , options map [string ]interface {}) error { //nolint
126131 if nwCfg == nil {
127132 return invoker .plugin .Errorf ("nil nwCfg passed to CNI ADD, stack: %+v" , string (debug .Stack ()))
128133 }
@@ -135,25 +140,28 @@ func (invoker *AzureIPAMInvoker) Delete(address *net.IPNet, nwCfg *cni.NetworkCo
135140 if err := invoker .plugin .DelegateDel (nwCfg .IPAM .Type , nwCfg ); err != nil {
136141 return invoker .plugin .Errorf ("Attempted to release address with error: %v" , err )
137142 }
138- } else if len (address .IP .To4 ()) == 4 {
143+ } else if len (address .IP .To4 ()) == bytesSize4 { //nolint:gocritic
139144 nwCfg .IPAM .Address = address .IP .String ()
140- log .Printf ("Releasing ipv4 address :%s pool: %s" ,
141- nwCfg .IPAM .Address , nwCfg .IPAM .Subnet )
145+ log .Printf ("Releasing ipv4 address :%s pool: %s" , nwCfg .IPAM .Address , nwCfg .IPAM .Subnet )
142146 if err := invoker .plugin .DelegateDel (nwCfg .IPAM .Type , nwCfg ); err != nil {
143147 log .Printf ("Failed to release ipv4 address: %v" , err )
144- return invoker .plugin .Errorf ("Failed to release ipv4 address: %v" , err )
148+ return invoker .plugin .Errorf ("Failed to release ipv4 address: %v with error: " , nwCfg . IPAM . Address , err )
145149 }
146- } else if len (address .IP .To16 ()) == 16 {
150+ } else if len (address .IP .To16 ()) == bytesSize16 {
147151 nwCfgIpv6 := * nwCfg
148152 nwCfgIpv6 .IPAM .Environment = common .OptEnvironmentIPv6NodeIpam
149153 nwCfgIpv6 .IPAM .Type = ipamV6
150154 nwCfgIpv6 .IPAM .Address = address .IP .String ()
151155 if len (invoker .nwInfo .Subnets ) > 1 {
152- nwCfgIpv6 .IPAM .Subnet = invoker .nwInfo .Subnets [1 ].Prefix .String ()
156+ for _ , subnet := range invoker .nwInfo .Subnets {
157+ if subnet .Prefix .IP .To4 () == nil {
158+ nwCfgIpv6 .IPAM .Subnet = subnet .Prefix .String ()
159+ break
160+ }
161+ }
153162 }
154163
155- log .Printf ("Releasing ipv6 address :%s pool: %s" ,
156- nwCfgIpv6 .IPAM .Address , nwCfgIpv6 .IPAM .Subnet )
164+ log .Printf ("Releasing ipv6 address :%s pool: %s" , nwCfgIpv6 .IPAM .Address , nwCfgIpv6 .IPAM .Subnet )
157165 if err := invoker .plugin .DelegateDel (nwCfgIpv6 .IPAM .Type , & nwCfgIpv6 ); err != nil {
158166 log .Printf ("Failed to release ipv6 address: %v" , err )
159167 return invoker .plugin .Errorf ("Failed to release ipv6 address: %v" , err )
0 commit comments