pcap基础(三)

来源:互联网 发布:知乎精彩问题 编辑:程序博客网 时间:2024/06/05 22:43
#include <stdio.h>
#include <pcap.h>




int main()
{
        pcap_if_t * alldevs;
        pcap_if_t *d;
//        int *tstamps = NULL;
        int * dataLinkC = NULL;
        int i = 0;
        const char* tstamp_type_name ;
        char errbuf[PCAP_ERRBUF_SIZE] = {0};




        if(-1 == pcap_findalldevs(&alldevs, errbuf)){
                printf("Error in pcap_findalldevs: %s\n", errbuf);
                return -1;
        }
        for (d = alldevs; d != NULL; d = d->next ){
                pcap_t *pHandle = pcap_open_live(d->name, 65535, 0, 1000, NULL);
                int cnt = 0;
                cnt = pcap_list_datalinks(pHandle, &dataLinkC);
                if( cnt < 0|| NULL == dataLinkC ){
                        printf("%s", pcap_geterr(pHandle));
                }
                printf("Device name: %s\n", d->name);
                for (i = 0; i < cnt; i++){
                        printf("DataLink Name: %s\n", pcap_datalink_val_to_name(dataLinkC[i]));
                }
                pcap_close(pHandle);
                pcap_free_datalinks(dataLinkC);
                printf("\n");
        }
        pcap_freealldevs(alldevs);
        return 0;

}


===========================================================================================================================================

Device name: eth0
DataLink Name: EN10MB
DataLink Name: DOCSIS


Device name: eth1
DataLink Name: EN10MB
DataLink Name: DOCSIS


Device name: any
DataLink Name: LINUX_SLL


Device name: lo
DataLink Name: EN10MB