Hi,
I need to manipulate an ipv6 address. I need to add some value to the netaddress and replace the hostaddress with another value. E.g. add 2 to the netaddress and replace the hostaddress by ::1
2001:db8:8500:11f8:6631:50ff:fe9a:640b/62 -> 2001:db8:8500:11fa::1/62

Is there a function in fpc that converts a 'short' ipv6 address to its full length ? I.e. convert :: to the required number of 0's to get a 'full' address ? E.g.
2001:DB8:8500:11f8::1 -> 2001:0DB8:8500:11f8:0000:0000:0000:0001

And what are the NetAddrToStr6 and HostAddrToStr6 and their counterparts supposed to do ? Same for the ipv4 functions.

If I try following program (compiled with fpc 2.6.0) with this :
./project1 6 2001:DB8:8500:11f8::1/62
I get strange results :
netadr  : ::0033:3DBB:1000:0000:0034:5296:1000
hostadr : ::
netadr  : 2001:0DB8:8500:11F8::0001
hostadr : 2001:0DB8:8500:11F8::0001

Note the first netaddress.

program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, sockets;

var
  inparam : string;
  address : string;

begin

if not ((paramstr(1)='6') or (paramstr(1)='4')) then
 writeln('only 4 or 6 allowed as first parameter')
else
 if paramstr(1)='6' then
  begin
   inparam:=paramstr(2);
   writeln(inparam);
   address:=copy(inparam,1,pos('/',inparam)-1);
   writeln('netadr  : ',NetAddrToStr6(StrToNetAddr6(inparam)));
   writeln('hostadr : ',HostAddrToStr6(StrToHostAddr6(inparam)));
   writeln('netadr  : ',NetAddrToStr6(StrToNetAddr6(address)));
   writeln('hostadr : ',HostAddrToStr6(StrToHostAddr6(address)));
  end
else
 begin
   inparam:=paramstr(2);
   writeln(inparam);
   address:=copy(inparam,1,pos('/',inparam)-1);
   writeln('netadr  : ',NetAddrToStr(StrToNetAddr(inparam)));
   writeln('hostadr : ',HostAddrToStr(StrToHostAddr(inparam)));
   writeln('netadr  : ',NetAddrToStr(StrToNetAddr(address)));
   writeln('hostadr : ',HostAddrToStr(StrToHostAddr(address)));
 end;
end.


Thanks,

Koenraad Lelong
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to