在我的路由协议中,我想定期地动态更新路由表,到现在为止,我正在通过将RouteDiscoveryNtf
消息发送到路由器,将路由条目从我的代理添加到路由表中代理,类似于在外壳中使用addroute
闭包。
我想知道,如何删除路由条目。这样,我就可以使用新条目更新路由表。由于在外壳程序中无法使用的delroute
,delroutesto
,delroutes
闭包在代理中不能使用
我还想知道我的方法是否适合动态更新路由表,或者还有其他更好的方法可以做到这一点。请帮助。
答案 0 :(得分:1)
当前版本的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
}
如果要在Groovy中实现,则可以使用几乎相同的代码,其中router
是AgentID
或路由器代理。如果您使用Java实现,则必须发送相应的ParameterReq
来设置这些参数。