我正在编写一个在嵌入式平台上运行的守护进程,该平台需要根据它在给定时间连接的接口来更改设备的默认路由。我怎么能以编程方式执行此操作?我知道我可以使用system(“route del default&& route add default gateway blah”);等,但有更直接的方式吗?
更新:我通过发现一个允许replacedefaultroute选项的pppd补丁解决了我的特殊问题。该补丁还包括用于以编程方式修改路由表的代码。它包含在此gentoo错误报告http://bugs.gentoo.org/227321
中答案 0 :(得分:7)
查看SIOCADDRT / SIOCDELRT ioctls(史蒂文斯的“Unix网络编程”将是一个很好的参考。)
答案 1 :(得分:1)
我打字
man route
因为我知道有时候我会在“另见”一节中提示如何以编程方式执行相同的操作。我看到第4页有一个关于“路线”的手册页(路线(4)在另见部分)。试过了
man 4 route
看起来路由命令可以通过程序化做什么看起来很有希望。
注意我刚才注意到这只适用于BSD系统。这是包含联机帮助页的URL http://www.manpagez.com/man/4/route/。这可能有用也可能没用。也许你可以在这里google一些东西并添加“linux”这个词。
答案 2 :(得分:0)
我建议只使用该路由命令。这就是它的用途,其他任何东西都只是一个黑客。