Skip to content
Snippets Groups Projects
router.go 763 B
Newer Older
Oliver Herms's avatar
Oliver Herms committed
package rismirror

import (
	"net"

	"github.com/bio-routing/bio-rd/routingtable/vrf"
)

// Router represents a router
type Router struct {
	name        string
	address     net.IP
	vrfRegistry *vrf.VRFRegistry
}

func newRouter(name string, address net.IP) *Router {
	return &Router{
		name:        name,
		address:     address,
		vrfRegistry: vrf.NewVRFRegistry(),
	}
}

// Name gets the routers name
func (r *Router) Name() string {
	return r.name
}

// Address gets a routers address
func (r *Router) Address() net.IP {
	return r.address
}

// GetVRF gets a VRF by its ID
func (r *Router) GetVRF(vrfID uint64) *vrf.VRF {
	return r.vrfRegistry.GetVRFByRD(vrfID)
}

// GetVRFs gets all VRFs
func (r *Router) GetVRFs() []*vrf.VRF {
	return r.vrfRegistry.List()
}