DLPI Programmer's Guide

170 Appendix A
Sample Programs
Raw Mode
return(fd);
}
/*-=-* send DL_BIND_REQ *-=-*/
void
dl_bind(fd, sap, addr)
int fd, sap;
u_char *addr;
{
dl_bind_req_t *bind_req = (dl_bind_req_t *)ctl_area;
dl_bind_ack_t *bind_ack = (dl_bind_ack_t *)ctl_area;
bind_req->dl_primitive = DL_BIND_REQ;
bind_req->dl_sap = sap;
bind_req->dl_max_conind = 1;
bind_req->dl_service_mode = DL_HP_RAWDLS;
bind_req->dl_conn_mgmt = 0;
bind_req->dl_xidtest_flg = 0;
put_ctrl(fd, sizeof(dl_bind_req_t), 0);
get_msg(fd);
check_ctrl(DL_BIND_ACK);
bcopy((u_char *)bind_ack + bind_ack->dl_addr_offset, addr,
bind_ack->dl_addr_length);
}
void xxx();
void
main(argc, argv)
int argc;
char *argv[];
{
int infd, outfd;
struct pollfd pinfo;
int i, j, inseq;
u_char addr[25];
struct ieee8023_hdr *mac_hdr = (struct ieee8023_hdr *)dat_area;
struct ieee8022_hdr *llc_hdr;
dl_hp_rawdata_req_t *rawdat_req = (dl_hp_rawdata_req_t *)ctl_area;
dl_hp_rawdata_ind_t *rawdat_ind = (dl_hp_rawdata_ind_t *)ctl_area;
dl_error_ack_t *err_ack = (dl_error_ack_t *)ctl_area;
/* MAC header size is 14 bytes */
llc_hdr = (struct ieee8022_hdr *)&((u_char *)dat_area)[14];
if(!(infd = dl_open(PPA))) {
printf(”error: open failed\n”);
exit(1);
}
if(!(outfd = dl_open(PPA))) {
printf(”error: open failed\n”);
exit(1);
}
dl_bind(infd, INSAP, addr);