尝试从网络命名空间中打印路由列表。 netlink.RouteList
函数需要Interface
类型。 LinkList()
收集所有接口的列表。
我试图用每个接口调用RouteList并打印它的输出。 RouteList返回类型Route
,我试图打印int
LinkIndex。
看起来好像是我的循环
for j := range rt {
log.Printf("Route: %d : %d",rt[j].LinkIndex)
}
由于某种原因不能执行,在那里运行另一个Printf测试不会产生任何结果。
为什么不会调用此循环?
func (h *NSHandle) showInts() {
nh := (*netlink.Handle)(h) //cast required
int, err := nh.LinkList()
if err != nil {
log.Fatal(err)
}
log.Printf("Namespace Ints:")
for i, r := range int {
log.Printf("%d: %s", i, r.Attrs().Name)
rt, err := netlink.RouteList(r,-1)
if err != nil {
log.Fatal(err)
}
for j := range rt {
log.Printf("Route: %d : %d",rt[j].LinkIndex)
}
}
}
答案 0 :(得分:1)
这是一个糟糕的问题。发布后不久,我意识到数组显然是空的,因为在没有接收器Handler
的情况下调用了RouteList。这只是简单地解决了:
for i, r := range rl {
log.Printf("%d: %s", i, LinkIndex)
}