2009-04-15 68 views
6

我正在编写一个运行在嵌入式平台上的守护程序,该守护程序需要根据它在给定时间连接的接口更改设备的默认路由。我如何以编程方式执行此操作?我知道我可以使用系统(“route del default & & route add default gateway blah”);等等,但有没有更直接的方法?如何以编程方式编辑路由表

更新:我通过发现允许replacedefaultroute选项的pppd补丁解决了我的特殊问题。该修补程序还包括以编程方式修改路由表的代码。它包含在这个gentoo bug报告中http://bugs.gentoo.org/227321

回答

7

退房SIOCADDRT/SIOCDELRT的ioctl(Stevens的‘UNIX网络编程’将是一个很好的参考。)

+1

太棒了,我得到了shell级别的访问权限,或者我必须解析/ proc/net/route并使用ioctls!我想我可以翻译其他项目的代码。目前正在查看pppd是如何做到的。 – MattSmith 2009-04-15 02:37:01

0

我会推荐使用那个route命令。多数民众赞成在那里,以及其他任何事情只会是一个黑客。

1

我输入

man route 

,因为我知道,有时候我可以得到一丝“另请参阅“关于如何以编程方式执行相同操作的章节”。我看到第4页有一个手册页,用于“路线”(路线(4)也在另一部分中)。所以,试图

man 4 route 

和它做什么route命令可以programmitically做看起来前途无量。

注意我刚刚注意到这只适用于BSD系统。这是一个网址,其中包含手册页 http://www.manpagez.com/man/4/route/。这可能会有帮助,也可能没有帮助。也许你可以在这里谷歌的一些东西,并添加单词“Linux”。

+0

我有男子路线,但不是男子4路线。你能告诉我我需要哪个库或头文件吗? – MattSmith 2009-04-15 02:28:56