X-Git-Url: https://git.tcpdump.org/libpcap/blobdiff_plain/a94d5a3f5426b1e91c9ba1851d35d4fee55e80df..09b51d326c38ea8e10ce4da09c09d50e08c5aeb8:/pcap-dag.c diff --git a/pcap-dag.c b/pcap-dag.c index b3949d53..f261ead0 100644 --- a/pcap-dag.c +++ b/pcap-dag.c @@ -213,7 +213,7 @@ static int dag_get_datalink(pcap_t *p); static int dag_setnonblock(pcap_t *p, int nonblock); static void -delete_pcap_dag(pcap_t *p) +delete_pcap_dag(const pcap_t *p) { pcap_dag_node_t *curr = NULL, *prev = NULL; @@ -299,7 +299,7 @@ new_pcap_dag(pcap_t *p) } static unsigned int -dag_erf_ext_header_count(uint8_t * erf, size_t len) +dag_erf_ext_header_count(const uint8_t *erf, size_t len) { uint32_t hdr_num = 0; uint8_t hdr_type; @@ -736,7 +736,7 @@ dag_inject(pcap_t *p, const void *buf _U_, int size _U_) * API polling parameters. * * snaplen is now also ignored, until we get per-stream slen support. Set - * slen with approprite DAG tool BEFORE pcap_activate(). + * slen with appropriate DAG tool BEFORE pcap_activate(). * * See also pcap(3). */ @@ -793,14 +793,23 @@ static int dag_activate(pcap_t* p) /* * XXX - does this reliably set errno? */ - if (errno == ENOENT) + if (errno == ENOENT) { + /* + * There's nothing more to say, so clear + * the error message. + */ ret = PCAP_ERROR_NO_SUCH_DEVICE; - else if (errno == EPERM || errno == EACCES) + p->errbuf[0] = '\0'; + } else if (errno == EPERM || errno == EACCES) { ret = PCAP_ERROR_PERM_DENIED; - else + snprintf(p->errbuf, PCAP_ERRBUF_SIZE, + "Attempt to open %s failed with %s - additional privileges may be required", + device, (errno == EPERM) ? "EPERM" : "EACCES"); + } else { ret = PCAP_ERROR; - pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, - errno, "dag_config_init %s", device); + pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, + errno, "dag_config_init %s", device); + } goto fail; } @@ -950,7 +959,7 @@ static int dag_activate(pcap_t* p) * Did the user request that they not be stripped? */ if ((s = getenv("ERF_DONT_STRIP_FCS")) != NULL) { - /* Yes. Note the number of bytes that will be + /* Yes. Note the number of 16-bit words that will be supplied. */ p->linktype_ext = LT_FCS_DATALINK_EXT(pd->dag_fcs_bits/16);