Yeah this is true,
however you could try a simple loop on the interface, If there are NULL you
must run as root.

    /* Retrieve the device list on the local machine */
    if (pcap_findalldevs(&alldevs, errbuf) == -1) {
        printf("Error in pcap_findalldevs: %s\n", errbuf);
        return -1;
    }

    for(d=alldevs; d; d=d->next)
    {
        printf("\t%d. %s\n", ++i, d->name);

#ifdef WIN32
        if (d->description)
            printf(" (%s)\n", d->description);
        else
            printf(" (No description available)\n");
#endif
    }


    if (i==0)
    {
#ifdef WIN32
        fprintf(stderr," \tNo interfaces found! Exiting.\n");
#else
        fprintf(stderr," \tThis software must be run as root: No interfaces
found!");
#endif
        exit(EXIT_FAILURE);
    }



--
Benoit RAT
www.neub.co.nr


On Mon, Feb 2, 2009 at 2:39 PM, Johan Mazel <johan.ma...@gmail.com> wrote:

> Hi
> I'm trying to use pcap_findalldevs in order to scan the device available on
> my host to capture.
>
> My code (in C++) looks like that:
> result = pcap_findalldevs(&found_devices, errbuf);
> if(result < 0)
> {
>        FindAllDevsException myFindAllDevsException(errbuf);
>        cout << "Scan error" << endl;
>        throw(myFindAllDevsException);
> }
>
> My problem is that when I'm not running the program as root, I got the
> "Erreur de bus" in French (or "Bus Error" in english I guess) and my
> program
> suddenly stops.
> And it looks like I cannot catch the error through the value of result.
>
> The pcap manpage say for pcap_findalldevs:
> -1 is returned on failure, in which case errbuf is filled  in  with  an
> appropriate error message; 0 is returned on success.
> Apparently, this case of failure do not include the fact that the program
> might not be runned as root.
>
> My question is the following one, is there anyway to catch this error ?
>
> Thanks in adavnce for the help.
> Johan
> -
> This is the tcpdump-workers list.
> Visit https://cod.sandelman.ca/ to unsubscribe.
>
-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.

Reply via email to