Skip to content

Commit

Permalink
nfdc: pretty-print origin
Browse files Browse the repository at this point in the history
  • Loading branch information
pulsejet committed Jan 3, 2025
1 parent 0de8dfc commit b792671
Showing 8 changed files with 106 additions and 57 deletions.
18 changes: 9 additions & 9 deletions fw/mgmt/nlsr_readvertiser.go
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ import (
"github.com/named-data/ndnd/fw/core"
"github.com/named-data/ndnd/fw/table"
enc "github.com/named-data/ndnd/std/encoding"
ndn_mgmt "github.com/named-data/ndnd/std/ndn/mgmt_2022"
spec_mgmt "github.com/named-data/ndnd/std/ndn/mgmt_2022"
"github.com/named-data/ndnd/std/utils"
)

@@ -32,7 +32,7 @@ func (r *NlsrReadvertiser) String() string {
}

func (r *NlsrReadvertiser) Announce(name enc.Name, route *table.Route) {
if route.Origin != table.RouteOriginClient {
if route.Origin != uint64(spec_mgmt.RouteOriginClient) {
core.LogDebug(r, "skip advertise=", name, " origin=", route.Origin)
return
}
@@ -42,14 +42,14 @@ func (r *NlsrReadvertiser) Announce(name enc.Name, route *table.Route) {
defer r.mutex.Unlock()
r.advertised[name.Hash()] += 1

params := &ndn_mgmt.ControlArgs{
params := &spec_mgmt.ControlArgs{
Name: name,
Origin: utils.IdPtr(route.Origin),
Cost: utils.IdPtr(route.Cost),
}

iparams := &ndn_mgmt.ControlParameters{
Val: &ndn_mgmt.ControlArgs{Name: name},
iparams := &spec_mgmt.ControlParameters{
Val: &spec_mgmt.ControlArgs{Name: name},
}
cmd, _ := enc.NameFromStr("/localhost/nlsr/rib/register")
cmd = append(cmd, enc.NewBytesComponent(enc.TypeGenericNameComponent, iparams.Encode().Join()))
@@ -58,7 +58,7 @@ func (r *NlsrReadvertiser) Announce(name enc.Name, route *table.Route) {
}

func (r *NlsrReadvertiser) Withdraw(name enc.Name, route *table.Route) {
if route.Origin != table.RouteOriginClient {
if route.Origin != uint64(spec_mgmt.RouteOriginClient) {
core.LogDebug(r, "skip withdraw=", name, " origin=", route.Origin)
return
}
@@ -74,13 +74,13 @@ func (r *NlsrReadvertiser) Withdraw(name enc.Name, route *table.Route) {
}
core.LogInfo(r, "withdraw=", name)

params := &ndn_mgmt.ControlArgs{
params := &spec_mgmt.ControlArgs{
Name: name,
Origin: utils.IdPtr(route.Origin),
}

iparams := &ndn_mgmt.ControlParameters{
Val: &ndn_mgmt.ControlArgs{Name: name},
iparams := &spec_mgmt.ControlParameters{
Val: &spec_mgmt.ControlArgs{Name: name},
}
cmd, _ := enc.NameFromStr("/localhost/nlsr/rib/unregister")
cmd = append(cmd, enc.NewBytesComponent(enc.TypeGenericNameComponent, iparams.Encode().Join()))
6 changes: 3 additions & 3 deletions fw/mgmt/rib.go
Original file line number Diff line number Diff line change
@@ -93,7 +93,7 @@ func (r *RIBModule) register(interest *spec.Interest, pitToken []byte, inFace ui
}
}

origin := table.RouteOriginApp
origin := uint64(mgmt.RouteOriginApp)
if params.Origin != nil {
origin = *params.Origin
}
@@ -103,7 +103,7 @@ func (r *RIBModule) register(interest *spec.Interest, pitToken []byte, inFace ui
cost = *params.Cost
}

flags := table.RouteFlagChildInherit
flags := uint64(mgmt.RouteFlagChildInherit)
if params.Flags != nil {
flags = *params.Flags
}
@@ -172,7 +172,7 @@ func (r *RIBModule) unregister(interest *spec.Interest, pitToken []byte, inFace
faceID = *params.FaceId
}

origin := table.RouteOriginApp
origin := uint64(mgmt.RouteOriginApp)
if params.Origin != nil {
origin = *params.Origin
}
22 changes: 3 additions & 19 deletions fw/table/rib.go
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@ import (
"time"

enc "github.com/named-data/ndnd/std/encoding"
spec_mgmt "github.com/named-data/ndnd/std/ndn/mgmt_2022"
)

// RibTable represents the Routing Information Base (RIB).
@@ -42,23 +43,6 @@ type Route struct {
ExpirationPeriod *time.Duration
}

// Route flags.
const (
RouteFlagChildInherit uint64 = 0x01
RouteFlagCapture uint64 = 0x02
)

// Route origins.
const (
RouteOriginApp uint64 = 0
RouteOriginStatic uint64 = 255
RouteOriginNLSR uint64 = 128
RouteOriginPrefixAnn uint64 = 129
RouteOriginClient uint64 = 65
RouteOriginAutoreg uint64 = 64
RouteOriginAutoconf uint64 = 66
)

// Rib is the Routing Information Base.
var Rib = RibTable{
root: RibEntry{
@@ -269,9 +253,9 @@ func (r *RibEntry) HasCaptureRoute() bool {
}

func (r *Route) HasCaptureFlag() bool {
return r.Flags&RouteFlagCapture != 0
return r.Flags&uint64(spec_mgmt.RouteFlagCapture) != 0
}

func (r *Route) HasChildInheritFlag() bool {
return r.Flags&RouteFlagChildInherit != 0
return r.Flags&uint64(spec_mgmt.RouteFlagChildInherit) != 0
}
6 changes: 0 additions & 6 deletions std/ndn/mgmt_2022/definitions.go
Original file line number Diff line number Diff line change
@@ -31,12 +31,6 @@ const (
FaceFlagCongestionMarkingEnabled = uint64(4)
)

const (
RouteFlagNoFlag = uint64(0)
RouteFlagChildInherit = uint64(1)
RouteFlagCapture = uint64(2)
)

const (
FaceEventCreated = uint64(1)
FaceEventDestroyed = uint64(2)
31 changes: 20 additions & 11 deletions std/ndn/mgmt_2022/persistency.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,33 @@
package mgmt_2022

// Persistency represents the persistency of a face.
import "errors"

type Persistency uint64

// Face persistencies (shared with management).
const (
PersistencyPersistent Persistency = 0
PersistencyOnDemand Persistency = 1
PersistencyPermanent Persistency = 2
)

var PersistencyList = map[Persistency]string{
PersistencyPersistent: "persistent",
PersistencyOnDemand: "on-demand",
PersistencyPermanent: "permanent",
}

func (p Persistency) String() string {
switch p {
case PersistencyPersistent:
return "Persistent"
case PersistencyOnDemand:
return "OnDemand"
case PersistencyPermanent:
return "Permanent"
default:
return "Unknown"
if s, ok := PersistencyList[p]; ok {
return s
}
return "unknown"
}

func ParsePersistency(s string) (Persistency, error) {
for k, v := range PersistencyList {
if v == s {
return k, nil
}
}
return 0, errors.New("unknown persistency")
}
54 changes: 54 additions & 0 deletions std/ndn/mgmt_2022/route.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package mgmt_2022

type RouteFlag uint64

const (
RouteFlagNoFlag RouteFlag = 0
RouteFlagChildInherit RouteFlag = 1
RouteFlagCapture RouteFlag = 2
)

var RouteFlagList = map[RouteFlag]string{
RouteFlagChildInherit: "child-inherit",
RouteFlagCapture: "capture",
}

func (v RouteFlag) String() string {
if s, ok := RouteFlagList[v]; ok {
return s
}
return "unknown"
}

func (v RouteFlag) IsSet(flags uint64) bool {
return uint64(v)&flags != 0
}

type RouteOrigin uint64

const (
RouteOriginApp RouteOrigin = 0
RouteOriginStatic RouteOrigin = 255
RouteOriginNLSR RouteOrigin = 128
RouteOriginPrefixAnn RouteOrigin = 129
RouteOriginClient RouteOrigin = 65
RouteOriginAutoreg RouteOrigin = 64
RouteOriginAutoconf RouteOrigin = 66
)

var RouteOriginList = map[RouteOrigin]string{
RouteOriginApp: "app",
RouteOriginStatic: "static",
RouteOriginNLSR: "nlsr",
RouteOriginPrefixAnn: "prefixann",
RouteOriginClient: "client",
RouteOriginAutoreg: "autoreg",
RouteOriginAutoconf: "autoconf",
}

func (v RouteOrigin) String() string {
if s, ok := RouteOriginList[v]; ok {
return s
}
return "unknown"
}
11 changes: 5 additions & 6 deletions tools/nfdc/nfdc_cmd.go
Original file line number Diff line number Diff line change
@@ -168,15 +168,12 @@ func (n *Nfdc) convCmdArg(ctrlArgs *mgmt.ControlArgs, key string, val string) {
case "mtu":
ctrlArgs.Mtu = utils.IdPtr(parseUint(val))
case "persistency":
switch val {
case "permanent":
ctrlArgs.FacePersistency = utils.IdPtr(uint64(mgmt.PersistencyPermanent))
case "persistent":
ctrlArgs.FacePersistency = utils.IdPtr(uint64(mgmt.PersistencyPersistent))
default:
persistency, err := mgmt.ParsePersistency(val)
if err != nil {
fmt.Fprintf(os.Stderr, "Invalid persistency: %s\n", val)
os.Exit(9)
}
ctrlArgs.FacePersistency = utils.IdPtr(uint64(persistency))

// route arguments
case "prefix":
@@ -219,6 +216,8 @@ func (n *Nfdc) printCtrlResponse(res *mgmt.ControlResponse) {
switch key {
case "FacePersistency":
val = mgmt.Persistency(val.(uint64)).String()
case "Origin":
val = mgmt.RouteOrigin(val.(uint64)).String()
}

fmt.Printf(" %s=%v\n", key, val)
15 changes: 12 additions & 3 deletions tools/nfdc/nfdc_route.go
Original file line number Diff line number Diff line change
@@ -35,9 +35,18 @@ func (n *Nfdc) ExecRouteList(args []string) {
expiry = (time.Duration(*route.ExpirationPeriod) * time.Millisecond).String()
}

// TODO: convert origin, flags to string
fmt.Printf("prefix=%s nexthop=%d origin=%d cost=%d flags=%d expires=%s\n",
entry.Name, route.FaceId, route.Origin, route.Cost, route.Flags, expiry)
flagList := make([]string, 0)
for flag, name := range mgmt.RouteFlagList {
if flag.IsSet(route.Flags) {
flagList = append(flagList, name)
}
}
flags := strings.Join(flagList, ", ")

origin := mgmt.RouteOrigin(route.Origin)

fmt.Printf("prefix=%s nexthop=%d origin=%s cost=%d flags={%s} expires=%s\n",
entry.Name, route.FaceId, origin, route.Cost, flags, expiry)
}
}
}

0 comments on commit b792671

Please # to comment.