HP rp2450 HP DLPI Programmer's Guide - Page 194
check_ctrlDL_HP_PPA_ACK, case DL_CSMACD
View all HP rp2450 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 194 highlights
Sample Programs Connection Mode Example intppa;/* PPA to attach to */ dl_hp_ppa_req_t*ppa_req = (dl_attach_req_t *)ctrl_area; dl_hp_ppa_ack_t *ppa_ack = (dl_hp_ppa_ack_t *)ctrl_area; dl_hp_ppa_info_t *ppa_info; dl_attach_req_t*attach_req = (dl_attach_req_t *)ctrl_area; char *mac_name; /* open the device file */ if((fd = open("/dev/dlpi", O_RDWR)) == -1) { printf("error: open failed, errno = %d\n", errno); exit(1); } /* find a PPA to attach to; we assume that the first PPA on the remote is on the same media as the first local PPA */ /* send a PPA_REQ and wait for the PPA_ACK */ ppa_req->dl_primitive = DL_HP_PPA_REQ; put_ctrl(fd, sizeof(dl_hp_ppa_req_t), 0); get_msg(fd); check_ctrl(DL_HP_PPA_ACK); /* make sure we found at least one PPA */ if(ppa_ack->dl_length == 0) { printf("error: no PPAs available\n"); exit(1); } /* examine the first PPA */ ppa_info = (dl_hp_ppa_info_t *)((u_char *)ctrl_area + ppa_ack->dl_offset); ppa = ppa_info->dl_ppa; switch(ppa_info->dl_mac_type) { case DL_CSMACD: case DL_ETHER: mac_name = "Ethernet"; break; case DL_TPR: mac_name = "Token Ring"; break; case DL_FDDI: mac_name = "FDDI"; break; default: printf("error: unknown MAC type in ppa_info\n"); exit(1); } 194 Appendix A