pcap_findalldevs() 定义在哪个文件和行号中?

发布于 2024-12-03 04:39:41 字数 113 浏览 1 评论 0原文

pcap_findalldevs() 定义在哪个文件和行号中?我正在 libpcap 源代码中查找定义 pcap_findalldevs() 的位置。我在 pcap.h 中找到了原型,但是完整的功能在哪里定义的?

What file and line number is pcap_findalldevs() defined in?. I am looking in the libpcap source for the place where pcap_findalldevs() is defined. I found the prototype in pcap.h but where is the complete functionality defined?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦里寻她 2024-12-10 04:39:41

让我们看看:

# git clone git://git.debian.org/git/users/rfrancoise/libpcap.git
Cloning into libpcap...
[snap]
# grep -ri pcap_findalldevs libpcap |grep '{'
libpcap/fad-sita.c:int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {

看来我的幸运日!

这里是这个函数的完整源代码:

int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {
        *alldevsp = 0;
        strcpy(errbuf, "");
        if (acn_parse_hosts_file(errbuf))
                {
                return -1;
                }
        if (acn_findalldevs(errbuf))
                {
                return -1;
                }
        *alldevsp = acn_if_list;
        acn_if_list = 0;    

        return 0;
}

那么,你的问题的答案是:fad-sita.c

Let's see:

# git clone git://git.debian.org/git/users/rfrancoise/libpcap.git
Cloning into libpcap...
[snap]
# grep -ri pcap_findalldevs libpcap |grep '{'
libpcap/fad-sita.c:int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {

Seems my lucky day !

Here complete source code of this function:

int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf) {
        *alldevsp = 0;
        strcpy(errbuf, "");
        if (acn_parse_hosts_file(errbuf))
                {
                return -1;
                }
        if (acn_findalldevs(errbuf))
                {
                return -1;
                }
        *alldevsp = acn_if_list;
        acn_if_list = 0;    

        return 0;
}

Then, the answer of your question is: fad-sita.c !

美人如玉 2024-12-10 04:39:41

它在多个地方定义,因为它的完成方式取决于您运行的操作系统。在装有 WinPcap 的 Windows 上,它在 fad-win32.c 中定义;在具有 getifaddrs() 的 UN*Xes 上,它在 fad-getad.c 中定义;在 Solaris 8 或更高版本上,它在 fad-glfc.c 中定义;在其他支持本地接口数据包捕获的 UN*Xes 上,它在 fad-gifc.c 中定义;在根本不支持数据包捕获的 UN*Xes 上,它在 fad-null.c 中定义(不返回任何接口);并且,如果配置和构建 libpcap 的人碰巧配置了支持从 SITA 提供的远程设备捕获,则它被定义在fad-sita.c中。

(是的,另一个答案是错误的;他们不应该假设我们这些在 libpcap 中编写代码的人都喜欢将函数的左大括号与函数名称放在同一行 - 我不这样做,并且不会,那就这么做吧。)

It's defined in several places, because the way it's done depends on the OS on which you're running. On Windows with WinPcap, it's defined in fad-win32.c; on UN*Xes that have getifaddrs(), it's defined in fad-getad.c; on Solaris 8 or later, it's defined in fad-glifc.c; on other UN*Xes that support packet capture on local interfaces, it's defined in fad-gifc.c; on UN*Xes that don't support packet capture at all, it's defined (to return no interfaces) in fad-null.c; and, if whoever configured and built libpcap happened to configure in support for capturing from remote devices provided by SITA, it's defined in fad-sita.c.

(Yes, the other answer is wrong; they should not have assumed that those of us who write code in libpcap all like putting the opening curly brace of a function on the same line as the name of the function - I don't, and won't, do that.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文