在我的路由协议中,我想定期动态更新路由表,截至目前,我通过将RouteDiscoveryNtf
消息发送到路由器代理,将路由条目从我的代理添加到路由表,这类似于使用addroute
闭包在外壳中。
我想知道,如何删除路由条目。这样,我就可以用新条目更新路由表。由于 , delroute
, delroutesto
,delroutes
在 shell 中工作的闭包不能在代理中使用。
另外我想知道我的方法是否适合动态更新路由表,或者是否有其他更好的方法可以做到这一点。请帮忙。
在我的路由协议中,我想定期动态更新路由表,截至目前,我通过将RouteDiscoveryNtf
消息发送到路由器代理,将路由条目从我的代理添加到路由表,这类似于使用addroute
闭包在外壳中。
我想知道,如何删除路由条目。这样,我就可以用新条目更新路由表。由于 , delroute
, delroutesto
,delroutes
在 shell 中工作的闭包不能在代理中使用。
另外我想知道我的方法是否适合动态更新路由表,或者是否有其他更好的方法可以做到这一点。请帮忙。
当前版本的 UnetStack (1.4) 没有定义删除路由的消息,因此没有“正确”的方式要求路由器删除路由。以后的版本可能会为此引入消息。目前,您可以像delroute
,delroutes
和delroutesto
shell 函数一样执行此操作,但请记住,您可能需要在更高版本的 UnetStack 中更新它。
router
代理公开两个未列出的参数 (removeRoute
和removeRoutesTo
) 以允许删除路由。一旦 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
的参数来设置这些参数。