如何使用UnetStack中的代理从路由表中删除路由条目

时间:2019-07-29 06:53:28

标签: unetstack

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

我想知道,如何删除路由条目。这样,我就可以使用新条目更新路由表。由于在外壳程序中无法使用的delroutedelroutestodelroutes闭包在代理中不能使用

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

1 个答案:

答案 0 :(得分:1)

当前版本的UnetStack(1.4)并未定义删除路由的消息,因此没有“正确”的方法要求路由器删除路由。更高版本可能为此引入消息。现在,您可以使用delroutedelroutesdelroutesto Shell函数的相同方式进行此操作,但请记住,您可能需要在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
}

如果要在Groovy中实现,则可以使用几乎相同的代码,其中routerAgentID或路由器代理。如果您使用Java实现,则必须发送相应的ParameterReq来设置这些参数。