Lines Matching refs:ill
208 arp_cmd_done(ill_t *ill, int err, t_uscalar_t lastprim)
210 if (lastprim == DL_UNBIND_REQ && ill->ill_replumbing)
211 arp_replumb_done(ill, 0);
213 arp_bringup_done(ill, err);
217 ip_nce_resolve_all(ill_t *ill, uchar_t *src_haddr, uint32_t hlen,
226 ASSERT(ill != NULL);
228 ncec = ncec_lookup_illgrp_v4(ill, src_paddr);
375 arp_dlpi_done(arl_t *arl, ill_t *ill)
392 mutex_enter(&ill->ill_lock);
393 ill->ill_arl_dlpi_pending = 0;
394 mutex_exit(&ill->ill_lock);
395 arp_cmd_done(ill, err, prim);
407 mutex_enter(&ill->ill_lock);
408 ill->ill_arl_dlpi_pending = 1;
409 mutex_exit(&ill->ill_lock);
533 ill_t *ill;
589 ill = arl_to_ill(arl);
594 * ill has not been set up yet for this case. This is the
629 if (ill != NULL) {
631 * ill ref obtained by arl_to_ill() will be released
634 qwriter_ip(ill, ill->ill_wq, mp, arp_rput_dlpi_writer,
649 ill_t *ill = (ill_t *)q->q_ptr;
650 arl_t *arl = ill_to_arl(ill);
661 arp_cmd_done(ill, 0, DL_UNBIND_REQ);
738 arp_dlpi_done(arl, ill);
770 ill_t *ill;
776 * Take a ref on the ill associated with this arl to
777 * prevent the ill from being unplumbed until this thread
781 ill = arl_to_ill(arl);
782 if (ill == NULL) {
783 arp_drop_packet("No ill", mp, ill);
786 arp_process_packet(ill, mp);
787 ill_refrele(ill);
812 arp_process_packet(ill_t *ill, mblk_t *mp)
830 ASSERT(ill != NULL);
831 if (ill->ill_flags & ILLF_NOARP) {
832 arp_drop_packet("Interface does not support ARP", mp, ill);
835 ipst = ill->ill_ipst;
848 if (IS_UNDER_IPMP(ill)) {
851 if (!ill->ill_nom_cast && ill->ill_grp != NULL &&
852 ill->ill_grp->ig_cast_ill != NULL) {
856 mp, ill);
864 arp_drop_packet("Missing ARP packet", mp, ill);
871 mp, ill);
879 arp_drop_packet("mblk len too small", mp, ill);
889 if ((hlen > 0 && hlen != ill->ill_phys_addr_length) || plen == 0) {
890 DTRACE_PROBE2(rput_bogus, ill_t *, ill, mblk_t *, mp1);
891 arp_drop_packet("Bogus hlen or plen", mp, ill);
898 DTRACE_PROBE3(arp__physical__in__start, ill_t *, ill, arh_t *, arh,
901 * If ill is in an ipmp group, it will be the under ill. If we want
903 * convert it to the ipmp ill.
906 ill->ill_phyint->phyint_ifindex, arh, mp, mp1, ipst);
937 arp_drop_packet("Martian IP addr", mp, ill);
945 iras.ira_ill = iras.ira_rill = ill;
957 arp_drop_packet("bad protocol len", mp, ill);
960 err = ip_nce_resolve_all(ill, src_haddr, hlen, &src_paddr,
973 DTRACE_PROBE2(rput_loopback, ill_t *, ill, arh_t *,
993 dst_ncec = ncec_lookup_illgrp_v4(ill, &dst_paddr);
1006 arp_drop_packet("Target is not interesting", mp1, ill);
1026 arp_drop_packet("bad arh_len", mp1, ill);
1030 DTRACE_PROBE3(rput_probe_reflected, ill_t *, ill,
1036 arp_drop_packet("Reflected probe", mp1, ill);
1052 mp1, ill);
1075 ill_t *, ill, arh_t *, arh, ncec_t *, dst_ncec);
1076 arp_drop_packet("Unverified request", mp1, ill);
1094 ill_t *under_ill = ill;
1116 ill = ipmp_ill_hold_ipmp_ill(under_ill);
1117 if (ill == NULL)
1118 ill = under_ill;
1123 err = nce_lookup_then_add_v4(ill, src_haddr, hlen,
1129 ip1dbg(("added ncec %p in state %d ill %s\n",
1131 ill->ill_name));
1196 ill_refrele(ill);
1209 ill_t *ill;
1212 ill = ill_lookup_on_name(ill_name, B_FALSE, B_FALSE, B_FALSE,
1215 if (ill == NULL)
1221 * relevant information as possible from/against the ill.
1226 ASSERT(arl->arl_phys_addr_length == ill->ill_phys_addr_length);
1228 ASSERT(arl->arl_mactype == ill->ill_mactype);
1229 ASSERT(arl->arl_sap_length == ill->ill_sap_length);
1232 mutex_enter(&ill->ill_lock);
1233 /* First ensure that the ill is not CONDEMNED. */
1234 if (ill->ill_state_flags & ILL_CONDEMNED) {
1235 mutex_exit(&ill->ill_lock);
1236 ill_refrele(ill);
1240 if (ill->ill_common != NULL || arl->arl_common != NULL) {
1241 mutex_exit(&ill->ill_lock);
1242 ip0dbg(("%s: PPA already exists", ill->ill_name));
1243 ill_refrele(ill);
1249 ai->ai_ill = ill;
1250 ill->ill_common = ai;
1252 mutex_exit(&ill->ill_lock);
1253 (void) strlcpy(arl->arl_name, ill->ill_name, LIFNAMSIZ);
1254 arl->arl_name_length = ill->ill_name_length;
1255 ill_refrele(ill);
1319 ill_to_arl(ill_t *ill)
1321 arl_ill_common_t *ai = ill->ill_common;
1351 ill_t *ill = NULL;
1367 if ((ill = ai->ai_ill) != NULL) {
1368 mutex_enter(&ill->ill_lock);
1369 if (!ILL_IS_CONDEMNED(ill)) {
1370 ill_refhold_locked(ill);
1371 mutex_exit(&ill->ill_lock);
1373 mutex_exit(&ill->ill_lock);
1374 ill = NULL;
1378 return (ill);
1382 arp_ll_up(ill_t *ill)
1389 ASSERT(IAM_WRITER_ILL(ill));
1390 arl = ill_to_arl(ill);
1392 DTRACE_PROBE2(ill__downup, char *, "arp_ll_up", ill_t *, ill);
1445 ill_t *ill = ira->ira_ill;
1446 ip_stack_t *ipst = ill->ill_ipst;
1475 hbuf, sbuf, ill->ill_name);
1521 hbuf, sbuf, ill->ill_name);
1528 ill_refhold(ill);
1529 qwriter_ip(ill, ill->ill_rq, mp, arp_excl, NEW_OP, B_FALSE);
1548 arp_output(ill_t *ill, uint32_t operation,
1561 hlen = ill->ill_phys_addr_length; /* ar$hln from RFC 826 */
1562 mp = ill_dlur_gen(dst_lladdr, hlen, ETHERTYPE_ARP, ill->ill_sap_length);
1568 if ((ill->ill_flags & ILLF_NOARP) || !ill->ill_dl_up) {
1584 U16_TO_BE16(arp_hw_type(ill->ill_mactype), arh->arh_hardware);
1607 ill_t *, ill, arh_t *, arh, mblk_t *, mp);
1608 ARP_HOOK_OUT(ill->ill_ipst->ips_arp_physical_out_event,
1609 ill->ill_ipst->ips_arp_physical_out,
1610 ill->ill_phyint->phyint_ifindex, arh, mp, mp->b_cont,
1611 ill->ill_ipst);
1617 arl = ill_to_arl(ill);
1637 arp_request(ncec_t *ncec, in_addr_t sender, ill_t *ill)
1646 ASSERT(!IS_IPMP(ill));
1653 if ((ill->ill_flags & ILLF_NOARP) != 0)
1659 ill->ill_bcast_mp->b_rptr + NCE_LL_ADDR_OFFSET(ill);
1664 dst_lladdr = ill->ill_bcast_mp->b_rptr +
1665 NCE_LL_ADDR_OFFSET(ill);
1669 err = arp_output(ill, ARP_REQUEST,
1670 ill->ill_phys_addr, (uchar_t *)&sender, target_hwaddr,
1696 ill_t *ill;
1707 ill = ipmp_ill_hold_xmit_ill(ncec->ncec_ill, B_FALSE);
1708 if (ill == NULL)
1712 ill = ncec->ncec_ill;
1721 bcast_addr = ill->ill_bcast_mp->b_rptr + NCE_LL_ADDR_OFFSET(ill);
1723 err = arp_output(ill, ARP_REQUEST,
1728 ill_refrele(ill);
1736 ill_t *ill;
1742 ill = ipmp_ill_hold_xmit_ill(ncec->ncec_ill, B_FALSE);
1743 if (ill == NULL)
1746 ill = ncec->ncec_ill;
1752 dst_lladdr = ill->ill_bcast_mp->b_rptr + NCE_LL_ADDR_OFFSET(ill);
1753 err = arp_output(ill, ARP_REQUEST,
1757 ill_refrele(ill);
1774 arp_ll_down(ill_t *ill)
1779 boolean_t replumb = (ill->ill_replumbing == 1);
1781 DTRACE_PROBE2(ill__downup, char *, "arp_ll_down", ill_t *, ill);
1782 if ((arl = ill_to_arl(ill)) == NULL)
1819 ill_t *ill;
1824 ill = arl_to_ill(arl);
1825 if (ill != NULL) {
1826 if (!ill_waiter_inc(ill)) {
1827 ill_refrele(ill);
1829 ill_refrele(ill);
1830 if (ipsq_enter(ill, B_FALSE, NEW_OP))
1831 ipsq = ill->ill_phyint->phyint_ipsq;
1832 ill_waiter_dcr(ill);
1836 * could not enter the ipsq because ill is already
1839 ill = NULL;
1844 * Either we did not get an ill because it was marked CONDEMNED
1846 * In both cases, wait for the ill to complete ip_modclose().
1857 ASSERT(ill == NULL || IAM_WRITER_ILL(ill));
1861 * If the ill had completed unplumbing before arp_modclose(), there
1862 * would be no ill (and therefore, no ipsq) to serialize arp_modclose()
1920 if (ill != NULL) {
1921 mutex_enter(&ill->ill_lock);
1922 ill->ill_arl_dlpi_pending = 0;
1923 mutex_exit(&ill->ill_lock);
1996 ill_t *ill = ira->ira_ill;
1999 ill_refhold(ill);
2000 qwriter_ip(ill, ill->ill_rq, mp, arp_excl, NEW_OP, B_FALSE);
2012 ill_t *ill = rq->q_ptr;
2016 ip_stack_t *ipst = ill->ill_ipst;
2027 if (haddrlen == ill->ill_phys_addr_length) {
2031 * see reflections across any ill in the illgrp.
2035 if (bcmp(haddr, ill->ill_phys_addr, haddrlen) == 0 ||
2036 IS_UNDER_IPMP(ill) && ill->ill_grp != NULL &&
2037 ipmp_illgrp_find_ill(ill->ill_grp, haddr,
2048 ipif = ipif_lookup_addr(src, ill, ALL_ZONES, ipst);
2052 /* Reload the ill to match the ipif */
2053 ill = ipif->ipif_ill;
2077 mutex_enter(&ill->ill_lock);
2080 ill->ill_ipif_dup_count++;
2081 mutex_exit(&ill->ill_lock);
2084 mutex_enter(&ill->ill_lock);
2086 ill->ill_net_type == IRE_IF_RESOLVER &&
2093 mutex_exit(&ill->ill_lock);
2107 arp_drop_packet(const char *str, mblk_t *mp, ill_t *ill)
2153 * the associated ill) or during arp_mod_close, when we could not enter the
2154 * ipsq because the ill has already unplumbed.
2201 ill_t *ill = arl_to_ill(arl);
2204 if (ill != NULL) {
2205 mutex_enter(&ill->ill_lock);
2206 ill->ill_arl_dlpi_pending = 1;
2207 mutex_exit(&ill->ill_lock);
2208 ill_refrele(ill);
2222 * Till the ill is fully up the ill is not globally visible.
2300 arl_set_muxid(ill_t *ill, int muxid)
2304 arl = ill_to_arl(ill);
2312 arl_get_muxid(ill_t *ill)
2317 arl = ill_to_arl(ill);
2430 arp_send_replumb_conf(ill_t *ill)
2433 arl_t *arl = ill_to_arl(ill);
2454 * safe to tear down the ill. We wait for DL_UNBIND_ACK to complete, and also
2460 arp_unbind_complete(ill_t *ill)
2462 arl_t *arl = ill_to_arl(ill);