Files
pg/netlink/addr_linux.go
2024-07-19 19:53:42 +08:00

32 lines
522 B
Go

package netlink
import (
"context"
"github.com/vishvananda/netlink"
)
func AddrSubscribe(ctx context.Context, ch chan<- AddrUpdate) error {
rawChan := make(chan netlink.AddrUpdate)
err := netlink.AddrSubscribe(rawChan, ctx.Done())
if err != nil {
return err
}
go func() {
defer close(ch)
for {
select {
case <-ctx.Done():
return
case e := <-rawChan:
ch <- AddrUpdate{
New: e.NewAddr,
Addr: e.LinkAddress,
LinkIndex: e.LinkIndex,
}
}
}
}()
return nil
}