C NOTE: table is hashed on top word of address by AND'ing it with C ICPADR_MAXADDRS (hence why it must be a power of 2 minus 1). STRUCTURE /ETH_ADR/ UNION MAP INTEGER*2 NUM(0:2) END MAP MAP INTEGER*4 LNUM END MAP MAP CHARACTER*6 CNUM END MAP MAP BYTE BNUM(0:5) END MAP END UNION END STRUCTURE ! /ETH_ADR/ INTEGER*4 ICPADR_MAXADDRS, ICPADR_MINADDRS, + ICPADR_MAXPROTS, ICPADR_SECVERSION PARAMETER(ICPADR_MAXADDRS=4095, ! must be 2**N - 1, N integer + ICPADR_MINADDRS=44, + ICPADR_MAXPROTS=10, + ICPADR_SECVERSION='01000000'X) INTEGER*4 ICPADR_USED, ICPADR_SREF, ICPADR_DREF, ICPADR_DECNET, + ICPADR_INET, ICPADR_UB, ICPADR_XYPLEX, ICPADR_DBRIDGE, + ICPADR_DSERV, ICPADR_LAVC, ICPADR_VITALINK, ICPADR_INETNAME, + ICPADR_MACZONE, ICPADR_MACNUM, ICPADR_MOP, ICPADR_IEEE, + ICPADR_INETGATEWAY, ICPADR_DNSSERVER, ICPADR_IARP, + ICPADR_OTHERADDR, ICPADR_ADDRLIN2, ICPADR_UNKLINADDR, + ICPADR_INETMLTIPA, ICPADR_ERRMASK, ICPADR_MISCUSERS PARAMETER(ICPADR_USED=1, ! this must be least-significant bit + ICPADR_SREF=2, ! this bit must stay here + ICPADR_DREF=4, ! this bit must stay here + ICPADR_IEEE=8, ! only for associated protocols + ICPADR_DECNET=8, + ICPADR_INET='10'X, + ICPADR_UB='20'X, + ICPADR_XYPLEX='40'X, + ICPADR_DBRIDGE='80'X, + ICPADR_DSERV='100'X, + ICPADR_LAVC='200'X, + ICPADR_VITALINK='400'X, + ICPADR_INETNAME='800'X, + ICPADR_MACZONE='1000'X, ! Macintosh zone name + ICPADR_MACNUM='2000'X, ! Macintosh network.node number + ICPADR_MOP='4000'X, ! DEC MOP parameters + ICPADR_INETGATEWAY='8000'X, ! Internet IP gateway/router + ICPADR_DNSSERVER='10000'X, ! Internet DNS server + ICPADR_IARP='20000'X, ! IP address confirmed by ARP + ICPADR_OTHERADDR='40000'X, ! bridge other-side address determined + ICPADR_ADDRLIN2='80000'X, ! this-side address is line 2 + ICPADR_UNKLINADDR='20000000'X, ! ERROR: don't know which side is which + ICPADR_INETMLTIPA='40000000'X, ! ERROR: multiple IP addresses + ICPADR_ERRMASK=ICPADR_INETMLTIPA+ICPADR_UNKLINADDR, + ICPADR_MISCUSERS=ICPADR_UB+ICPADR_MOP+ICPADR_LAVC+ + ICPADR_DBRIDGE+ICPADR_DSERV+ICPADR_MACNUM+ + ICPADR_MACZONE+ICPADR_VITALINK+ICPADR_XYPLEX) BYTE BCVADR_PROTFLAGS(ICPADR_MAXPROTS,0:ICPADR_MAXADDRS), + BCVADR_INETADR(0:3,0:ICPADR_MAXADDRS), + BCVADR_END_OF_SECTION CHARACTER*4 CCVADR_INETADR(0:ICPADR_MAXADDRS) CHARACTER*7 CCVADR_DECNETNAM(0:ICPADR_MAXADDRS) CHARACTER*80 CCVADR_INETNAM(0:ICPADR_MAXADDRS), + CCVADR_MISCNAM(0:ICPADR_MAXADDRS) INTEGER*2 NCVADR_DECNETNAMLEN(0:ICPADR_MAXADDRS), + NCVADR_INETNAMLEN(0:ICPADR_MAXADDRS), + NCVADR_MISCNAMLEN(0:ICPADR_MAXADDRS), + NCVADR_PROTONADDR(ICPADR_MAXPROTS,0:ICPADR_MAXADDRS) INTEGER*4 ICVADR_ADDRCNT(0:ICPADR_MAXADDRS,0:1), + ICVADR_MIN_ADDRCNT(0:ICPADR_MAXADDRS), + ICVADR_MAX_ADDRCNT(0:ICPADR_MAXADDRS), + ICVADR_AVG_ADDRCNT(0:ICPADR_MAXADDRS), + ICVADR_SERNUM(0:ICPADR_MAXADDRS), + ICVADR_INETADR(0:ICPADR_MAXADDRS), + ICVADR_FLAGS(0:ICPADR_MAXADDRS), + ICVADR_XNSNETNUM(0:ICPADR_MAXADDRS), + ICVADR_NUMADDRS, + ICVADR_SECVERSION RECORD /ETH_ADR/ SCVADR_ADDR(0:ICPADR_MAXADDRS), + SCVADR_OTHERADDR(0:ICPADR_MAXADDRS) EQUIVALENCE (ICVADR_INETADR, BCVADR_INETADR, CCVADR_INETADR) COMMON /ADDRESS_NAMES/ ICVADR_NUMADDRS, ! must be 1st variable in COMMON + ICVADR_SECVERSION, ! must be second variable in COMMON + ICVADR_ADDRCNT, + ICVADR_MIN_ADDRCNT, ICVADR_MAX_ADDRCNT, ICVADR_FLAGS, + ICVADR_AVG_ADDRCNT, ICVADR_SERNUM, ICVADR_INETADR, + ICVADR_XNSNETNUM, NCVADR_DECNETNAMLEN, NCVADR_INETNAMLEN, + NCVADR_MISCNAMLEN, NCVADR_PROTONADDR, + SCVADR_ADDR, SCVADR_OTHERADDR, BCVADR_PROTFLAGS, + CCVADR_DECNETNAM, CCVADR_INETNAM, CCVADR_MISCNAM, + BCVADR_END_OF_SECTION ! this must be last variable in COMMON