DLPI Programmer's Guide
Appendix A 149
Sample Programs
Connection Mode
case DL_FDDI:
mac_name = ”FDDI”;
break;
default:
printf(”error: unknown MAC type in ppa_info\n”);
exit(1);
}
printf(”attaching to %s media on PPA %d\n”, mac_name, ppa);
/*
fill in ATTACH_REQ with the PPA we found, send the ATTACH_REQ,
and wait for the OK_ACK
*/
attach_req->dl_primitive = DL_ATTACH_REQ;
attach_req->dl_ppa = ppa;
put_ctrl(fd, sizeof(dl_attach_req_t), 0);
get_msg(fd);
check_ctrl(DL_OK_ACK);
/* return the file descriptor for the stream to the caller */
return(fd);
}
/**************************************************************************
bind to a sap with a specified service mode and max_conind;
returns the local DLSAP and its length
**************************************************************************/
void
bind(fd, sap, max_conind, service_mode, dlsap, dlsap_len)
int fd; /* file descriptor */
int sap; /* 802.2 SAP to bind on */
int max_conind; /* max # of connect indications to accept */
int service_mode; /* either DL_CODLS or DL_CLDLS */
u_char *dlsap; /* return DLSAP */
int *dlsap_len; /* return length of dlsap */
{
dl_bind_req_t *bind_req = (dl_bind_req_t *)ctrl_area;
dl_bind_ack_t *bind_ack = (dl_bind_ack_t *)ctrl_area;
u_char *dlsap_addr;
/* fill in the BIND_REQ */
bind_req->dl_primitive = DL_BIND_REQ;
bind_req->dl_sap = sap;
bind_req->dl_max_conind = max_conind;
bind_req->dl_service_mode = service_mode;
bind_req->dl_conn_mgmt = 0; /* conn_mgmt is NOT supported */
bind_req->dl_xidtest_flg = 0; /* user will handle TEST & XID pkts */