te(7)te(7)NAMEte - TGEC Ethernet interface
SYNOPSIS
config_driver teDESCRIPTION
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 SIOCSI‐
FADDR 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.
ERRORS
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 configu‐
ration data.
EXAMPLES
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 defini‐
tions */ #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 defini‐
tions */ #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); }
SEE ALSOarp(7), inet(7), netintro(7)te(7)