Lines Matching refs:d

145 static int	bpf_ifname(struct bpf_d *d, char *, int);
241 bpf_attachd(struct bpf_d *d, const char *ifname, int dlt) in bpf_attachd() argument
254 ASSERT(d->bd_bif == NULL); in bpf_attachd()
255 ASSERT(d->bd_mcip == NULL); in bpf_attachd()
256 zone = d->bd_zone; in bpf_attachd()
314 d->bd_mac = *bpr; in bpf_attachd()
315 d->bd_mcip = mcip; in bpf_attachd()
316 d->bd_bif = mh; in bpf_attachd()
317 d->bd_dlt = nicdlt; in bpf_attachd()
319 d->bd_hdrlen = BPF_WORDALIGN(hdrlen + SIZEOF_BPF_HDR) - hdrlen; in bpf_attachd()
321 (void) strlcpy(d->bd_ifname, MBPF_CLIENT_NAME(&d->bd_mac, mcip), in bpf_attachd()
322 sizeof (d->bd_ifname)); in bpf_attachd()
324 (void) MBPF_GET_LINKID(&d->bd_mac, d->bd_ifname, &d->bd_linkid, in bpf_attachd()
326 (void) MBPF_PROMISC_ADD(&d->bd_mac, d->bd_mcip, 0, d, in bpf_attachd()
327 &d->bd_promisc_handle, d->bd_promisc_flags); in bpf_attachd()
335 bpf_detachd(struct bpf_d *d) in bpf_detachd() argument
341 ASSERT(d->bd_inuse == -1); in bpf_detachd()
342 mch = d->bd_mcip; in bpf_detachd()
343 d->bd_mcip = 0; in bpf_detachd()
344 mh = d->bd_bif; in bpf_detachd()
345 d->bd_bif = 0; in bpf_detachd()
354 if (d->bd_promisc) in bpf_detachd()
355 d->bd_promisc = 0; in bpf_detachd()
363 mph = d->bd_promisc_handle; in bpf_detachd()
364 d->bd_promisc_handle = 0; in bpf_detachd()
373 mutex_exit(&d->bd_lock); in bpf_detachd()
375 MBPF_PROMISC_REMOVE(&d->bd_mac, mph); in bpf_detachd()
378 MBPF_CLIENT_CLOSE(&d->bd_mac, mch); in bpf_detachd()
381 MBPF_CLOSE(&d->bd_mac, mh); in bpf_detachd()
387 mutex_enter(&d->bd_lock); in bpf_detachd()
388 *d->bd_ifname = '\0'; in bpf_detachd()
389 (void) memset(&d->bd_mac, 0, sizeof (d->bd_mac)); in bpf_detachd()
456 struct bpf_d *d; in bpfopen() local
481 d = (struct bpf_d *)kmem_zalloc(sizeof (*d), KM_SLEEP); in bpfopen()
482 d->bd_bufsize = bpf_bufsize; in bpfopen()
483 d->bd_fmode = flag; in bpfopen()
484 d->bd_zone = crgetzoneid(cred); in bpfopen()
485 d->bd_seesent = 1; in bpfopen()
486 d->bd_promisc_flags = MAC_PROMISC_FLAGS_NO_PHYS| in bpfopen()
488 mutex_init(&d->bd_lock, NULL, MUTEX_DRIVER, NULL); in bpfopen()
489 cv_init(&d->bd_wait, NULL, CV_DRIVER, NULL); in bpfopen()
503 kmem_free(d, sizeof (*d)); in bpfopen()
506 d->bd_dev = dmin; in bpfopen()
507 LIST_INSERT_HEAD(&bpf_list, d, bd_list); in bpfopen()
508 bpf_dev_add(d); in bpfopen()
527 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfclose() local
529 mutex_enter(&d->bd_lock); in bpfclose()
531 while (d->bd_inuse != 0) { in bpfclose()
532 d->bd_waiting++; in bpfclose()
533 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpfclose()
534 d->bd_waiting--; in bpfclose()
535 mutex_exit(&d->bd_lock); in bpfclose()
538 d->bd_waiting--; in bpfclose()
541 d->bd_inuse = -1; in bpfclose()
542 if (d->bd_state == BPF_WAITING) in bpfclose()
543 bpf_clear_timeout(d); in bpfclose()
544 d->bd_state = BPF_IDLE; in bpfclose()
545 if (d->bd_bif) in bpfclose()
546 bpf_detachd(d); in bpfclose()
547 mutex_exit(&d->bd_lock); in bpfclose()
550 LIST_REMOVE(d, bd_list); in bpfclose()
551 bpf_dev_remove(d); in bpfclose()
554 mutex_enter(&d->bd_lock); in bpfclose()
555 mutex_destroy(&d->bd_lock); in bpfclose()
556 cv_destroy(&d->bd_wait); in bpfclose()
558 bpf_freed(d); in bpfclose()
559 kmem_free(d, sizeof (*d)); in bpfclose()
569 #define ROTATE_BUFFERS(d) \ argument
570 (d)->bd_hbuf = (d)->bd_sbuf; \
571 (d)->bd_hlen = (d)->bd_slen; \
572 (d)->bd_sbuf = (d)->bd_fbuf; \
573 (d)->bd_slen = 0; \
574 (d)->bd_fbuf = 0;
582 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfread() local
587 if ((d->bd_fmode & FREAD) == 0) in bpfread()
594 if (uio->uio_resid != d->bd_bufsize) in bpfread()
597 mutex_enter(&d->bd_lock); in bpfread()
598 if (d->bd_state == BPF_WAITING) in bpfread()
599 bpf_clear_timeout(d); in bpfread()
600 timed_out = (d->bd_state == BPF_TIMED_OUT); in bpfread()
601 d->bd_state = BPF_IDLE; in bpfread()
607 while (d->bd_hbuf == 0) { in bpfread()
608 if (d->bd_nonblock) { in bpfread()
609 if (d->bd_slen == 0) { in bpfread()
610 mutex_exit(&d->bd_lock); in bpfread()
613 ROTATE_BUFFERS(d); in bpfread()
617 if ((d->bd_immediate || timed_out) && d->bd_slen != 0) { in bpfread()
623 ROTATE_BUFFERS(d); in bpfread()
627 delay = ddi_get_lbolt() + d->bd_rtout; in bpfread()
628 error = cv_timedwait_sig(&d->bd_wait, &d->bd_lock, delay); in bpfread()
630 mutex_exit(&d->bd_lock); in bpfread()
639 if (d->bd_hbuf) in bpfread()
647 if (d->bd_slen == 0) { in bpfread()
648 mutex_exit(&d->bd_lock); in bpfread()
651 ROTATE_BUFFERS(d); in bpfread()
657 mutex_exit(&d->bd_lock); in bpfread()
664 error = uiomove(d->bd_hbuf, d->bd_hlen, UIO_READ, uio); in bpfread()
666 mutex_enter(&d->bd_lock); in bpfread()
667 d->bd_fbuf = d->bd_hbuf; in bpfread()
668 d->bd_hbuf = 0; in bpfread()
669 d->bd_hlen = 0; in bpfread()
671 mutex_exit(&d->bd_lock); in bpfread()
682 bpf_wakeup(struct bpf_d *d) in bpf_wakeup() argument
684 cv_signal(&d->bd_wait); in bpf_wakeup()
690 struct bpf_d *d = arg; in bpf_timed_out() local
692 mutex_enter(&d->bd_lock); in bpf_timed_out()
693 if (d->bd_state == BPF_WAITING) { in bpf_timed_out()
694 d->bd_state = BPF_TIMED_OUT; in bpf_timed_out()
695 if (d->bd_slen != 0) in bpf_timed_out()
696 cv_signal(&d->bd_wait); in bpf_timed_out()
698 mutex_exit(&d->bd_lock); in bpf_timed_out()
706 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfwrite() local
713 if ((d->bd_fmode & FWRITE) == 0) in bpfwrite()
716 mutex_enter(&d->bd_lock); in bpfwrite()
717 if (d->bd_bif == 0 || d->bd_mcip == 0 || d->bd_bif == 0) { in bpfwrite()
718 mutex_exit(&d->bd_lock); in bpfwrite()
723 mutex_exit(&d->bd_lock); in bpfwrite()
727 while (d->bd_inuse < 0) { in bpfwrite()
728 d->bd_waiting++; in bpfwrite()
729 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpfwrite()
730 d->bd_waiting--; in bpfwrite()
731 mutex_exit(&d->bd_lock); in bpfwrite()
734 d->bd_waiting--; in bpfwrite()
737 mutex_exit(&d->bd_lock); in bpfwrite()
739 dlt = d->bd_dlt; in bpfwrite()
740 mch = d->bd_mcip; in bpfwrite()
741 MBPF_SDU_GET(&d->bd_mac, d->bd_bif, &mtu); in bpfwrite()
742 d->bd_inuse++; in bpfwrite()
754 DTRACE_PROBE4(bpf__tx, struct bpf_d *, d, int, dlt, in bpfwrite()
762 error = MBPF_TX(&d->bd_mac, mch, m); in bpfwrite()
776 mutex_enter(&d->bd_lock); in bpfwrite()
777 d->bd_inuse--; in bpfwrite()
778 if ((d->bd_inuse == 0) && (d->bd_waiting != 0)) in bpfwrite()
779 cv_signal(&d->bd_wait); in bpfwrite()
780 mutex_exit(&d->bd_lock); in bpfwrite()
794 reset_d(struct bpf_d *d) in reset_d() argument
796 if (d->bd_hbuf) { in reset_d()
798 d->bd_fbuf = d->bd_hbuf; in reset_d()
799 d->bd_hbuf = 0; in reset_d()
801 d->bd_slen = 0; in reset_d()
802 d->bd_hlen = 0; in reset_d()
803 d->bd_rcount = 0; in reset_d()
804 d->bd_dcount = 0; in reset_d()
805 d->bd_ccount = 0; in reset_d()
829 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfioctl() local
839 mutex_enter(&d->bd_lock); in bpfioctl()
840 if (d->bd_state == BPF_WAITING) in bpfioctl()
841 bpf_clear_timeout(d); in bpfioctl()
842 d->bd_state = BPF_IDLE; in bpfioctl()
843 mutex_exit(&d->bd_lock); in bpfioctl()
858 mutex_enter(&d->bd_lock); in bpfioctl()
859 n = d->bd_slen; in bpfioctl()
860 if (d->bd_hbuf) in bpfioctl()
861 n += d->bd_hlen; in bpfioctl()
862 mutex_exit(&d->bd_lock); in bpfioctl()
872 error = copyout(&d->bd_bufsize, (void *)addr, in bpfioctl()
873 sizeof (d->bd_bufsize)); in bpfioctl()
885 mutex_enter(&d->bd_lock); in bpfioctl()
886 if (d->bd_bif != 0) { in bpfioctl()
894 d->bd_bufsize = size; in bpfioctl()
896 mutex_exit(&d->bd_lock); in bpfioctl()
910 error = bpf_setf(d, &prog); in bpfioctl()
917 mutex_enter(&d->bd_lock); in bpfioctl()
918 reset_d(d); in bpfioctl()
919 mutex_exit(&d->bd_lock); in bpfioctl()
928 if (d->bd_bif == 0) { in bpfioctl()
935 mutex_enter(&d->bd_lock); in bpfioctl()
936 if (d->bd_promisc == 0) { in bpfioctl()
938 if (d->bd_promisc_handle) { in bpfioctl()
941 mph = d->bd_promisc_handle; in bpfioctl()
942 d->bd_promisc_handle = 0; in bpfioctl()
944 mutex_exit(&d->bd_lock); in bpfioctl()
945 MBPF_PROMISC_REMOVE(&d->bd_mac, mph); in bpfioctl()
946 mutex_enter(&d->bd_lock); in bpfioctl()
949 d->bd_promisc_flags = MAC_PROMISC_FLAGS_NO_COPY; in bpfioctl()
950 error = MBPF_PROMISC_ADD(&d->bd_mac, in bpfioctl()
951 d->bd_mcip, MAC_CLIENT_PROMISC_ALL, d, in bpfioctl()
952 &d->bd_promisc_handle, d->bd_promisc_flags); in bpfioctl()
954 d->bd_promisc = 1; in bpfioctl()
956 mutex_exit(&d->bd_lock); in bpfioctl()
963 if (d->bd_bif == 0) in bpfioctl()
966 error = copyout(&d->bd_dlt, (void *)addr, in bpfioctl()
967 sizeof (d->bd_dlt)); in bpfioctl()
974 if (d->bd_bif == 0) { in bpfioctl()
983 error = bpf_getdltlist(d, &list); in bpfioctl()
994 error = bpf_setdlt(d, (void *)addr); in bpfioctl()
1005 error = bpf_ifname(d, ifreq.ifr_name, sizeof (ifreq.ifr_name)); in bpfioctl()
1021 error = bpf_setif(d, ifreq.ifr_name, sizeof (ifreq.ifr_name)); in bpfioctl()
1032 error = bpf_ifname(d, lifreq.lifr_name, in bpfioctl()
1049 error = bpf_setif(d, lifreq.lifr_name, in bpfioctl()
1067 d->bd_rtout = drv_usectohz(tv.tv_sec * 1000000 + in bpfioctl()
1069 if ((d->bd_rtout == 0) && (tv.tv_usec != 0)) in bpfioctl()
1070 d->bd_rtout = 1; in bpfioctl()
1082 ticks = drv_hztousec(d->bd_rtout); in bpfioctl()
1093 if (d->bd_bif == 0) { in bpfioctl()
1106 error = bpf_getdltlist(d, &list); in bpfioctl()
1129 error = bpf_setf(d, &prog); in bpfioctl()
1147 d->bd_rtout = drv_usectohz(tv.tv_sec * 1000000 + in bpfioctl()
1149 if ((d->bd_rtout == 0) && (tv.tv_usec != 0)) in bpfioctl()
1150 d->bd_rtout = 1; in bpfioctl()
1162 ticks = drv_hztousec(d->bd_rtout); in bpfioctl()
1177 bs.bs_recv = d->bd_rcount; in bpfioctl()
1178 bs.bs_drop = d->bd_dcount; in bpfioctl()
1179 bs.bs_capt = d->bd_ccount; in bpfioctl()
1189 if (copyin((void *)addr, &d->bd_immediate, in bpfioctl()
1190 sizeof (d->bd_immediate)) != 0) in bpfioctl()
1206 if (copyout(&d->bd_hdrcmplt, (void *)addr, in bpfioctl()
1207 sizeof (d->bd_hdrcmplt)) != 0) in bpfioctl()
1212 if (copyin((void *)addr, &d->bd_hdrcmplt, in bpfioctl()
1213 sizeof (d->bd_hdrcmplt)) != 0) in bpfioctl()
1221 if (copyout(&d->bd_seesent, (void *)addr, in bpfioctl()
1222 sizeof (d->bd_seesent)) != 0) in bpfioctl()
1230 if (copyin((void *)addr, &d->bd_seesent, in bpfioctl()
1231 sizeof (d->bd_seesent)) != 0) in bpfioctl()
1236 if (copyin((void *)addr, &d->bd_nonblock, in bpfioctl()
1237 sizeof (d->bd_nonblock)) != 0) in bpfioctl()
1251 bpf_setf(struct bpf_d *d, struct bpf_program *fp) in bpf_setf() argument
1260 mutex_enter(&d->bd_lock); in bpf_setf()
1261 old = d->bd_filter; in bpf_setf()
1262 oldsize = d->bd_filter_size; in bpf_setf()
1263 d->bd_filter = 0; in bpf_setf()
1264 d->bd_filter_size = 0; in bpf_setf()
1265 reset_d(d); in bpf_setf()
1266 mutex_exit(&d->bd_lock); in bpf_setf()
1281 mutex_enter(&d->bd_lock); in bpf_setf()
1282 old = d->bd_filter; in bpf_setf()
1283 oldsize = d->bd_filter_size; in bpf_setf()
1284 d->bd_filter = fcode; in bpf_setf()
1285 d->bd_filter_size = size; in bpf_setf()
1286 reset_d(d); in bpf_setf()
1287 mutex_exit(&d->bd_lock); in bpf_setf()
1303 bpf_setif(struct bpf_d *d, char *ifname, int namesize) in bpf_setif() argument
1335 mutex_enter(&d->bd_lock); in bpf_setif()
1336 while (d->bd_inuse != 0) { in bpf_setif()
1337 d->bd_waiting++; in bpf_setif()
1338 if (cv_wait_sig(&d->bd_wait, &d->bd_lock) <= 0) { in bpf_setif()
1339 d->bd_waiting--; in bpf_setif()
1340 mutex_exit(&d->bd_lock); in bpf_setif()
1343 d->bd_waiting--; in bpf_setif()
1345 d->bd_inuse = -1; in bpf_setif()
1346 mutex_exit(&d->bd_lock); in bpf_setif()
1348 if (d->bd_sbuf == 0) in bpf_setif()
1349 error = bpf_allocbufs(d); in bpf_setif()
1352 mutex_enter(&d->bd_lock); in bpf_setif()
1353 if (d->bd_bif) in bpf_setif()
1357 bpf_detachd(d); in bpf_setif()
1359 error = bpf_attachd(d, ifname, -1); in bpf_setif()
1360 reset_d(d); in bpf_setif()
1361 d->bd_inuse = 0; in bpf_setif()
1362 if (d->bd_waiting != 0) in bpf_setif()
1363 cv_signal(&d->bd_wait); in bpf_setif()
1364 mutex_exit(&d->bd_lock); in bpf_setif()
1368 mutex_enter(&d->bd_lock); in bpf_setif()
1369 d->bd_inuse = 0; in bpf_setif()
1370 if (d->bd_waiting != 0) in bpf_setif()
1371 cv_signal(&d->bd_wait); in bpf_setif()
1372 mutex_exit(&d->bd_lock); in bpf_setif()
1377 return (bpf_provider_tickle(ifname, d->bd_zone)); in bpf_setif()
1384 bpf_ifname(struct bpf_d *d, char *buffer, int bufsize) in bpf_ifname() argument
1387 mutex_enter(&d->bd_lock); in bpf_ifname()
1388 if (d->bd_bif == NULL) { in bpf_ifname()
1389 mutex_exit(&d->bd_lock); in bpf_ifname()
1393 (void) strlcpy(buffer, d->bd_ifname, bufsize); in bpf_ifname()
1394 mutex_exit(&d->bd_lock); in bpf_ifname()
1411 struct bpf_d *d = bpf_dev_get(getminor(dev)); in bpfchpoll() local
1417 mutex_enter(&d->bd_lock); in bpfchpoll()
1418 if (d->bd_hlen != 0 || in bpfchpoll()
1419 ((d->bd_immediate || d->bd_state == BPF_TIMED_OUT) && in bpfchpoll()
1420 d->bd_slen != 0)) { in bpfchpoll()
1425 *phpp = &d->bd_poll; in bpfchpoll()
1427 if (d->bd_rtout > 0 && d->bd_state == BPF_IDLE) { in bpfchpoll()
1428 bpf_clear_timeout(d); in bpfchpoll()
1432 if (d->bd_callout == 0) in bpfchpoll()
1433 d->bd_callout = timeout(bpf_timed_out, in bpfchpoll()
1434 d, d->bd_rtout); in bpfchpoll()
1435 d->bd_state = BPF_WAITING; in bpfchpoll()
1438 mutex_exit(&d->bd_lock); in bpfchpoll()
1480 bpf_deliver(struct bpf_d *d, cp_fn_t cpfn, void *marg, uint_t pktlen, in bpf_deliver() argument
1486 if (!d->bd_seesent && issent) in bpf_deliver()
1493 mutex_enter(&d->bd_lock); in bpf_deliver()
1494 slen = bpf_filter(d->bd_filter, marg, pktlen, buflen); in bpf_deliver()
1495 DTRACE_PROBE5(bpf__packet, struct bpf_if *, d->bd_bif, in bpf_deliver()
1496 struct bpf_d *, d, void *, marg, uint_t, pktlen, uint_t, slen); in bpf_deliver()
1497 d->bd_rcount++; in bpf_deliver()
1501 catchpacket(d, marg, pktlen, slen, cpfn, &tv); in bpf_deliver()
1503 mutex_exit(&d->bd_lock); in bpf_deliver()
1514 struct bpf_d *d = arg; in bpf_mtap() local
1530 bpf_deliver(d, cpfn, marg, pktlen, buflen, issent); in bpf_mtap()
1545 struct bpf_d *d = arg; in bpf_itap() local
1548 if (ntohl(hdr->hpo_ifindex) != d->bd_linkid) in bpf_itap()
1550 bpf_deliver(d, bpf_mcpy, m, length, 0, issent); in bpf_itap()
1563 catchpacket(struct bpf_d *d, uchar_t *pkt, uint_t pktlen, uint_t snaplen, in catchpacket() argument
1568 int hdrlen = d->bd_hdrlen; in catchpacket()
1571 ++d->bd_ccount; in catchpacket()
1580 if (totlen > d->bd_bufsize) in catchpacket()
1581 totlen = d->bd_bufsize; in catchpacket()
1586 curlen = BPF_WORDALIGN(d->bd_slen); in catchpacket()
1587 if (curlen + totlen > d->bd_bufsize) { in catchpacket()
1593 if (d->bd_fbuf == 0) { in catchpacket()
1598 ++d->bd_dcount; in catchpacket()
1602 ROTATE_BUFFERS(d); in catchpacket()
1605 } else if (d->bd_immediate || d->bd_state == BPF_TIMED_OUT) { in catchpacket()
1618 hp = (struct bpf_hdr *)((char *)d->bd_sbuf + curlen); in catchpacket()
1628 d->bd_slen = curlen + totlen; in catchpacket()
1634 bpf_wakeup(d); in catchpacket()
1641 bpf_allocbufs(struct bpf_d *d) in bpf_allocbufs() argument
1644 d->bd_fbuf = kmem_zalloc(d->bd_bufsize, KM_NOSLEEP); in bpf_allocbufs()
1645 if (!d->bd_fbuf) in bpf_allocbufs()
1647 d->bd_sbuf = kmem_zalloc(d->bd_bufsize, KM_NOSLEEP); in bpf_allocbufs()
1648 if (!d->bd_sbuf) { in bpf_allocbufs()
1649 kmem_free(d->bd_fbuf, d->bd_bufsize); in bpf_allocbufs()
1652 d->bd_slen = 0; in bpf_allocbufs()
1653 d->bd_hlen = 0; in bpf_allocbufs()
1662 bpf_freed(struct bpf_d *d) in bpf_freed() argument
1668 if (d->bd_sbuf != 0) { in bpf_freed()
1669 kmem_free(d->bd_sbuf, d->bd_bufsize); in bpf_freed()
1670 if (d->bd_hbuf != 0) in bpf_freed()
1671 kmem_free(d->bd_hbuf, d->bd_bufsize); in bpf_freed()
1672 if (d->bd_fbuf != 0) in bpf_freed()
1673 kmem_free(d->bd_fbuf, d->bd_bufsize); in bpf_freed()
1675 if (d->bd_filter) in bpf_freed()
1676 kmem_free(d->bd_filter, d->bd_filter_size); in bpf_freed()
1683 bpf_getdltlist(struct bpf_d *d, struct bpf_dltlist *listp) in bpf_getdltlist() argument
1698 mutex_enter(&d->bd_lock); in bpf_getdltlist()
1701 error = MBPF_OPEN(bpr, d->bd_ifname, &mh, d->bd_zone); in bpf_getdltlist()
1710 if (d->bd_zone != GLOBAL_ZONEID && in bpf_getdltlist()
1711 d->bd_zone != zoneid) in bpf_getdltlist()
1728 d->bd_inuse++; in bpf_getdltlist()
1729 mutex_exit(&d->bd_lock); in bpf_getdltlist()
1733 mutex_enter(&d->bd_lock); in bpf_getdltlist()
1736 d->bd_inuse--; in bpf_getdltlist()
1749 mutex_exit(&d->bd_lock); in bpf_getdltlist()
1768 bpf_setdlt(struct bpf_d *d, void *addr) in bpf_setdlt() argument
1778 mutex_enter(&d->bd_lock); in bpf_setdlt()
1780 if (d->bd_bif == 0) { /* Interface not set */ in bpf_setdlt()
1781 mutex_exit(&d->bd_lock); in bpf_setdlt()
1784 if (d->bd_dlt == dlt) { /* NULL-op */ in bpf_setdlt()
1785 mutex_exit(&d->bd_lock); in bpf_setdlt()
1789 error = MBPF_GET_ZONE(&d->bd_mac, d->bd_bif, &niczone); in bpf_setdlt()
1791 mutex_exit(&d->bd_lock); in bpf_setdlt()
1799 if ((d->bd_zone != GLOBAL_ZONEID) && (dlt != DLT_IPNET) && in bpf_setdlt()
1800 (niczone != d->bd_zone)) { in bpf_setdlt()
1801 mutex_exit(&d->bd_lock); in bpf_setdlt()
1805 (void) strlcpy(ifname, d->bd_ifname, sizeof (ifname)); in bpf_setdlt()
1806 d->bd_inuse = -1; in bpf_setdlt()
1807 bpf_detachd(d); in bpf_setdlt()
1808 error = bpf_attachd(d, ifname, dlt); in bpf_setdlt()
1809 reset_d(d); in bpf_setdlt()
1810 d->bd_inuse = 0; in bpf_setdlt()
1812 mutex_exit(&d->bd_lock); in bpf_setdlt()
1822 bpf_clear_timeout(struct bpf_d *d) in bpf_clear_timeout() argument
1824 timeout_id_t tid = d->bd_callout; in bpf_clear_timeout()
1825 d->bd_callout = 0; in bpf_clear_timeout()
1826 d->bd_inuse++; in bpf_clear_timeout()
1834 mutex_exit(&d->bd_lock); in bpf_clear_timeout()
1836 mutex_enter(&d->bd_lock); in bpf_clear_timeout()
1839 d->bd_inuse--; in bpf_clear_timeout()
1853 struct bpf_d *d = NULL; in bpf_dev_find() local
1856 (mod_hash_val_t *)&d); in bpf_dev_find()
1858 return (d); in bpf_dev_find()
1862 bpf_dev_add(struct bpf_d *d) in bpf_dev_add() argument
1864 (void) mod_hash_insert(bpf_hash, (mod_hash_key_t)(uintptr_t)d->bd_dev, in bpf_dev_add()
1865 (mod_hash_val_t)d); in bpf_dev_add()
1869 bpf_dev_remove(struct bpf_d *d) in bpf_dev_remove() argument
1873 (void) mod_hash_remove(bpf_hash, (mod_hash_key_t)(uintptr_t)d->bd_dev, in bpf_dev_remove()
1875 ASSERT(stor == d); in bpf_dev_remove()
1886 struct bpf_d *d = NULL; in bpf_dev_get() local
1889 (mod_hash_val_t *)&d); in bpf_dev_get()
1890 ASSERT(d != NULL); in bpf_dev_get()
1892 return (d); in bpf_dev_get()