Sample Programs

Connectionless Mode

{

/* set the len field in the strbuf structure */ data_buf.len = length;

/* call putmsg and check for an error */ if(putmsg(fd, 0, &data_buf, 0) < 0) {

printf(”error: put_data putmsg failed, errno = %d\n”, errno); exit(1);

}

}

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

put a message consisting of only a control part on a stream

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

void

 

 

put_ctrl(fd, length, pri)

 

int

fd;

/* file descriptor */

int

length;

/* length of control message */

int

pri;

/* priority of message: either 0 or RS_HIPRI */

{

 

 

/* set the len field in the strbuf structure */ ctrl_buf.len = length;

/* call putmsg and check for an error */ if(putmsg(fd, &ctrl_buf, 0, pri) < 0) {

printf(”error: put_ctrl putmsg failed, errno = %d\n”, errno); exit(1);

}

}

/************************************************************************** put a message consisting of both a control part and a control part on a stream

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

void

put_both(fd, ctrl_length, data_length, pri)

int

fd;

/* file descriptor */

int

ctrl_length; /* length of control part */

int

data_length; /* length of data part */

int

pri;

/* priority of message: either 0 or RS_HIPRI */

{

/* set the len fields in the strbuf structures */ ctrl_buf.len = ctrl_length;

data_buf.len = data_length;

/* call putmsg and check for an error */ if(putmsg(fd, &ctrl_buf, &data_buf, pri) < 0) {

printf(”error: put_both putmsg failed, errno = %d\n”, errno); exit(1);

}

}

/****************************************************************************** open the DLPI cloneable device file, get a list of available PPAs, and attach to the first PPA; returns a file descriptor for the stream

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

int

Appendix A

159