Re: QIBM_QTG_DEVINIT

cesco via RPG400-L <[email protected]>
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <[email protected]>
 Hitake in account that IPv4 address is 32bit and IPv6 address 128bit. inet_ntop should be able to give a string representation of both....

    On Saturday, August 23, 2025 at 07:52:14 PM GMT+2, Vern Hamberg via RPG400-L <[email protected]> wrote:  
 
 Hi Jon

Exactly, and easily generalized!

Some days I get lazy and only "think" about coding something!

*Regards*

*Vern Hamberg*

IBM Champion 2025 <cid:[email protected]> CAAC 
(COMMON Americas Advisory Council) IBM Influencer 2023


On 8/22/2025 5:49 PM, Jon Paris wrote:
> Here you go Vern
>
> Felt like doing some coding! Just one of many ways of doing it.
>
> Dcl-ds data;
>    all uns(10) inz(173409066);
>    part uns(3) dim(4) samepos(all);
> End-Ds;
>
> dcl-s IP varchar(15) inz;
> dcl-s i int(3);
>
> For i = 1 to %elem(part);
>    IP += %char(part(i));
>    If i < %elem(part);
>        IP += ':';
>    endif;
> endfor;
>
> Dsply IP;
>
> Jon Paris
> [email protected]
>
>
>
>> On Aug 22, 2025, at 6:27 PM, Vern Hamberg via RPG400-L<[email protected]> wrote:
>>
>> Nice summary, Daniel, very helpful. I'd forgot the details!
>>
>> For the hexadecimally-challenged -
>>
>> So one could take each byte into base 10 and separate them with periods - as your example has it -
>>
>> 0x0A56032A
>>
>> 0A = 10
>> 56 = 86
>> 03 = 3
>> 2A = 42
>>
>> Hence, 10.86.3.42
>>
>> I believe I can envision a nifty little RPG subprocedure that could handle this, maybe use an array of uns(3)'s? - but the C version is there, so why bother?
>>
>> *Regards*
>>
>> *Vern Hamberg*
>>
>> IBM Champion 2025<cid:[email protected]> CAAC (COMMON Americas Advisory Council) IBM Influencer 2023
>>
>>
>> On 8/22/2025 2:44 PM, Daniel Gross wrote:
>>> Hi Jay,
>>>
>>> this is the IP address in "native" or "binary" - not in the usual "readable" 4-decimal-bytes-separated-by-dots form.
>>>
>>> Lets think of an IP address like:
>>>
>>>    192.168.123.1
>>>
>>> That would be 0xC0A87B01 in hex format.
>>>
>>> And that would be 3232267009 in decimal.
>>>
>>> That's how IP addresses are internally stored. The dotted notation is only for us humans.
>>>
>>> Subneting, routing, firewalls - all use these internal forms.
>>>
>>> Your address 173409066 would read as 0x0A56032A in hex or 10.86.3.42 in readable (dotted) form.
>>>
>>> HTH
>>> Daniel
>>>
>>>
>>>
>>>> Am 22.08.2025 um 21:00 schrieb Jay Vaughn<[email protected]>:
>>>>
>>>> Charles...
>>>>
>>>> It made a difference for sure but I question if that is really the IP
>>>> address...
>>>>
>>>> Here is my DS (with new embedded DS for ip address you pointed out)
>>>>
>>>> dcl-ds ds_connect        qualified;
>>>>
>>>>    lenConnDsc            int(10);
>>>>
>>>>      dcl-ds ds_ip4AddressClient;
>>>>
>>>>        sin_len                int(3);
>>>>
>>>>        sin_family            int(3);
>>>>
>>>>        sin_port              uns(5);
>>>>
>>>>        sin_addr              uns(10);
>>>>
>>>>        filler                char(12);
>>>>
>>>>      end-ds;
>>>>
>>>>    clientPWValidated      char(1);
>>>>
>>>>    workstationType        char(14);
>>>>
>>>>    sslConnection          char(1);
>>>>
>>>> …
>>>>
>>>>
>>>>
>>>>> EVAL ds_connect
>>>>    DS_CONNECT.LENCONNDSC = 132
>>>>
>>>>    DS_CONNECT.DS_IP4ADDRESSCLIENT.SIN_LEN = 16
>>>>
>>>>    DS_CONNECT.DS_IP4ADDRESSCLIENT.SIN_FAMILY = 2
>>>>
>>>>    DS_CONNECT.DS_IP4ADDRESSCLIENT.SIN_PORT = 56406
>>>>
>>>>    DS_CONNECT.DS_IP4ADDRESSCLIENT.SIN_ADDR = 173409066
>>>>
>>>>    DS_CONNECT.DS_IP4ADDRESSCLIENT.FILLER = '            '
>>>>
>>>>    DS_CONNECT.CLIENTPWVALIDATED = '0'
>>>>
>>>>    DS_CONNECT.WORKSTATIONTYPE = 'IBM-3477-FC  '
>>>>
>>>>    DS_CONNECT.SSLCONNECTION = '1'
>>>>
>>>>    DS_CONNECT.IP4ADDRESSSERVER = '███\█À██            '
>>>>
>>>>    DS_CONNECT.CLIENTAUTHLEVEL = '0'
>>>>
>>>>    DS_CONNECT.RESERVED01 = '  '
>>>>
>>>>    DS_CONNECT.CLIENTCERTVALID = 0
>>>>
>>>>    DS_CONNECT.OFFSETCLIENTCERT = 1362
>>>>
>>>>    DS_CONNECT.CLIENTCERTLEN = 0
>>>>
>>>>    DS_CONNECT.DS_IP6ADDRESSCLIENT.SIN_LEN = 28
>>>>
>>>>    DS_CONNECT.DS_IP6ADDRESSCLIENT.SIN_FAMILY = 24
>>>>
>>>>
>>>> What else?
>>>>
>>>>
>>>> thanks
>>>>
>>>> Jay
>>>>
>>>>> On Fri, Aug 22, 2025 at 2:23 PM Jay Vaughn<[email protected]>
>>>>> wrote:
>>>>>
>>>>> That’s totally helpful Charles.
>>>>> Yes I’m overlooking the fact that up address is actually another DS!
>>>>>
>>>>> Let me address that.
>>>>>
>>>>> Thank you!
>>>>>
>>>>>> On Aug 22, 2025, at 1:28 PM, Charles Wilt<[email protected]> wrote:
>>>>>>
>>>>>> Well, I'd say you're doing something wrong... :p
>>>>>>
>>>>>> Show the DS definition and how it's being loaded...
>>>>>>
>>>>>> A quick glance at the docs,
>>>>>>
>>>>> https://www.ibm.com/docs/en/i/7.4.0?topic=program-init0100-format-connection-description-information
>>>>>> and I see that the IP address field is actually another DS...
>>>>>> Name
>>>>>> Size
>>>>>> Description
>>>>>> sin_len CHAR(1) Size of the sockaddr_in structure
>>>>>> sin_family CHAR(1) Protocol family IP (Version 4) is hex 02
>>>>>> sin_port CHAR(2) 16-bit unsigned port number
>>>>>> sin_addr CHAR(16) 4-byte unsigned
>>>>>> An RPG DS would be
>>>>>> dcl-ds ipAddr;
>>>>>> len int(3);
>>>>>> family int(3);
>>>>>> port uint(5);
>>>>>> addr uint(10);
>>>>>> *n  char(12)
>>>>>> end-ds;
>>>>>>
>>>>>> Little confused about the sin_addr being defined as char(16) yet the
>>>>>> description is "4-byte unsigned"..
>>>>>>
>>>>>> I'm assuming that there's 12 bytes of filler...which looks to be the case
>>>>>> from what you posted...
>>>>>>
>>>>>> HTH,
>>>>>> Charles
>>>>>>
>>>>>>
>>>>>>> On Fri, Aug 22, 2025 at 10:57 AM Jay Vaughn<[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>> has anyone worked with this exit point before.
>>>>>>>
>>>>>>> My exit pgm is coded and my parms are coming in correctly aligned
>>>>> however
>>>>>>> some of the data is non legible and look like the following...
>>>>>>> 12:54 PM (0 minutes ago)
>>>>>>> to me
>>>>>>>
>>>>>>>> EVAL ds_connect
>>>>>>> DS_CONNECT.LENCONNDSC = 132
>>>>>>>
>>>>>>> DS_CONNECT.IP4ADDRESSCLIENT = '██ÉC█Õ█P            '
>>>>>>>
>>>>>>> DS_CONNECT.CLIENTPWVALIDATED = '0'
>>>>>>>
>>>>>>> DS_CONNECT.WORKSTATIONTYPE = 'IBM-3477-FC  '
>>>>>>>
>>>>>>> DS_CONNECT.SSLCONNECTION = '1'
>>>>>>>
>>>>>>> DS_CONNECT.IP4ADDRESSSERVER = '███\█À██            '
>>>>>>>
>>>>>>> DS_CONNECT.CLIENTAUTHLEVEL = '0'
>>>>>>>
>>>>>>> DS_CONNECT.RESERVED01 = '  '
>>>>>>>
>>>>>>> DS_CONNECT.CLIENTCERTVALID = 0
>>>>>>>
>>>>>>> DS_CONNECT.OFFSETCLIENTCERT = 1362
>>>>>>>
>>>>>>> DS_CONNECT.CLIENTCERTLEN = 0
>>>>>>>
>>>>>>> DS_CONNECT.IP6ADDRESSCLIENT = '██ÉC              ███Õ█P    '
>>>>>>>
>>>>>>> DS_CONNECT.IP6ADDRESSSERVER = '███\              ███À██    '
>>>>>>>
>>>>>>>
>>>>>>> I have tried ccsid(*utf8) for the first ip4 address variable but no
>>>>> luck.
>>>>>>> Any idea why these are not coming through legible?
>>>>>>>
>>>>>>>
>>>>>>> tia
>>>>>>>
>>>>>>>
>>>>>>> Jay
>>>>>>> --
>>>>>>> This is the RPG programming on IBM i (RPG400-L) mailing list
>>>>>>> To post a messageemail:[email protected]
>>>>>>> To subscribe, unsubscribe, or change list options,
>>>>>>> visit:https://lists.midrange.com/mailman/listinfo/rpg400-l
>>>>>>> oremail:[email protected]
>>>>>>> Before posting, please take a moment to review the archives
>>>>>>> athttps://archive.midrange.com/rpg400-l.
>>>>>>>
>>>>>>> [email protected] for any subscription
>>>>> related
>>>>>>> questions.
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> This is the RPG programming on IBM i (RPG400-L) mailing list
>>>>>> To post a messageemail:[email protected]
>>>>>> To subscribe, unsubscribe, or change list options,
>>>>>> visit:https://lists.midrange.com/mailman/listinfo/rpg400-l
>>>>>> oremail:[email protected]
>>>>>> Before posting, please take a moment to review the archives
>>>>>> athttps://archive.midrange.com/rpg400-l.
>>>>>>
>>>>>> [email protected] for any subscription
>>>>> related questions.
>>>> --
>>>> This is the RPG programming on IBM i (RPG400-L) mailing list
>>>> To post a messageemail:[email protected]
>>>> To subscribe, unsubscribe, or change list options,
>>>> visit:https://lists.midrange.com/mailman/listinfo/rpg400-l
>>>> oremail:[email protected]
>>>> Before posting, please take a moment to review the archives
>>>> athttps://archive.midrange.com/rpg400-l.
>>>>
>>>> [email protected] for any subscription related questions.
>>>>
>> -- 
>> This is the RPG programming on IBM i (RPG400-L) mailing list
>> To post a message email:[email protected]
>> To subscribe, unsubscribe, or change list options,
>> visit:https://lists.midrange.com/mailman/listinfo/rpg400-l
>> or email:[email protected]
>> Before posting, please take a moment to review the archives
>> athttps://archive.midrange.com/rpg400-l.
>>
>> Please [email protected] for any subscription related questions.
>>
-- 
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact [email protected] for any subscription related questions.

  
-- 
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact [email protected] for any subscription related questions.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.