LLA and DLPI Example Programs
LLA Example Program
/* Copy the address to ret_addr */
memcpy(ret_addr, (caddr_t)ctrl_buf.value.s, 6);
}
/**************************************************************************** Set the destination MAC and SAP address.
****************************************************************************/
void
set_dst_address(fd, dest_addr, dsap, length)
int fd;/* file descriptor */ caddr_t dest_addr;/* return local address here */
int | dsap;/* destination sap */ |
int | length;/* destination sap length */ |
{
ctrl_buf.reqtype = LOG_DEST_ADDR; ctrl_buf.vtype = 6; memcpy((caddr_t)ctrl_buf.value.s, dest_addr, 6);
/* send the LOG_DEST_ADDR request. LLA will return success or
failure when the ioctl completes, so there is no need to wait for an acknowledgement.
*/
put_ctrl(fd, NETCTRL);
/* Only log sap addresses, SNAP addresses do not need to be logged twice.
*/
if (length == INTEGERTYPE) { ctrl_buf.reqtype = LOG_DSAP; ctrl_buf.vtype = INTEGERTYPE; ctrl_buf.value.i = dsap; put_ctrl(fd, NETCTRL);
}
}
/**************************************************************************** bind to a SNAP sap.
****************************************************************************/
void
bind_snap(fd, snapsap)
int fd;
u_char *snapsap;
{
/* Fill in SNAP req */
ctrl_buf.reqtype = LOG_SNAP_TYPE; ctrl_buf.vtype = 5; memcpy((caddr_t)ctrl_buf.value.s, snapsap, 5);
/* send the SNAP request. */ put_ctrl(fd, NETCTRL);
}
Chapter 2 | 35 |