Lines Matching refs:ifp
229 void (*ng_ether_link_state_p)(struct ifnet *ifp, int state);
230 void (*lagg_linkstate_p)(struct ifnet *ifp, int state);
232 void (*carp_linkstate_p)(struct ifnet *ifp);
236 int (*carp_forus_p)(struct ifnet *ifp, u_char *dhost);
237 int (*carp_output_p)(struct ifnet *ifp, struct mbuf *m,
247 struct ifaddr *(*carp_iamatch6_p)(struct ifnet *ifp, struct in6_addr *taddr6);
248 caddr_t (*carp_macmatch6_p)(struct ifnet *ifp, struct mbuf *m,
267 static int if_transmit(struct ifnet *ifp, struct mbuf *m);
350 struct ifnet *ifp; in ifnet_byindex() local
352 ifp = ifnet_byindex_locked(idx); in ifnet_byindex()
353 return (ifp); in ifnet_byindex()
359 struct ifnet *ifp; in ifnet_byindex_ref() local
362 ifp = ifnet_byindex_locked(idx); in ifnet_byindex_ref()
363 if (ifp == NULL || (ifp->if_flags & IFF_DYING)) { in ifnet_byindex_ref()
367 if_ref(ifp); in ifnet_byindex_ref()
369 return (ifp); in ifnet_byindex_ref()
423 ifnet_setbyindex(u_short idx, struct ifnet *ifp) in ifnet_setbyindex() argument
426 V_ifindex_table[idx] = ifp; in ifnet_setbyindex()
432 struct ifnet *ifp; in ifaddr_byindex() local
436 ifp = ifnet_byindex_locked(idx); in ifaddr_byindex()
437 if (ifp != NULL && (ifa = ifp->if_addr) != NULL) in ifaddr_byindex()
484 if_link_ifnet(struct ifnet *ifp) in if_link_ifnet() argument
488 CK_STAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link); in if_link_ifnet()
496 if_unlink_ifnet(struct ifnet *ifp, bool vmove) in if_unlink_ifnet() argument
503 if (iter == ifp) { in if_unlink_ifnet()
504 CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link); in if_unlink_ifnet()
506 ifp->if_flags |= IFF_DYING; in if_unlink_ifnet()
522 struct ifnet *ifp, *nifp; in vnet_if_return() local
545 CK_STAILQ_FOREACH_SAFE(ifp, &V_ifnet, if_link, nifp) { in vnet_if_return()
546 if (ifp->if_home_vnet != ifp->if_vnet) { in vnet_if_return()
547 found = if_unlink_ifnet(ifp, true); in vnet_if_return()
550 pending[i++] = ifp; in vnet_if_return()
602 struct ifnet *ifp; in if_alloc() local
606 ifp = malloc(sizeof(struct ifnet), M_IFNET, M_WAITOK|M_ZERO); in if_alloc()
618 ifp->if_index = idx; in if_alloc()
619 ifp->if_type = type; in if_alloc()
620 ifp->if_alloctype = type; in if_alloc()
622 ifp->if_vnet = curvnet; in if_alloc()
625 ifp->if_l2com = if_com_alloc[type](type, ifp); in if_alloc()
626 if (ifp->if_l2com == NULL) { in if_alloc()
627 free(ifp, M_IFNET); in if_alloc()
633 IF_ADDR_LOCK_INIT(ifp); in if_alloc()
634 TASK_INIT(&ifp->if_linktask, 0, do_link_state_change, ifp); in if_alloc()
635 ifp->if_afdata_initialized = 0; in if_alloc()
636 IF_AFDATA_LOCK_INIT(ifp); in if_alloc()
637 CK_STAILQ_INIT(&ifp->if_addrhead); in if_alloc()
638 CK_STAILQ_INIT(&ifp->if_multiaddrs); in if_alloc()
639 CK_STAILQ_INIT(&ifp->if_groups); in if_alloc()
641 mac_ifnet_init(ifp); in if_alloc()
643 ifq_init(&ifp->if_snd, ifp); in if_alloc()
645 refcount_init(&ifp->if_refcount, 1); /* Index reference. */ in if_alloc()
647 ifp->if_counters[i] = counter_u64_alloc(M_WAITOK); in if_alloc()
648 ifp->if_get_counter = if_get_counter_default; in if_alloc()
649 ifp->if_pcp = IFNET_PCP_NONE; in if_alloc()
650 ifnet_setbyindex(ifp->if_index, ifp); in if_alloc()
651 return (ifp); in if_alloc()
660 if_free_internal(struct ifnet *ifp) in if_free_internal() argument
663 KASSERT((ifp->if_flags & IFF_DYING), in if_free_internal()
666 if (if_com_free[ifp->if_alloctype] != NULL) in if_free_internal()
667 if_com_free[ifp->if_alloctype](ifp->if_l2com, in if_free_internal()
668 ifp->if_alloctype); in if_free_internal()
671 mac_ifnet_destroy(ifp); in if_free_internal()
673 IF_AFDATA_DESTROY(ifp); in if_free_internal()
674 IF_ADDR_LOCK_DESTROY(ifp); in if_free_internal()
675 ifq_delete(&ifp->if_snd); in if_free_internal()
678 counter_u64_free(ifp->if_counters[i]); in if_free_internal()
680 free(ifp->if_description, M_IFDESCR); in if_free_internal()
681 free(ifp->if_hw_addr, M_IFADDR); in if_free_internal()
682 free(ifp, M_IFNET); in if_free_internal()
688 struct ifnet *ifp; in if_destroy() local
690 ifp = __containerof(ctx, struct ifnet, if_epoch_ctx); in if_destroy()
691 if_free_internal(ifp); in if_destroy()
698 if_free(struct ifnet *ifp) in if_free() argument
701 ifp->if_flags |= IFF_DYING; /* XXX: Locking */ in if_free()
703 CURVNET_SET_QUIET(ifp->if_vnet); in if_free()
705 KASSERT(ifp == ifnet_byindex_locked(ifp->if_index), in if_free()
706 ("%s: freeing unallocated ifnet", ifp->if_xname)); in if_free()
708 ifindex_free_locked(ifp->if_index); in if_free()
711 if (refcount_release(&ifp->if_refcount)) in if_free()
712 epoch_call(net_epoch_preempt, &ifp->if_epoch_ctx, if_destroy); in if_free()
722 if_ref(struct ifnet *ifp) in if_ref() argument
726 refcount_acquire(&ifp->if_refcount); in if_ref()
730 if_rele(struct ifnet *ifp) in if_rele() argument
733 if (!refcount_release(&ifp->if_refcount)) in if_rele()
735 epoch_call(net_epoch_preempt, &ifp->if_epoch_ctx, if_destroy); in if_rele()
739 ifq_init(struct ifaltq *ifq, struct ifnet *ifp) in ifq_init() argument
742 mtx_init(&ifq->ifq_mtx, ifp->if_xname, "if send queue", MTX_DEF); in ifq_init()
751 ifq->altq_ifp = ifp; in ifq_init()
783 if_attach(struct ifnet *ifp) in if_attach() argument
786 if_attach_internal(ifp, 0, NULL); in if_attach()
793 if_hw_tsomax_common(if_t ifp, struct ifnet_hw_tsomax *pmax) in if_hw_tsomax_common() argument
802 if (pmax->tsomaxbytes == 0 || (ifp->if_hw_tsomax != 0 && in if_hw_tsomax_common()
803 ifp->if_hw_tsomax < pmax->tsomaxbytes)) { in if_hw_tsomax_common()
804 pmax->tsomaxbytes = ifp->if_hw_tsomax; in if_hw_tsomax_common()
806 if (pmax->tsomaxsegcount == 0 || (ifp->if_hw_tsomaxsegcount != 0 && in if_hw_tsomax_common()
807 ifp->if_hw_tsomaxsegcount < pmax->tsomaxsegcount)) { in if_hw_tsomax_common()
808 pmax->tsomaxsegcount = ifp->if_hw_tsomaxsegcount; in if_hw_tsomax_common()
810 if (pmax->tsomaxsegsize == 0 || (ifp->if_hw_tsomaxsegsize != 0 && in if_hw_tsomax_common()
811 ifp->if_hw_tsomaxsegsize < pmax->tsomaxsegsize)) { in if_hw_tsomax_common()
812 pmax->tsomaxsegsize = ifp->if_hw_tsomaxsegsize; in if_hw_tsomax_common()
822 if_hw_tsomax_update(if_t ifp, struct ifnet_hw_tsomax *pmax) in if_hw_tsomax_update() argument
825 if (ifp->if_hw_tsomax != pmax->tsomaxbytes) { in if_hw_tsomax_update()
826 ifp->if_hw_tsomax = pmax->tsomaxbytes; in if_hw_tsomax_update()
829 if (ifp->if_hw_tsomaxsegsize != pmax->tsomaxsegsize) { in if_hw_tsomax_update()
830 ifp->if_hw_tsomaxsegsize = pmax->tsomaxsegsize; in if_hw_tsomax_update()
833 if (ifp->if_hw_tsomaxsegcount != pmax->tsomaxsegcount) { in if_hw_tsomax_update()
834 ifp->if_hw_tsomaxsegcount = pmax->tsomaxsegcount; in if_hw_tsomax_update()
841 if_attach_internal(struct ifnet *ifp, int vmove, struct if_clone *ifc) in if_attach_internal() argument
848 if (ifp->if_index == 0 || ifp != ifnet_byindex(ifp->if_index)) in if_attach_internal()
850 ifp->if_xname); in if_attach_internal()
853 ifp->if_vnet = curvnet; in if_attach_internal()
854 if (ifp->if_home_vnet == NULL) in if_attach_internal()
855 ifp->if_home_vnet = curvnet; in if_attach_internal()
858 if_addgroup(ifp, IFG_ALL); in if_attach_internal()
862 if_clone_addgroup(ifp, ifc); in if_attach_internal()
864 getmicrotime(&ifp->if_lastchange); in if_attach_internal()
865 ifp->if_epoch = time_uptime; in if_attach_internal()
867 KASSERT((ifp->if_transmit == NULL && ifp->if_qflush == NULL) || in if_attach_internal()
868 (ifp->if_transmit != NULL && ifp->if_qflush != NULL), in if_attach_internal()
870 if (ifp->if_transmit == NULL) { in if_attach_internal()
871 ifp->if_transmit = if_transmit; in if_attach_internal()
872 ifp->if_qflush = if_qflush; in if_attach_internal()
874 if (ifp->if_input == NULL) in if_attach_internal()
875 ifp->if_input = if_input_default; in if_attach_internal()
877 if (ifp->if_requestencap == NULL) in if_attach_internal()
878 ifp->if_requestencap = if_requestencap_default; in if_attach_internal()
882 mac_ifnet_create(ifp); in if_attach_internal()
888 namelen = strlen(ifp->if_xname); in if_attach_internal()
894 socksize = masklen + ifp->if_addrlen; in if_attach_internal()
903 bcopy(ifp->if_xname, sdl->sdl_data, namelen); in if_attach_internal()
905 sdl->sdl_index = ifp->if_index; in if_attach_internal()
906 sdl->sdl_type = ifp->if_type; in if_attach_internal()
907 ifp->if_addr = ifa; in if_attach_internal()
908 ifa->ifa_ifp = ifp; in if_attach_internal()
916 CK_STAILQ_INSERT_HEAD(&ifp->if_addrhead, ifa, ifa_link); in if_attach_internal()
918 ifp->if_broadcastaddr = NULL; in if_attach_internal()
920 if (ifp->if_type == IFT_ETHER) { in if_attach_internal()
921 ifp->if_hw_addr = malloc(ifp->if_addrlen, M_IFADDR, in if_attach_internal()
927 if (ifp->if_hw_tsomax == 0 && in if_attach_internal()
928 ifp->if_hw_tsomaxsegcount == 0 && in if_attach_internal()
929 ifp->if_hw_tsomaxsegsize == 0) { in if_attach_internal()
936 ifp->if_hw_tsomax = min(IP_MAXPACKET, (32 * MCLBYTES) - in if_attach_internal()
938 ifp->if_hw_tsomaxsegcount = 35; in if_attach_internal()
939 ifp->if_hw_tsomaxsegsize = 2048; /* 2K */ in if_attach_internal()
942 if (ifp->if_capabilities & IFCAP_TSO) { in if_attach_internal()
943 if_printf(ifp, "Using defaults for TSO: %u/%u/%u\n", in if_attach_internal()
944 ifp->if_hw_tsomax, in if_attach_internal()
945 ifp->if_hw_tsomaxsegcount, in if_attach_internal()
946 ifp->if_hw_tsomaxsegsize); in if_attach_internal()
957 for (ifa = ifp->if_addr; ifa != NULL; in if_attach_internal()
961 sdl->sdl_index = ifp->if_index; in if_attach_internal()
967 if_link_ifnet(ifp); in if_attach_internal()
970 if_attachdomain1(ifp); in if_attach_internal()
972 EVENTHANDLER_INVOKE(ifnet_arrival_event, ifp); in if_attach_internal()
974 devctl_notify("IFNET", ifp->if_xname, "ATTACH", NULL); in if_attach_internal()
977 rt_ifannouncemsg(ifp, IFAN_ARRIVAL); in if_attach_internal()
992 struct ifnet *ifp; in if_attachdomain() local
994 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) in if_attachdomain()
995 if_attachdomain1(ifp); in if_attachdomain()
1001 if_attachdomain1(struct ifnet *ifp) in if_attachdomain1() argument
1009 IF_AFDATA_LOCK(ifp); in if_attachdomain1()
1010 if (ifp->if_afdata_initialized >= domain_init_status) { in if_attachdomain1()
1011 IF_AFDATA_UNLOCK(ifp); in if_attachdomain1()
1013 __func__, ifp->if_xname); in if_attachdomain1()
1016 ifp->if_afdata_initialized = domain_init_status; in if_attachdomain1()
1017 IF_AFDATA_UNLOCK(ifp); in if_attachdomain1()
1020 bzero(ifp->if_afdata, sizeof(ifp->if_afdata)); in if_attachdomain1()
1023 ifp->if_afdata[dp->dom_family] = in if_attachdomain1()
1024 (*dp->dom_ifattach)(ifp); in if_attachdomain1()
1032 if_purgeaddrs(struct ifnet *ifp) in if_purgeaddrs() argument
1038 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in if_purgeaddrs()
1055 if (in_control(NULL, SIOCDIFADDR, (caddr_t)&ifr, ifp, in if_purgeaddrs()
1067 IF_ADDR_WLOCK(ifp); in if_purgeaddrs()
1068 CK_STAILQ_REMOVE(&ifp->if_addrhead, ifa, ifaddr, ifa_link); in if_purgeaddrs()
1069 IF_ADDR_WUNLOCK(ifp); in if_purgeaddrs()
1079 if_purgemaddrs(struct ifnet *ifp) in if_purgemaddrs() argument
1083 IF_ADDR_WLOCK(ifp); in if_purgemaddrs()
1084 while (!CK_STAILQ_EMPTY(&ifp->if_multiaddrs)) { in if_purgemaddrs()
1085 ifma = CK_STAILQ_FIRST(&ifp->if_multiaddrs); in if_purgemaddrs()
1086 CK_STAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifmultiaddr, ifma_link); in if_purgemaddrs()
1087 if_delmulti_locked(ifp, ifma, 1); in if_purgemaddrs()
1089 IF_ADDR_WUNLOCK(ifp); in if_purgemaddrs()
1102 if_detach(struct ifnet *ifp) in if_detach() argument
1106 CURVNET_SET_QUIET(ifp->if_vnet); in if_detach()
1107 found = if_unlink_ifnet(ifp, false); in if_detach()
1110 if_detach_internal(ifp, 0, NULL); in if_detach()
1127 if_detach_internal(struct ifnet *ifp, int vmove, struct if_clone **ifcp) in if_detach_internal() argument
1135 shutdown = (ifp->if_vnet->vnet_state > SI_SUB_VNET && in if_detach_internal()
1136 ifp->if_vnet->vnet_state < SI_SUB_VNET_DONE) ? 1 : 0; in if_detach_internal()
1158 if_delgroups(ifp); in if_detach_internal()
1160 taskqueue_drain(taskqueue_swi, &ifp->if_linktask); in if_detach_internal()
1169 *ifcp = if_clone_findifc(ifp); in if_detach_internal()
1171 if_down(ifp); in if_detach_internal()
1180 EVENTHANDLER_INVOKE(ifnet_departure_event, ifp); in if_detach_internal()
1203 if (ALTQ_IS_ENABLED(&ifp->if_snd)) in if_detach_internal()
1204 altq_disable(&ifp->if_snd); in if_detach_internal()
1205 if (ALTQ_IS_ATTACHED(&ifp->if_snd)) in if_detach_internal()
1206 altq_detach(&ifp->if_snd); in if_detach_internal()
1209 if_purgeaddrs(ifp); in if_detach_internal()
1212 in_ifdetach(ifp); in if_detach_internal()
1222 in6_ifdetach(ifp); in if_detach_internal()
1224 if_purgemaddrs(ifp); in if_detach_internal()
1227 rt_ifannouncemsg(ifp, IFAN_DEPARTURE); in if_detach_internal()
1228 EVENTHANDLER_INVOKE(ifnet_departure_event, ifp); in if_detach_internal()
1230 devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL); in if_detach_internal()
1236 if_dead(ifp); in if_detach_internal()
1241 IF_ADDR_WLOCK(ifp); in if_detach_internal()
1242 if (!CK_STAILQ_EMPTY(&ifp->if_addrhead)) { in if_detach_internal()
1243 ifa = CK_STAILQ_FIRST(&ifp->if_addrhead); in if_detach_internal()
1244 CK_STAILQ_REMOVE(&ifp->if_addrhead, ifa, ifaddr, ifa_link); in if_detach_internal()
1245 IF_ADDR_WUNLOCK(ifp); in if_detach_internal()
1248 IF_ADDR_WUNLOCK(ifp); in if_detach_internal()
1251 rt_flushifroutes(ifp); in if_detach_internal()
1261 IF_AFDATA_LOCK(ifp); in if_detach_internal()
1262 i = ifp->if_afdata_initialized; in if_detach_internal()
1263 ifp->if_afdata_initialized = 0; in if_detach_internal()
1264 IF_AFDATA_UNLOCK(ifp); in if_detach_internal()
1266 if (dp->dom_ifdetach && ifp->if_afdata[dp->dom_family]) { in if_detach_internal()
1267 (*dp->dom_ifdetach)(ifp, in if_detach_internal()
1268 ifp->if_afdata[dp->dom_family]); in if_detach_internal()
1269 ifp->if_afdata[dp->dom_family] = NULL; in if_detach_internal()
1285 if_vmove(struct ifnet *ifp, struct vnet *new_vnet) in if_vmove() argument
1300 bpf_get_bp_params(ifp->if_bpf, &bif_dlt, &bif_hdrlen); in if_vmove()
1308 rc = if_detach_internal(ifp, 1, &ifc); in if_vmove()
1320 ifindex_free_locked(ifp->if_index); in if_vmove()
1327 if (ifp->if_reassign != NULL) in if_vmove()
1328 ifp->if_reassign(ifp, new_vnet, NULL); in if_vmove()
1336 ifp->if_index = ifindex_alloc(&old); in if_vmove()
1337 if (__predict_false(ifp->if_index == USHRT_MAX)) { in if_vmove()
1343 ifnet_setbyindex(ifp->if_index, ifp); in if_vmove()
1346 if_attach_internal(ifp, 1, ifc); in if_vmove()
1349 if (ifp->if_bpf == NULL) in if_vmove()
1350 bpfattach(ifp, bif_dlt, bif_hdrlen); in if_vmove()
1360 if_vmove_loan(struct thread *td, struct ifnet *ifp, char *ifname, int jid) in if_vmove_loan() argument
1377 if (pr->pr_vnet == ifp->if_vnet) { in if_vmove_loan()
1393 shutdown = (ifp->if_vnet->vnet_state > SI_SUB_VNET && in if_vmove_loan()
1394 ifp->if_vnet->vnet_state < SI_SUB_VNET_DONE) ? 1 : 0; in if_vmove_loan()
1402 found = if_unlink_ifnet(ifp, true); in if_vmove_loan()
1406 if_vmove(ifp, pr->pr_vnet); in if_vmove_loan()
1409 sprintf(ifname, "%s", ifp->if_xname); in if_vmove_loan()
1420 struct ifnet *ifp; in if_vmove_reclaim() local
1435 ifp = ifunit(ifname); /* XXX Lock to avoid races. */ in if_vmove_reclaim()
1436 if (ifp == NULL) { in if_vmove_reclaim()
1444 if (vnet_dst == ifp->if_vnet) { in if_vmove_reclaim()
1451 shutdown = (ifp->if_vnet->vnet_state > SI_SUB_VNET && in if_vmove_reclaim()
1452 ifp->if_vnet->vnet_state < SI_SUB_VNET_DONE) ? 1 : 0; in if_vmove_reclaim()
1460 found = if_unlink_ifnet(ifp, true); in if_vmove_reclaim()
1462 if_vmove(ifp, vnet_dst); in if_vmove_reclaim()
1466 sprintf(ifname, "%s", ifp->if_xname); in if_vmove_reclaim()
1477 if_addgroup(struct ifnet *ifp, const char *groupname) in if_addgroup() argument
1489 CK_STAILQ_FOREACH(ifgl, &ifp->if_groups, ifgl_next) in if_addgroup()
1526 ifgm->ifgm_ifp = ifp; in if_addgroup()
1528 IF_ADDR_WLOCK(ifp); in if_addgroup()
1530 CK_STAILQ_INSERT_TAIL(&ifp->if_groups, ifgl, ifgl_next); in if_addgroup()
1531 IF_ADDR_WUNLOCK(ifp); in if_addgroup()
1547 _if_delgroup_locked(struct ifnet *ifp, struct ifg_list *ifgl, in _if_delgroup_locked() argument
1555 IF_ADDR_WLOCK(ifp); in _if_delgroup_locked()
1556 CK_STAILQ_REMOVE(&ifp->if_groups, ifgl, ifg_list, ifgl_next); in _if_delgroup_locked()
1557 IF_ADDR_WUNLOCK(ifp); in _if_delgroup_locked()
1560 if (ifgm->ifgm_ifp == ifp) { in _if_delgroup_locked()
1590 if_delgroup(struct ifnet *ifp, const char *groupname) in if_delgroup() argument
1595 CK_STAILQ_FOREACH(ifgl, &ifp->if_groups, ifgl_next) in if_delgroup()
1603 _if_delgroup_locked(ifp, ifgl, groupname); in if_delgroup()
1612 if_delgroups(struct ifnet *ifp) in if_delgroups() argument
1618 while ((ifgl = CK_STAILQ_FIRST(&ifp->if_groups)) != NULL) { in if_delgroups()
1620 _if_delgroup_locked(ifp, ifgl, groupname); in if_delgroups()
1657 if_getgroup(struct ifgroupreq *ifgr, struct ifnet *ifp) in if_getgroup() argument
1664 IF_ADDR_RLOCK(ifp); in if_getgroup()
1665 CK_STAILQ_FOREACH(ifgl, &ifp->if_groups, ifgl_next) in if_getgroup()
1667 IF_ADDR_RUNLOCK(ifp); in if_getgroup()
1674 IF_ADDR_RLOCK(ifp); in if_getgroup()
1675 CK_STAILQ_FOREACH(ifgl, &ifp->if_groups, ifgl_next) { in if_getgroup()
1677 IF_ADDR_RUNLOCK(ifp); in if_getgroup()
1684 IF_ADDR_RUNLOCK(ifp); in if_getgroup()
1690 IF_ADDR_RUNLOCK(ifp); in if_getgroup()
1748 if_get_counter_default(struct ifnet *ifp, ift_counter cnt) in if_get_counter_default() argument
1753 return (counter_u64_fetch(ifp->if_counters[cnt])); in if_get_counter_default()
1761 if_inc_counter(struct ifnet *ifp, ift_counter cnt, int64_t inc) in if_inc_counter() argument
1766 counter_u64_add(ifp->if_counters[cnt], inc); in if_inc_counter()
1773 if_data_copy(struct ifnet *ifp, struct if_data *ifd) in if_data_copy() argument
1776 ifd->ifi_type = ifp->if_type; in if_data_copy()
1778 ifd->ifi_addrlen = ifp->if_addrlen; in if_data_copy()
1779 ifd->ifi_hdrlen = ifp->if_hdrlen; in if_data_copy()
1780 ifd->ifi_link_state = ifp->if_link_state; in if_data_copy()
1783 ifd->ifi_mtu = ifp->if_mtu; in if_data_copy()
1784 ifd->ifi_metric = ifp->if_metric; in if_data_copy()
1785 ifd->ifi_baudrate = ifp->if_baudrate; in if_data_copy()
1786 ifd->ifi_hwassist = ifp->if_hwassist; in if_data_copy()
1787 ifd->ifi_epoch = ifp->if_epoch; in if_data_copy()
1788 ifd->ifi_lastchange = ifp->if_lastchange; in if_data_copy()
1790 ifd->ifi_ipackets = ifp->if_get_counter(ifp, IFCOUNTER_IPACKETS); in if_data_copy()
1791 ifd->ifi_ierrors = ifp->if_get_counter(ifp, IFCOUNTER_IERRORS); in if_data_copy()
1792 ifd->ifi_opackets = ifp->if_get_counter(ifp, IFCOUNTER_OPACKETS); in if_data_copy()
1793 ifd->ifi_oerrors = ifp->if_get_counter(ifp, IFCOUNTER_OERRORS); in if_data_copy()
1794 ifd->ifi_collisions = ifp->if_get_counter(ifp, IFCOUNTER_COLLISIONS); in if_data_copy()
1795 ifd->ifi_ibytes = ifp->if_get_counter(ifp, IFCOUNTER_IBYTES); in if_data_copy()
1796 ifd->ifi_obytes = ifp->if_get_counter(ifp, IFCOUNTER_OBYTES); in if_data_copy()
1797 ifd->ifi_imcasts = ifp->if_get_counter(ifp, IFCOUNTER_IMCASTS); in if_data_copy()
1798 ifd->ifi_omcasts = ifp->if_get_counter(ifp, IFCOUNTER_OMCASTS); in if_data_copy()
1799 ifd->ifi_iqdrops = ifp->if_get_counter(ifp, IFCOUNTER_IQDROPS); in if_data_copy()
1800 ifd->ifi_oqdrops = ifp->if_get_counter(ifp, IFCOUNTER_OQDROPS); in if_data_copy()
1801 ifd->ifi_noproto = ifp->if_get_counter(ifp, IFCOUNTER_NOPROTO); in if_data_copy()
1835 if_addr_rlock(struct ifnet *ifp) in if_addr_rlock() argument
1846 if_addr_runlock(struct ifnet *ifp) in if_addr_runlock() argument
1858 if_maddr_rlock(if_t ifp) in if_maddr_rlock() argument
1869 if_maddr_runlock(if_t ifp) in if_maddr_runlock() argument
1955 struct ifnet *ifp; in ifa_maintain_loopback_route() local
1957 ifp = ifa->ifa_ifp; in ifa_maintain_loopback_route()
1965 link_init_sdl(ifp, (struct sockaddr *)&null_sdl, ifp->if_type); in ifa_maintain_loopback_route()
1967 error = rtrequest1_fib(cmd, &info, NULL, ifp->if_fib); in ifa_maintain_loopback_route()
1975 __func__, otype, if_name(ifp), error); in ifa_maintain_loopback_route()
2021 struct ifnet *ifp; in ifa_ifwithaddr() local
2025 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifa_ifwithaddr()
2026 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifa_ifwithaddr()
2033 if ((ifp->if_flags & IFF_BROADCAST) && in ifa_ifwithaddr()
2064 struct ifnet *ifp; in ifa_ifwithbroadaddr() local
2068 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifa_ifwithbroadaddr()
2069 if ((fibnum != RT_ALL_FIBS) && (ifp->if_fib != fibnum)) in ifa_ifwithbroadaddr()
2071 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifa_ifwithbroadaddr()
2074 if ((ifp->if_flags & IFF_BROADCAST) && in ifa_ifwithbroadaddr()
2094 struct ifnet *ifp; in ifa_ifwithdstaddr() local
2098 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifa_ifwithdstaddr()
2099 if ((ifp->if_flags & IFF_POINTOPOINT) == 0) in ifa_ifwithdstaddr()
2101 if ((fibnum != RT_ALL_FIBS) && (ifp->if_fib != fibnum)) in ifa_ifwithdstaddr()
2103 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifa_ifwithdstaddr()
2124 struct ifnet *ifp; in ifa_ifwithnet() local
2147 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifa_ifwithnet()
2148 if ((fibnum != RT_ALL_FIBS) && (ifp->if_fib != fibnum)) in ifa_ifwithnet()
2150 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifa_ifwithnet()
2156 ifp->if_flags & IFF_POINTOPOINT && !ignore_ptp) { in ifa_ifwithnet()
2215 ifaof_ifpforaddr(const struct sockaddr *addr, struct ifnet *ifp) in ifaof_ifpforaddr() argument
2227 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifaof_ifpforaddr()
2239 if (ifp->if_flags & IFF_POINTOPOINT) { in ifaof_ifpforaddr()
2286 struct ifnet *ifp; in link_rtrequest() local
2289 ((ifp = ifa->ifa_ifp) == NULL) || ((dst = rt_key(rt)) == NULL)) in link_rtrequest()
2292 ifa = ifaof_ifpforaddr(dst, ifp); in link_rtrequest()
2324 link_init_sdl(struct ifnet *ifp, struct sockaddr *paddr, u_char iftype) in link_init_sdl() argument
2332 sdl->sdl_index = ifp->if_index; in link_init_sdl()
2343 if_unroute(struct ifnet *ifp, int flag, int fam) in if_unroute() argument
2349 ifp->if_flags &= ~flag; in if_unroute()
2350 getmicrotime(&ifp->if_lastchange); in if_unroute()
2351 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) in if_unroute()
2354 ifp->if_qflush(ifp); in if_unroute()
2356 if (ifp->if_carp) in if_unroute()
2357 (*carp_linkstate_p)(ifp); in if_unroute()
2358 rt_ifmsg(ifp); in if_unroute()
2366 if_route(struct ifnet *ifp, int flag, int fam) in if_route() argument
2372 ifp->if_flags |= flag; in if_route()
2373 getmicrotime(&ifp->if_lastchange); in if_route()
2374 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) in if_route()
2377 if (ifp->if_carp) in if_route()
2378 (*carp_linkstate_p)(ifp); in if_route()
2379 rt_ifmsg(ifp); in if_route()
2381 in6_if_up(ifp); in if_route()
2401 if_link_state_change(struct ifnet *ifp, int link_state) in if_link_state_change() argument
2404 if (ifp->if_link_state == link_state) in if_link_state_change()
2407 ifp->if_link_state = link_state; in if_link_state_change()
2409 taskqueue_enqueue(taskqueue_swi, &ifp->if_linktask); in if_link_state_change()
2415 struct ifnet *ifp = (struct ifnet *)arg; in do_link_state_change() local
2416 int link_state = ifp->if_link_state; in do_link_state_change()
2417 CURVNET_SET(ifp->if_vnet); in do_link_state_change()
2420 rt_ifmsg(ifp); in do_link_state_change()
2421 if (ifp->if_vlantrunk != NULL) in do_link_state_change()
2422 (*vlan_link_state_p)(ifp); in do_link_state_change()
2424 if ((ifp->if_type == IFT_ETHER || ifp->if_type == IFT_L2VLAN) && in do_link_state_change()
2425 ifp->if_l2com != NULL) in do_link_state_change()
2426 (*ng_ether_link_state_p)(ifp, link_state); in do_link_state_change()
2427 if (ifp->if_carp) in do_link_state_change()
2428 (*carp_linkstate_p)(ifp); in do_link_state_change()
2429 if (ifp->if_bridge) in do_link_state_change()
2430 ifp->if_bridge_linkstate(ifp); in do_link_state_change()
2431 if (ifp->if_lagg) in do_link_state_change()
2432 (*lagg_linkstate_p)(ifp, link_state); in do_link_state_change()
2435 devctl_notify("IFNET", ifp->if_xname, in do_link_state_change()
2439 if_printf(ifp, "%d link states coalesced\n", pending); in do_link_state_change()
2441 if_printf(ifp, "link state changed to %s\n", in do_link_state_change()
2443 EVENTHANDLER_INVOKE(ifnet_link_event, ifp, link_state); in do_link_state_change()
2452 if_down(struct ifnet *ifp) in if_down() argument
2455 EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_DOWN); in if_down()
2456 if_unroute(ifp, IFF_UP, AF_UNSPEC); in if_down()
2464 if_up(struct ifnet *ifp) in if_up() argument
2467 if_route(ifp, IFF_UP, AF_UNSPEC); in if_up()
2468 EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_UP); in if_up()
2475 if_qflush(struct ifnet *ifp) in if_qflush() argument
2480 ifq = &ifp->if_snd; in if_qflush()
2504 struct ifnet *ifp; in ifunit_ref() local
2507 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifunit_ref()
2508 if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0 && in ifunit_ref()
2509 !(ifp->if_flags & IFF_DYING)) in ifunit_ref()
2512 if (ifp != NULL) in ifunit_ref()
2513 if_ref(ifp); in ifunit_ref()
2515 return (ifp); in ifunit_ref()
2521 struct ifnet *ifp; in ifunit() local
2524 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifunit()
2525 if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0) in ifunit()
2529 return (ifp); in ifunit()
2605 ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) in ifhwioctl() argument
2620 ifr->ifr_index = ifp->if_index; in ifhwioctl()
2624 temp_flags = ifp->if_flags | ifp->if_drv_flags; in ifhwioctl()
2630 ifr->ifr_reqcap = ifp->if_capabilities; in ifhwioctl()
2631 ifr->ifr_curcap = ifp->if_capenable; in ifhwioctl()
2641 if_data_copy(ifp, &ifd); in ifhwioctl()
2648 error = mac_ifnet_ioctl_get(td->td_ucred, ifr, ifp); in ifhwioctl()
2653 ifr->ifr_metric = ifp->if_metric; in ifhwioctl()
2657 ifr->ifr_mtu = ifp->if_mtu; in ifhwioctl()
2668 if (ifp->if_description == NULL) in ifhwioctl()
2672 descrlen = strlen(ifp->if_description) + 1; in ifhwioctl()
2676 error = copyout(ifp->if_description, in ifhwioctl()
2710 odescrbuf = ifp->if_description; in ifhwioctl()
2711 ifp->if_description = descrbuf; in ifhwioctl()
2714 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2719 ifr->ifr_fib = ifp->if_fib; in ifhwioctl()
2729 ifp->if_fib = ifr->ifr_fib; in ifhwioctl()
2742 if (ifp->if_flags & IFF_UP && in ifhwioctl()
2744 if_down(ifp); in ifhwioctl()
2746 (ifp->if_flags & IFF_UP) == 0) { in ifhwioctl()
2750 if ((ifp->if_flags ^ new_flags) & IFF_PPROMISC) { in ifhwioctl()
2752 ifp->if_flags |= IFF_PROMISC; in ifhwioctl()
2753 else if (ifp->if_pcount == 0) in ifhwioctl()
2754 ifp->if_flags &= ~IFF_PROMISC; in ifhwioctl()
2756 if_printf(ifp, "permanently promiscuous mode %s\n", in ifhwioctl()
2760 ifp->if_flags = (ifp->if_flags & IFF_CANTCHANGE) | in ifhwioctl()
2762 if (ifp->if_ioctl) { in ifhwioctl()
2763 (void) (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2766 if_up(ifp); in ifhwioctl()
2767 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2774 if (ifp->if_ioctl == NULL) in ifhwioctl()
2776 if (ifr->ifr_reqcap & ~ifp->if_capabilities) in ifhwioctl()
2778 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2780 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2785 error = mac_ifnet_ioctl_set(td->td_ucred, ifr, ifp); in ifhwioctl()
2804 if (strcmp(new_name, ifp->if_xname) == 0) in ifhwioctl()
2815 ifp->if_flags |= IFF_RENAMING; in ifhwioctl()
2818 rt_ifannouncemsg(ifp, IFAN_DEPARTURE); in ifhwioctl()
2819 EVENTHANDLER_INVOKE(ifnet_departure_event, ifp); in ifhwioctl()
2821 if_printf(ifp, "changing name to '%s'\n", new_name); in ifhwioctl()
2823 IF_ADDR_WLOCK(ifp); in ifhwioctl()
2824 strlcpy(ifp->if_xname, new_name, sizeof(ifp->if_xname)); in ifhwioctl()
2825 ifa = ifp->if_addr; in ifhwioctl()
2844 IF_ADDR_WUNLOCK(ifp); in ifhwioctl()
2846 EVENTHANDLER_INVOKE(ifnet_arrival_event, ifp); in ifhwioctl()
2848 rt_ifannouncemsg(ifp, IFAN_ARRIVAL); in ifhwioctl()
2850 ifp->if_flags &= ~IFF_RENAMING; in ifhwioctl()
2858 error = if_vmove_loan(td, ifp, ifr->ifr_name, ifr->ifr_jid); in ifhwioctl()
2866 ifp->if_metric = ifr->ifr_metric; in ifhwioctl()
2867 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2874 if (ifp->if_ioctl == NULL) in ifhwioctl()
2876 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2878 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2883 u_long oldmtu = ifp->if_mtu; in ifhwioctl()
2890 if (ifp->if_ioctl == NULL) in ifhwioctl()
2892 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2894 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2895 rt_ifmsg(ifp); in ifhwioctl()
2897 NETDUMP_REINIT(ifp); in ifhwioctl()
2903 if (ifp->if_mtu != oldmtu) { in ifhwioctl()
2905 nd6_setmtu(ifp); in ifhwioctl()
2907 rt_updatemtu(ifp); in ifhwioctl()
2922 if ((ifp->if_flags & IFF_MULTICAST) == 0) in ifhwioctl()
2939 IF_ADDR_RLOCK(ifp); in ifhwioctl()
2940 ifma = if_findmulti(ifp, &ifr->ifr_addr); in ifhwioctl()
2941 IF_ADDR_RUNLOCK(ifp); in ifhwioctl()
2945 error = if_addmulti(ifp, &ifr->ifr_addr, &ifma); in ifhwioctl()
2947 error = if_delmulti(ifp, &ifr->ifr_addr); in ifhwioctl()
2950 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2963 if (ifp->if_ioctl == NULL) in ifhwioctl()
2965 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2967 getmicrotime(&ifp->if_lastchange); in ifhwioctl()
2979 if (ifp->if_ioctl == NULL) in ifhwioctl()
2981 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifhwioctl()
2988 error = if_setlladdr(ifp, in ifhwioctl()
2993 error = if_gethwaddr(ifp, ifr); in ifhwioctl()
3000 if ((error = if_addgroup(ifp, in ifhwioctl()
3006 if ((error = if_getgroup((struct ifgroupreq *)data, ifp))) in ifhwioctl()
3014 if ((error = if_delgroup(ifp, in ifhwioctl()
3079 struct ifnet *ifp; in ifioctl() local
3184 ifp = ifunit_ref(ifr->ifr_name); in ifioctl()
3185 if (ifp == NULL) { in ifioctl()
3190 error = ifhwioctl(cmd, ifp, data, td); in ifioctl()
3194 oif_flags = ifp->if_flags; in ifioctl()
3210 ifp, td)); in ifioctl()
3211 if (error == EOPNOTSUPP && ifp != NULL && ifp->if_ioctl != NULL && in ifioctl()
3214 error = (*ifp->if_ioctl)(ifp, cmd, data); in ifioctl()
3216 if ((oif_flags ^ ifp->if_flags) & IFF_UP) { in ifioctl()
3218 if (ifp->if_flags & IFF_UP) in ifioctl()
3219 in6_if_up(ifp); in ifioctl()
3224 if_rele(ifp); in ifioctl()
3248 if_setflag(struct ifnet *ifp, int flag, int pflag, int *refcount, int onswitch) in if_setflag() argument
3268 if (ifp->if_flags & pflag) { in if_setflag()
3275 oldflags = ifp->if_flags; in if_setflag()
3284 ifp->if_flags |= flag; in if_setflag()
3288 ifp->if_flags &= ~flag; in if_setflag()
3292 if (ifp->if_ioctl == NULL) { in if_setflag()
3296 ifr.ifr_flags = ifp->if_flags & 0xffff; in if_setflag()
3297 ifr.ifr_flagshigh = ifp->if_flags >> 16; in if_setflag()
3298 error = (*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifr); in if_setflag()
3302 rt_ifmsg(ifp); in if_setflag()
3308 ifp->if_flags = oldflags; in if_setflag()
3319 ifpromisc(struct ifnet *ifp, int pswitch) in ifpromisc() argument
3322 int oldflags = ifp->if_flags; in ifpromisc()
3324 error = if_setflag(ifp, IFF_PROMISC, IFF_PPROMISC, in ifpromisc()
3325 &ifp->if_pcount, pswitch); in ifpromisc()
3327 if (error == 0 && ((ifp->if_flags ^ oldflags) & IFF_PROMISC) && in ifpromisc()
3329 if_printf(ifp, "promiscuous mode %s\n", in ifpromisc()
3330 (ifp->if_flags & IFF_PROMISC) ? "enabled" : "disabled"); in ifpromisc()
3345 struct ifnet *ifp; in ifconf() local
3368 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { in ifconf()
3377 if (strlcpy(ifr.ifr_name, ifp->if_xname, sizeof(ifr.ifr_name)) in ifconf()
3385 IF_ADDR_RLOCK(ifp); in ifconf()
3386 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in ifconf()
3413 IF_ADDR_RUNLOCK(ifp); in ifconf()
3445 if_allmulti(struct ifnet *ifp, int onswitch) in if_allmulti() argument
3448 return (if_setflag(ifp, IFF_ALLMULTI, 0, &ifp->if_amcount, onswitch)); in if_allmulti()
3452 if_findmulti(struct ifnet *ifp, const struct sockaddr *sa) in if_findmulti() argument
3456 IF_ADDR_LOCK_ASSERT(ifp); in if_findmulti()
3458 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { in if_findmulti()
3479 if_allocmulti(struct ifnet *ifp, struct sockaddr *sa, struct sockaddr *llsa, in if_allocmulti() argument
3498 ifma->ifma_ifp = ifp; in if_allocmulti()
3583 if_addmulti(struct ifnet *ifp, struct sockaddr *sa, in if_addmulti() argument
3601 IF_ADDR_WLOCK(ifp); in if_addmulti()
3602 ifma = if_findmulti(ifp, sa); in if_addmulti()
3607 IF_ADDR_WUNLOCK(ifp); in if_addmulti()
3622 if (ifp->if_resolvemulti != NULL) { in if_addmulti()
3626 error = ifp->if_resolvemulti(ifp, &llsa, sa); in if_addmulti()
3635 ifma = if_allocmulti(ifp, sa, llsa, M_NOWAIT); in if_addmulti()
3648 ll_ifma = if_findmulti(ifp, llsa); in if_addmulti()
3650 ll_ifma = if_allocmulti(ifp, llsa, NULL, M_NOWAIT); in if_addmulti()
3658 CK_STAILQ_INSERT_HEAD(&ifp->if_multiaddrs, ll_ifma, in if_addmulti()
3671 CK_STAILQ_INSERT_HEAD(&ifp->if_multiaddrs, ifma, ifma_link); in if_addmulti()
3681 IF_ADDR_WUNLOCK(ifp); in if_addmulti()
3687 if (ifp->if_ioctl != NULL) { in if_addmulti()
3688 (void) (*ifp->if_ioctl)(ifp, SIOCADDMULTI, 0); in if_addmulti()
3701 IF_ADDR_WUNLOCK(ifp); in if_addmulti()
3715 if_delmulti(struct ifnet *ifp, struct sockaddr *sa) in if_delmulti() argument
3724 if (ifp == oifp) in if_delmulti()
3726 if (ifp != oifp) in if_delmulti()
3727 ifp = NULL; in if_delmulti()
3730 KASSERT(ifp != NULL, ("%s: ifnet went away", __func__)); in if_delmulti()
3732 if (ifp == NULL) in if_delmulti()
3735 IF_ADDR_WLOCK(ifp); in if_delmulti()
3737 ifma = if_findmulti(ifp, sa); in if_delmulti()
3739 lastref = if_delmulti_locked(ifp, ifma, 0); in if_delmulti()
3740 IF_ADDR_WUNLOCK(ifp); in if_delmulti()
3745 if (lastref && ifp->if_ioctl != NULL) { in if_delmulti()
3746 (void)(*ifp->if_ioctl)(ifp, SIOCDELMULTI, 0); in if_delmulti()
3757 if_delallmulti(struct ifnet *ifp) in if_delallmulti() argument
3762 IF_ADDR_WLOCK(ifp); in if_delallmulti()
3763 CK_STAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next) in if_delallmulti()
3764 if_delmulti_locked(ifp, ifma, 0); in if_delallmulti()
3765 IF_ADDR_WUNLOCK(ifp); in if_delallmulti()
3783 struct ifnet *ifp; in if_delmulti_ifma_flags() local
3789 ifp = ifma->ifma_ifp; in if_delmulti_ifma_flags()
3791 if (ifp == NULL) { in if_delmulti_ifma_flags()
3798 if (ifp == oifp) in if_delmulti_ifma_flags()
3800 if (ifp != oifp) in if_delmulti_ifma_flags()
3801 ifp = NULL; in if_delmulti_ifma_flags()
3808 if (ifp != NULL) in if_delmulti_ifma_flags()
3809 IF_ADDR_WLOCK(ifp); in if_delmulti_ifma_flags()
3811 lastref = if_delmulti_locked(ifp, ifma, flags); in if_delmulti_ifma_flags()
3813 if (ifp != NULL) { in if_delmulti_ifma_flags()
3819 IF_ADDR_WUNLOCK(ifp); in if_delmulti_ifma_flags()
3820 if (lastref && ifp->if_ioctl != NULL) { in if_delmulti_ifma_flags()
3821 (void)(*ifp->if_ioctl)(ifp, SIOCDELMULTI, 0); in if_delmulti_ifma_flags()
3834 if_delmulti_locked(struct ifnet *ifp, struct ifmultiaddr *ifma, int detaching) in if_delmulti_locked() argument
3838 if (ifp != NULL && ifma->ifma_ifp != NULL) { in if_delmulti_locked()
3839 KASSERT(ifma->ifma_ifp == ifp, in if_delmulti_locked()
3840 ("%s: inconsistent ifp %p", __func__, ifp)); in if_delmulti_locked()
3841 IF_ADDR_WLOCK_ASSERT(ifp); in if_delmulti_locked()
3844 ifp = ifma->ifma_ifp; in if_delmulti_locked()
3845 MCDPRINTF("%s freeing %p from %s \n", __func__, ifma, ifp ? ifp->if_xname : ""); in if_delmulti_locked()
3856 printf("%s: detaching ifnet instance %p\n", __func__, ifp); in if_delmulti_locked()
3862 if (ifp != NULL) { in if_delmulti_locked()
3871 if (ifp != NULL && detaching == 0 && (ifma->ifma_flags & IFMA_F_ENQUEUED)) { in if_delmulti_locked()
3872 CK_STAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifmultiaddr, ifma_link); in if_delmulti_locked()
3886 if (ifp != NULL) { in if_delmulti_locked()
3888 CK_STAILQ_REMOVE(&ifp->if_multiaddrs, ll_ifma, ifmultiaddr, in if_delmulti_locked()
3897 if (ifp) { in if_delmulti_locked()
3900 CK_STAILQ_FOREACH(ifmatmp, &ifp->if_multiaddrs, ifma_link) in if_delmulti_locked()
3921 if_setlladdr(struct ifnet *ifp, const u_char *lladdr, int len) in if_setlladdr() argument
3930 ifa = ifp->if_addr; in if_setlladdr()
3945 switch (ifp->if_type) { in if_setlladdr()
3964 if ((ifp->if_flags & IFF_UP) != 0) { in if_setlladdr()
3965 if (ifp->if_ioctl) { in if_setlladdr()
3966 ifp->if_flags &= ~IFF_UP; in if_setlladdr()
3967 ifr.ifr_flags = ifp->if_flags & 0xffff; in if_setlladdr()
3968 ifr.ifr_flagshigh = ifp->if_flags >> 16; in if_setlladdr()
3969 (*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifr); in if_setlladdr()
3970 ifp->if_flags |= IFF_UP; in if_setlladdr()
3971 ifr.ifr_flags = ifp->if_flags & 0xffff; in if_setlladdr()
3972 ifr.ifr_flagshigh = ifp->if_flags >> 16; in if_setlladdr()
3973 (*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifr); in if_setlladdr()
3976 EVENTHANDLER_INVOKE(iflladdr_event, ifp); in if_setlladdr()
3995 if_requestencap_default(struct ifnet *ifp, struct if_encap_req *req) in if_requestencap_default() argument
4029 if_tunnel_check_nesting(struct ifnet *ifp, struct mbuf *m, uint32_t cookie, in if_tunnel_check_nesting() argument
4038 if (*(struct ifnet **)(mtag + 1) == ifp) { in if_tunnel_check_nesting()
4039 log(LOG_NOTICE, "%s: loop detected\n", if_name(ifp)); in if_tunnel_check_nesting()
4047 if_name(ifp), count); in if_tunnel_check_nesting()
4053 *(struct ifnet **)(mtag + 1) = ifp; in if_tunnel_check_nesting()
4065 if_gethwaddr(struct ifnet *ifp, struct ifreq *ifr) in if_gethwaddr() argument
4068 if (ifp->if_hw_addr == NULL) in if_gethwaddr()
4071 switch (ifp->if_type) { in if_gethwaddr()
4074 bcopy(ifp->if_hw_addr, ifr->ifr_addr.sa_data, ifp->if_addrlen); in if_gethwaddr()
4088 if_initname(struct ifnet *ifp, const char *name, int unit) in if_initname() argument
4090 ifp->if_dname = name; in if_initname()
4091 ifp->if_dunit = unit; in if_initname()
4093 snprintf(ifp->if_xname, IFNAMSIZ, "%s%d", name, unit); in if_initname()
4095 strlcpy(ifp->if_xname, name, IFNAMSIZ); in if_initname()
4099 if_printf(struct ifnet *ifp, const char *fmt, ...) in if_printf() argument
4104 snprintf(if_fmt, sizeof(if_fmt), "%s: %s", ifp->if_xname, fmt); in if_printf()
4112 if_start(struct ifnet *ifp) in if_start() argument
4115 (*(ifp)->if_start)(ifp); in if_start()
4123 if_transmit(struct ifnet *ifp, struct mbuf *m) in if_transmit() argument
4127 IFQ_HANDOFF(ifp, m, error); in if_transmit()
4132 if_input_default(struct ifnet *ifp __unused, struct mbuf *m) in if_input_default()
4139 if_handoff(struct ifqueue *ifq, struct mbuf *m, struct ifnet *ifp, int adjust) in if_handoff() argument
4146 if_inc_counter(ifp, IFCOUNTER_OQDROPS, 1); in if_handoff()
4150 if (ifp != NULL) { in if_handoff()
4151 if_inc_counter(ifp, IFCOUNTER_OBYTES, m->m_pkthdr.len + adjust); in if_handoff()
4153 if_inc_counter(ifp, IFCOUNTER_OMCASTS, 1); in if_handoff()
4154 active = ifp->if_drv_flags & IFF_DRV_OACTIVE; in if_handoff()
4158 if (ifp != NULL && !active) in if_handoff()
4159 (*(ifp)->if_start)(ifp); in if_handoff()
4199 if_setbaudrate(struct ifnet *ifp, uint64_t baudrate) in if_setbaudrate() argument
4203 oldbrate = ifp->if_baudrate; in if_setbaudrate()
4204 ifp->if_baudrate = baudrate; in if_setbaudrate()
4209 if_getbaudrate(if_t ifp) in if_getbaudrate() argument
4212 return (((struct ifnet *)ifp)->if_baudrate); in if_getbaudrate()
4216 if_setcapabilities(if_t ifp, int capabilities) in if_setcapabilities() argument
4218 ((struct ifnet *)ifp)->if_capabilities = capabilities; in if_setcapabilities()
4223 if_setcapabilitiesbit(if_t ifp, int setbit, int clearbit) in if_setcapabilitiesbit() argument
4225 ((struct ifnet *)ifp)->if_capabilities |= setbit; in if_setcapabilitiesbit()
4226 ((struct ifnet *)ifp)->if_capabilities &= ~clearbit; in if_setcapabilitiesbit()
4232 if_getcapabilities(if_t ifp) in if_getcapabilities() argument
4234 return ((struct ifnet *)ifp)->if_capabilities; in if_getcapabilities()
4238 if_setcapenable(if_t ifp, int capabilities) in if_setcapenable() argument
4240 ((struct ifnet *)ifp)->if_capenable = capabilities; in if_setcapenable()
4245 if_setcapenablebit(if_t ifp, int setcap, int clearcap) in if_setcapenablebit() argument
4248 ((struct ifnet *)ifp)->if_capenable |= setcap; in if_setcapenablebit()
4250 ((struct ifnet *)ifp)->if_capenable &= ~clearcap; in if_setcapenablebit()
4256 if_getdname(if_t ifp) in if_getdname() argument
4258 return ((struct ifnet *)ifp)->if_dname; in if_getdname()
4262 if_togglecapenable(if_t ifp, int togglecap) in if_togglecapenable() argument
4264 ((struct ifnet *)ifp)->if_capenable ^= togglecap; in if_togglecapenable()
4269 if_getcapenable(if_t ifp) in if_getcapenable() argument
4271 return ((struct ifnet *)ifp)->if_capenable; in if_getcapenable()
4281 if_setdev(if_t ifp, void *dev) in if_setdev() argument
4287 if_setdrvflagbits(if_t ifp, int set_flags, int clear_flags) in if_setdrvflagbits() argument
4289 ((struct ifnet *)ifp)->if_drv_flags |= set_flags; in if_setdrvflagbits()
4290 ((struct ifnet *)ifp)->if_drv_flags &= ~clear_flags; in if_setdrvflagbits()
4296 if_getdrvflags(if_t ifp) in if_getdrvflags() argument
4298 return ((struct ifnet *)ifp)->if_drv_flags; in if_getdrvflags()
4302 if_setdrvflags(if_t ifp, int flags) in if_setdrvflags() argument
4304 ((struct ifnet *)ifp)->if_drv_flags = flags; in if_setdrvflags()
4310 if_setflags(if_t ifp, int flags) in if_setflags() argument
4312 ((struct ifnet *)ifp)->if_flags = flags; in if_setflags()
4317 if_setflagbits(if_t ifp, int set, int clear) in if_setflagbits() argument
4319 ((struct ifnet *)ifp)->if_flags |= set; in if_setflagbits()
4320 ((struct ifnet *)ifp)->if_flags &= ~clear; in if_setflagbits()
4326 if_getflags(if_t ifp) in if_getflags() argument
4328 return ((struct ifnet *)ifp)->if_flags; in if_getflags()
4332 if_clearhwassist(if_t ifp) in if_clearhwassist() argument
4334 ((struct ifnet *)ifp)->if_hwassist = 0; in if_clearhwassist()
4339 if_sethwassistbits(if_t ifp, int toset, int toclear) in if_sethwassistbits() argument
4341 ((struct ifnet *)ifp)->if_hwassist |= toset; in if_sethwassistbits()
4342 ((struct ifnet *)ifp)->if_hwassist &= ~toclear; in if_sethwassistbits()
4348 if_sethwassist(if_t ifp, int hwassist_bit) in if_sethwassist() argument
4350 ((struct ifnet *)ifp)->if_hwassist = hwassist_bit; in if_sethwassist()
4355 if_gethwassist(if_t ifp) in if_gethwassist() argument
4357 return ((struct ifnet *)ifp)->if_hwassist; in if_gethwassist()
4361 if_setmtu(if_t ifp, int mtu) in if_setmtu() argument
4363 ((struct ifnet *)ifp)->if_mtu = mtu; in if_setmtu()
4368 if_getmtu(if_t ifp) in if_getmtu() argument
4370 return ((struct ifnet *)ifp)->if_mtu; in if_getmtu()
4374 if_getmtu_family(if_t ifp, int family) in if_getmtu_family() argument
4380 return (dp->dom_ifmtu((struct ifnet *)ifp)); in if_getmtu_family()
4383 return (((struct ifnet *)ifp)->if_mtu); in if_getmtu_family()
4392 if_foreach_lladdr(if_t ifp, iflladdr_cb_t cb, void *cb_arg) in if_foreach_lladdr() argument
4400 IF_ADDR_RLOCK(ifp); in if_foreach_lladdr()
4401 CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { in if_foreach_lladdr()
4407 IF_ADDR_RUNLOCK(ifp); in if_foreach_lladdr()
4413 if_foreach_llmaddr(if_t ifp, iflladdr_cb_t cb, void *cb_arg) in if_foreach_llmaddr() argument
4421 IF_ADDR_RLOCK(ifp); in if_foreach_llmaddr()
4422 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { in if_foreach_llmaddr()
4428 IF_ADDR_RUNLOCK(ifp); in if_foreach_llmaddr()
4434 if_setsoftc(if_t ifp, void *softc) in if_setsoftc() argument
4436 ((struct ifnet *)ifp)->if_softc = softc; in if_setsoftc()
4441 if_getsoftc(if_t ifp) in if_getsoftc() argument
4443 return ((struct ifnet *)ifp)->if_softc; in if_getsoftc()
4447 if_setrcvif(struct mbuf *m, if_t ifp) in if_setrcvif() argument
4449 m->m_pkthdr.rcvif = (struct ifnet *)ifp; in if_setrcvif()
4466 if_sendq_empty(if_t ifp) in if_sendq_empty() argument
4468 return IFQ_DRV_IS_EMPTY(&((struct ifnet *)ifp)->if_snd); in if_sendq_empty()
4472 if_getifaddr(if_t ifp) in if_getifaddr() argument
4474 return ((struct ifnet *)ifp)->if_addr; in if_getifaddr()
4478 if_getamcount(if_t ifp) in if_getamcount() argument
4480 return ((struct ifnet *)ifp)->if_amcount; in if_getamcount()
4485 if_setsendqready(if_t ifp) in if_setsendqready() argument
4487 IFQ_SET_READY(&((struct ifnet *)ifp)->if_snd); in if_setsendqready()
4492 if_setsendqlen(if_t ifp, int tx_desc_count) in if_setsendqlen() argument
4494 IFQ_SET_MAXLEN(&((struct ifnet *)ifp)->if_snd, tx_desc_count); in if_setsendqlen()
4495 ((struct ifnet *)ifp)->if_snd.ifq_drv_maxlen = tx_desc_count; in if_setsendqlen()
4501 if_vlantrunkinuse(if_t ifp) in if_vlantrunkinuse() argument
4503 return ((struct ifnet *)ifp)->if_vlantrunk != NULL?1:0; in if_vlantrunkinuse()
4507 if_input(if_t ifp, struct mbuf* sendmp) in if_input() argument
4509 (*((struct ifnet *)ifp)->if_input)((struct ifnet *)ifp, sendmp); in if_input()
4520 if_setupmultiaddr(if_t ifp, void *mta, int *cnt, int max) in if_setupmultiaddr() argument
4526 CK_STAILQ_FOREACH(ifma, &((struct ifnet *)ifp)->if_multiaddrs, ifma_link) { in if_setupmultiaddr()
4543 if_multiaddr_array(if_t ifp, void *mta, int *cnt, int max) in if_multiaddr_array() argument
4547 if_maddr_rlock(ifp); in if_multiaddr_array()
4548 error = if_setupmultiaddr(ifp, mta, cnt, max); in if_multiaddr_array()
4549 if_maddr_runlock(ifp); in if_multiaddr_array()
4554 if_multiaddr_count(if_t ifp, int max) in if_multiaddr_count() argument
4560 if_maddr_rlock(ifp); in if_multiaddr_count()
4561 CK_STAILQ_FOREACH(ifma, &((struct ifnet *)ifp)->if_multiaddrs, ifma_link) { in if_multiaddr_count()
4568 if_maddr_runlock(ifp); in if_multiaddr_count()
4573 if_multi_apply(struct ifnet *ifp, int (*filter)(void *, struct ifmultiaddr *, int), void *arg) in if_multi_apply() argument
4578 if_maddr_rlock(ifp); in if_multi_apply()
4579 CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) in if_multi_apply()
4581 if_maddr_runlock(ifp); in if_multi_apply()
4586 if_dequeue(if_t ifp) in if_dequeue() argument
4589 IFQ_DRV_DEQUEUE(&((struct ifnet *)ifp)->if_snd, m); in if_dequeue()
4595 if_sendq_prepend(if_t ifp, struct mbuf *m) in if_sendq_prepend() argument
4597 IFQ_DRV_PREPEND(&((struct ifnet *)ifp)->if_snd, m); in if_sendq_prepend()
4602 if_setifheaderlen(if_t ifp, int len) in if_setifheaderlen() argument
4604 ((struct ifnet *)ifp)->if_hdrlen = len; in if_setifheaderlen()
4609 if_getlladdr(if_t ifp) in if_getlladdr() argument
4611 return (IF_LLADDR((struct ifnet *)ifp)); in if_getlladdr()
4623 struct ifnet *ifp = (struct ifnet *)ifh; in if_bpfmtap() local
4625 BPF_MTAP(ifp, m); in if_bpfmtap()
4631 struct ifnet *ifp = (struct ifnet *)ifh; in if_etherbpfmtap() local
4633 ETHER_BPF_MTAP(ifp, m); in if_etherbpfmtap()
4639 struct ifnet *ifp = (struct ifnet *)ifh; in if_vlancap() local
4640 VLAN_CAPABILITIES(ifp); in if_vlancap()
4644 if_sethwtsomax(if_t ifp, u_int if_hw_tsomax) in if_sethwtsomax() argument
4647 ((struct ifnet *)ifp)->if_hw_tsomax = if_hw_tsomax; in if_sethwtsomax()
4652 if_sethwtsomaxsegcount(if_t ifp, u_int if_hw_tsomaxsegcount) in if_sethwtsomaxsegcount() argument
4655 ((struct ifnet *)ifp)->if_hw_tsomaxsegcount = if_hw_tsomaxsegcount; in if_sethwtsomaxsegcount()
4660 if_sethwtsomaxsegsize(if_t ifp, u_int if_hw_tsomaxsegsize) in if_sethwtsomaxsegsize() argument
4663 ((struct ifnet *)ifp)->if_hw_tsomaxsegsize = if_hw_tsomaxsegsize; in if_sethwtsomaxsegsize()
4668 if_gethwtsomax(if_t ifp) in if_gethwtsomax() argument
4671 return (((struct ifnet *)ifp)->if_hw_tsomax); in if_gethwtsomax()
4675 if_gethwtsomaxsegcount(if_t ifp) in if_gethwtsomaxsegcount() argument
4678 return (((struct ifnet *)ifp)->if_hw_tsomaxsegcount); in if_gethwtsomaxsegcount()
4682 if_gethwtsomaxsegsize(if_t ifp) in if_gethwtsomaxsegsize() argument
4685 return (((struct ifnet *)ifp)->if_hw_tsomaxsegsize); in if_gethwtsomaxsegsize()
4689 if_setinitfn(if_t ifp, void (*init_fn)(void *)) in if_setinitfn() argument
4691 ((struct ifnet *)ifp)->if_init = init_fn; in if_setinitfn()
4695 if_setioctlfn(if_t ifp, int (*ioctl_fn)(if_t, u_long, caddr_t)) in if_setioctlfn() argument
4697 ((struct ifnet *)ifp)->if_ioctl = (void *)ioctl_fn; in if_setioctlfn()
4701 if_setstartfn(if_t ifp, void (*start_fn)(if_t)) in if_setstartfn() argument
4703 ((struct ifnet *)ifp)->if_start = (void *)start_fn; in if_setstartfn()
4707 if_settransmitfn(if_t ifp, if_transmit_fn_t start_fn) in if_settransmitfn() argument
4709 ((struct ifnet *)ifp)->if_transmit = start_fn; in if_settransmitfn()
4712 void if_setqflushfn(if_t ifp, if_qflush_fn_t flush_fn) in if_setqflushfn() argument
4714 ((struct ifnet *)ifp)->if_qflush = flush_fn; in if_setqflushfn()
4719 if_setgetcounterfn(if_t ifp, if_get_counter_t fn) in if_setgetcounterfn() argument
4722 ifp->if_get_counter = fn; in if_setgetcounterfn()