@@ -18,6 +18,11 @@ import (
18
18
cniTypesCurr "github.com/containernetworking/cni/pkg/types/100"
19
19
)
20
20
21
+ const (
22
+ bytesSize4 = 4
23
+ bytesSize16 = 16
24
+ )
25
+
21
26
type AzureIPAMInvoker struct {
22
27
plugin delegatePlugin
23
28
nwInfo * network.NetworkInfo
@@ -122,7 +127,7 @@ func (invoker *AzureIPAMInvoker) deleteIpamState() {
122
127
}
123
128
}
124
129
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
126
131
if nwCfg == nil {
127
132
return invoker .plugin .Errorf ("nil nwCfg passed to CNI ADD, stack: %+v" , string (debug .Stack ()))
128
133
}
@@ -135,25 +140,28 @@ func (invoker *AzureIPAMInvoker) Delete(address *net.IPNet, nwCfg *cni.NetworkCo
135
140
if err := invoker .plugin .DelegateDel (nwCfg .IPAM .Type , nwCfg ); err != nil {
136
141
return invoker .plugin .Errorf ("Attempted to release address with error: %v" , err )
137
142
}
138
- } else if len (address .IP .To4 ()) == 4 {
143
+ } else if len (address .IP .To4 ()) == bytesSize4 { //nolint:gocritic
139
144
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 )
142
146
if err := invoker .plugin .DelegateDel (nwCfg .IPAM .Type , nwCfg ); err != nil {
143
147
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 )
145
149
}
146
- } else if len (address .IP .To16 ()) == 16 {
150
+ } else if len (address .IP .To16 ()) == bytesSize16 {
147
151
nwCfgIpv6 := * nwCfg
148
152
nwCfgIpv6 .IPAM .Environment = common .OptEnvironmentIPv6NodeIpam
149
153
nwCfgIpv6 .IPAM .Type = ipamV6
150
154
nwCfgIpv6 .IPAM .Address = address .IP .String ()
151
155
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
+ }
153
162
}
154
163
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 )
157
165
if err := invoker .plugin .DelegateDel (nwCfgIpv6 .IPAM .Type , & nwCfgIpv6 ); err != nil {
158
166
log .Printf ("Failed to release ipv6 address: %v" , err )
159
167
return invoker .plugin .Errorf ("Failed to release ipv6 address: %v" , err )
0 commit comments