求教高手:一个困惑我很久的问题?
我用sysctl()函数操作路由表,部分代码如下:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sysctl.h>
#include <sys/param.h>
#include <sys/sysctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
#include <net/route.h>
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = 0; /*AF_INET;*/
mib[4] = NET_RT_DUMP;
mib[5] = 0;
/* get interface data */
if (sysctl(mib, 6, NULL, needed, NULL, 0) == -1)
printf("sysctl error!n");
编译时在粗斜体部分,老师出现如下错误:
NET_RT_DUMP?undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
请问为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
受教了!
谢谢了:)
NET_RT_DUMP
这应当是bsd系列的用法
要读的话,读/proc/net/route文件就可以了.
要写的话,用ioctl.
不明白的话,用strace跟踪一下route调用.
看一下修改路由表时,用的是什么ioctl控制代码.
因为在你所包含的头文件中找不到 NET_RT_DUMP 的定义
没有人回答?