Lines Matching refs:ifb

310 static int bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p,
314 ifbond_flags_if_detaching(ifbond_ref ifb) in ifbond_flags_if_detaching() argument
316 return (ifb->ifb_flags & IFBF_IF_DETACHING) != 0; in ifbond_flags_if_detaching()
320 ifbond_flags_set_if_detaching(ifbond_ref ifb) in ifbond_flags_set_if_detaching() argument
322 ifb->ifb_flags |= IFBF_IF_DETACHING; in ifbond_flags_set_if_detaching()
327 ifbond_flags_lladdr(ifbond_ref ifb) in ifbond_flags_lladdr() argument
329 return (ifb->ifb_flags & IFBF_LLADDR) != 0; in ifbond_flags_lladdr()
333 ifbond_flags_change_in_progress(ifbond_ref ifb) in ifbond_flags_change_in_progress() argument
335 return (ifb->ifb_flags & IFBF_CHANGE_IN_PROGRESS) != 0; in ifbond_flags_change_in_progress()
339 ifbond_flags_set_change_in_progress(ifbond_ref ifb) in ifbond_flags_set_change_in_progress() argument
341 ifb->ifb_flags |= IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_set_change_in_progress()
346 ifbond_flags_clear_change_in_progress(ifbond_ref ifb) in ifbond_flags_clear_change_in_progress() argument
348 ifb->ifb_flags &= ~IFBF_CHANGE_IN_PROGRESS; in ifbond_flags_clear_change_in_progress()
353 ifbond_flags_promisc(ifbond_ref ifb) in ifbond_flags_promisc() argument
355 return (ifb->ifb_flags & IFBF_PROMISC) != 0; in ifbond_flags_promisc()
359 ifbond_flags_set_promisc(ifbond_ref ifb) in ifbond_flags_set_promisc() argument
361 ifb->ifb_flags |= IFBF_PROMISC; in ifbond_flags_set_promisc()
366 ifbond_flags_clear_promisc(ifbond_ref ifb) in ifbond_flags_clear_promisc() argument
368 ifb->ifb_flags &= ~IFBF_PROMISC; in ifbond_flags_clear_promisc()
659 static int bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp);
703 ifbond_retain(ifbond_ref ifb) in ifbond_retain() argument
705 os_ref_retain(&ifb->ifb_retain_count); in ifbond_retain()
709 ifbond_release(ifbond_ref ifb) in ifbond_release() argument
711 if (os_ref_release(&ifb->ifb_retain_count) != 0) { in ifbond_release()
716 printf("ifbond_release(%s)\n", ifb->ifb_name); in ifbond_release()
718 if (ifb->ifb_ifma_slow_proto != NULL) { in ifbond_release()
721 ifb->ifb_name); in ifbond_release()
723 (void) if_delmulti_anon(ifb->ifb_ifma_slow_proto->ifma_ifp, in ifbond_release()
724 ifb->ifb_ifma_slow_proto->ifma_addr); in ifbond_release()
725 IFMA_REMREF(ifb->ifb_ifma_slow_proto); in ifbond_release()
727 kfree_type(bondport_ref, ifb->ifb_distributing_max, in ifbond_release()
728 ifb->ifb_distributing_array); in ifbond_release()
729 if_clone_softc_deallocate(&bond_cloner, ifb); in ifbond_release()
753 ifbond_wait(ifbond_ref ifb, const char * msg) in ifbond_wait() argument
758 while (ifbond_flags_change_in_progress(ifb)) { in ifbond_wait()
760 printf("%s: %s msleep\n", ifb->ifb_name, msg); in ifbond_wait()
763 (void)msleep(ifb, &bond_lck_mtx, PZERO, msg, 0); in ifbond_wait()
766 ifbond_flags_set_change_in_progress(ifb); in ifbond_wait()
768 printf("%s: %s woke up\n", ifb->ifb_name, msg); in ifbond_wait()
784 ifbond_signal(ifbond_ref ifb, const char * msg) in ifbond_signal() argument
786 ifbond_flags_clear_change_in_progress(ifb); in ifbond_signal()
787 wakeup((caddr_t)ifb); in ifbond_signal()
789 printf("%s: %s wakeup\n", ifb->ifb_name, msg); in ifbond_signal()
1081 ifbond_ref ifb; in bond_setmulti() local
1087 ifb = ifnet_softc(ifp); in bond_setmulti()
1088 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_setmulti()
1089 || TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_setmulti()
1093 ifbond_retain(ifb); in bond_setmulti()
1094 ifbond_wait(ifb, "bond_setmulti"); in bond_setmulti()
1096 if (ifbond_flags_if_detaching(ifb)) { in bond_setmulti()
1104 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_setmulti()
1112 ifb->ifb_name, ifnet_name(port_ifp), in bond_setmulti()
1119 ifbond_signal(ifb, __func__); in bond_setmulti()
1121 ifbond_release(ifb); in bond_setmulti()
1137 ifbond_add_slow_proto_multicast(ifbond_ref ifb) in ifbond_add_slow_proto_multicast() argument
1152 error = if_addmulti_anon(ifb->ifb_ifp, (struct sockaddr *)&sdl, &ifma); in ifbond_add_slow_proto_multicast()
1154 ifb->ifb_ifma_slow_proto = ifma; in ifbond_add_slow_proto_multicast()
1163 ifbond_ref ifb; in bond_clone_create() local
1172 ifb = if_clone_softc_allocate(&bond_cloner); in bond_clone_create()
1173 if (ifb == NULL) { in bond_clone_create()
1177 os_ref_init(&ifb->ifb_retain_count, NULL); in bond_clone_create()
1178 TAILQ_INIT(&ifb->ifb_port_list); in bond_clone_create()
1179 TAILQ_INIT(&ifb->ifb_lag_list); in bond_clone_create()
1180 ifb->ifb_key = unit + 1; in bond_clone_create()
1183 if ((u_int32_t)snprintf(ifb->ifb_name, sizeof(ifb->ifb_name), "%s%d", in bond_clone_create()
1184 ifc->ifc_name, unit) >= sizeof(ifb->ifb_name)) { in bond_clone_create()
1185 ifbond_release(ifb); in bond_clone_create()
1193 bond_init.uniqueid = ifb->ifb_name; in bond_clone_create()
1194 bond_init.uniqueid_len = strlen(ifb->ifb_name); in bond_clone_create()
1210 bond_init.softc = ifb; in bond_clone_create()
1214 ifbond_release(ifb); in bond_clone_create()
1218 ifb->ifb_ifp = ifp; in bond_clone_create()
1227 ifbond_release(ifb); in bond_clone_create()
1230 error = ifbond_add_slow_proto_multicast(ifb); in bond_clone_create()
1234 ifb->ifb_name, error); in bond_clone_create()
1241 TAILQ_INSERT_HEAD(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_clone_create()
1248 bond_remove_all_interfaces(ifbond_ref ifb) in bond_remove_all_interfaces() argument
1258 while ((p = TAILQ_LAST(&ifb->ifb_port_list, port_list)) != NULL) { in bond_remove_all_interfaces()
1259 bond_remove_interface(ifb, p->po_ifp); in bond_remove_all_interfaces()
1265 bond_remove(ifbond_ref ifb) in bond_remove() argument
1268 ifbond_flags_set_if_detaching(ifb); in bond_remove()
1269 TAILQ_REMOVE(&g_bond->ifbond_list, ifb, ifb_bond_list); in bond_remove()
1270 bond_remove_all_interfaces(ifb); in bond_remove()
1291 ifbond_ref ifb; in bond_clone_destroy() local
1294 ifb = ifnet_softc(ifp); in bond_clone_destroy()
1295 if (ifb == NULL || ifnet_type(ifp) != IFT_IEEE8023ADLAG) { in bond_clone_destroy()
1299 if (ifbond_flags_if_detaching(ifb)) { in bond_clone_destroy()
1303 bond_remove(ifb); in bond_clone_destroy()
1312 ifbond_ref ifb; in bond_set_bpf_tap() local
1315 ifb = ifnet_softc(ifp); in bond_set_bpf_tap()
1316 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_bpf_tap()
1322 ifb->ifb_bpf_input = ifb->ifb_bpf_output = NULL; in bond_set_bpf_tap()
1326 ifb->ifb_bpf_input = func; in bond_set_bpf_tap()
1330 ifb->ifb_bpf_output = func; in bond_set_bpf_tap()
1334 ifb->ifb_bpf_input = ifb->ifb_bpf_output = func; in bond_set_bpf_tap()
1520 ifbond_ref ifb; in bond_output() local
1551 ifb = ifnet_softc(ifp); in bond_output()
1552 if (ifb == NULL || ifbond_flags_if_detaching(ifb) in bond_output()
1553 || ifb->ifb_distributing_count == 0) { in bond_output()
1556 h %= ifb->ifb_distributing_count; in bond_output()
1557 port_ifp = ifb->ifb_distributing_array[h]->po_ifp; in bond_output()
1558 bpf_func = ifb->ifb_bpf_output; in bond_output()
1589 ifbond_lookup_port(ifbond_ref ifb, struct ifnet * port_ifp) in ifbond_lookup_port() argument
1592 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in ifbond_lookup_port()
1603 ifbond_ref ifb; in bond_lookup_port() local
1606 TAILQ_FOREACH(ifb, &g_bond->ifbond_list, ifb_bond_list) { in bond_lookup_port()
1607 port = ifbond_lookup_port(ifb, port_ifp); in bond_lookup_port()
1619 ifbond_ref ifb; in bond_receive_lacpdu() local
1635 ifb = p->po_bond; in bond_receive_lacpdu()
1636 if (ifb->ifb_mode != IF_BOND_MODE_LACP) { in bond_receive_lacpdu()
1658 if (ifbond_selection(ifb)) { in bond_receive_lacpdu()
1659 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1663 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1664 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1666 event_code = (ifb->ifb_active_lag == NULL) in bond_receive_lacpdu()
1669 if (event_code != ifb->ifb_last_link_event) { in bond_receive_lacpdu()
1672 ifb->ifb_name); in bond_receive_lacpdu()
1674 bond_ifp = ifb->ifb_ifp; in bond_receive_lacpdu()
1675 ifb->ifb_last_link_event = event_code; in bond_receive_lacpdu()
1731 ifbond_ref ifb; in bond_input() local
1794 ifb = p->po_bond; in bond_input()
1795 ifp = ifb->ifb_ifp; in bond_input()
1796 bpf_func = ifb->ifb_bpf_input; in bond_input()
2045 bond_device_mtu(struct ifnet * ifp, ifbond_ref ifb) in bond_device_mtu() argument
2047 return ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_device_mtu()
2048 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_device_mtu()
2061 ifbond_ref ifb; in bond_add_interface() local
2078 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_add_interface()
2079 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2082 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_add_interface()
2086 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2097 ifbond_retain(ifb); in bond_add_interface()
2100 ifbond_wait(ifb, __func__); in bond_add_interface()
2102 if (ifbond_flags_if_detaching(ifb)) { in bond_add_interface()
2127 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2130 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_add_interface()
2146 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2156 p->po_bond = ifb; in bond_add_interface()
2162 TAILQ_INSERT_TAIL(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2163 ifb->ifb_port_count++; in bond_add_interface()
2176 new_max = ifb->ifb_port_count; in bond_add_interface()
2198 devmtu = bond_device_mtu(ifp, ifb); in bond_add_interface()
2204 ifb->ifb_name, bondport_get_name(p), devmtu, error); in bond_add_interface()
2214 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2225 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2243 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2249 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2260 if (ifbond_flags_promisc(ifb)) { in bond_add_interface()
2266 ifb->ifb_name, bondport_get_name(p), error); in bond_add_interface()
2280 if (ifb->ifb_distributing_count) { in bond_add_interface()
2281 bcopy(ifb->ifb_distributing_array, new_array, in bond_add_interface()
2282 sizeof(*new_array) * ifb->ifb_distributing_count); in bond_add_interface()
2284 old_array = ifb->ifb_distributing_array; in bond_add_interface()
2285 old_max = ifb->ifb_distributing_max; in bond_add_interface()
2286 ifb->ifb_distributing_array = new_array; in bond_add_interface()
2287 ifb->ifb_distributing_max = new_max; in bond_add_interface()
2289 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_add_interface()
2293 if (ifbond_selection(ifb)) { in bond_add_interface()
2294 event_code = (ifb->ifb_active_lag == NULL) in bond_add_interface()
2297 ifb->ifb_last_link_event = event_code; in bond_add_interface()
2302 if (ifb->ifb_distributing_count == 0) { in bond_add_interface()
2303 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_ON; in bond_add_interface()
2313 ifbond_signal(ifb, __func__); in bond_add_interface()
2338 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2349 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2360 ifb->ifb_name, bondport_get_name(p), error1); in bond_add_interface()
2379 ifb->ifb_name, bondport_get_name(p), in bond_add_interface()
2386 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_add_interface()
2387 ifb->ifb_port_count--; in bond_add_interface()
2390 if (TAILQ_EMPTY(&ifb->ifb_port_list)) { in bond_add_interface()
2391 ifb->ifb_altmtu = 0; in bond_add_interface()
2397 ifbond_signal(ifb, __func__); in bond_add_interface()
2399 ifbond_release(ifb); in bond_add_interface()
2405 bond_remove_interface(ifbond_ref ifb, struct ifnet * port_ifp) in bond_remove_interface() argument
2421 ifbond_retain(ifb); in bond_remove_interface()
2422 ifbond_wait(ifb, "bond_remove_interface"); in bond_remove_interface()
2424 p = ifbond_lookup_port(ifb, port_ifp); in bond_remove_interface()
2434 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2450 TAILQ_REMOVE(&ifb->ifb_port_list, p, po_port_list); in bond_remove_interface()
2451 ifb->ifb_port_count--; in bond_remove_interface()
2453 ifp = ifb->ifb_ifp; in bond_remove_interface()
2454 head_port = TAILQ_FIRST(&ifb->ifb_port_list); in bond_remove_interface()
2457 if (ifbond_flags_lladdr(ifb) == FALSE) { in bond_remove_interface()
2462 ifb->ifb_altmtu = 0; in bond_remove_interface()
2463 } else if (ifbond_flags_lladdr(ifb) == FALSE in bond_remove_interface()
2469 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_remove_interface()
2470 if (ifbond_selection(ifb) || active_lag) { in bond_remove_interface()
2471 event_code = (ifb->ifb_active_lag == NULL) in bond_remove_interface()
2474 ifb->ifb_last_link_event = event_code; in bond_remove_interface()
2480 if (was_distributing && ifb->ifb_distributing_count == 0) { in bond_remove_interface()
2481 ifb->ifb_last_link_event = event_code = KEV_DL_LINK_OFF; in bond_remove_interface()
2501 TAILQ_FOREACH(scan_port, &ifb->ifb_port_list, po_port_list) { in bond_remove_interface()
2515 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2528 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2539 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2550 ifb->ifb_name, bondport_get_name(p), error); in bond_remove_interface()
2559 ifb->ifb_name, bondport_get_name(p), in bond_remove_interface()
2580 ifbond_release(ifb); in bond_remove_interface()
2583 ifbond_signal(ifb, __func__); in bond_remove_interface()
2584 ifbond_release(ifb); in bond_remove_interface()
2589 bond_set_lacp_mode(ifbond_ref ifb) in bond_set_lacp_mode() argument
2593 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_lacp_mode()
2601 bond_set_static_mode(ifbond_ref ifb) in bond_set_static_mode() argument
2606 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_static_mode()
2640 ifbond_ref ifb; in bond_set_mode() local
2643 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mode()
2644 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mode()
2646 return (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mode()
2648 if (ifb->ifb_mode == mode) { in bond_set_mode()
2653 ifbond_retain(ifb); in bond_set_mode()
2654 ifbond_wait(ifb, "bond_set_mode"); in bond_set_mode()
2657 if (ifb->ifb_mode == mode) { in bond_set_mode()
2662 ifb->ifb_mode = mode; in bond_set_mode()
2664 bond_set_lacp_mode(ifb); in bond_set_mode()
2667 if (ifbond_selection(ifb)) { in bond_set_mode()
2668 event_code = (ifb->ifb_active_lag == NULL) in bond_set_mode()
2673 bond_set_static_mode(ifb); in bond_set_mode()
2674 event_code = (ifb->ifb_distributing_count == 0) in bond_set_mode()
2678 ifb->ifb_last_link_event = event_code; in bond_set_mode()
2681 ifbond_signal(ifb, __func__); in bond_set_mode()
2683 ifbond_release(ifb); in bond_set_mode()
2692 bond_get_status(ifbond_ref ifb, struct if_bond_req * ibr_p, user_addr_t datap) in bond_get_status() argument
2705 ibsr->ibsr_key = ifb->ifb_key; in bond_get_status()
2706 ibsr->ibsr_mode = ifb->ifb_mode; in bond_get_status()
2707 ibsr->ibsr_total = ifb->ifb_port_count; in bond_get_status()
2718 count = (ifb->ifb_port_count < ibsr->ibsr_count) in bond_get_status()
2719 ? ifb->ifb_port_count : ibsr->ibsr_count; in bond_get_status()
2720 TAILQ_FOREACH(port, &ifb->ifb_port_list, po_port_list) { in bond_get_status()
2730 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_get_status()
2767 ifbond_ref ifb; in bond_set_promisc() local
2776 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_promisc()
2777 if (ifb == NULL) { in bond_set_promisc()
2782 if (is_promisc == ifbond_flags_promisc(ifb)) { in bond_set_promisc()
2787 ifbond_retain(ifb); in bond_set_promisc()
2788 ifbond_wait(ifb, __func__); in bond_set_promisc()
2789 if (ifbond_flags_if_detaching(ifb)) { in bond_set_promisc()
2798 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_promisc()
2811 ifb->ifb_name, port_ifp->if_xname, val, error); in bond_set_promisc()
2815 ifb->ifb_name, port_ifp->if_xname, val); in bond_set_promisc()
2832 ifbond_flags_set_promisc(ifb); in bond_set_promisc()
2834 ifbond_flags_clear_promisc(ifb); in bond_set_promisc()
2838 ifbond_signal(ifb, __func__); in bond_set_promisc()
2840 ifbond_release(ifb); in bond_set_promisc()
2847 bond_get_mtu_values(ifbond_ref ifb, int * ret_min, int * ret_max) in bond_get_mtu_values() argument
2853 if (TAILQ_FIRST(&ifb->ifb_port_list) != NULL) { in bond_get_mtu_values()
2856 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_get_mtu_values()
2872 bond_set_mtu_on_ports(ifbond_ref ifb, int mtu) in bond_set_mtu_on_ports() argument
2877 TAILQ_FOREACH(p, &ifb->ifb_port_list, po_port_list) { in bond_set_mtu_on_ports()
2881 ifb->ifb_name, bondport_get_name(p), error); in bond_set_mtu_on_ports()
2892 ifbond_ref ifb; in bond_set_mtu() local
2899 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_set_mtu()
2900 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2901 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_set_mtu()
2904 ifbond_retain(ifb); in bond_set_mtu()
2905 ifbond_wait(ifb, "bond_set_mtu"); in bond_set_mtu()
2908 if (ifnet_softc(ifp) == NULL || ifbond_flags_if_detaching(ifb)) { in bond_set_mtu()
2912 bond_get_mtu_values(ifb, &mtu_min, &mtu_max); in bond_set_mtu()
2925 new_max = (mtu > ifb->ifb_altmtu) ? mtu : ifb->ifb_altmtu; in bond_set_mtu()
2927 old_max = ((int)ifnet_mtu(ifp) > ifb->ifb_altmtu) in bond_set_mtu()
2928 ? (int)ifnet_mtu(ifp) : ifb->ifb_altmtu; in bond_set_mtu()
2932 error = bond_set_mtu_on_ports(ifb, new_max); in bond_set_mtu()
2935 (void)bond_set_mtu_on_ports(ifb, old_max); in bond_set_mtu()
2941 ifb->ifb_altmtu = mtu; in bond_set_mtu()
2948 ifbond_signal(ifb, __func__); in bond_set_mtu()
2949 ifbond_release(ifb); in bond_set_mtu()
2962 ifbond_ref ifb; in bond_ioctl() local
2982 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
2983 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
2985 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
2993 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_ioctl()
2994 if (ifb->ifb_active_lag != NULL) { in bond_ioctl()
2995 ifmr->ifm_active = ifb->ifb_active_lag->lag_active_media; in bond_ioctl()
2998 } else if (ifb->ifb_distributing_count > 0) { in bond_ioctl()
3000 = ifb->ifb_distributing_array[0]->po_media_info.mi_active; in bond_ioctl()
3021 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3022 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3024 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3027 ifr->ifr_devmtu.ifdm_current = bond_device_mtu(ifp, ifb); in bond_ioctl()
3028 bond_get_mtu_values(ifb, &ifr->ifr_devmtu.ifdm_min, in bond_ioctl()
3035 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3036 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3038 error = (ifb == NULL) ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3041 ifr->ifr_mtu = ifb->ifb_altmtu; in bond_ioctl()
3089 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3090 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3092 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3094 error = bond_remove_interface(ifb, port_ifp); in bond_ioctl()
3137 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_ioctl()
3138 if (ifb == NULL || ifbond_flags_if_detaching(ifb)) { in bond_ioctl()
3140 return ifb == NULL ? EOPNOTSUPP : EBUSY; in bond_ioctl()
3144 error = bond_get_status(ifb, &ibr, user_addr); in bond_ioctl()
3172 ifbond_ref ifb; in bond_if_free() local
3178 ifb = (ifbond_ref)ifnet_softc(ifp); in bond_if_free()
3179 if (ifb == NULL) { in bond_if_free()
3183 ifbond_release(ifb); in bond_if_free()
3193 ifbond_ref ifb; in bond_handle_event() local
3215 ifb = p->po_bond; in bond_handle_event()
3216 old_distributing_count = ifb->ifb_distributing_count; in bond_handle_event()
3220 bond_remove_interface(ifb, p->po_ifp); in bond_handle_event()
3231 if (ifb->ifb_mode == IF_BOND_MODE_LACP) { in bond_handle_event()
3232 if (ifbond_selection(ifb)) { in bond_handle_event()
3233 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3237 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3238 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3240 event_code = (ifb->ifb_active_lag == NULL) in bond_handle_event()
3243 if (event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3246 ifb->ifb_name); in bond_handle_event()
3248 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3249 ifb->ifb_last_link_event = event_code; in bond_handle_event()
3258 && ifb->ifb_distributing_count != 0) { in bond_handle_event()
3261 && ifb->ifb_distributing_count == 0) { in bond_handle_event()
3264 if (event_code != 0 && event_code != ifb->ifb_last_link_event) { in bond_handle_event()
3265 bond_ifp = ifb->ifb_ifp; in bond_handle_event()
3266 ifb->ifb_last_link_event = event_code; in bond_handle_event()