in pkg/initalizer/iproute/link.go [25:51]
func (l *agentLinkRetriever) CreateOrGetLink(ctx context.Context) (AgentLink, error) {
log := logger.FromContext(ctx)
attrs := netlink.NewLinkAttrs()
attrs.Name = configuration.AgentLinkName
dummyDevice := &netlink.Dummy{LinkAttrs: attrs}
link, err := l.netlinkHandle.LinkByName(attrs.Name)
if err != nil {
_, errWasLinkNotFound := err.(netlink.LinkNotFoundError)
if !errWasLinkNotFound {
return nil, fmt.Errorf("error finding %s: %w", attrs.Name, err)
}
log.Infof("Link was not found, creating it")
link, err = l.createLink(ctx, dummyDevice)
if err != nil {
return nil, fmt.Errorf("unable to create interface %v: %w", dummyDevice.Name, err)
}
log.Debugf("Link %s created", link.Attrs().Name)
}
return &agentLink{
netlinkHandle: l.netlinkHandle,
link: link,
}, nil
}