2

在我的路由协议中,我想定期动态更新路由表,截至目前,我通过将RouteDiscoveryNtf消息发送到路由器代理,将路由条目从我的代理添加到路由表,这类似于使用addroute闭包在外壳中。

我想知道,如何删除路由条目。这样,我就可以用新条目更新路由表。由于 , delroute, delroutesto,delroutes在 shell 中工作的闭包不能在代理中使用。

另外我想知道我的方法是否适合动态更新路由表,或者是否有其他更好的方法可以做到这一点。请帮忙。

4

1 回答 1

1

当前版本的 UnetStack (1.4) 没有定义删除路由的消息,因此没有“正确”的方式要求路由器删除路由。以后的版本可能会为此引入消息。目前,您可以像delroute,delroutesdelroutestoshell 函数一样执行此操作,但请记住,您可能需要在更高版本的 UnetStack 中更新它

router代理公开两个未列出的参数 (removeRouteremoveRoutesTo) 以允许删除路由。一旦 UnetStack 为此目的定义了消息,这些可能会在未来的版本中被删除。

代码片段显示了 3 个 shell 函数是如何实现的:

// remove route number n (0 based numbering)
void delroute(n) {
  router.removeRoute = n-1
}

// remote all routes in routing table
void delroutes() {
  router.removeRoute = -1
}

// remove all routes to node
void delroutesto(node) {
  router.removeRoutesTo = node
}

router如果您在 Groovy 中实现,您可以使用与AgentID路由器代理几乎相同的代码。如果您在 Java 中实现,则必须发送适当ParameterReq的参数来设置这些参数。

于 2019-07-29T13:05:07.127 回答