Skip to content
Snippets Groups Projects
main.go 1005 B
Newer Older
  • Learn to ignore specific revisions
  • package main
    
    import (
    	"time"
    
    
    cedi's avatar
    cedi committed
    	"github.com/bio-routing/bio-rd/route"
    
    
    	bnet "github.com/bio-routing/bio-rd/net"
    	"github.com/bio-routing/bio-rd/protocols/fib"
    	"github.com/bio-routing/bio-rd/routingtable/vrf"
    	"github.com/sirupsen/logrus"
    )
    
    
    cedi's avatar
    cedi committed
    func addPath(v *vrf.VRF) {
    	pfx := bnet.NewPfx(bnet.IPv4FromOctets(169, 254, 0, 0), uint8(24))
    	fibPath := &route.Path{
    		Type: route.FIBPathType,
    		FIBPath: &route.FIBPath{
    
    cedi's avatar
    cedi committed
    			NextHop: bnet.IPv4FromOctets(169, 254, 1, 1),
    
    cedi's avatar
    cedi committed
    	rib, found := v.RIBByName("inet.254")
    	if !found {
    		logrus.Fatal("Unable to find RIB inet.254")
    	}
    
    cedi's avatar
    cedi committed
    	err := rib.AddPath(pfx, fibPath)
    
    	if err != nil {
    
    cedi's avatar
    cedi committed
    		logrus.Errorf("Unable to add Path: Pfx: %s Path: %s", pfx.String(), fibPath.String())
    
    cedi's avatar
    cedi committed
    	v, err := vrf.New("inet.254", 0)
    
    	if err != nil {
    		logrus.Fatal(err)
    	}
    
    
    cedi's avatar
    cedi committed
    	f, err := fib.New(v)
    
    cedi's avatar
    cedi committed
    	if err != nil {
    
    cedi's avatar
    cedi committed
    		logrus.Fatal(err)
    	}
    
    	err = f.Start()
    	if err != nil {
    		logrus.Fatalf("Unable to start FIB: %v", err)
    
    cedi's avatar
    cedi committed
    	time.Sleep(5 * time.Second)
    
    cedi's avatar
    cedi committed
    	addPath(v)