Skip to content
Snippets Groups Projects
Commit d73bc831 authored by takt's avatar takt Committed by Daniel Czerwonk
Browse files

RIS CLI (#222)

* init

* Refactoring
parent 16459281
No related branches found
No related tags found
No related merge requests found
package main
import (
"context"
"os"
pb "github.com/bio-routing/bio-rd/cmd/ris/api"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
"github.com/urfave/cli"
"google.golang.org/grpc"
)
// NewDumpLocRIBCommand creates a new dump local rib command
func NewDumpLocRIBCommand() cli.Command {
cmd := cli.Command{
Name: "dump-loc-rib",
Usage: "dump loc RIB",
}
cmd.Action = func(c *cli.Context) error {
conn, err := grpc.Dial(c.GlobalString("ris"), grpc.WithInsecure())
if err != nil {
log.Errorf("GRPC dial failed: %v", err)
os.Exit(1)
}
defer conn.Close()
client := pb.NewRoutingInformationServiceClient(conn)
err = dumpRIB(client, c.GlobalString("router"), c.GlobalUint64("vrf_id"))
if err != nil {
log.Errorf("DumpRIB failed: %v", err)
os.Exit(1)
}
return nil
}
return cmd
}
func dumpRIB(c pb.RoutingInformationServiceClient, routerName string, vrfID uint64) error {
client, err := c.DumpRIB(context.Background(), &pb.DumpRIBRequest{
Router: routerName,
VrfId: vrfID,
Afisafi: pb.DumpRIBRequest_IPv4Unicast,
})
if err != nil {
return errors.Wrap(err, "Unable to get client")
}
for {
r, err := client.Recv()
if err != nil {
return errors.Wrap(err, "Received failed")
}
printRoute(r.Route)
}
}
package main
import (
"os"
log "github.com/sirupsen/logrus"
"github.com/urfave/cli"
)
func main() {
app := cli.NewApp()
app.Name = "riscli"
app.Usage = "RIS CLI"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "ris",
Usage: "RIS GRPC address",
Value: "",
},
cli.StringFlag{
Name: "router",
Usage: "Router Name",
Value: "",
},
cli.Uint64Flag{
Name: "vrf_id",
Usage: "VRF ID",
Value: 0,
},
}
app.Commands = []cli.Command{
NewDumpLocRIBCommand(),
}
err := app.Run(os.Args)
if err != nil {
log.Error(err)
os.Exit(1)
}
}
package main
import (
"fmt"
"github.com/bio-routing/bio-rd/route"
"github.com/bio-routing/bio-rd/route/api"
)
func printRoute(ar *api.Route) {
r := route.RouteFromProtoRoute(ar)
fmt.Println(r.Print())
}
......@@ -12,6 +12,7 @@ require (
github.com/prometheus/common v0.6.0
github.com/sirupsen/logrus v1.3.0
github.com/stretchr/testify v1.3.0
github.com/urfave/cli v1.21.0
github.com/vishvananda/netlink v1.0.0
github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc // indirect
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment