Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!purdue!decwrl!shlump.dec.com!michaud From: michaud@decvax.dec.com (Jeff Michaud) Newsgroups: comp.unix.ultrix Subject: Re: DLI/Ethernet interface questions Keywords: DLI Ethernet promiscuous Message-ID: <3652@shlump.dec.com> Date: 20 Jul 89 22:54:46 GMT References: <810@uhnix2.uh.edu> Sender: news@shlump.dec.com Lines: 52 In article <810@uhnix2.uh.edu>, jh@allez.uh.edu (Jeff Hayward) writes: > How can I obtain the Ethernet address of a given interface? As promised, here is the sample program: #include #include #include #include #include main(argc, argv) int argc; char *argv[]; { struct ifdevea address; int sock; if( argc <= 1 ) { fprintf(stderr, "Usage: %s device\n", argv[0]); exit(); } bzero(&address, sizeof(address)); strcpy(address.ifr_name, argv[1]); sock = socket(AF_UNIX, SOCK_DGRAM, 0); if( sock < 0 ) { perror("socket(AF_UNIX, SOCK_DGRAM, 0)"); exit(); } if( ioctl(sock, SIOCRPHYSADDR, &address) < 0 ) { perror("ioctl(SIOCRPHYSADDR)"); exit(); } close(sock); printf("Current Physical Address: %02x-%02x-%02x-%02x-%02x-%02x\n", address.current_pa[0], address.current_pa[1], address.current_pa[2], address.current_pa[3], address.current_pa[4], address.current_pa[5]); printf("Default Hardware Address: %02x-%02x-%02x-%02x-%02x-%02x\n", address.default_pa[0], address.default_pa[1], address.default_pa[2], address.default_pa[3], address.default_pa[4], address.default_pa[5]); } -- /--------------------------------------------------------------\ |Jeff Michaud michaud@decwrl.dec.com michaud@decvax.dec.com| |DECnet-ULTRIX #include | \--------------------------------------------------------------/