From: Bernard Giroud [bernard.giroud@creditlyonnais.ch]
Sent: Tuesday, March 11, 2003 5:56 AM
To: Info-VAX@Mvb.Saic.Com
Subject: Re: Local port number for an incoming connection

Found !!

Thanks for your answer Christoph.

The trick was IO$_TTY_PORT_BUFIO and IO$M_TN_SENSEMODE...

Here is the code for those interested :

 IDENTIFICATION DIVISION.
 PROGRAM-ID.                 SG999PRE.
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
 INPUT-OUTPUT SECTION.
 DATA DIVISION.
 FILE SECTION.

 WORKING-STORAGE SECTION.
  01  ABI-STAT PIC S9(9) COMP VALUE 1.
  01  QIOFUNC  PIC S9(9) COMP.
  01  W-NPORT  PIC S9(9) COMP.
  01  W-P3.
      05 SIN-LEN PIC X.
      05 SIN-FAMILY PIC X.
      05 SIN-PORT   PIC S9(4) COMP.
      05 SIN-ADDR   PIC S9(9) COMP.
  01  W-CHANNEL PIC S9(4) COMP.
  01  KIO$_TTY_PORT      PIC S9(9) COMP VALUE EXTERNAL IO$_TTY_PORT.
  01  KIO$_TTY_PORT_BUFIO PIC S9(9) COMP VALUE EXTERNAL IO$_TTY_PORT_BUFIO.
  01  KIO$M_TN_SENSEMODE PIC S9(9) COMP VALUE 16384.
  01  IOSBS.
      05 IOSB OCCURS 2 PIC S9(9) COMP.
  01  MAP_PORT_ITLST.
      05 FILLER.
*        Local address item
         10 PIC S9(4) COMP VALUE 128.
         10 PIC S9(4) COMP VALUE 11.
         10 POINTER VALUE REFERENCE W-P3.
         10 MAP-NEFFLEN PIC S9(9) COMP VALUE 0.
      05 POINTER VALUE 0.
 PROCEDURE DIVISION GIVING ABI-STAT.
 A-INITIALISATION SECTION.
 A10.
     CALL "SYS$ASSIGN" USING BY DESCRIPTOR "TT:"
                             BY REFERENCE W-CHANNEL
                             OMITTED OMITTED
                       GIVING ABI-STAT
     IF ABI-STAT IS FAILURE GO TO F01 END-IF

     COMPUTE QIOFUNC = KIO$_TTY_PORT_BUFIO + KIO$M_TN_SENSEMODE

     CALL "SYS$QIOW" USING BY VALUE 0 W-CHANNEL QIOFUNC
                           BY REFERENCE IOSB(1) BY VALUE 0 0
                           BY VALUE 0 0 0 0
                           BY REFERENCE  MAP_PORT_ITLST
                           BY VALUE 0
                       GIVING ABI-STAT
     IF ABI-STAT IS FAILURE GO TO F01 END-IF
     IF IOSB(1) IS FAILURE MOVE IOSB(1) TO ABI-STAT GO TO F01 END-IF

     CALL "ntohs" USING BY VALUE SIN-PORT GIVING W-NPORT
     DISPLAY "PORT:" W-NPORT
     .
 F01.
     STOP RUN.


Results after doing a: telnet nickel/port=30001

NICKEL::BG>run/nodeb sg999pre
PORT:     30001
NICKEL::BG>


"Christoph Gartmann" <gartmann@immunbio.mpg.de> a écrit dans le message de
news: b4k4b8$4ar$1@n.ruf.uni-freiburg.de...
> In article <3e6cbb86$0$26862$626a54ce@news.free.fr>, "Bernard Giroud"
<bernard.giroud@creditlyonnais.ch> writes:
> >I need to get the local port used by an inbound connection;
> >it seems that a qio call with a IO$_SENSEMODE with p3
> >set should do the trick. However when I try I get a SSFAIL ?
> >
> >Any idea or code fragment that works ?
>
> Please post your code-fragment.
>
> Regards,
>    Christoph Gartmann
>
> -- --------------------------------------------------------------------+
> | Max-Planck-Institut fuer      Phone   : +49-761-5108-464   Fax: -452 |
> | Immunbiologie                                                        |
> | Postfach 1169                 Internet: gartmann@immunbio.mpg.de     |
> | D-79011  Freiburg, Germany                                           |
> +------------- http://www.immunbio.mpg.de/home/menue.html -------------+