Lines Matching refs:d

146 static int	bpf_ifname(struct bpf_d *d, char *, int);
242 bpf_attachd(struct bpf_d *d, const char *ifname, int dlt) in bpf_attachd() argument
255 ASSERT(d->bd_bif == (uintptr_t)NULL); in bpf_attachd()
256 ASSERT(d->bd_mcip == (uintptr_t)NULL); in bpf_attachd()
257 zone = d->bd_zone; in bpf_attachd()
321 d->bd_mac = *bpr; in bpf_attachd()
322 d->bd_mcip = mcip; in bpf_attachd()
323 d->bd_bif = mh; in bpf_attachd()
324 d->bd_dlt = nicdlt; in bpf_attachd()
326 d->bd_hdrlen = BPF_WORDALIGN(hdrlen + SIZEOF_BPF_HDR) - hdrlen; in bpf_attachd()
328 (void) strlcpy(d->bd_ifname, MBPF_CLIENT_NAME(&d->bd_mac, mcip), in bpf_attachd()
329 sizeof (d->bd_ifname)); in bpf_attachd()
331 (void) MBPF_GET_LINKID(&d->bd_mac, d->bd_ifname, &d->bd_linkid, in bpf_attachd()
333 (void) MBPF_PROMISC_ADD(&d->bd_mac, d->bd_mcip, 0, d, in bpf_attachd()
334 &d->bd_promisc_handle, d->bd_promisc_flags); in bpf_attachd()
342 bpf_detachd(struct bpf_d *d) in bpf_detachd() argument
348 ASSERT(d->bd_inuse == -1); in bpf_detachd()
349 mch = d->bd_mcip; in bpf_detachd()
350 d->bd_mcip = 0; in bpf_detachd()
351 mh = d->bd_bif; in bpf_detachd()
352 d->bd_bif = 0; in bpf_detachd()
361 if (d->bd_promisc) in bpf_detachd()
362 d->bd_promisc = 0; in bpf_detachd()
370 mph = d->bd_promisc_handle; in bpf_detachd()
371 d->bd_promisc_handle = 0; in bpf_detachd()
380 mutex_exit(&d->bd_lock); in bpf_detachd()
382 MBPF_PROMISC_REMOVE(&d->bd_mac, mph); in bpf_detachd()
385 MBPF_CLIENT_CLOSE(&d->bd_mac, mch); in bpf_detachd()
388 MBPF_CLOSE(&d->bd_mac, mh); in bpf_detachd()
394 mutex_enter(&d->bd_lock); in bpf_detachd()
395 *d->bd_ifname = '\0'; in bpf_detachd()
396 (void) memset(&d->bd_mac, 0, sizeof (d->bd_mac)); in bpf_detachd()
463 struct bpf_d *d; in bpfopen() local
488 d = (struct bpf_d *)kmem_zalloc(sizeof (*d), KM_SLEEP); in bpfopen()
489 d->bd_bufsize = bpf_bufsize; in bpfopen()
490 d->bd_fmode = flag; in bpfopen()
491 d->bd_zone = crgetzoneid(cred); in bpfopen()
492 d->bd_seesent = 1; in bpfopen()
493 d->bd_promisc_flags = MAC_PROMISC_FLAGS_NO_PHYS| in bpfopen()
495 mutex_init(&d->bd_lock, NULL, MUTEX_DRIVER, NULL); in bpfopen()
496 cv_init(&d->bd_wait, NULL, CV_DRIVER, NULL); in bpfopen()
510 kmem_free(d, sizeof (*d)); in bpfopen()
513 d->bd_dev = dmin; in bpfopen()
514 LIST_INSERT_HEAD(&bpf_list, d, bd_list); in bpfopen()
515 bpf_dev_add(d); in bpfopen()
534 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfclose() local
536 mutex_enter(&d->bd_lock); in bpfclose()
538 while (d->bd_inuse != 0) { in bpfclose()
539 d->bd_waiting++; in bpfclose()
540 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpfclose()
541 d->bd_waiting--; in bpfclose()
542 mutex_exit(&d->bd_lock); in bpfclose()
545 d->bd_waiting--; in bpfclose()
548 d->bd_inuse = -1; in bpfclose()
549 if (d->bd_state == BPF_WAITING) in bpfclose()
550 bpf_clear_timeout(d); in bpfclose()
551 d->bd_state = BPF_IDLE; in bpfclose()
552 if (d->bd_bif) in bpfclose()
553 bpf_detachd(d); in bpfclose()
554 mutex_exit(&d->bd_lock); in bpfclose()
557 LIST_REMOVE(d, bd_list); in bpfclose()
558 bpf_dev_remove(d); in bpfclose()
561 mutex_enter(&d->bd_lock); in bpfclose()
562 mutex_destroy(&d->bd_lock); in bpfclose()
563 cv_destroy(&d->bd_wait); in bpfclose()
565 bpf_freed(d); in bpfclose()
566 kmem_free(d, sizeof (*d)); in bpfclose()
576 #define ROTATE_BUFFERS(d) \ argument
577 (d)->bd_hbuf = (d)->bd_sbuf; \
578 (d)->bd_hlen = (d)->bd_slen; \
579 (d)->bd_sbuf = (d)->bd_fbuf; \
580 (d)->bd_slen = 0; \
581 (d)->bd_fbuf = 0;
589 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfread() local
594 if ((d->bd_fmode & FREAD) == 0) in bpfread()
601 if (uio->uio_resid != d->bd_bufsize) in bpfread()
604 mutex_enter(&d->bd_lock); in bpfread()
605 if (d->bd_state == BPF_WAITING) in bpfread()
606 bpf_clear_timeout(d); in bpfread()
607 timed_out = (d->bd_state == BPF_TIMED_OUT); in bpfread()
608 d->bd_state = BPF_IDLE; in bpfread()
614 while (d->bd_hbuf == 0) { in bpfread()
615 if (d->bd_nonblock) { in bpfread()
616 if (d->bd_slen == 0) { in bpfread()
617 mutex_exit(&d->bd_lock); in bpfread()
620 ROTATE_BUFFERS(d); in bpfread()
624 if ((d->bd_immediate || timed_out) && d->bd_slen != 0) { in bpfread()
630 ROTATE_BUFFERS(d); in bpfread()
634 delay = ddi_get_lbolt() + d->bd_rtout; in bpfread()
635 error = cv_timedwait_sig(&d->bd_wait, &d->bd_lock, delay); in bpfread()
637 mutex_exit(&d->bd_lock); in bpfread()
646 if (d->bd_hbuf) in bpfread()
654 if (d->bd_slen == 0) { in bpfread()
655 mutex_exit(&d->bd_lock); in bpfread()
658 ROTATE_BUFFERS(d); in bpfread()
664 mutex_exit(&d->bd_lock); in bpfread()
671 error = uiomove(d->bd_hbuf, d->bd_hlen, UIO_READ, uio); in bpfread()
673 mutex_enter(&d->bd_lock); in bpfread()
674 d->bd_fbuf = d->bd_hbuf; in bpfread()
675 d->bd_hbuf = 0; in bpfread()
676 d->bd_hlen = 0; in bpfread()
678 mutex_exit(&d->bd_lock); in bpfread()
689 bpf_wakeup(struct bpf_d *d) in bpf_wakeup() argument
691 cv_signal(&d->bd_wait); in bpf_wakeup()
697 struct bpf_d *d = arg; in bpf_timed_out() local
699 mutex_enter(&d->bd_lock); in bpf_timed_out()
700 if (d->bd_state == BPF_WAITING) { in bpf_timed_out()
701 d->bd_state = BPF_TIMED_OUT; in bpf_timed_out()
702 if (d->bd_slen != 0) in bpf_timed_out()
703 cv_signal(&d->bd_wait); in bpf_timed_out()
705 mutex_exit(&d->bd_lock); in bpf_timed_out()
713 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfwrite() local
720 if ((d->bd_fmode & FWRITE) == 0) in bpfwrite()
723 mutex_enter(&d->bd_lock); in bpfwrite()
724 if (d->bd_bif == 0 || d->bd_mcip == 0 || d->bd_bif == 0) { in bpfwrite()
725 mutex_exit(&d->bd_lock); in bpfwrite()
730 mutex_exit(&d->bd_lock); in bpfwrite()
734 while (d->bd_inuse < 0) { in bpfwrite()
735 d->bd_waiting++; in bpfwrite()
736 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpfwrite()
737 d->bd_waiting--; in bpfwrite()
738 mutex_exit(&d->bd_lock); in bpfwrite()
741 d->bd_waiting--; in bpfwrite()
744 mutex_exit(&d->bd_lock); in bpfwrite()
746 dlt = d->bd_dlt; in bpfwrite()
747 mch = d->bd_mcip; in bpfwrite()
748 MBPF_SDU_GET(&d->bd_mac, d->bd_bif, &mtu); in bpfwrite()
749 d->bd_inuse++; in bpfwrite()
761 DTRACE_PROBE4(bpf__tx, struct bpf_d *, d, int, dlt, in bpfwrite()
769 error = MBPF_TX(&d->bd_mac, mch, m); in bpfwrite()
783 mutex_enter(&d->bd_lock); in bpfwrite()
784 d->bd_inuse--; in bpfwrite()
785 if ((d->bd_inuse == 0) && (d->bd_waiting != 0)) in bpfwrite()
786 cv_signal(&d->bd_wait); in bpfwrite()
787 mutex_exit(&d->bd_lock); in bpfwrite()
801 reset_d(struct bpf_d *d) in reset_d() argument
803 if (d->bd_hbuf) { in reset_d()
805 d->bd_fbuf = d->bd_hbuf; in reset_d()
806 d->bd_hbuf = 0; in reset_d()
808 d->bd_slen = 0; in reset_d()
809 d->bd_hlen = 0; in reset_d()
810 d->bd_rcount = 0; in reset_d()
811 d->bd_dcount = 0; in reset_d()
812 d->bd_ccount = 0; in reset_d()
836 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfioctl() local
846 mutex_enter(&d->bd_lock); in bpfioctl()
847 if (d->bd_state == BPF_WAITING) in bpfioctl()
848 bpf_clear_timeout(d); in bpfioctl()
849 d->bd_state = BPF_IDLE; in bpfioctl()
850 mutex_exit(&d->bd_lock); in bpfioctl()
865 mutex_enter(&d->bd_lock); in bpfioctl()
866 n = d->bd_slen; in bpfioctl()
867 if (d->bd_hbuf) in bpfioctl()
868 n += d->bd_hlen; in bpfioctl()
869 mutex_exit(&d->bd_lock); in bpfioctl()
879 error = copyout(&d->bd_bufsize, (void *)addr, in bpfioctl()
880 sizeof (d->bd_bufsize)); in bpfioctl()
892 mutex_enter(&d->bd_lock); in bpfioctl()
893 if (d->bd_bif != 0) { in bpfioctl()
901 d->bd_bufsize = size; in bpfioctl()
903 mutex_exit(&d->bd_lock); in bpfioctl()
917 error = bpf_setf(d, &prog); in bpfioctl()
924 mutex_enter(&d->bd_lock); in bpfioctl()
925 reset_d(d); in bpfioctl()
926 mutex_exit(&d->bd_lock); in bpfioctl()
935 if (d->bd_bif == 0) { in bpfioctl()
942 mutex_enter(&d->bd_lock); in bpfioctl()
943 if (d->bd_promisc == 0) { in bpfioctl()
945 if (d->bd_promisc_handle) { in bpfioctl()
948 mph = d->bd_promisc_handle; in bpfioctl()
949 d->bd_promisc_handle = 0; in bpfioctl()
951 mutex_exit(&d->bd_lock); in bpfioctl()
952 MBPF_PROMISC_REMOVE(&d->bd_mac, mph); in bpfioctl()
953 mutex_enter(&d->bd_lock); in bpfioctl()
956 d->bd_promisc_flags = MAC_PROMISC_FLAGS_NO_COPY; in bpfioctl()
957 error = MBPF_PROMISC_ADD(&d->bd_mac, in bpfioctl()
958 d->bd_mcip, MAC_CLIENT_PROMISC_ALL, d, in bpfioctl()
959 &d->bd_promisc_handle, d->bd_promisc_flags); in bpfioctl()
961 d->bd_promisc = 1; in bpfioctl()
963 mutex_exit(&d->bd_lock); in bpfioctl()
970 if (d->bd_bif == 0) in bpfioctl()
973 error = copyout(&d->bd_dlt, (void *)addr, in bpfioctl()
974 sizeof (d->bd_dlt)); in bpfioctl()
981 if (d->bd_bif == 0) { in bpfioctl()
990 error = bpf_getdltlist(d, &list); in bpfioctl()
1001 error = bpf_setdlt(d, (void *)addr); in bpfioctl()
1012 error = bpf_ifname(d, ifreq.ifr_name, sizeof (ifreq.ifr_name)); in bpfioctl()
1028 error = bpf_setif(d, ifreq.ifr_name, sizeof (ifreq.ifr_name)); in bpfioctl()
1039 error = bpf_ifname(d, lifreq.lifr_name, in bpfioctl()
1056 error = bpf_setif(d, lifreq.lifr_name, in bpfioctl()
1074 d->bd_rtout = drv_usectohz(tv.tv_sec * 1000000 + in bpfioctl()
1076 if ((d->bd_rtout == 0) && (tv.tv_usec != 0)) in bpfioctl()
1077 d->bd_rtout = 1; in bpfioctl()
1089 ticks = drv_hztousec(d->bd_rtout); in bpfioctl()
1100 if (d->bd_bif == 0) { in bpfioctl()
1113 error = bpf_getdltlist(d, &list); in bpfioctl()
1136 error = bpf_setf(d, &prog); in bpfioctl()
1154 d->bd_rtout = drv_usectohz(tv.tv_sec * 1000000 + in bpfioctl()
1156 if ((d->bd_rtout == 0) && (tv.tv_usec != 0)) in bpfioctl()
1157 d->bd_rtout = 1; in bpfioctl()
1169 ticks = drv_hztousec(d->bd_rtout); in bpfioctl()
1184 bs.bs_recv = d->bd_rcount; in bpfioctl()
1185 bs.bs_drop = d->bd_dcount; in bpfioctl()
1186 bs.bs_capt = d->bd_ccount; in bpfioctl()
1196 if (copyin((void *)addr, &d->bd_immediate, in bpfioctl()
1197 sizeof (d->bd_immediate)) != 0) in bpfioctl()
1213 if (copyout(&d->bd_hdrcmplt, (void *)addr, in bpfioctl()
1214 sizeof (d->bd_hdrcmplt)) != 0) in bpfioctl()
1219 if (copyin((void *)addr, &d->bd_hdrcmplt, in bpfioctl()
1220 sizeof (d->bd_hdrcmplt)) != 0) in bpfioctl()
1228 if (copyout(&d->bd_seesent, (void *)addr, in bpfioctl()
1229 sizeof (d->bd_seesent)) != 0) in bpfioctl()
1237 if (copyin((void *)addr, &d->bd_seesent, in bpfioctl()
1238 sizeof (d->bd_seesent)) != 0) in bpfioctl()
1243 if (copyin((void *)addr, &d->bd_nonblock, in bpfioctl()
1244 sizeof (d->bd_nonblock)) != 0) in bpfioctl()
1258 bpf_setf(struct bpf_d *d, struct bpf_program *fp) in bpf_setf() argument
1267 mutex_enter(&d->bd_lock); in bpf_setf()
1268 old = d->bd_filter; in bpf_setf()
1269 oldsize = d->bd_filter_size; in bpf_setf()
1270 d->bd_filter = 0; in bpf_setf()
1271 d->bd_filter_size = 0; in bpf_setf()
1272 reset_d(d); in bpf_setf()
1273 mutex_exit(&d->bd_lock); in bpf_setf()
1288 mutex_enter(&d->bd_lock); in bpf_setf()
1289 old = d->bd_filter; in bpf_setf()
1290 oldsize = d->bd_filter_size; in bpf_setf()
1291 d->bd_filter = fcode; in bpf_setf()
1292 d->bd_filter_size = size; in bpf_setf()
1293 reset_d(d); in bpf_setf()
1294 mutex_exit(&d->bd_lock); in bpf_setf()
1310 bpf_setif(struct bpf_d *d, char *ifname, int namesize) in bpf_setif() argument
1342 mutex_enter(&d->bd_lock); in bpf_setif()
1343 while (d->bd_inuse != 0) { in bpf_setif()
1344 d->bd_waiting++; in bpf_setif()
1345 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpf_setif()
1346 d->bd_waiting--; in bpf_setif()
1347 mutex_exit(&d->bd_lock); in bpf_setif()
1350 d->bd_waiting--; in bpf_setif()
1352 d->bd_inuse = -1; in bpf_setif()
1353 mutex_exit(&d->bd_lock); in bpf_setif()
1355 if (d->bd_sbuf == 0) in bpf_setif()
1356 error = bpf_allocbufs(d); in bpf_setif()
1359 mutex_enter(&d->bd_lock); in bpf_setif()
1360 if (d->bd_bif) in bpf_setif()
1364 bpf_detachd(d); in bpf_setif()
1366 error = bpf_attachd(d, ifname, -1); in bpf_setif()
1367 reset_d(d); in bpf_setif()
1368 d->bd_inuse = 0; in bpf_setif()
1369 if (d->bd_waiting != 0) in bpf_setif()
1370 cv_signal(&d->bd_wait); in bpf_setif()
1371 mutex_exit(&d->bd_lock); in bpf_setif()
1375 mutex_enter(&d->bd_lock); in bpf_setif()
1376 d->bd_inuse = 0; in bpf_setif()
1377 if (d->bd_waiting != 0) in bpf_setif()
1378 cv_signal(&d->bd_wait); in bpf_setif()
1379 mutex_exit(&d->bd_lock); in bpf_setif()
1384 return (bpf_provider_tickle(ifname, d->bd_zone)); in bpf_setif()
1391 bpf_ifname(struct bpf_d *d, char *buffer, int bufsize) in bpf_ifname() argument
1394 mutex_enter(&d->bd_lock); in bpf_ifname()
1395 if (d->bd_bif == 0) { in bpf_ifname()
1396 mutex_exit(&d->bd_lock); in bpf_ifname()
1400 (void) strlcpy(buffer, d->bd_ifname, bufsize); in bpf_ifname()
1401 mutex_exit(&d->bd_lock); in bpf_ifname()
1411 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfchpoll() local
1425 mutex_enter(&d->bd_lock); in bpfchpoll()
1426 if (d->bd_hlen != 0 || in bpfchpoll()
1427 ((d->bd_immediate || d->bd_state == BPF_TIMED_OUT) && in bpfchpoll()
1428 d->bd_slen != 0)) { in bpfchpoll()
1439 if (d->bd_rtout > 0 && d->bd_state == BPF_IDLE) { in bpfchpoll()
1440 bpf_clear_timeout(d); in bpfchpoll()
1444 if (d->bd_callout == 0) in bpfchpoll()
1445 d->bd_callout = timeout(bpf_timed_out, in bpfchpoll()
1446 d, d->bd_rtout); in bpfchpoll()
1447 d->bd_state = BPF_WAITING; in bpfchpoll()
1450 mutex_exit(&d->bd_lock); in bpfchpoll()
1492 bpf_deliver(struct bpf_d *d, cp_fn_t cpfn, void *marg, uint_t pktlen, in bpf_deliver() argument
1498 if (!d->bd_seesent && issent) in bpf_deliver()
1505 mutex_enter(&d->bd_lock); in bpf_deliver()
1506 slen = bpf_filter(d->bd_filter, marg, pktlen, buflen); in bpf_deliver()
1507 DTRACE_PROBE5(bpf__packet, struct bpf_if *, d->bd_bif, in bpf_deliver()
1508 struct bpf_d *, d, void *, marg, uint_t, pktlen, uint_t, slen); in bpf_deliver()
1509 d->bd_rcount++; in bpf_deliver()
1513 catchpacket(d, marg, pktlen, slen, cpfn, &tv); in bpf_deliver()
1515 mutex_exit(&d->bd_lock); in bpf_deliver()
1526 struct bpf_d *d = arg; in bpf_mtap() local
1542 bpf_deliver(d, cpfn, marg, pktlen, buflen, issent); in bpf_mtap()
1557 struct bpf_d *d = arg; in bpf_itap() local
1560 if (ntohl(hdr->hpo_ifindex) != d->bd_linkid) in bpf_itap()
1562 bpf_deliver(d, bpf_mcpy, m, length, 0, issent); in bpf_itap()
1575 catchpacket(struct bpf_d *d, uchar_t *pkt, uint_t pktlen, uint_t snaplen, in catchpacket() argument
1580 int hdrlen = d->bd_hdrlen; in catchpacket()
1583 ++d->bd_ccount; in catchpacket()
1592 if (totlen > d->bd_bufsize) in catchpacket()
1593 totlen = d->bd_bufsize; in catchpacket()
1598 curlen = BPF_WORDALIGN(d->bd_slen); in catchpacket()
1599 if (curlen + totlen > d->bd_bufsize) { in catchpacket()
1605 if (d->bd_fbuf == 0) { in catchpacket()
1610 ++d->bd_dcount; in catchpacket()
1614 ROTATE_BUFFERS(d); in catchpacket()
1617 } else if (d->bd_immediate || d->bd_state == BPF_TIMED_OUT) { in catchpacket()
1630 hp = (struct bpf_hdr *)((char *)d->bd_sbuf + curlen); in catchpacket()
1640 d->bd_slen = curlen + totlen; in catchpacket()
1646 bpf_wakeup(d); in catchpacket()
1653 bpf_allocbufs(struct bpf_d *d) in bpf_allocbufs() argument
1656 d->bd_fbuf = kmem_zalloc(d->bd_bufsize, KM_NOSLEEP); in bpf_allocbufs()
1657 if (!d->bd_fbuf) in bpf_allocbufs()
1659 d->bd_sbuf = kmem_zalloc(d->bd_bufsize, KM_NOSLEEP); in bpf_allocbufs()
1660 if (!d->bd_sbuf) { in bpf_allocbufs()
1661 kmem_free(d->bd_fbuf, d->bd_bufsize); in bpf_allocbufs()
1664 d->bd_slen = 0; in bpf_allocbufs()
1665 d->bd_hlen = 0; in bpf_allocbufs()
1674 bpf_freed(struct bpf_d *d) in bpf_freed() argument
1680 if (d->bd_sbuf != 0) { in bpf_freed()
1681 kmem_free(d->bd_sbuf, d->bd_bufsize); in bpf_freed()
1682 if (d->bd_hbuf != 0) in bpf_freed()
1683 kmem_free(d->bd_hbuf, d->bd_bufsize); in bpf_freed()
1684 if (d->bd_fbuf != 0) in bpf_freed()
1685 kmem_free(d->bd_fbuf, d->bd_bufsize); in bpf_freed()
1687 if (d->bd_filter) in bpf_freed()
1688 kmem_free(d->bd_filter, d->bd_filter_size); in bpf_freed()
1695 bpf_getdltlist(struct bpf_d *d, struct bpf_dltlist *listp) in bpf_getdltlist() argument
1710 mutex_enter(&d->bd_lock); in bpf_getdltlist()
1713 error = MBPF_OPEN(bpr, d->bd_ifname, &mh, d->bd_zone); in bpf_getdltlist()
1722 if (d->bd_zone != GLOBAL_ZONEID && in bpf_getdltlist()
1723 d->bd_zone != zoneid) in bpf_getdltlist()
1740 d->bd_inuse++; in bpf_getdltlist()
1741 mutex_exit(&d->bd_lock); in bpf_getdltlist()
1745 mutex_enter(&d->bd_lock); in bpf_getdltlist()
1748 d->bd_inuse--; in bpf_getdltlist()
1761 mutex_exit(&d->bd_lock); in bpf_getdltlist()
1780 bpf_setdlt(struct bpf_d *d, void *addr) in bpf_setdlt() argument
1790 mutex_enter(&d->bd_lock); in bpf_setdlt()
1792 if (d->bd_bif == 0) { /* Interface not set */ in bpf_setdlt()
1793 mutex_exit(&d->bd_lock); in bpf_setdlt()
1796 if (d->bd_dlt == dlt) { /* NULL-op */ in bpf_setdlt()
1797 mutex_exit(&d->bd_lock); in bpf_setdlt()
1801 error = MBPF_GET_ZONE(&d->bd_mac, d->bd_bif, &niczone); in bpf_setdlt()
1803 mutex_exit(&d->bd_lock); in bpf_setdlt()
1811 if ((d->bd_zone != GLOBAL_ZONEID) && (dlt != DLT_IPNET) && in bpf_setdlt()
1812 (niczone != d->bd_zone)) { in bpf_setdlt()
1813 mutex_exit(&d->bd_lock); in bpf_setdlt()
1817 (void) strlcpy(ifname, d->bd_ifname, sizeof (ifname)); in bpf_setdlt()
1818 d->bd_inuse = -1; in bpf_setdlt()
1819 bpf_detachd(d); in bpf_setdlt()
1820 error = bpf_attachd(d, ifname, dlt); in bpf_setdlt()
1821 reset_d(d); in bpf_setdlt()
1822 d->bd_inuse = 0; in bpf_setdlt()
1824 mutex_exit(&d->bd_lock); in bpf_setdlt()
1834 bpf_clear_timeout(struct bpf_d *d) in bpf_clear_timeout() argument
1836 timeout_id_t tid = d->bd_callout; in bpf_clear_timeout()
1837 d->bd_callout = 0; in bpf_clear_timeout()
1838 d->bd_inuse++; in bpf_clear_timeout()
1846 mutex_exit(&d->bd_lock); in bpf_clear_timeout()
1848 mutex_enter(&d->bd_lock); in bpf_clear_timeout()
1851 d->bd_inuse--; in bpf_clear_timeout()
1865 struct bpf_d *d = NULL; in bpf_dev_find() local
1868 (mod_hash_val_t *)&d); in bpf_dev_find()
1870 return (d); in bpf_dev_find()
1874 bpf_dev_add(struct bpf_d *d) in bpf_dev_add() argument
1876 (void) mod_hash_insert(bpf_hash, (mod_hash_key_t)(uintptr_t)d->bd_dev, in bpf_dev_add()
1877 (mod_hash_val_t)d); in bpf_dev_add()
1881 bpf_dev_remove(struct bpf_d *d) in bpf_dev_remove() argument
1885 (void) mod_hash_remove(bpf_hash, (mod_hash_key_t)(uintptr_t)d->bd_dev, in bpf_dev_remove()
1887 ASSERT(stor == d); in bpf_dev_remove()
1898 struct bpf_d *d = NULL; in bpf_dev_get() local
1901 (mod_hash_val_t *)&d); in bpf_dev_get()
1902 ASSERT(d != NULL); in bpf_dev_get()
1904 return (d); in bpf_dev_get()