LLA to DLPI Migration Guide, April 1997

Chapter 2 37
LLA and DLPI Example Programs
LLA Example Program
int dest_addr_len; /* length of dest_addr */
{
int i;
printf(”%s”, string);
for(i = 0; i < dest_addr_len; i++) {
printf(”%02x”, dest_addr[i]);
}
printf(”\n”);
}
/****************************************************************************
main
****************************************************************************/
main() {
int send_fd, recv_fd; /* file descriptors */
u_char local_addr[20]; /* local MAC address */
int i, j, recv_len;
/*
PART 1 of program. Demonstrate connectionless data transfer with
LLC SAP header.
*/
/*
First, we must open the LLA device file, /dev/lan0. LLA does
not require a seperate control request to specify which device
you want to use, it is explicit in the open request (via the
device file minor number).
*/
send_fd = attach();
recv_fd = attach();
/*
Now we have to bind to a IEEESAP. Since LLA only supports
connectionless services there is no need to specify a specific
service mode. LLA also does not return the local MAC address
automatically when binding, so we need to issue a seperate control
request (LOCAL_ADDRESS)to get this information (see below).
*/
bind(send_fd, SEND_SAP);
bind(recv_fd, RECV_SAP);
/*
The following calls to get_local_address and set_dst_address
are required for LLA because of one primary difference in sending
data over LLA and DLPI. The difference is that DLPI
requires you to specify the destination address as part of the
data request and LLA requires the destination address to be
logged prior to the data request.
Get the local MAC address so that we can send loopback packets.
*/
get_local_address(send_fd, local_addr);