brodie@fps.mcw.edu (04/12/90)
This is ALMOST a really stupid question.... How does one go about finding out the ethernet address of the ethernet adapter of a VAX? (via software, that is...) With NCP, etc., I can easily see the addresses of the SERVERS, but stuff like SHOW EXEC CHAR doesn't tell me what I need to know. What am I missing? ------------------------------------------------------------------------------- Kent C. Brodie - Systems Manager brodie@fps.mcw.edu Medical College of Wisconsin voice: +1 414 778 4500 FAX: +1 414 778 6694 "My dear, killing you would be like killing the Easter Bunny." -Mr. Kincaid (the "hunter") spoken to Mary Ann ; _Gilligan's Island_
chris@sharra.usc.edu (Christopher Ho) (04/13/90)
In article <3431.26246304@fps.mcw.edu>, brodie@fps.mcw.edu writes... >How does one go about finding out the ethernet address of the >ethernet adapter of a VAX? (via software, that is...) NCP> show known line char The newer VAXes also support >>> SHOW ETHER at the ROM boot prompt. Chris
grr@cbmvax.commodore.com (George Robbins) (04/13/90)
In article <3431.26246304@fps.mcw.edu> brodie@fps.mcw.edu writes: > This is ALMOST a really stupid question.... > How does one go about finding out the ethernet address of the > ethernet adapter of a VAX? (via software, that is...) > > With NCP, etc., I can easily see the addresses of the SERVERS, > but stuff like SHOW EXEC CHAR doesn't tell me what I need to know. ncp show line xyz-n characteristics Note that this shows you the original hardware address, not whatever deviated thing DECnet sets it to (something based on the DECnet area.node). -- George Robbins - now working for, uucp: {uunet|pyramid|rutgers}!cbmvax!grr but no way officially representing: domain: grr@cbmvax.commodore.com Commodore, Engineering Department phone: 215-431-9349 (only by moonlite)
ted@blia.BLI.COM (Ted Marshall) (04/13/90)
In article <10847@cbmvax.commodore.com>, grr@cbmvax.commodore.com (George Robbins) writes: > Note that this shows you the original hardware address, not whatever > deviated thing DECnet sets it to (something based on the DECnet area.node). The working Ethernet address is set from the DECnet address as follows: Compute (Area * 1024) + Node_within_area, byte swap the result, producing the low two bytes of the Ethernet address (The other four bytes are AA-00-04-00). For example, DECnet address 4.72 yields (4 * 1024) + 72 = 4168 = 0x1048. Swap the bytes and insert into the Ethernet address, yielding AA-00-04-00-48-01. Hope this helps. -- Ted Marshall ...!ucbvax!mtxinu!blia!ted <or> ted@blia.bli.com ShareBase Corp., 14600 Winchester Blvd, Los Gatos, Ca 95030 (408)378-7000 The opinions expressed above are those of the poster and not his employer.
thomas@mipsbx.nac.dec.com (Matt Thomas) (04/14/90)
> This is ALMOST a really stupid question.... > How does one go about finding out the ethernet address of the > ethernet adapter of a VAX? (via software, that is...) > > With NCP, etc., I can easily see the addresses of the SERVERS, > but stuff like SHOW EXEC CHAR doesn't tell me what I need to know. Try this program. It will list any interface that has an physical address (which may not be limited to just Ethernet adapters). #include <stdio.h> /* standard I/O */ #include <errno.h> /* error numbers */ #include <time.h> /* time definitions */ #include <sys/types.h> /* system types */ #include <sys/socket.h> /* socket stuff */ #include <sys/ioctl.h> /* ioctls */ #include <net/if.h> /* generic interface structs */ extern char *optarg; extern int optind; extern char *sys_errlist[]; main( argc, argv ) int argc; char *argv[]; { struct ifdevea devea; struct ifreq *ifr, ifreqs[32]; struct ifconf ifc; int s, i; bzero(&devea, sizeof(devea)); /* we need a socket -- any old socket will do. */ s = socket(AF_UNIX, SOCK_DGRAM, 0); if (s < 0) { perror("socket"); exit(1); } ifc.ifc_req = ifreqs; ifc.ifc_len = sizeof(ifreqs); if (ioctl(s, SIOCGIFCONF, &ifc) < 0) { perror("siocgifconf"); exit(1); } for (ifr = ifreqs; ifc.ifc_len > 0; ifr++, ifc.ifc_len -= sizeof(*ifr)) { if (strcmp(devea.ifr_name, ifr->ifr_name)) { (void) strcpy(devea.ifr_name, ifr->ifr_name); /* read the address of the interface */ if (ioctl(s, SIOCRPHYSADDR, &devea) < 0) { /* error? */ if (errno != EOPNOTSUPP && errno |= EINVAL) { /* unexpected error */ perror(devea.ifr_name); } continue; } printf("%s: ", devea.ifr_name); printf("current = %02x-%02x-%02x-%02x-%02x-%02x, ", devea.current_pa[0], devea.current_pa[1], devea.current_pa[2], devea.current_pa[3], devea.current_pa[4], devea.current_pa[5] ); printf("default = %02x-%02x-%02x-%02x-%02x-%02x\n", devea.default_pa[0], devea.default_pa[1], devea.default_pa[2], devea.default_pa[3], devea.default_pa[4], devea.default_pa[5] ); } } } -- Matt Thomas Internet: thomas@wrl.dec.com DECnet-ULTRIX Development UUCP: ...!decwrl!thomas Digital Equipment Corporation Disclaimer: This message reflects my own Littleton, MA warped views, etc.