HP X.25/9000 Programmer's Guide

Chapter 5 83
Receiving and Transmitting Out-of-band Information
Transmitting Out-of-band Events
struct x25_userdata userdata;
struct x25_msg_stat msgstat;
unsigned char call_udata[128], clear_udata[128];
int i, call_ndata = 0,clear_ndata = 0, error = 0;
while ( !error )
{
error = ioctl(s, X25_NEXT_MSG_STAT, &msgstat);
if (error< 0 )
{ perror(”ioctl(X25_NEXT_MSG_STAT) failed”);
exit(1);
}
if (msgstat.x25_msg_flags & (1 << X25_CA_DATA_AVAIL))
{
error = ioctl(s, X25_RD_USER_DATA, &userdata);
if (error != 0)
{
perror(”X25_RD_USER_DATA returned error”);
break;
}
if (userdata.x25_cud_len == 0)
break;
for (i = 0; i < userdata.x25_cud_len; i++)
call_udata[call_ndata++] = userdata.x25_cu_data[i];
}
else break;
}
/*
* If error = 0 at this point all of the call data is now
in “call_udata”.
* “call_ndata” gives the number of bytes of data.
*/
while ( !error )
{
error = ioctl(s, X25_NEXT_MSG_STAT, &msgstat);
if (error != 0 )
{
perror(”ioctl(X25_NEXT_MSG_STAT) failed”);
exit(1);
}
if (msgstat.x25_msg_flags & (1 << X25_CL_DATA_AVAIL))
{
error = ioctl(s, X25_RD_USER_DATA, &userdata);
if (error != 0)
{
perror(”X25_RD_USER_DATA returned error”);
break;
36960-90061.bk Page 83 Friday, November 10, 2000 3:42 PM