+ -
当前位置:首页 → 问答吧 → 如何在模块中获得某个网络接口的默认网关?

如何在模块中获得某个网络接口的默认网关?

时间:2010-07-16

来源:互联网

如题, 想在模块里面查路由表获得默认网关,但是发现我想用的函数和变量很多都没有导出到符号表,导出了的那些又没有找到合适的,
实在束手无策了,向各位求助!

作者: peimichael   发布时间: 2010-07-16

没想到什么办法,但如果你能找到查询的函数,你可以把函数导出啊,然后你不就能用了,不知道这样行不行

作者: @sky   发布时间: 2010-07-16

回复 @sky


    这样确实可以,但是我想希望这个模块能直接放到任何一台linux机器上编译然后插入内核,所以不希望修改内核。

作者: peimichael   发布时间: 2010-07-16

还有个办法,先取接口的IP,然后根据接口IP查询到公网某地址的路由,然后根据得到的路由rtable中的rt_gateway取网关地址

作者: @sky   发布时间: 2010-07-16

参考iproute2代码,使用netlink可查询到默认网关

作者: 奇门遁甲-lu   发布时间: 2010-07-16

回复 @sky


    这好像是个办法,但是感觉属于非正常手段。。暂时把它列为Plan B

作者: peimichael   发布时间: 2010-07-16

回复 奇门遁甲-lu


    netlink我用过,但是那个是用户空间获取内核路由表的,我找了内核空间他调用的函数,从inet_dump_fib开始似乎都没有export的。难道要自己在内核空间模仿用户空间用netlink socket来做?

作者: peimichael   发布时间: 2010-07-16

找到更好的办法公布下,我也想知道

作者: @sky   发布时间: 2010-07-16

热门下载

更多