DLPI Programmer's Guide
Appendix A 165
Sample Programs
Connectionless Mode
/*
We're finished with PART 1. Now call cleanup to unbind, then detach,
then close the device file.
*/
cleanup(send_fd);
cleanup(recv_fd);
/*
PART 2 of program. Demonstrate connectionless data transfer with
LLC SNAP SAP header.
*/
/*
As demonstrated in the first part of this program we must first
open the DLPI device file, /dev/dlpi, and attach to a PPA.
*/
send_fd = attach();
recv_fd = attach();
/*
The first method for binding a SNAP protocol value (which is
demonstrated below) requires the user to first bind the SNAP
SAP 0xAA, then issue a subsequent bind with class DL_HIERARCHICAL_BIND
with the 5 bytes of SNAP information.
The second method (which is not demonstrated in this program) is
to bind any supported protocol value (see section 5) and then issue
a subsequent bind with class DL_PEER_BIND. The data area of the
subsequent bind should include 6 bytes of data, the first byte being
the SNAP SAP 0xAA followed by 5 bytes of SNAP information.
*/
bind(send_fd, SNAP_SAP, 0, DL_CLDLS, sdlsap, &sdlsap_len);
bind(recv_fd, SNAP_SAP, 0, DL_CLDLS, rdlsap, &rdlsap_len);
/*
Now we must complete the binding of the SNAP protocol value
with the subsequent bind request and a subsequent bind class
of DL_HIERARCHICAL_BIND.
*/
subs_bind(send_fd, SEND_SNAP_SAP, 5, DL_HIERARCHICAL_BIND, sdlsap,
&sdlsap_len);
subs_bind(recv_fd, RECV_SNAP_SAP, 5, DL_HIERARCHICAL_BIND, rdlsap,
&rdlsap_len);
/* print the DLSAPs we got back from the binds */
print_dlsap(”sending DLSAP = ”, sdlsap, sdlsap_len);
print_dlsap(”receiving DLSAP = ”, rdlsap, rdlsap_len);
/*
Time to send some data. We'll send 5 data packets in sequence.
*/
for(i = 0; i < 5; i++) {
/* send (i+1)*10 data bytes with the first byte = i */
data_area[0] = i;
/* Initialize data area */
for (j = 1; j < (i+1)*10; j++)
data_area[j] = ”a”;