Newer
Older
import (
"github.com/bio-routing/bio-rd/config"
"github.com/bio-routing/bio-rd/routingtable"
"github.com/bio-routing/bio-rd/routingtable/locRIB"
)
// Netlink is the netlink module which handles the entire NetlinkCommunication
type Netlink struct {
locRib *locRIB.LocRIB
writer *NetlinkWriter
reader *NetlinkReader
}
// NewNetlink creates a new Netlink object and returns the pointer to it
func NewNetlink(options *config.Netlink, locRib *locRIB.LocRIB) *Netlink {
locRib: locRib,
writer: NewNetlinkWriter(options),
reader: NewNetlinkReader(options),
}
return n
}
// connect all RIBs
options := routingtable.ClientOptions{
BestOnly: false,
EcmpOnly: false,
MaxPaths: ^uint(0), // max int
}
// 1. from locRib to Kernel
n.locRib.ClientManager.RegisterWithOptions(n.writer, options)
// 2. from Kernel to locRib
n.reader.ClientManager.RegisterWithOptions(n.locRib, options)
// Listen for new routes from kernel