免费注册 查看新帖 |

Chinaunix

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

求教高手:一个困惑我很久的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-12 21:19 |只看该作者 |倒序浏览
我用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.)

请问为什么?

论坛徽章:
0
2 [报告]
发表于 2006-09-12 21:35 |只看该作者
没有人回答?

论坛徽章:
0
3 [报告]
发表于 2006-09-13 13:08 |只看该作者
因为在你所包含的头文件中找不到 NET_RT_DUMP 的定义

论坛徽章:
0
4 [报告]
发表于 2006-09-13 13:10 |只看该作者
NET_RT_DUMP

这应当是bsd系列的用法

要读的话,读/proc/net/route文件就可以了.
要写的话,用ioctl.

不明白的话,用strace跟踪一下route调用.
看一下修改路由表时,用的是什么ioctl控制代码.

论坛徽章:
0
5 [报告]
发表于 2006-09-13 13:43 |只看该作者
原帖由 coldwarm 于 2006-9-13 13:10 发表
NET_RT_DUMP

这应当是bsd系列的用法

要读的话,读/proc/net/route文件就可以了.
要写的话,用ioctl.

不明白的话,用strace跟踪一下route调用.
看一下修改路由表时,用的是什么ioctl控制代码.

谢谢了:)

论坛徽章:
0
6 [报告]
发表于 2006-09-13 19:56 |只看该作者
原帖由 coldwarm 于 2006-9-13 13:10 发表
NET_RT_DUMP

这应当是bsd系列的用法

要读的话,读/proc/net/route文件就可以了.
要写的话,用ioctl.

不明白的话,用strace跟踪一下route调用.
看一下修改路由表时,用的是什么ioctl控制代码.


受教了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP