免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5217 | 回复: 1
打印 上一主题 下一主题

如何在内核态程序中查找路由表?关于ip_route_output_key的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-29 13:42 |只看该作者 |倒序浏览
本人在编写Linux的内核模块代码。代码中需要根据目标IPv4地址获得下一跳网关的地址,所以想到了查找路由表。

在程序中调用ip_route_output_key时,代码类似这个样子:

  1. static int get_nexthop_address(uint32_t dest_addr)
  2. {
  3.     struct flowi fl;
  4.     struct rtable *rt = NULL;

  5.     fl.fl4_dst = dest_addr;
  6.     fl.proto = AF_INET;
  7.     ip_route_output_key(&rt,&fl);

  8.     if( rt == NULL ) {
  9.         printk(KERN_ALERT "rtable is NULL.\n");
  10.         return -1;
  11.     }
  12.     printk(KERN_ALERT "Gateway for address %08x is: %08x.\n", fl.fl4_dst, rt->rt_gateway);

  13.     return 0;
  14. }
复制代码


ip_route_output_key被调用后,rt仍然还是NULL……请教各位大侠 ip_route_output_key 这个函数如何根据目标IP地址找到下一跳网关?

论坛徽章:
0
2 [报告]
发表于 2012-06-19 19:56 |只看该作者
调用前memset fl试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP