te - TGEC Ethernet interface
config_driver te
The te interface provides access to a 10 Mb/s Ethernet
network through the TGEC controller.
The host's Internet address is specified at boot time with
an SIOCSIFADDR ioctl. The te 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 TGEC. The SIOCRPHYSADDR ioctl can be used
to read the physical address of the TGEC.
The SIOCADDMULTI and SIOCDELMULTI ioctls can be used to
add or delete multicast addresses. The TGEC 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 TGEC. The interface was handed a message
with addresses formatted in an unsuitable address family,
and the packet was dropped. The TGEC hardware failed to
reset itself properly. The driver's attempt to allocate a
buffer failed. The driver's attempt to allocate a buffer
failed. Too many multicast requests have been made. The
shared memory block for the TGEC's local RAM buffer is
missing from the CMOS configuration data.
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;
struct ifdevea devea;
/* Get a socket */
s = socket(AF_INET,SOCK_DGRAM,0);
if (s < 0) {
perror("socket");
exit(1);
}
strcpy(devea.ifr_name,"te0");
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,"te0");
if (ioctl(s,SIOCENABLEBACK,&data) < 0) {
perror("SIOCENABLEBACK:");
exit(1);
}
close(s); }
arp(7), inet(7), netintro(7)
te(7)
[ Back ] |