ln - Lance Ethernet interface
config_driver ln
The ln interface provides access to a 10 Mb/s Ethernet
network through the Lance controller.
The host's Internet address is specified at boot time with
an SIOCSIFADDR ioctl. The ln interface employs the address
resolution protocol described in arp(7) to map dynamically
between Internet and Ethernet addresses on the local network.
The SIOCSPHYSADDR ioctl can be used to change the physical
address of the Lance. The SIOCRPHYSADDR ioctl can be used
to read the physical address of the Lance.
The SIOCADDMULTI and SIOCDELMULTI ioctls can be used to
add or delete multicast addresses. The Lance recognizes a
maximum of 12 multicast addresses.
The SIOCRDCTRS and SIOCRDZCTRS ioctls can be used to read
or ``read and clear'' the Ethernet driver counters. The
argument to these two ioctls is a pointer to a counter
structure, ctrreq, found in <net/if.h>.
The SIOCENABLBACK and SIOCDISABLBACK ioctls can be used to
enable and disable the interface loopback mode respectively.
The diagnostic error messages contain relevant information
provided by the Lance. The interface was handed a message
with addresses formatted in an unsuitable address family,
and the packet was dropped. A memory parity error has
occurred. The ln driver was unable to allocate memory for
internal data structures. The ln driver was unable to
initialize the network interface. Too many multicast
requests have been made.
To obtain the physical address of the adapter, use the
SIOCRPHYSADDR ioctl as in the following program example:
#include <stdio.h> /* standard I/O */
#include <errno.h> /* error numbers */
#include <sys/socket.h> /* socket definitions */
#include <sys/ioctl.h> /* ioctls */ #include
<net/if.h> /* generic interface structures */
main() {
int s,i;
static struct ifdevea devea;
/* Get a socket */
s = socket(AF_INET,SOCK_DGRAM,0);
if (s < 0) {
perror("socket");
exit(1);
}
strcpy(devea.ifr_name,"ln0");
if (ioctl(s,SIOCRPHYSADDR,&devea) < 0) {
perror(&devea.ifr_name[0]);
exit(1);
}
printf("Address is ");
for (i = 0; i < 6; i++)
printf("%X ", devea.default_pa[i] & 0xff);
printf("\n");
close(s); }
To enable external loopback, use the SIOCENABLEBACK ioctl
as in the following program example:
#include <stdio.h> /* standard I/O */
#include <errno.h> /* error numbers */
#include <sys/socket.h> /* socket definitions */
#include <sys/ioctl.h> /* ioctls */ #include
<net/if.h> /* generic interface structures */
main() {
int s;
struct ifreq data;
/* Get a socket */
s = socket(AF_INET,SOCK_DGRAM,0);
if (s < 0) {
perror("socket");
exit(1);
}
strcpy(data.ifr,"ln0");
if (ioctl(s,SIOCENABLEBACK,&data) < 0) {
perror("SIOCENABLEBACK:");
exit(1);
}
close(s); }
arp(7), inet(7), netintro(7)
ln(7)
[ Back ] |