LLA and DLPI Example Programs

DLPI Example Program

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) intfd;/* file descriptor */

intsap;/* 802.2 SAP to bind on */

intmax_conind;/* max # connect indications to accept */ intservice_mode;/* either DL_CODLS or DL_CLDLS */ u_char*dlsap;/* return DLSAP */

int*dlsap_len;/* return length of dlsap */

{

dl_bind_req_t* dl_bind_ack_t* u_char*

bind_req = (dl_bind_req_t *)ctrl_area; bind_ack = (dl_bind_ack_t *)ctrl_area; 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 handles TEST/XID pkts */

/* send the BIND_REQ and wait for the OK_ACK */ put_ctrl(fd, sizeof(dl_bind_req_t), 0); get_msg(fd);

check_ctrl(DL_BIND_ACK);

/* return the DLSAP to the caller */ *dlsap_len = bind_ack->dl_addr_length;

dlsap_addr = (u_char *)ctrl_area + bind_ack->dl_addr_offset; memcpy(dlsap, dlsap_addr, *dlsap_len);

}

/********************************************************************* bind to a SNAP sap via the DL_PEER_BIND, or DL_HIERARCHICAL_BIND subsequent bind class; returns the local DLSAP and its length

*********************************************************************/

void

subs_bind(fd, snapsap, snapsap_len, subs_bind_class, dlsap, dlsap_len)

int

fd;

u_char*

snapsap;

int

subs_bind_class;

u_char

*dlsap;

int

*dlsap_len;

{

 

26

Chapter 2

Page 26
Image 26
HP B2355-90138 manual Dlpi Example Program