Lines Matching refs:mp

125 static int	nd_ill_forward_set(queue_t *q, mblk_t *mp,
132 mblk_t *mp, boolean_t need_up);
134 mblk_t *mp, boolean_t need_up);
136 queue_t *q, mblk_t *mp, boolean_t need_up);
138 mblk_t *mp);
140 mblk_t *mp);
142 queue_t *q, mblk_t *mp, boolean_t need_up);
143 static int ip_sioctl_plink_ipmod(ipsq_t *ipsq, queue_t *q, mblk_t *mp,
146 static void ip_wput_ioctl(queue_t *q, mblk_t *mp);
150 queue_t *q, mblk_t *mp, boolean_t need_up);
160 static int ipif_logical_down(ipif_t *ipif, queue_t *q, mblk_t *mp);
164 static int ipif_set_values(queue_t *q, mblk_t *mp,
166 static int ipif_set_values_tail(ill_t *ill, ipif_t *ipif, mblk_t *mp,
172 boolean_t isv6, zoneid_t zoneid, queue_t *q, mblk_t *mp, ipsq_func_t func,
177 static int ill_dl_up(ill_t *ill, ipif_t *ipif, mblk_t *mp, queue_t *q);
621 mblk_t *mp;
624 mp = mpp[0];
625 mpp[0] = mp->b_next;
626 for (mp1 = mp; mp1 != NULL; mp1 = mp1->b_cont) {
630 freemsg(mp);
724 mblk_t *mp;
728 mp = ip_dlpi_alloc(sizeof (*dlur) + addr_length + abs_sap_length,
730 if (mp == NULL)
732 dlur = (dl_unitdata_req_t *)mp->b_rptr;
742 return (mp);
746 * Add the pending mp to the list. There can be only 1 pending mp
783 * could have finished cleaning up the pending mp list,
784 * If so we should not add another mp to the list negating
810 * Retrieve the ipx_pending_mp and return it. There can be only 1 mp
836 * This mp did a refhold on the conn, at the start of the ioctl.
849 * Cleanup the ioctl mp queued in ipx_pending_mp
860 mblk_t *mp;
870 mp = ipx->ipx_pending_mp;
872 if (mp == NULL || mp->b_queue != CONNP_TO_WQ(connp)) {
887 * we do the cleanup only if there is a pending mp.
889 if (mp == NULL && ill->ill_error == 0) {
906 if (mp == NULL)
909 q = mp->b_queue;
910 mp->b_next = NULL;
911 mp->b_prev = NULL;
912 mp->b_queue = NULL;
914 if (DB_TYPE(mp) == M_IOCTL || DB_TYPE(mp) == M_IOCDATA) {
920 ip_ioctl_finish(q, mp, ENXIO, NO_COPYOUT, NULL);
922 ip_ioctl_finish(q, mp, ENXIO, CONN_CLOSE, NULL);
928 inet_freemsg(mp);
961 * Cleanup the ioctl mp's queued in ipsq_xopq_pending_mp if any.
962 * In the case of ioctl from a conn, there can be only 1 mp
972 /* Unlink the mblk from the pending mp list */
1029 * Check for a queued ioctl. If the ioctl has not yet started, the mp
1031 * started the mp could be present in ipx_pending_mp. Note that if
1125 ipif_all_down_tail(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy_arg)
1129 freemsg(mp);
1139 ill_down_start(queue_t *q, mblk_t *mp)
1180 * Atomically test and add the pending mp if references are active.
1186 mp, ILL_DOWN);
1197 mblk_t *mp;
1215 mp = ill->ill_saved_ire_mp;
1219 freemsg(mp);
1278 ill_fastpath_ack(ill_t *ill, mblk_t *mp)
1280 mblk_t *mp1 = mp;
1291 mp = mp->b_cont;
1293 if (mp == NULL)
1295 if (mp->b_cont != NULL)
1296 nce_fastpath_update(ill, mp);
1299 freemsg(mp);
1311 mblk_t *mp;
1334 if ((mp = mkiocb(DL_IOC_HDR_INFO)) == NULL)
1337 mp->b_cont = copyb(dlur_mp);
1338 if (mp->b_cont == NULL) {
1339 freeb(mp);
1343 ioc = (struct iocblk *)mp->b_rptr;
1344 ioc->ioc_count = msgdsize(mp->b_cont);
1348 putnext(ill->ill_wq, mp);
1355 mblk_t *mp;
1375 mp = ip_dlpi_alloc(sizeof (dl_capability_req_t), DL_CAPABILITY_REQ);
1376 if (mp == NULL)
1379 ill_capability_send(ill, mp);
1406 mblk_t *mp;
1429 mp = allocb_wait(size + sizeof (dl_capability_req_t), BPRI_MED,
1432 mp->b_datap->db_type = M_PROTO;
1433 bzero(mp->b_rptr, size + sizeof (dl_capability_req_t));
1435 capb = (dl_capability_req_t *)mp->b_rptr;
1440 mp->b_wptr += sizeof (dl_capability_req_t);
1446 ill_capability_hcksum_reset_fill(ill, mp);
1447 ill_capability_zerocopy_reset_fill(ill, mp);
1448 ill_capability_dld_reset_fill(ill, mp);
1450 ill->ill_capab_reset_mp = mp;
1454 ill_capability_id_ack(ill_t *ill, mblk_t *mp, dl_capability_sub_t *outers)
1472 if (capend > mp->b_wptr) {
1497 ill_capability_dispatch(ill, mp, inners);
1501 ill_capability_dld_reset_fill(ill_t *ill, mblk_t *mp)
1512 dl_subcap = (dl_capability_sub_t *)mp->b_wptr;
1516 mp->b_wptr += sizeof (dl_capability_sub_t) + sizeof (dl_capab_dld_t);
1520 ill_capability_dispatch(ill_t *ill, mblk_t *mp, dl_capability_sub_t *subp)
1532 ill_capability_vrrp_ack(ill, mp, subp);
1538 ill_capability_hcksum_ack(ill, mp, subp);
1541 ill_capability_zerocopy_ack(ill, mp, subp);
1544 ill_capability_dld_ack(ill, mp, subp);
1559 ill_capability_vrrp_ack(ill_t *ill, mblk_t *mp, dl_capability_sub_t *isub)
1576 if (capend > mp->b_wptr) {
1598 ill_capability_hcksum_ack(ill_t *ill, mblk_t *mp, dl_capability_sub_t *isub)
1619 if (capend > mp->b_wptr) {
1736 ill_capability_hcksum_reset_fill(ill_t *ill, mblk_t *mp)
1746 dl_subcap = (dl_capability_sub_t *)mp->b_wptr;
1754 mp->b_wptr += sizeof (*dl_subcap) + sizeof (*hck_subcap);
1758 ill_capability_zerocopy_ack(ill_t *ill, mblk_t *mp, dl_capability_sub_t *isub)
1779 if (capend > mp->b_wptr) {
1870 ill_capability_zerocopy_reset_fill(ill_t *ill, mblk_t *mp)
1880 dl_subcap = (dl_capability_sub_t *)mp->b_wptr;
1889 mp->b_wptr += sizeof (*dl_subcap) + sizeof (*zerocopy_subcap);
1898 ill_capability_dld_ack(ill_t *ill, mblk_t *mp, dl_capability_sub_t *isub)
1916 if (capend > mp->b_wptr) {
2231 mblk_t *mp;
2240 mp = ipst->ips_capab_taskq_head;
2241 while (mp != NULL) {
2242 ipst->ips_capab_taskq_head = mp->b_next;
2246 mp->b_next = NULL;
2249 ill_capability_ack_thr, mp, TQ_SLEEP) != 0);
2251 mp = ipst->ips_capab_taskq_head;
2273 mblk_t *mp = arg;
2279 ill = (ill_t *)mp->b_prev;
2280 mp->b_prev = NULL;
2303 capp = (dl_capability_ack_t *)mp->b_rptr;
2311 if ((sizeof (*capp) + capp->dl_sub_length) > MBLKL(mp)) {
2329 ill_capability_id_ack(ill, mp, subp);
2332 ill_capability_dispatch(ill, mp, subp);
2338 inet_freemsg(mp);
2348 ill_capability_ack(ill_t *ill, mblk_t *mp)
2352 mp->b_prev = (mblk_t *)ill;
2353 ASSERT(mp->b_next == NULL);
2355 if (taskq_dispatch(system_taskq, ill_capability_ack_thr, mp,
2366 ipst->ips_capab_taskq_head = mp;
2368 ipst->ips_capab_taskq_tail->b_next = mp;
2370 ipst->ips_capab_taskq_tail = mp;
2401 mblk_t *mp;
2449 mp = ipf->ipf_mp->b_cont;
2450 for (; mp; mp = mp->b_cont) {
2452 IP_REASS_SET_START(mp, 0);
2453 IP_REASS_SET_END(mp, 0);
2455 mp = ipf->ipf_mp->b_cont;
2472 mp->b_next = send_icmp_head_v6;
2473 send_icmp_head_v6 = mp;
2475 freemsg(mp);
2479 mp->b_next = send_icmp_head;
2480 send_icmp_head = mp;
2482 freemsg(mp);
2497 mp = send_icmp_head_v6;
2499 mp->b_next = NULL;
2500 ip6h = (ip6_t *)mp->b_rptr;
2510 ip_drop_input("ICMP_TIME_EXCEEDED reass", mp, ill);
2511 icmp_time_exceeded_v6(mp,
2519 mp = send_icmp_head;
2521 mp->b_next = NULL;
2523 dst = ((ipha_t *)mp->b_rptr)->ipha_dst;
2533 ip_drop_input("ICMP_TIME_EXCEEDED reass", mp, ill);
2534 icmp_time_exceeded(mp,
2635 mblk_t *mp;
2645 mp = ipf->ipf_mp;
2647 for (tmp = mp; tmp; tmp = tmp->b_cont) {
2657 ip_drop_input("ipIfStatsReasmFails", mp, ill);
2658 freemsg(mp);
4132 ip_ll_subnet_defaults(ill_t *ill, mblk_t *mp)
4148 dlia = (dl_info_ack_t *)mp->b_rptr;
4164 brdcst_addr = mi_offset_param(mp, dlia->dl_brdcst_addr_offset,
4222 freemsg(mp);
4312 sel1 = (dl_qos_cl_sel1_t *)mi_offset_param(mp, dlia->dl_qos_offset,
4320 freemsg(mp);
4922 mblk_t *mp;
4978 mp = ipsq_pending_mp_get(ipsq, &connp);
4982 ASSERT(mp != NULL);
4988 switch (mp->b_datap->db_type) {
4994 dlindp = (dl_notify_ind_t *)mp->b_rptr;
4999 qwriter_ip(ill, ill->ill_rq, mp,
5003 qwriter_ip(ill, ill->ill_rq, mp,
5014 qwriter_ip(ill, ill->ill_rq, mp, ipif_all_down_tail, CUR_OP,
5021 ill->ill_wq), mp, ip_reprocess_ioctl, CUR_OP, B_TRUE);
5025 cmn_err(CE_PANIC, "ipif_ill_refrele_tail mp %p "
5026 "db_type %d\n", (void *)mp, mp->b_datap->db_type);
6106 ip_siocaddrt(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
6123 mp1 = mp->b_cont->b_cont;
6158 ip_siocdelrt(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
6175 mp1 = mp->b_cont->b_cont;
6207 * Enqueue the mp onto the ipsq, chained by b_next.
6209 * where this mp originated.
6212 ipsq_enq(ipsq_t *ipsq, queue_t *q, mblk_t *mp, ipsq_func_t func, int type,
6222 mp->b_queue = q;
6223 mp->b_prev = (void *)func;
6224 mp->b_next = NULL;
6230 ipx->ipx_mptail->b_next = mp;
6233 ipx->ipx_mphead = mp;
6235 ipx->ipx_mptail = mp;
6241 ipsq->ipsq_xopq_mptail->b_next = mp;
6244 ipsq->ipsq_xopq_mphead = mp;
6246 ipsq->ipsq_xopq_mptail = mp;
6254 ipsq->ipsq_switch_mp = mp;
6297 mblk_t *mp;
6319 if ((mp = ipx->ipx_mphead) != NULL) {
6320 ipx->ipx_mphead = mp->b_next;
6323 mp->b_next = (void *)ipsq;
6458 if ((mp = xopipsq->ipsq_switch_mp) != NULL) {
6460 ASSERT(mp->b_next == NULL);
6461 mp->b_next = (void *)xopipsq;
6465 if ((mp = xopipsq->ipsq_xopq_mphead) != NULL) {
6466 xopipsq->ipsq_xopq_mphead = mp->b_next;
6469 mp->b_next = (void *)xopipsq;
6519 return (mp);
6655 ipsq_try_enter_internal(ill_t *ill, queue_t *q, mblk_t *mp, ipsq_func_t func,
6707 ipsq_enq(ipsq, q, mp, func, type, ill);
6750 * non-NULL, then `func' will be called back with `q' and `mp' once the IPSQ
6751 * can be entered. If `func' is NULL, then `q' and `mp' are ignored.
6754 ipsq_try_enter(ipif_t *ipif, ill_t *ill, queue_t *q, mblk_t *mp,
6768 ipsq = ipsq_try_enter_internal(ill, q, mp, func, type, reentry_ok);
6777 * cannot be entered, the mp is queued for completion.
6780 qwriter_ip(ill_t *ill, queue_t *q, mblk_t *mp, ipsq_func_t func, int type,
6785 ipsq = ipsq_try_enter(NULL, ill, q, mp, func, type, reentry_ok);
6796 (*func)(ipsq, q, mp, NULL);
6808 mblk_t *mp;
6824 mp = ipsq_dq(ipsq);
6825 mp_ipsq = (mp == NULL) ? NULL : (ipsq_t *)mp->b_next;
6838 if (mp == NULL)
6841 q = mp->b_queue;
6842 func = (ipsq_func_t)mp->b_prev;
6844 mp->b_next = mp->b_prev = NULL;
6845 mp->b_queue = NULL;
6853 (*func)(ipsq, q, mp, NULL);
7001 mblk_t *mp;
7011 for (prev = NULL, mp = ipx->ipx_mphead; mp != NULL; mp = mp_next) {
7012 mp_next = mp->b_next;
7013 q = mp->b_queue;
7015 /* dequeue mp */
7017 ipx->ipx_mphead = mp->b_next;
7019 prev->b_next = mp->b_next;
7020 if (ipx->ipx_mptail == mp) {
7024 inet_freemsg(mp);
7026 prev = mp;
7043 ip_extract_lifreq(queue_t *q, mblk_t *mp, const ip_ioctl_cmd_t *ipip,
7077 mp1 = mp->b_cont->b_cont;
7129 isv6, zoneid, q, mp, ip_process_ioctl, &err, ipst);
7274 mblk_t *mp, ip_ioctl_cmd_t *ipip, void *ifreq)
7282 nump = (int *)mp->b_cont->b_cont->b_rptr;
7294 queue_t *q, mblk_t *mp, ip_ioctl_cmd_t *ipip, void *ifreq)
7303 mp1 = mp->b_cont->b_cont;
7324 mblk_t *mp, ip_ioctl_cmd_t *ipip, void *ifreq)
7342 mp1 = mp->b_cont->b_cont;
7343 iocp = (struct iocblk *)mp->b_rptr;
7405 mp1 = mi_copyout_alloc(q, mp,
7468 mblk_t *mp, ip_ioctl_cmd_t *ipip, void *ifreq)
7476 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
7492 mp1 = mp->b_cont->b_cont;
7526 mp1 = mi_copyout_alloc(q, mp,
7583 mblk_t *mp, ip_ioctl_cmd_t *ipip, void *ifreq)
7597 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
7610 mp1 = mp->b_cont->b_cont;
7681 mp1 = mi_copyout_alloc(q, mp,
7767 ip_sioctl_ip6addrpolicy(queue_t *q, mblk_t *mp)
7772 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
7782 miocnak(q, mp, 0, EINVAL);
7786 data_mp = mp->b_cont;
7802 miocnak(q, mp, 0, ENOMEM);
7807 mp->b_cont = data_mp;
7840 ASSERT(mp->b_prev == NULL);
7841 mp->b_prev = (void *)q;
7849 * data structure here, and hang it off a new 'mp'; thus the
7858 ip6_asp_replace(mp, table, table_size, B_FALSE, ipst,
7863 DB_TYPE(mp) = (iocp->ioc_error == 0) ? M_IOCACK : M_IOCNAK;
7864 qreply(q, mp);
7868 ip_sioctl_dstinfo(queue_t *q, mblk_t *mp)
7882 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
7894 data_mp = mp->b_cont;
7896 miocnak(q, mp, 0, EINVAL);
7904 miocnak(q, mp, 0, ENOMEM);
7909 mp->b_cont = data_mp;
7986 miocack(q, mp, iocp->ioc_count, 0);
8004 ip_sioctl_tmyaddr(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
8021 mp1 = mp->b_cont->b_cont;
8083 ip_sioctl_tonlink(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
8100 mp1 = mp->b_cont->b_cont;
8164 ip_sioctl_tmysite(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
8173 ip_sioctl_arp(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
8196 iocp = (struct iocblk *)mp->b_rptr;
8200 xar = (struct xarpreq *)mp->b_cont->b_cont->b_rptr;
8219 ar = (struct arpreq *)mp->b_cont->b_cont->b_rptr;
8333 ip_sioctl_garp_reply(mp, ncec->ncec_ill, lladdr, flags);
8413 ip_extract_arpreq(queue_t *q, mblk_t *mp, const ip_ioctl_cmd_t *ipip,
8437 mp1 = mp->b_cont->b_cont;
8581 ip_sioctl_plink(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy_arg)
8585 int ioccmd = ((struct iocblk *)mp->b_rptr)->ioc_cmd;
8591 mp1 = mp->b_cont; /* This is the linkblk info */
8594 err = ip_sioctl_plink_ipmod(ipsq, q, mp, ioccmd, li);
8598 miocack(q, mp, 0, 0);
8600 miocnak(q, mp, 0, err);
8611 * by `mp' and `li' for the IP module stream (if li->q_bot is in fact an IP
8617 ip_sioctl_plink_ipmod(ipsq_t *ipsq, queue_t *q, mblk_t *mp, int ioccmd,
8667 ipsq = ipsq_try_enter(NULL, ill, q, mp, ip_sioctl_plink,
8788 getset_ioctl_checks(mblk_t *mp)
8790 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
8791 mblk_t *mp1 = mp->b_cont;
8850 ip_sioctl_getsetprop(queue_t *q, mblk_t *mp)
8852 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
8853 mblk_t *mp1 = mp->b_cont;
8865 if (!getset_ioctl_checks(mp)) {
8866 miocnak(q, mp, 0, EINVAL);
8892 miocnak(q, mp, 0, EINVAL);
8898 miocnak(q, mp, 0, ENOENT);
8904 cr = msg_getcred(mp, NULL);
8917 miocnak(q, mp, 0, err);
8920 miocack(q, mp, 0, 0);
8922 miocack(q, mp, iocp->ioc_count, 0);
8933 ip_process_legacy_nddprop(queue_t *q, mblk_t *mp)
8935 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
8936 mblk_t *mp1 = mp->b_cont;
8947 miocnak(q, mp, 0, EINVAL);
8962 miocnak(q, mp, 0, EINVAL);
8972 miocack(q, mp, iocp->ioc_count, 0);
8989 miocack(q, mp, 0, 0);
8997 miocnak(q, mp, 0, err);
9007 ip_sioctl_copyin_resume(ipsq_t *dummy_ipsq, queue_t *q, mblk_t *mp,
9010 ip_sioctl_copyin_setup(q, mp);
9022 ip_sioctl_copyin_setup(queue_t *q, mblk_t *mp)
9025 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
9046 putnext(q, mp);
9057 ip6_asp_pending_op(q, mp, ip_sioctl_copyin_resume);
9075 if (mp->b_cont == NULL && !(ipip->ipi_flags & IPI_NULL_BCONT))
9085 cr = msg_getcred(mp, NULL);
9093 miocnak(q, mp, 0, secpolicy_ip_config(cr, B_FALSE));
9104 mi_copyin(q, mp, NULL, ipip->ipi_copyin_size);
9120 mi_copyin(q, mp, NULL, copyin_size);
9126 mi_copyin(q, mp, NULL, copyin_size);
9131 mi_copyin(q, mp, NULL, copyin_size);
9135 ip_sioctl_ip6addrpolicy(q, mp);
9140 ip_sioctl_ip6addrpolicy(q, mp);
9144 ip_sioctl_dstinfo(q, mp);
9150 ip_process_legacy_nddprop(q, mp);
9155 ip_sioctl_getsetprop(q, mp);
9175 ip_sioctl_plink(NULL, q, mp, NULL);
9179 ip_wput_ioctl(q, mp);
9187 mi_copyin(q, mp, NULL, copyin_size);
9196 if (mp->b_cont != NULL) {
9197 freemsg(mp->b_cont);
9198 mp->b_cont = NULL;
9201 mp->b_datap->db_type = M_IOCNAK;
9203 qreply(q, mp);
9207 ip_sioctl_garp_reply(mblk_t *mp, ill_t *ill, void *hwaddr, int flags)
9219 iocp = (struct iocblk *)mp->b_rptr;
9222 tmp = (mp->b_cont)->b_cont; /* xarpreq/arpreq */
9282 ip_sioctl_addif(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
9307 mp1 = mp->b_cont->b_cont;
9378 ipsq = ipsq_try_enter(NULL, ill, q, mp, ip_process_ioctl, NEW_OP,
9422 err = ip_sioctl_addr(ipif, sin, q, mp,
9439 ip_sioctl_removeif(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9496 CONNP_TO_WQ(connp), mp, ILL_FREE);
9570 success = ipsq_pending_mp_add(connp, ipif, CONNP_TO_WQ(connp), mp,
9587 mblk_t *mp, ip_ioctl_cmd_t *ipip, void *dummy_if_req)
9616 ip_sioctl_prefix(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9647 err = ip_sioctl_addr(ipif, sin, q, mp,
9658 ip_sioctl_prefix_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9663 return (ip_sioctl_addr_restart(ipif, sin, q, mp, ipip, ifreq));
9672 ip_sioctl_addr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9785 err = ipif_logical_down(ipif, q, mp);
9792 err = ip_sioctl_addr_tail(ipif, sin, q, mp, need_up);
9797 ip_sioctl_addr_tail(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9811 iocp = (mp != NULL) ? (struct iocblk *)mp->b_rptr : NULL;
9896 err = ipif_up(ipif, q, mp);
9923 ip_sioctl_addr_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9930 return (ip_sioctl_addr_tail(ipif, sin, q, mp, B_TRUE));
9935 ip_sioctl_get_addr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
9975 ip_sioctl_dstaddr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10022 err = ipif_logical_down(ipif, q, mp);
10032 err = ip_sioctl_dstaddr_tail(ipif, sin, q, mp, need_up);
10037 ip_sioctl_dstaddr_tail(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10122 err = ipif_up(ipif, q, mp);
10139 ip_sioctl_dstaddr_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10145 return (ip_sioctl_dstaddr_tail(ipif, sin, q, mp, B_TRUE));
10150 ip_sioctl_get_dstaddr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10219 ip_sioctl_flags(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10539 err = ipif_down(ipif, q, mp);
10558 q, mp, ILL_DOWN);
10566 return (ip_sioctl_flags_tail(ipif, flags, q, mp));
10570 ip_sioctl_flags_tail(ipif_t *ipif, uint64_t flags, queue_t *q, mblk_t *mp)
10647 err = ill_up_ipifs(ill, q, mp);
10656 err = ipif_up(ipif, q, mp);
10691 ip_sioctl_flags_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10717 return (ip_sioctl_flags_tail(ipif, flags, q, mp));
10725 ip_sioctl_get_flags(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10768 ip_sioctl_mtu(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10833 ip_sioctl_get_mtu(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10859 ip_sioctl_brdaddr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10910 ip_sioctl_get_brdaddr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10931 ip_sioctl_netmask(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
10981 err = ipif_logical_down(ipif, q, mp);
10985 err = ip_sioctl_netmask_tail(ipif, sin, q, mp);
10990 ip_sioctl_netmask_tail(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp)
11015 err = ipif_up(ipif, q, mp);
11034 ip_sioctl_netmask_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11040 return (ip_sioctl_netmask_tail(ipif, sin, q, mp));
11046 ip_sioctl_get_netmask(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11079 ip_sioctl_metric(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11113 ip_sioctl_get_metric(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11137 ip_sioctl_muxid(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11164 ip_sioctl_get_muxid(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11194 ip_sioctl_subnet(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11251 err = ipif_logical_down(ipif, q, mp);
11258 err = ip_sioctl_subnet_tail(ipif, v6addr, v6mask, q, mp, need_up);
11264 queue_t *q, mblk_t *mp, boolean_t need_up)
11290 err = ipif_up(ipif, q, mp);
11299 ip_sioctl_subnet_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11326 return (ip_sioctl_subnet_tail(ipif, v6addr, v6mask, q, mp, B_TRUE));
11331 ip_sioctl_get_subnet(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11361 ip_sioctl_token(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11407 err = ipif_logical_down(ipif, q, mp);
11413 err = ip_sioctl_token_tail(ipif, sin6, addrlen, q, mp, need_up);
11419 mblk_t *mp, boolean_t need_up)
11458 err = ipif_up(ipif, q, mp);
11467 ip_sioctl_get_token(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11497 ip_sioctl_lnkinfo(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11595 ip_sioctl_get_lnkinfo(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
11689 ip_wput_ioctl(queue_t *q, mblk_t *mp)
11700 iocp = (IOCP)mp->b_rptr;
11701 mp1 = mp->b_cont;
11704 mp->b_datap->db_type = M_IOCNAK;
11706 qreply(q, mp);
11732 cr = msg_getcred(mp, NULL);
11747 (ipft->ipft_flags & IPFT_F_SELF_REPLY) ? mp : mp1, cr);
11760 freemsg(mp);
11766 mp->b_datap->db_type = M_IOCACK;
11769 qreply(q, mp);
12361 ill_up_ipifs_on_ill(ill_t *ill, queue_t *q, mblk_t *mp)
12374 err = ipif_up(ipif, q, mp);
12391 ill_up_ipifs(ill_t *ill, queue_t *q, mblk_t *mp)
12406 err = ill_up_ipifs_on_ill(ill->ill_phyint->phyint_illv4, q, mp);
12410 return (ill_up_ipifs_on_ill(ill->ill_phyint->phyint_illv6, q, mp));
12464 ip_join_illgrps(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy)
12487 freemsg(mp);
12495 ip_sioctl_groupname(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
12569 * requires an mblk_t to scribble on, and since `mp' will be
12615 ip_sioctl_get_binding(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
12639 ip_sioctl_get_groupname(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
12660 ip_sioctl_groupinfo(ipif_t *dummy_ipif, sin_t *sin, queue_t *q, mblk_t *mp,
12667 /* ip_wput_nondata() verified mp->b_cont->b_cont */
12668 lifgr = (lifgroupinfo_t *)mp->b_cont->b_cont->b_rptr;
12695 mblk_t *mp = ill->ill_unbind_mp;
12707 if (mp != NULL) {
12709 dl_primstr(*(int *)mp->b_rptr), *(int *)mp->b_rptr,
12728 ill_dlpi_send(ill, mp);
12737 ill_dlpi_dispatch(ill_t *ill, mblk_t *mp)
12743 ASSERT(DB_TYPE(mp) == M_PROTO || DB_TYPE(mp) == M_PCPROTO);
12745 dlp = (union DL_primitives *)mp->b_rptr;
12754 dl_phys_addr_req_t *dlpap = (dl_phys_addr_req_t *)mp->b_rptr;
12780 putnext(ill->ill_wq, mp);
12794 ill_dlpi_send_writer(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *arg)
12796 ill_dlpi_send(q->q_ptr, mp);
12806 ill_dlpi_send(ill_t *ill, mblk_t *mp)
12810 ASSERT(DB_TYPE(mp) == M_PROTO || DB_TYPE(mp) == M_PCPROTO);
12820 qwriter_ip(ill, ill->ill_wq, mp, ill_dlpi_send_writer,
12836 *mpp = mp;
12841 ill_dlpi_dispatch(ill, mp);
12845 ill_capability_send(ill_t *ill, mblk_t *mp)
12848 ill_dlpi_send(ill, mp);
12870 mblk_t *mp, *nextmp;
12878 mp = ill->ill_dlpi_deferred;
12882 for (; mp != NULL; mp = nextmp) {
12883 nextmp = mp->b_next;
12884 mp->b_next = NULL;
12885 ill_dlpi_send(ill, mp);
12896 mblk_t *mp, *nextmp;
12900 mp = ill->ill_dlpi_deferred;
12904 for (; mp != NULL; mp = nextmp) {
12905 nextmp = mp->b_next;
12906 inet_freemsg(mp);
12958 mblk_t *mp;
12971 if ((mp = ill->ill_dlpi_deferred) == NULL) {
12983 ill->ill_dlpi_deferred = mp->b_next;
12984 mp->b_next = NULL;
12987 ill_dlpi_dispatch(ill, mp);
13000 ill_dlpi_queue(ill_t *ill, mblk_t *mp)
13004 ASSERT(DB_TYPE(mp) == M_PROTO || DB_TYPE(mp) == M_PCPROTO);
13012 *mpp = mp;
13026 mblk_t *mp;
13041 while ((mp = ill->ill_dlpi_deferred) != NULL) {
13047 ill->ill_dlpi_deferred = mp->b_next;
13048 mp->b_next = NULL;
13055 freemsg(mp);
13058 dlp = (union DL_primitives *)mp->b_rptr;
13069 putnext(ill->ill_wq, mp);
13088 ill_mcast_queue(ill_t *ill, mblk_t *mp)
13102 mp, ill);
13103 freemsg(mp);
13115 *mpp = mp;
13141 mblk_t *mp;
13171 while ((mp = ill->ill_mcast_deferred) != NULL) {
13172 ill->ill_mcast_deferred = mp->b_next;
13173 mp->b_next = NULL;
13179 freemsg(mp);
13190 freemsg(mp);
13198 ip6_t *ip6h = (ip6_t *)mp->b_rptr;
13203 ipha_t *ipha = (ipha_t *)mp->b_rptr;
13211 (void) ip_output_simple(mp, &ixas);
13315 ipif_down(ipif_t *ipif, queue_t *q, mblk_t *mp)
13426 * If mp is NULL the caller will wait for the appropriate refcnt.
13430 if (mp == NULL) {
13454 ip1dbg(("ipif_down: need to wait, adding pending mp %s ill %p",
13457 * Enqueue the mp atomically in ipsq_pending_mp. When the refcount
13461 success = ipsq_pending_mp_add(connp, ipif, q, mp, IPIF_DOWN);
13514 ipif_logical_down(ipif_t *ipif, queue_t *q, mblk_t *mp)
13529 return (ipif_down(ipif, q, mp));
13795 zoneid_t zoneid, queue_t *q, mblk_t *mp, ipsq_func_t func, int *error,
13909 ipsq_enq(ipsq, q, mp, func, NEW_OP, ill);
13941 mblk_t *mp;
13958 mp = allocb(REPLY_LEN, BPRI_HI);
13959 if (mp == NULL)
13961 mp->b_wptr = mp->b_rptr + REPLY_LEN;
13963 ipha = (ipha_t *)mp->b_rptr;
13975 icmph->icmph_checksum = IP_CSUM(mp, sizeof (ipha_t), 0);
13983 (void) ip_output_simple(mp, &ixas);
14117 mblk_t *mp;
14123 for (mp = ill->ill_saved_ire_mp; mp != NULL; mp = mp->b_cont) {
14127 ifrt = (ifrt_t *)mp->b_rptr;
14328 * When the routine returns EINPROGRESS then mp has been consumed and
14332 ipif_up(ipif_t *ipif, queue_t *q, mblk_t *mp)
14455 if ((err = ipif_up(ill->ill_ipif, q, mp)) == 0)
14465 return (ipif_up(ipif, q, mp));
14483 return (ill_dl_up(ill, ipif, mp, q));
14500 success = ipsq_pending_mp_add(connp, ipif, q, mp, 0);
14521 mp = ipsq_pending_mp_get(ipsq, &connp);
14522 ASSERT(mp != NULL);
14542 return (ipif_up(ipif, q, mp));
14596 * When the routine returns EINPROGRESS then mp has been consumed and
14601 ill_dl_up(ill_t *ill, ipif_t *ipif, mblk_t *mp, queue_t *q)
14613 ASSERT(mp != NULL);
14656 success = ipsq_pending_mp_add(connp, ipif, q, mp, 0);
15595 if_unitsel_restart(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
15604 return (ipif_set_values_tail(ipif->ipif_ill, ipif, mp, q));
15613 if_unitsel(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
15619 uint_t ppa = *(uint_t *)mp->b_cont->b_cont->b_rptr;
15641 return (ipif_set_values(q, mp, interf_name, &ppa));
15646 ip_sioctl_sifname(ipif_t *dummy_ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
15779 * Returns EINPROGRESS when mp has been consumed by queueing it on
15787 ip_sioctl_slifname(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
15889 return (ipif_set_values(q, mp, lifr->lifr_name, &lifr->lifr_ppa));
15894 ip_sioctl_slifname_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
15903 return (ipif_set_values_tail(ipif->ipif_ill, ipif, mp, q));
15943 ip_sioctl_slifindex(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16018 ip_sioctl_get_lifindex(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16037 ip_sioctl_get_lifzone(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16055 ip_sioctl_slifzone(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16101 err = ipif_logical_down(ipif, q, mp);
16108 err = ip_sioctl_slifzone_tail(ipif, lifr->lifr_zoneid, q, mp, need_up);
16114 queue_t *q, mblk_t *mp, boolean_t need_up)
16153 err = ipif_up(ipif, q, mp);
16160 ip_sioctl_slifzone_restart(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16207 return (ip_sioctl_slifzone_tail(ipif, lifr->lifr_zoneid, q, mp,
16252 ip_sioctl_get_lifusesrc(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16371 ip_sioctl_slifusesrc(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16407 ipsq = ipsq_try_enter(NULL, usesrc_ill, q, mp, ip_process_ioctl,
16510 ip_sioctl_get_dadstate(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
16724 * pending mp is not affected because that is per ill basis.
16802 ipif_set_values_tail(ill_t *ill, ipif_t *ipif, mblk_t *mp, queue_t *q)
16843 err = ill_dl_phys(ill, ipif, mp, q);
16869 * Returns EINPROGRESS when mp has been consumed by queueing it on
16877 ipif_set_values(queue_t *q, mblk_t *mp, char *interf_name, uint_t *new_ppa_ptr)
17086 ipsq = ipsq_try_enter_internal(ill, q, mp, ip_reprocess_ioctl, NEW_OP,
17102 error = ipif_set_values_tail(ill, ipif, mp, q);
17186 mblk_t *mp;
17199 mp = *mpp;
17200 ifrt = (ifrt_t *)mp->b_rptr;
17220 *mpp = mp->b_cont;
17222 freeb(mp);
17781 * dl_notify_ind_t pointed to by `mp'. Must be called as writer, and will be
17786 ill_set_phys_addr(ill_t *ill, mblk_t *mp)
17789 dl_notify_ind_t *dlindp = (dl_notify_ind_t *)mp->b_rptr;
17801 * We need to store up to two copies of `mp' in `ill'. Due to the
17806 if ((mp = copyb(mp)) == NULL || (mp->b_cont = copyb(mp)) == NULL) {
17807 freemsg(mp);
17833 mp, ILL_DOWN);
17839 ill_set_phys_addr_tail(ipsq, ill->ill_rq, mp, NULL);
17852 ill_set_allowed_ips(ill_t *ill, mblk_t *mp)
17855 dl_notify_ind_t *dlip = (dl_notify_ind_t *)mp->b_rptr;
17981 ill_replumb(ill_t *ill, mblk_t *mp)
17999 mp, ILL_DOWN);
18005 ill_replumb_tail(ipsq, ill->ill_rq, mp, NULL);
18011 ill_replumb_tail(ipsq_t *ipsq, queue_t *q, mblk_t *mp, void *dummy)
18019 ill->ill_replumb_mp = copyb(mp);
18045 mp = mexchange(NULL, mp, sizeof (dl_notify_conf_t), M_PROTO,
18047 ASSERT(mp != NULL);
18048 ((dl_notify_conf_t *)mp->b_rptr)->dl_notification =
18050 ill_dlpi_send(ill, mp);
18712 ip_sioctl_ilb_cmd(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
18715 mblk_t *cmd_mp = mp->b_cont->b_cont;
19055 ip_sioctl_get_ifhwaddr(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
19076 mp1 = mp->b_cont->b_cont;
19101 ip_sioctl_get_lifhwaddr(ipif_t *ipif, sin_t *dummy_sin, queue_t *q, mblk_t *mp,
19122 mp1 = mp->b_cont->b_cont;