Skip to content

Commit 7c1288d

Browse files
committed
release netlink socket when stop monitoring
1 parent 64b295a commit 7c1288d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

pkg/daemon/controller/controller.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -249,14 +249,15 @@ func (c *CtrlHub) handleLocalNetworkDeviceEvent() error {
249249
go func() {
250250
for {
251251
linkCh := make(chan netlink.LinkUpdate, LinkUpdateChainSize)
252+
doneCh := make(chan struct{})
252253
exitCh := make(chan struct{})
253254

254255
errorCallback := func(err error) {
255256
c.logger.Error(err, "subscribe netlink link event exit with error")
256257
close(exitCh)
257258
}
258259

259-
if err := netlink.LinkSubscribeWithOptions(linkCh, nil, netlink.LinkSubscribeOptions{
260+
if err := netlink.LinkSubscribeWithOptions(linkCh, doneCh, netlink.LinkSubscribeOptions{
260261
Namespace: &hostNetNs,
261262
ErrorCallback: errorCallback,
262263
}); err != nil {
@@ -277,6 +278,7 @@ func (c *CtrlHub) handleLocalNetworkDeviceEvent() error {
277278
c.ipInstanceTriggerSourceForHostLink.Trigger()
278279
}
279280
case <-exitCh:
281+
close(doneCh)
280282
break linkLoop
281283
}
282284
}
@@ -286,14 +288,15 @@ func (c *CtrlHub) handleLocalNetworkDeviceEvent() error {
286288
go func() {
287289
for {
288290
addrCh := make(chan netlink.AddrUpdate, AddrUpdateChainSize)
291+
doneCh := make(chan struct{})
289292
exitCh := make(chan struct{})
290293

291294
errorCallback := func(err error) {
292295
c.logger.Error(err, "subscribe netlink addr event exit with error")
293296
close(exitCh)
294297
}
295298

296-
if err := netlink.AddrSubscribeWithOptions(addrCh, nil, netlink.AddrSubscribeOptions{
299+
if err := netlink.AddrSubscribeWithOptions(addrCh, doneCh, netlink.AddrSubscribeOptions{
297300
Namespace: &hostNetNs,
298301
ErrorCallback: errorCallback,
299302
}); err != nil {
@@ -319,6 +322,7 @@ func (c *CtrlHub) handleLocalNetworkDeviceEvent() error {
319322
c.nodeInfoTriggerSourceForHostAddr.Trigger()
320323
}
321324
case <-exitCh:
325+
close(doneCh)
322326
break addrLoop
323327
}
324328
}
@@ -426,14 +430,15 @@ func (c *CtrlHub) handleVxlanInterfaceNeighEvent() error {
426430
}
427431

428432
neighCh := make(chan netlink.NeighUpdate, NeighUpdateChanSize)
433+
doneCh := make(chan struct{})
429434
exitCh := make(chan struct{})
430435

431436
errorCallback := func(err error) {
432437
c.logger.Error(err, "subscribe netlink neigh event exit with error")
433438
close(exitCh)
434439
}
435440

436-
if err := netlink.NeighSubscribeWithOptions(neighCh, nil, netlink.NeighSubscribeOptions{
441+
if err := netlink.NeighSubscribeWithOptions(neighCh, doneCh, netlink.NeighSubscribeOptions{
437442
Namespace: &hostNetNs,
438443
ErrorCallback: errorCallback,
439444
}); err != nil {
@@ -466,6 +471,7 @@ func (c *CtrlHub) handleVxlanInterfaceNeighEvent() error {
466471
c.logger.Error(err, "failed to clear vxlan expired neigh caches")
467472
}
468473
case <-exitCh:
474+
close(doneCh)
469475
break neighLoop
470476
}
471477
}

0 commit comments

Comments
 (0)