Chinaunix

标题: 求教高手:一个困惑我很久的问题? [打印本页]

作者: vulcan    时间: 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.)

请问为什么?
作者: vulcan    时间: 2006-09-12 21:35
没有人回答?
作者: 告化甲头    时间: 2006-09-13 13:08
因为在你所包含的头文件中找不到 NET_RT_DUMP 的定义
作者: coldwarm    时间: 2006-09-13 13:10
NET_RT_DUMP

这应当是bsd系列的用法

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

不明白的话,用strace跟踪一下route调用.
看一下修改路由表时,用的是什么ioctl控制代码.
作者: vulcan    时间: 2006-09-13 13:43
原帖由 coldwarm 于 2006-9-13 13:10 发表
NET_RT_DUMP

这应当是bsd系列的用法

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

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

谢谢了:)
作者: xiaoyao4005    时间: 2006-09-13 19:56
原帖由 coldwarm 于 2006-9-13 13:10 发表
NET_RT_DUMP

这应当是bsd系列的用法

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

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


受教了!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2