Lines Matching +full:cable +full:- +full:modem

59 #include "pcap-int.h"
62 #include "os-proto.h"
89 struct pcap_snit *psn = p->priv; in pcap_stats_snit()
108 *ps = psn->stat; in pcap_stats_snit()
115 struct pcap_snit *psn = p->priv; in pcap_read_snit()
124 cc = p->cc; in pcap_read_snit()
126 cc = read(p->fd, (char *)p->buffer, p->bufsize); in pcap_read_snit()
130 pcapint_fmt_errmsg_for_errno(p->errbuf, sizeof(p->errbuf), in pcap_read_snit()
132 return (-1); in pcap_read_snit()
134 bp = (u_char *)p->buffer; in pcap_read_snit()
136 bp = p->bp; in pcap_read_snit()
149 * If so, return immediately - if we haven't read any in pcap_read_snit()
150 * packets, clear the flag and return -2 to indicate in pcap_read_snit()
156 if (p->break_loop) { in pcap_read_snit()
158 p->break_loop = 0; in pcap_read_snit()
159 return (-2); in pcap_read_snit()
161 p->bp = bp; in pcap_read_snit()
162 p->cc = ep - bp; in pcap_read_snit()
167 ++psn->stat.ps_recv; in pcap_read_snit()
179 psn->stat.ps_drop = ndp->nh_drops; in pcap_read_snit()
187 bp += hdrp->nhb_totlen; in pcap_read_snit()
189 caplen = nlp->nh_pktlen; in pcap_read_snit()
190 if (caplen > p->snapshot) in pcap_read_snit()
191 caplen = p->snapshot; in pcap_read_snit()
193 if (pcapint_filter(p->fcode.bf_insns, cp, nlp->nh_pktlen, caplen)) { in pcap_read_snit()
195 h.ts = ntp->nh_timestamp; in pcap_read_snit()
196 h.len = nlp->nh_pktlen; in pcap_read_snit()
200 p->cc = ep - bp; in pcap_read_snit()
201 p->bp = bp; in pcap_read_snit()
206 p->cc = 0; in pcap_read_snit()
216 * XXX - can we just do in pcap_inject_snit()
218 ret = write(pd->f, buf, size); in pcap_inject_snit()
220 ctl.len = sizeof(*sa); /* XXX - what was this? */ in pcap_inject_snit()
224 ret = putmsg(p->fd, &ctl, &data); in pcap_inject_snit()
225 if (ret == -1) { in pcap_inject_snit()
226 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_inject_snit()
228 return (-1); in pcap_inject_snit()
241 if (p->opt.immediate) { in nit_setflags()
249 if (ioctl(p->fd, I_STR, (char *)&si) < 0) { in nit_setflags()
250 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in nit_setflags()
252 return (-1); in nit_setflags()
256 if (p->opt.timeout != 0) { in nit_setflags()
257 timeout.tv_sec = p->opt.timeout / 1000; in nit_setflags()
258 timeout.tv_usec = (p->opt.timeout * 1000) % 1000000; in nit_setflags()
262 if (ioctl(p->fd, I_STR, (char *)&si) < 0) { in nit_setflags()
263 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in nit_setflags()
265 return (-1); in nit_setflags()
269 if (p->opt.promisc) in nit_setflags()
274 if (ioctl(p->fd, I_STR, (char *)&si) < 0) { in nit_setflags()
275 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in nit_setflags()
277 return (-1); in nit_setflags()
292 if (p->opt.rfmon) { in pcap_activate_snit()
294 * No monitor mode on SunOS 4.x (no Wi-Fi devices on in pcap_activate_snit()
308 if (p->snapshot <= 0 || p->snapshot > MAXIMUM_SNAPLEN) in pcap_activate_snit()
309 p->snapshot = MAXIMUM_SNAPLEN; in pcap_activate_snit()
311 if (p->snapshot < 96) in pcap_activate_snit()
315 p->snapshot = 96; in pcap_activate_snit()
320 * issues, fall back to read-only. This allows a in pcap_activate_snit()
321 * non-root user to be granted specific access to pcap in pcap_activate_snit()
324 * XXX - we should have an API that has a flag that in pcap_activate_snit()
325 * controls whether to open read-only or read-write, in pcap_activate_snit()
331 p->fd = fd = open(dev, O_RDWR); in pcap_activate_snit()
333 p->fd = fd = open(dev, O_RDONLY); in pcap_activate_snit()
337 snprintf(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
338 "Attempt to open %s failed with EACCES - root privileges may be required", in pcap_activate_snit()
342 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
350 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
356 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
367 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
374 strncpy(ifr.ifr_name, p->opt.device, sizeof(ifr.ifr_name)); in pcap_activate_snit()
375 ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0'; in pcap_activate_snit()
381 * XXX - is there an error that means "no such device"? in pcap_activate_snit()
385 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
393 si.ic_len = sizeof(p->snapshot); in pcap_activate_snit()
394 si.ic_dp = (char *)&p->snapshot; in pcap_activate_snit()
396 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
410 p->linktype = DLT_EN10MB; in pcap_activate_snit()
412 p->bufsize = BUFSPACE; in pcap_activate_snit()
413 p->buffer = malloc(p->bufsize); in pcap_activate_snit()
414 if (p->buffer == NULL) { in pcap_activate_snit()
415 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
422 * "p->fd" is an FD for a STREAMS device, so "select()" and in pcap_activate_snit()
425 p->selectable_fd = p->fd; in pcap_activate_snit()
429 * link-layer-type list with DLT_EN10MB and DLT_DOCSIS, so in pcap_activate_snit()
431 * capturing DOCSIS traffic that a Cisco Cable Modem in pcap_activate_snit()
434 * DOCSIS frames out on the wire inside the low-level in pcap_activate_snit()
437 p->dlt_list = (u_int *) malloc(sizeof(u_int) * 2); in pcap_activate_snit()
438 if (p->dlt_list == NULL) { in pcap_activate_snit()
439 pcapint_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE, in pcap_activate_snit()
444 p->dlt_list[0] = DLT_EN10MB; in pcap_activate_snit()
445 p->dlt_list[1] = DLT_DOCSIS; in pcap_activate_snit()
446 p->dlt_count = 2; in pcap_activate_snit()
448 p->read_op = pcap_read_snit; in pcap_activate_snit()
449 p->inject_op = pcap_inject_snit; in pcap_activate_snit()
450 p->setfilter_op = pcapint_install_bpf_program; /* no kernel filtering */ in pcap_activate_snit()
451 p->setdirection_op = NULL; /* Not implemented. */ in pcap_activate_snit()
452 p->set_datalink_op = NULL; /* can't change data link type */ in pcap_activate_snit()
453 p->getnonblock_op = pcapint_getnonblock_fd; in pcap_activate_snit()
454 p->setnonblock_op = pcapint_setnonblock_fd; in pcap_activate_snit()
455 p->stats_op = pcap_stats_snit; in pcap_activate_snit()
472 p->activate_op = pcap_activate_snit; in pcapint_create_interface()
477 * XXX - there's probably a NIOCBIND error that means "that device
491 * XXX - is there a way to find out whether an adapter has in get_if_flags()