Lines Matching defs:dip
137 dlpi_impl_t *dip;
155 if ((dip = calloc(1, sizeof (dlpi_impl_t))) == NULL)
159 dip->dli_timeout = DLPI_DEF_TIMEOUT;
160 dip->dli_ppa = ifsp.ifsp_ppa;
161 dip->dli_oflags = flags;
162 dip->dli_notifylistp = NULL;
163 dip->dli_note_processing = B_FALSE;
165 dip->dli_oflags |= DLPI_DEVONLY;
168 if (strlcpy(dip->dli_linkname, linkname, sizeof (dip->dli_linkname)) >=
169 sizeof (dip->dli_linkname)) {
170 free(dip);
175 (void) strlcpy(dip->dli_provider, ifsp.ifsp_devnm,
176 sizeof (dip->dli_provider));
183 if (dip->dli_oflags & DLPI_SERIAL) {
184 if ((retval = i_dlpi_style2_open(dip)) != DLPI_SUCCESS) {
185 free(dip);
189 *dhp = (dlpi_handle_t)dip;
193 if ((retval = i_dlpi_style1_open(dip)) != DLPI_SUCCESS) {
202 } else if (!(dip->dli_oflags & DLPI_DEVIPNET)) {
203 retval = i_dlpi_style2_open(dip);
206 free(dip);
211 if (dip->dli_oflags & DLPI_PASSIVE)
212 i_dlpi_passive(dip);
214 if ((dip->dli_oflags & DLPI_RAW) &&
215 ioctl(dip->dli_fd, DLIOCRAW, 0) < 0) {
216 dlpi_close((dlpi_handle_t)dip);
220 if ((dip->dli_oflags & DLPI_IPNETINFO) &&
221 ioctl(dip->dli_fd, DLIOCIPNETINFO, &on) < 0) {
222 dlpi_close((dlpi_handle_t)dip);
231 if (dip->dli_oflags & DLPI_NATIVE) {
232 if ((retval = ioctl(dip->dli_fd, DLIOCNATIVE, 0)) > 0)
233 dip->dli_mactype = retval;
236 *dhp = (dlpi_handle_t)dip;
243 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
246 if (dip != NULL) {
247 for (dnp = dip->dli_notifylistp; dnp != NULL; dnp = next) {
252 (void) close(dip->dli_fd);
253 free(dip);
270 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
272 if (dip == NULL)
300 retval = i_dlpi_msg_common(dip, &req, &ack, DL_INFO_ACK_SIZE, RS_HIPRI);
311 dip->dli_style = infoackp->dl_provider_style;
312 dip->dli_mactype = infoackp->dl_mac_type;
345 dip->dli_saplen = abs(infoackp->dl_sap_length);
346 dip->dli_sapbefore = (infoackp->dl_sap_length > 0);
347 infop->di_physaddrlen = infoackp->dl_addr_length - dip->dli_saplen;
350 dip->dli_saplen > DLPI_SAPLEN_MAX)
361 if (dip->dli_sapbefore)
362 addrp += dip->dli_saplen;
367 infop->di_sap = i_dlpi_buildsap(sapp, dip->dli_saplen);
390 (void) strlcpy(infop->di_linkname, dip->dli_linkname,
392 infop->di_timeout = dip->dli_timeout;
443 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
445 if (dip == NULL)
457 bindreqp->dl_sap = ((dip->dli_mactype == DL_TPR) ? 2 : 0);
466 retval = i_dlpi_msg_common(dip, &req, &ack, DL_BIND_ACK_SIZE, 0);
487 dip->dli_sap = bindackp->dl_sap; /* save sap value in handle */
495 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
497 if (dip == NULL)
503 return (i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0));
516 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
518 if (dip == NULL)
532 return (i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0));
557 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
559 if (dip == NULL)
568 return (i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0));
592 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
594 if (dip == NULL)
606 retval = i_dlpi_msg_common(dip, &req, &ack, DL_PHYS_ADDR_ACK_SIZE, 0);
638 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
640 if (dip == NULL)
655 return (i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0));
665 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
667 if (dip == NULL)
670 if (dip->dli_oflags & DLPI_RAW)
671 return (i_dlpi_strputmsg(dip, NULL, msgbuf, msglen, 0));
691 sap = dip->dli_sap;
694 udatareqp->dl_dest_addr_length = daddrlen + dip->dli_saplen;
702 if (dip->dli_sapbefore) {
703 i_dlpi_writesap(&udatareqp[1], sap, dip->dli_saplen);
704 (void) memcpy((caddr_t)&udatareqp[1] + dip->dli_saplen,
709 dip->dli_saplen);
712 return (i_dlpi_strputmsg(dip, &req, msgbuf, msglen, 0));
725 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
727 if (dip == NULL)
733 if (dip->dli_oflags & DLPI_RAW) {
734 retval = i_dlpi_strgetmsg(dip, msec, NULL, 0, 0, 0, msgbuf,
746 if ((retval = i_dlpi_strgetmsg(dip, msec, &ind, DL_UNITDATA_IND,
767 *saddrlenp = datalen - dip->dli_saplen;
771 if (dip->dli_sapbefore)
772 datap += dip->dli_saplen;
792 recvp->dri_destaddrlen = datalen - dip->dli_saplen;
796 if (dip->dli_sapbefore)
797 datap += dip->dli_saplen;
818 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
822 if (dip == NULL)
825 retval = dlpi_info((dlpi_handle_t)dip, &dlinfo, 0);
829 if (dip->dli_note_processing)
846 retval = i_dlpi_msg_common(dip, &req, &ack, DL_NOTIFY_ACK_SIZE, 0);
863 newnotifp->dln_next = dip->dli_notifylistp;
864 dip->dli_notifylistp = newnotifp;
873 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
876 if (dip == NULL)
880 if (!(i_dlpi_notifyidexists(dip, remid)))
888 if (!dip->dli_note_processing)
889 i_dlpi_deletenotifyid(dip);
897 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
899 return (dip != NULL ? dip->dli_fd : -1);
905 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
907 if (dip == NULL)
910 dip->dli_timeout = sec;
917 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
919 return (dip != NULL ? dip->dli_linkname : NULL);
930 dlpi_impl_t *dip = (dlpi_impl_t *)dh;
932 return (dip->dli_style);
1128 i_dlpi_style1_open(dlpi_impl_t *dip)
1133 retval = i_dlpi_open(dip->dli_linkname, &fd, dip->dli_oflags, B_TRUE);
1136 dip->dli_fd = fd;
1138 if ((retval = i_dlpi_checkstyle(dip, DL_STYLE1)) != DLPI_SUCCESS) {
1140 (void) close(dip->dli_fd);
1151 i_dlpi_style2_open(dlpi_impl_t *dip)
1156 retval = i_dlpi_open(dip->dli_provider, &fd, dip->dli_oflags, B_FALSE);
1159 dip->dli_fd = fd;
1165 if (dip->dli_oflags & DLPI_SERIAL)
1168 if ((retval = i_dlpi_checkstyle(dip, DL_STYLE2)) != DLPI_SUCCESS)
1175 if (dip->dli_oflags & DLPI_NOATTACH)
1179 if ((retval = i_dlpi_attach(dip)) == DLPI_SUCCESS)
1184 (void) close(dip->dli_fd);
1194 i_dlpi_checkstyle(dlpi_impl_t *dip, t_uscalar_t style)
1199 retval = dlpi_info((dlpi_handle_t)dip, &dlinfo, 0);
1200 if (retval == DLPI_SUCCESS && dip->dli_style != style)
1210 i_dlpi_attach(dlpi_impl_t *dip)
1219 if (dip->dli_style != DL_STYLE2 && !(dip->dli_oflags & DLPI_SERIAL))
1226 attachreqp->dl_ppa = dip->dli_ppa;
1228 return (i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0));
1239 i_dlpi_passive(dlpi_impl_t *dip)
1246 (void) i_dlpi_msg_common(dip, &req, &ack, DL_OK_ACK_SIZE, 0);
1252 * dlpi_impl_t *dip: internal dlpi handle to open stream
1260 i_dlpi_strputmsg(dlpi_impl_t *dip, const dlpi_msg_t *dlreqp,
1264 int fd = dip->dli_fd;
1285 * dlpi_impl_t *dip: internal dlpi handle
1303 i_dlpi_strgetmsg(dlpi_impl_t *dip, int msec, dlpi_msg_t *dlreplyp,
1309 int fd = dip->dli_fd;
1411 if (dip->dli_notifylistp != NULL &&
1417 (void) i_dlpi_notifyind_process(dip, dlnotif);
1472 * dlpi_impl_t *dip: internal dlpi handle
1484 i_dlpi_msg_common(dlpi_impl_t *dip, const dlpi_msg_t *dlreqp,
1492 retval = i_dlpi_strputmsg(dip, dlreqp, NULL, 0, flags);
1497 retval = i_dlpi_strgetmsg(dip, (dip->dli_timeout * MILLISEC),
1733 i_dlpi_notifyind_process(dlpi_impl_t *dip, dl_notify_ind_t *dlnotifyindp)
1769 notifinfo.dni_physaddrlen = datalen - dip->dli_saplen;
1779 dip->dli_note_processing = B_TRUE;
1781 for (dnp = dip->dli_notifylistp; dnp != NULL; dnp = dnp->dln_next) {
1783 dnp->dln_fnp((dlpi_handle_t)dip, ¬ifinfo, dnp->arg);
1788 dip->dli_note_processing = B_FALSE;
1792 i_dlpi_deletenotifyid(dip);
1800 i_dlpi_notifyidexists(dlpi_impl_t *dip, dlpi_notifyent_t *id)
1804 for (dnp = dip->dli_notifylistp; dnp != NULL; dnp = dnp->dln_next) {
1816 i_dlpi_deletenotifyid(dlpi_impl_t *dip)
1821 dnp = dip->dli_notifylistp;
1827 dip->dli_notifylistp = dnp->dln_next;
1829 dnp = dip->dli_notifylistp;