我正在编写一个运行在嵌入式平台上的守护进程,需要根据连接的接口动态更改设备的默认路由。有没有更直接的方式来实现而不是使用system("route del default && route add default gateway blah")等命令?更新:我通过发现pppd的补丁解决了我的特定问题,允许replacedefaultroute选项。该补丁还包括编程修改路由表的代码。它已被包含在这个gentoo bug报告中:http://bugs.gentoo.org/227321
请查看SIOCADDRT/SIOCDELRT ioctls(建议参考Stevens的“Unix网络编程”)。
我打了
man route
因为我知道有时候在“参见”部分可以找到如何以编程方式完成相同操作的提示。我看到第4页上有一个关于“route”的手册(“route(4)”在“参见”部分中)。所以我尝试了一下。
man 4 route
看起来很有前途,可以通过编程实现路由命令的功能。
注意我刚刚注意到这只适用于BSD系统。这里有一个manpage的链接http://www.manpagez.com/man/4/route/。这可能有帮助,也可能没有。也许你可以在这里搜索一些东西,并添加“linux”一词。