- 论坛徽章:
- 0
|
本人在编写Linux的内核模块代码。代码中需要根据目标IPv4地址获得下一跳网关的地址,所以想到了查找路由表。
在程序中调用ip_route_output_key时,代码类似这个样子:
- static int get_nexthop_address(uint32_t dest_addr)
- {
- struct flowi fl;
- struct rtable *rt = NULL;
- fl.fl4_dst = dest_addr;
- fl.proto = AF_INET;
- ip_route_output_key(&rt,&fl);
- if( rt == NULL ) {
- printk(KERN_ALERT "rtable is NULL.\n");
- return -1;
- }
- printk(KERN_ALERT "Gateway for address %08x is: %08x.\n", fl.fl4_dst, rt->rt_gateway);
- return 0;
- }
复制代码
ip_route_output_key被调用后,rt仍然还是NULL……请教各位大侠 ip_route_output_key 这个函数如何根据目标IP地址找到下一跳网关? |
|