[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::axp-developer

Title:Alpha Developer Support
Notice:[email protected], 800-332-4786
Moderator:HYDRA::SYSTEM
Created:Mon Jun 06 1994
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:3722
Total number of notes:11359

3469.0. "K.B.C Advanced Technologies - Point 25505" by KZIN::ASAP () Fri Apr 11 1997 09:48

    Company Name :  K.B.C Advanced Technologies - Point 25505
    Contact Name :  Mark Belfield
    Phone        :  44 1932856 ext 622
    Fax          :  
    Email        :  [email protected]
    Date/Time in :  11-APR-1997 13:47:49
    Entered by   :  Nick Hudson
    SPE center   :  REO

    Category     :  vms
    OS Version   :  
    System H/W   :  


    Brief Description of Problem:
    -----------------------------

From:	RDGENG::MRGATE::"RDGMTS::PMDF::mail.dec.com::MartinB2" 11-APR-1997 09:53:15.31
To:	RDGENG::ASAP
CC:	
Subj:	ESCALATION: POINT 25505   , Company: KBC   TO ASAP READING

From:	NAME: Brendan Martin <[email protected]@PMDF@INTERNET>
To:	NAME: '[email protected]' <IMCEAX400-c=US+3Ba=+20+3Bp=DIGITAL+3Bo=SBUEURMFG+3Bdda+3ASMTP=asap+40reo+2Emts+2Edec+2Ecom+3B@mail.dec.com@PMDF@INTERNET>

POINT Log Number	25505
Company Name 	K.B.C Advanced Technologies
Engineers name	Mark Belfield
Telephone Number 	44 1932856 ext 622	
Fax Number		N/A
E-mail Address	[email protected]

Operating System, Version	
Platform			

Problem Statement		
Mark is trying to set up a low level program to  resolve unique ip 
addresses /ethernet addresses and is looking for something like a 
UNAME command in Unix but for Open VMS which can be callable from C or 
Fortran.

Hardware DEC Alpha 1000A 5/400
Software Open VMS 6.2-1H3

     Problem:

     We at KBC are an ASAP member - no A60692.

     We supply an application to clients written in DEC Fortran and C. 
     For security purposes we need to uniquely identify client 
machines.
     Under Unix this is done via the uname C procedure call.
     We currently use the ethernet address from a network card, but
     after upgrading our Alpha it does not work. The code to get the
     ethernet address was supplied to us by DEC at the Basingstoke
     porting centre a few years ago.
     Please see attached.

     Ideally we would like a unique machine id like uname under unix. 
     Our Second preference would be to get the ethernet address using 
a
     higher level interface than the one shown in the attached code.
     Our third preference would be to correct the code shown in the
     attachment.


Regards,

Brendan

In replying, please use [email protected]

      SUBROUTINE MCENET(ETHERNET_ADDRESS,STATUS)
*
***********************************************************************  
*********
* 
                                                                        
     *
*  KBC PROCESS TECHNOLOGY  LTD                             * 
                  *
*  KBC HOUSE                                            *** *** 
               *
*  CHURCHFIELD ROAD                                *****       ***** 
          *
*  WEYBRIDGE                                    *** K  K  BBB   CC 
 ***        *
*  SURREY                                      **   K K   B  B C  C 
  **       *
*  KT13 8DB                                    *    KK    BBB  C 
      *       *
*  ENGLAND                                     **   K K   B  B C  C 
  **       *
*                                               *** K  K  BBB   CC 
 ***        *
*  WEYBRIDGE (0932) 56622                          *****       ***** 
          *
*                                                       *** *** 
               *
*  c 1985                                                  * 
                  *
* 
                                                                        
     *
*  PETROFINE is a Registered Trade Mark of KBC Process Consultants 
Ltd.        *
* 
                                                                        
     *
***********************************************************************  
*********
*
*  ROUTINE: MCENET
*
*  GENERALITY: PETROFINE MACHINE DEPENDANT UTILITY
*
*  FUNCTION: GET THE ETHERNET ADDRESS OF THE CURRENT MACHINE
*
*
*  LANGUAGE: VAX FORTRAN
*
*  NON-STANDARD FEATURES:
*
*
*  AUTHOR: DEC source
*
*  DATE: 20th January 1995
*
*  MODIFICATIONS:
*
*  CALLED BY:  MCPASS
*
*  CALLS:
*
*
*  ARGUMENTS:
*
*     ETHERNET_ADDRESS    O   the ethernet address of the current 
machine
*     STATUS              O   status of the routine
*
*
*  COMMON VARIABLES:
*
      PARAMETER     NMA$C_PCLI_HWA=1160
      INCLUDE '($IODEF)'
      INCLUDE '($SSDEF)'
      INTEGER*4 STATUS,ETHERNET_ADDRESS(6),I,K
      INTEGER*2 INPUT_CHAN
*
*    DEFINE IO STATUS BLOCK
*
      STRUCTURE /IOSTAT_BLOCK/
      INTEGER*2 IOSTAT
      INTEGER*2 TRANSFER_SIZE
      BYTE     FILLER_1
      BYTE     UNIT_STATUS
      BYTE     ERROR_SUMMARY
      BYTE     FILLER_2
      END STRUCTURE
      RECORD /IOSTAT_BLOCK/ IOSB
*
*    DEFINE CHARACTERISTICS BLOCK
*
      STRUCTURE /CHARACTERISTICS/
      BYTE     CLASS
      BYTE     TYPE
      INTEGER*2 MAX_MSG_SIZE
      BYTE     FILLER_1
      BYTE     UNIT_STATUS
      BYTE     ERROR_SUMMARY
      BYTE     FILLER_2
      END STRUCTURE
      RECORD /CHARACTERISTICS/  CHARBUF
*
*    DEFINE EXTENDED CHARACTERISTICS BLOCK
*
      STRUCTURE /EXTENDED_CHARACTERISTICS/
      UNION
      MAP
      BYTE B (512)
      END MAP
      MAP
      INTEGER*2 W (256)
      END MAP
      END UNION
      END STRUCTURE
      RECORD /EXTENDED_CHARACTERISTICS/ EXT_CHAR
*
*    DEFINE EXTENDED CHARACTERISTICS BLOCK DESCRIPTOR
*
      STRUCTURE /EXT_CHAR_DESC/
      INTEGER*4 LENGTH /512/
      INTEGER*4 ADDRESS
      END STRUCTURE
      RECORD /EXT_CHAR_DESC/ EXT_DESC
      INTEGER*4 SYS$ASSIGN,SYS$QIOW
*
*    ASSIGN AN I/O CHANNEL TO THE DEUNA
*
      STATUS = SYS$ASSIGN ('EWA0:',INPUT_CHAN,,)
      IF (STATUS .EQ. SS$_NOSUCHDEV)
     +STATUS = SYS$ASSIGN ('XEA0:',INPUT_CHAN,,)
      IF (STATUS .EQ. SS$_NOSUCHDEV)
     +STATUS = SYS$ASSIGN ('XQA0:',INPUT_CHAN,,)
      IF (STATUS .EQ. SS$_NOSUCHDEV)
     +STATUS = SYS$ASSIGN ('ETA0:',INPUT_CHAN,,)
      IF (STATUS .EQ. SS$_NOSUCHDEV)
     +STATUS = SYS$ASSIGN ('ESA0:',INPUT_CHAN,,)
      IF (STATUS .EQ. SS$_NOSUCHDEV)
     +STATUS = SYS$ASSIGN ('EZA0:',INPUT_CHAN,,)
      IF (.NOT. STATUS)  CALL LIB$SIGNAL (%VAL(STATUS))
*
*    PUT ADDRESS OF EXTENDED CHARACTERISTICS BUFFER INTO
*    BUFFER DESCRIPTOR
*
      EXT_DESC.ADDRESS =%LOC(EXT_CHAR)
*
*    DO THE QIO TO GET CHARACTERISTICS
*
      STATUS = SYS$QIOW (,%VAL(INPUT_CHAN),
     +%VAL(IO$_SENSEMODE .OR. IO$M_CTRL),
     +IOSB,,,CHARBUF,EXT_DESC,,,,)
      IF (.NOT. STATUS)  CALL LIB$SIGNAL (%VAL(STATUS))
      IF (.NOT. IOSB.IOSTAT)  CALL LIB$SIGNAL (%VAL(IOSB.IOSTAT))
*
*    FIND THE HARDWARE ADDRESS AND PRINT IT
*
      I=2
      DO WHILE (I .LT. IOSB.TRANSFER_SIZE)
      IF ((EXT_CHAR.W(I/2).AND.'0FFF'X) .EQ. NMA$C_PCLI_HWA) THEN
         DO K = 1 , 6
         ETHERNET_ADDRESS(K) = EXT_CHAR.B(I+2+K)
         ENDDO
         STATUS = 0
         RETURN
      ENDIF
      IF ((EXT_CHAR.W(I/2) .AND. '1000'X) .EQ. 0) THEN
         I = I+6
      ELSE
         I = I + EXT_CHAR.W(I/2+1) + 4
      ENDIF
      ENDDO
      STATUS = -1
      RETURN
      END


RFC-822-headers:
Received: from reoexc1.reo.dec.com by rg71rw.reo.dec.com (PMDF V5.0-7 #15552)
 id <[email protected]> for [email protected]; Fri,
 11 Apr 1997 09:42:54 +0100
Received: by reoexc1.reo.dec.com with SMTP
 (Microsoft Exchange Server Internet Mail Connector Version 4.0.994.63)
 id <[email protected]>; Fri, 11 Apr 1997 09:45:28 +0100
X-Mailer: Microsoft Exchange Server Internet Mail Connector Version 4.0.994.63
T.RTitleUserPersonal
Name
DateLines
3469.1http://www.partner.digital.com/www-swdev/pages/Home/TECH/faqs/ovms/ethernVMS.htmlHYDRA::NEWMANChuck Newman, 508/467-5499 (DTN 297), MRO1-3/F26Fri Apr 11 1997 10:4010
Nick --

Point them to the code in the FAQ on our website for
ethernet id checking code.

Also, remind them that system managers can easily reconfigure
systems to have the same uname and hostid output (thereby foiling
their licensing scheme).

							-- Chuck Newman
3469.2KZIN::HUDSONThat&#039;s what I thinkMon Apr 14 1997 07:00143
From:	DEC:.REO.REOVTX::HUDSON       "[email protected] - UK Software
Partner Engineering 830-4121" 14-APR-1997 11:00:26.20
To:	nm%vbormc::"[email protected]"
CC:	HUDSON
Subj:	re:ASAP 25505, system IDs for licensing

Hello Mark Belfield

Thanks for your ASAP question on obtaining a unique machine address.

The mechanism of using a system's ethernet address is one that many (most?)
people use on Alpha.

I am not sure what's wrong with the code you sent in; I include below the
FORTRAN program I've always used, and this seems to work on my machine :

$ r ethernet
Ethernet address = 08-00-2B-32-C2-B1
$

For a C example, you could look at the web page:

www.partner.digital.com/www-swdev/pages/Home/TECH/faqs/ovms/ethernVMS.html


If you can't get this working, let me know what the error is you're seeing.

Regards
Nick Hudson
Digital Software Partner Engineering


	PROGRAM GET_ETHERNET ADDRESS
C
C
C
C
C
	PARAMETER     NMA$C_PCLI_HWA=1160
	INCLUDE '($IODEF)'
	INCLUDE '($SSDEF)'

	INTEGER*4 STATUS
	INTEGER*2 INPUT_CHAN
C
C    DEFINE IO STATUS BLOCK
C
	STRUCTURE /IOSTAT_BLOCK/
	  INTEGER*2 IOSTAT
	  INTEGER*2 TRANSFER_SIZE
	  BYTE     FILLER_1
	  BYTE     UNIT_STATUS
	  BYTE     ERROR_SUMMARY
	  BYTE     FILLER_2
	END STRUCTURE
	RECORD /IOSTAT_BLOCK/ IOSB
C
C    DEFINE CHARACTERISTICS BLOCK
C
	STRUCTURE /CHARACTERISTICS/
	  BYTE     CLASS
	  BYTE     TYPE
	  INTEGER*2 MAX_MSG_SIZE
	  BYTE     FILLER_1
	  BYTE     UNIT_STATUS
	  BYTE     ERROR_SUMMARY
	  BYTE     FILLER_2
	END STRUCTURE
	RECORD /CHARACTERISTICS/  CHARBUF
C
C    DEFINE EXTENDED CHARACTERISTICS BLOCK
C
	STRUCTURE /EXTENDED_CHARACTERISTICS/
	  UNION
	    MAP
	      BYTE B (512)
	    END MAP
	    MAP
	      INTEGER*2 W (256)
	    END MAP
	  END UNION
	END STRUCTURE
	RECORD /EXTENDED_CHARACTERISTICS/ EXT_CHAR
C
C    DEFINE EXTENDED CHARACTERISTICS BLOCK DESCRIPTOR
C
	STRUCTURE /EXT_CHAR_DESC/
	  INTEGER*4 LENGTH /512/
	  INTEGER*4 ADDRESS
	END STRUCTURE
	RECORD /EXT_CHAR_DESC/ EXT_DESC

	INTEGER*4 SYS$ASSIGN,SYS$QIOW
C
C    ASSIGN AN I/O CHANNEL TO THE DEUNA
C
	STATUS = SYS$ASSIGN ('XEA0:',INPUT_CHAN,,)
	IF (STATUS .EQ. SS$_NOSUCHDEV)
	1     STATUS = SYS$ASSIGN ('XQA0:',INPUT_CHAN,,)
	IF (STATUS .EQ. SS$_NOSUCHDEV)
	1     STATUS = SYS$ASSIGN ('ETA0:',INPUT_CHAN,,)
	IF (STATUS .EQ. SS$_NOSUCHDEV)
	1     STATUS = SYS$ASSIGN ('ESA0:',INPUT_CHAN,,)
	IF (STATUS .EQ. SS$_NOSUCHDEV)
	1     STATUS = SYS$ASSIGN ('EZA0:',INPUT_CHAN,,)
	IF (.NOT. STATUS)  CALL LIB$SIGNAL (%VAL(STATUS))
C
C    PUT ADDRESS OF EXTENDED CHARACTERISTICS BUFFER INTO
C    BUFFER DESCRIPTOR
C
	EXT_DESC.ADDRESS =%LOC(EXT_CHAR)

C
C    DO THE QIO TO GET CHARACTERISTICS
C
	STATUS = SYS$QIOW (,%VAL(INPUT_CHAN),
	1     %VAL(IO$_SENSEMODE .OR. IO$M_CTRL),
	1     IOSB,,,CHARBUF,EXT_DESC,,,,)
	IF (.NOT. STATUS)  CALL LIB$SIGNAL (%VAL(STATUS))
	IF (.NOT. IOSB.IOSTAT)  CALL LIB$SIGNAL (%VAL(IOSB.IOSTAT))
C
C    FIND THE HARDWARE ADDRESS AND PRINT IT
C
	I=2
	DO WHILE (I .LT. IOSB.TRANSFER_SIZE)
	     IF ((EXT_CHAR.W(I/2) .AND. '0FFF'X) .EQ. NMA$C_PCLI_HWA)
	1             THEN
	              TYPE 200, (EXT_CHAR.B(J),J=I+3,I+8)
200                FORMAT(' Ethernet address = ',5(Z2.2,'-'),Z2.2)
	              CALL EXIT
	     ENDIF

	     IF ((EXT_CHAR.W(I/2) .AND. '1000'X) .EQ. 0) THEN
	             I = I+6
	     ELSE
	          I = I + EXT_CHAR.W(I/2+1) + 4
	     ENDIF
	ENDDO

	CALL EXIT
	END