LLA and DLPI Example Programs

DLPI Example Program

}

/*

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 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 */

30

Chapter 2

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