www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - looking for testers: std.socket / IPv6

reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Attached is the IPv6 enabled std.socket module and a tiny test programm.
(only tested on Linux but should work on Windows too)

Changes from DMD-0.144's std.socket:
* InternetHost and InternetAddress now support IPv4 and IPv6
* "potected sockaddr_in InternetAddress.sin" has been replaced
by "potected sockaddr_in* InternetAddress.ip4"
* several new constructors in InternetAddress
* InternetAddress[] can now be sorted properly
* "public uint32_t[] InternetHost.addrList" has been replaced
by "public InternetAddress InternetHost.addrList"
* various minor changes to account for IPv6

Todo:
* documentation ...
* testing / unittests

Linux users need to fix std.c.linux.socket.addrinfo.
The proper struct is:













sample output of the test.d:














Thomas

begin 644 socket_ip6.zip

MVT-5>`0`Z`-D`%!+`P04``(`"`"UE#PTR
M;V-K970N9%54"0`#YJO;0^:KVT-5>`0`Z`-D`,P\:W/;MK*?U9G^!T0SC2E7
MH>TDQ],KQ[VCV+*K4\?2M9RFO8E'0U.0Q88B=4C*C[;);[^[BP<!D++E-&?N
M23LR"2P6^\+NXL6MS6^_:1RDB[LLNIH5S#MHL>?;VR^?P<\_V,$LB_(B7<QX


MEK-+SF8\GK`X"BYCSJ:`!'%. GEPQ7-`%`"547+%IEDZIY;+G+-T"H\&D3[1
M/>39/,KS*$V0Z"OL'V N4L28)AR?L+'54O>X6&:+-.=MP!,E8;R<8*=A.I_S
M+(R"F`4+8"T,"L">MZ&%0!P7(+VHH/>,3T" 672Y+$!J!2":9IS'=VV6+R]_


MA 5RSX+P8Y+>Q'QR-4>]0CWBE1!LDH9++"=QL9MT"1J^E*A`D!D'D:)N0%2H
M*F0HX_]:1B!"4&7CN<^Z*%F`R--E%G)VS3/4:RX8!.87P%H2W[%YD'T$L``(
M7H8SH1A;"!5)(?`E1_'7BP*:O4`M",(BZ'T>W"FA9WR>7 ,.M!I)(EDFFI" 

MB70$8-5Y$20A4K>YA6WF(&D8,'DQ\07F/2Q=9-%U .8W7Z19(6J!CN2J+9_!

M"5_3>^B#H4_2FUS];5>+D?X]HWD`SB"O!_.+:,ZO05OC4#X1^8WB;L$G?,I&
M X.?>^=,2&1<`.7]TU^Z)_W#L
M#G+0?>8!WPUDO)'Q8IDE[-VH>\R+$ZCM95D*]=C?)Y(8CW-MQEXI3EO26OH"
M:ZT\"43\MJTB;0:-6DD:[6JEV/AD21+X?/$<)&B(\MG.>N(CN/6%=L516DFJ


MLO<7;)[#R))H /-MS9M&"Z7P+*RTJF8!W(BF7MG 1X%&U36PJTT6YGOB-8_^
MX*".F"<2*4#DT`N,<\)18FK)% `JZN'!"_.6; ?=AOE[K'[&=B[8_C[;^)!L
MB,ZIV;-G>ZLALUI(D`ATAK^?6;/#FO`'6FXSWT>2+P34)_P5]M8`_?', P;&
M8,'_I-I)VLXH43Y'2` &W6'WO,MN)I(QT.,[X2Y$OI$7^!NGP81%4PQ>:3R!
ML*V\&R4X%!M\V1HCL%'[.\:3 "(4Q&L"0I7+8=/` ;2/0W]4!%FQ7'C;M\^W
MGV^WV=.;B5`!2`^`6FA 9P*))O"Y_YR\?']XO4N8P;RR](8E_,8U7Z_Y-J$D
M"<)$E$0%9"5 "FH8 "?/ NRNV4:ZZD7Y>2U9'L0\2(`+!P=/EG/6G4PPU3N"
M"!7?==#P!;*WIZ-A[P"D /^Z1V/QWJ::_J^R7-;T?\7R_BFX::,<WZE\6()3


MPS1V*.T/!>+^<' V.!^`6(CQ S=4KDOAG<J/G?)C47Y\+-"H<GC'XO,#NQC>

M5RB `,=S%6^NTVC"%NEB"6Z<>PO$!,-ZD]&3-G)$"C2%$(\\L[<6 ?F+,?VE
MD8L=DN]4>91?I"-Z\!0P K3\R7(AO0^ZAH :P[CV(HP*>WLL^OY[V]\_4>TE
M"^^C"^E.+S,>4#ZD/"1`1T9CV0`0HY.0HHBD9RW[9!%[LJ\$Y(/OO2IF)1TJ
MN)2]/\"F0:9DUO#C

M'J$U0$)E]+R<7T+T:OEU7*%->15S?BQOH =J^159DEPM(8X4$(_LH<<4&6A 
MJA`;RAQ,V,3]O/K 1802(`E,BJG7[%[BBL%"]0'UG0_)AP)UWV'?^9OYAP2B


ME48CJ; ?JS")+W!6LOU_N*^J4OFU7)4TEZJG:K,:4]!ZMK2_ITK$^,:G>M?5



M'H5LQ*.I>N50G<A% $; DA[HH="E_)%R7!9[N`XB><-I)/'G0^/:H/=3FJ^]
M&O+W%CM63>L%'?VDX%G""Z1GS?BKFL 9*%;"TTF4BW5/$75AYAM-$"G8M3<3


M'.D#PRS7
MX%=XV&>SC33/1B5UJQB07'F+9.YT3Q)'*G,GAD:Z(W*;,KUBPB+*O.5/-[VR
MELPHR7IL O6J-K]:-[5R"703J]*BZA,J0;C2 "2!2%M/--!P'$/+>X33,,P.
MA>&8E.?1A']Y>5?PS585JUBC-`;;1;UQ:_O`UE$R33=9$.ET0AH%Q4NQV``.
MU%>ETL$U;$UH,=2+!VMN9E$,/4:E8(+(#Z)Q&"1I0H9F*Q)-O$Z-;JM'B$\T
M11*E7!H!JDP4)_RV<(0E$Q%T*S4IH[,!8$")^(H"--*.-5!J%<AX^&`7$NZQ


M9\_V/^^W+Z3'K% Y=F N_1E-8! AF!Q*J[/U&F:D1DMV;)5*8E0A8<9R'%HB
MZ`*$7E>WJ^/ "IUMMS\^??NF=]8_^&DP.M];:9781\4>)7G:30 :9>EE$'[<

MMT=`5*?23X;L$-;<E70G+68FRZ*98U18:BR;13/?UD4S3L, QCRC:2^552T8


M9FX"7YF<.?.P<A:_8O<TN(30'X0%L_"K8QIIP<."3M>$'U%$F^2 /2D258L,

M2I`ZV;2H=T#SP
MS3H+<0>QEIVM47!/:2(L0TOKBHNID"H91\DFBQ8OW<)=+-TUH *=\*`XW#T\
M/!MW3W^C`S7J9:\&YG1PVBN!\,V`$JM0P\'9N<0ETUNQ+RTFZ8N7THD:A!FG
M4Q"RY*R,IY 1HS_7 L<<I3JM9D^?LG7 U!S[OBGVZAFR./90FW];?1L3C,85

M>EYH%FDE=%0LDBMEX"UC::'2JLW,15E+$"KHEVM.*T<%59$B!!OT!T`WY617
MGN+:;%'UHI"YK6XE-Y9F!0Q0K]Q1TBM5#CUZ[4D(QB%H5^'>%?(4)(F_/[R_
M,"1I`-U'P3KZ)H_IKE"Y$W<A?36AJ!/]2 '7RQ?)C8W)POWR-(EP>Z92Y5';

M/+P$%6E\S8DAMH'CDIX^L^9&J;G2)SIIG(QF8ES!3WH-<])HPBO)C#TS-X*(
M;F&E"")HWD0%I'H`;GAIP1L,*%[CE#KFBJ-I/4:&L;+Q[LK6NU;S"9\&R[B0
MT.5)2-O*-5_WYB\/)"_,XKT4FF%W7TE68C?;'#FMQPA+-3?\2.LQTM+NP-/>
MUV+EWNT! X;8JW$1CW)B=-Z>3IM;>P=M.HS_H:FBAI,!^A+L0[/B[LPX XL:





MT;>:'W8Z36/?1=/I2$6O>P&X7O<R+5/;S)K^*>%1 ;?$ D3XIR15S^[V8LV(
M--=<OHH;LE`^RB<]*KQ8W=1[J-87N:A_GS!:=.0>\RG;$3Z&[>9[T=Y%>[$2
M[WKL2]]*07<19#FO+HG;,14"'4G9JW'=?XC,V_3=5DZ7+GK_6L*H]P;BWEUJ
MQP)<,O,U3&I L1I7MJ0M+,2NY^16.&I3WRD4)V7`[\F((X!D]-%U.E9;.*SX
M)* [F"\<OHKL3IA,[4(OC1"GIL52N84GETX#J4S
M=75=TEDCPH81/$W)_> *SHZF.]6H>+_<C9U2+=D?+<':SG7'\:HK]?&GCFA2
MG3^6VE3>W\99(JTQ`*?)]EXE,GRRMLW$):Q/]^Y&6/JOV^5J[K[P=[;_X?^7

M6K&XLM$-,0X9"^/.K9C:Y?'Z8TIZK;R-577W6P3NT6Q93-*;Q+A_<=8[Z/5_
MZ='UC<.Q?!,W.TX/U062PS&^8>GKP?E/96D)7NWK"+?OC([D^JGXM]TFU0\&
MK\MK)6]&QV,H:+.M+3S8EDXAG"=XXWK8Z_VLP1`*"P ,[\GBX;",ASRZ!N'C
M]9;!Z?G9X.TY=8;0NL!JDO-D0 T4Y;>H:;Q(#BX9;_K*^X."^*TM=HBL\&P:

MX<3:I:PNM;NU%4!S$I>X+Y43>T('?LYC<*>X'F]:WH 7UK76CIHT)IANY'1?
MD&Y/=1B_Q1OC/*?X)F?NK!FFRZ1HTJ%,S$_8Y7*J#XG7WKXB[-3*,\X'RH%O
M+.EMM !5RSY:0V=31%LA=?`+F8&ETAP/^A"0C4?=]]QDTRC+ZP A/!JLY0$R
M]KW)>?748OW%5X&6C"*XG4ZLFZ./IT-(USZ]/9V`I0"*L7BHW[R10`I!=3NH
M7#T$.C6*B HE=<(Z\`YD<,LV]?U9:ST'129<)\TK91-+B&H&C1K5)QOT^?45

MB(UR%?0('>CYJ/^_O9:I"+)LO*!IZ&^5\+](7);U"=;$E$$R9>&SJ(*L0%L 
M(Y11HD $0;P)/G)(E3)<]4Q!&?2-`.%])FFR08=$$(<XN;V2*1D]!6^OR` ?
MPYYL?G38.SGW(/5[)?D"RW`T:P_<RW1RIY 1JO'RMAI*+>=&<VW/-.O_48QN
M:55*UOEJ 8[DO6ZM;)(R76^OLPO\'H.C!$7RP<F90W)MXTJ'"FFU3SH#D$-D

MQ2R0^\.C1\W`5IC'8XSN`53 BZ2WV5MQ+Z=RZW^5;R_2HWKG+F7OBEX$^V1M
M:6Q_`=O"RK]7LY95B>:`,M 3?LUC\U;RH+PI?"*_K=`V[ `SZY*P;U\%=BN=
M&\%NM7,QV*EV[ <[M<XU8:?6N2WLU#J7AEVR
MD*[.NW9V82RG8L]/OV-VN[=^'D,?S)`XU*N!XC&Y;IJP>)PFZ71JY+F("XH%

MIFL0[*1_>MP[J_0(8**F+28U_5-X[550Z1J:7YT>OGY[5(=*U!!5![^L !$U





M6XM+7F!R&^4%9?'J4SOR`V&4O-`5)I2T^`280*+;BG[:`$P?V[*$);YKM9R+


M03*)Z7MJ>KR+(H\^A7-%JP_NR<S4.'`MC]*KH5[7[('D3;N)+TCBGGC3,"EB


M0<INT>F2;&27I60TI<]VD+S;VOYQJ_-.WH%M-&[9TWWVN92G %&S`:S_:Y^Y

M/8ZS<B34'"!&2XKR;AQ=UPXA5(T8X/B+$RW<%<>4V9B_*>/&6]Y`>+I0=F-,

M'<MJ/<(5(L:50<^XPA>F28(+OHI6X]M`M90J>$&L_#R)U]*/!J'E(-'6+K8A

MWYZSL/;ZI\.SP?%9;S1:%Z6-HW;";A]Q6"]W$<(N]:CV:BP7N[65</%Q5S*C

M!,X(/RI*.;,OH/`;=$+P7-GT1B[CI_49V)R^>V DMG)5R4A\'<]2,F-29C7S
MK`R60C>T4L&9I']3F]OZLKT0I7F+$_W5X9M#MNWO;.^(:XH=-DTA;6`;W :[



MSM0^))/DE$YS\<%UTE/&I27*XE B-2)EQ8?^]V)?>%-O>R91( I8+!8+[ +[
M+3"OQT70GEURB&'3-1M(NZ*OQD`CV,`B'*P<[LCWE%'YZ`Q+_3$.E'L2]>Q4
MP_'=,S_<JZ;UVJA]9 J1OJ`V0=(D%/+"1'S$*;_^L`'FU%OE;MUNS+"2X\KM
MM<F?V293+\M1/INA9RZ]ZNM7!R2V*0&?+ L\[%H[\6.L,<%33T5US^ME28<G



M>?536(`B?PEQ[2QJ19R5\Y+/:W]_>8E4FZS38FOZT"`Z8D1SP+0E\W4/\UW?
MMWE9V=XF5M`;<,2.CTP<F,,Q  4`QIO:0D8Z4FW.+8FF .PG2ZX")])D7FYF
MIY 6A=8O$%/"U>XQB0.$17T1(R<PT%AP;*"PV01J2R:O*V0OW\H1'VKG*TL/



M?#DBT
M$#L


M 3_V6*_CU875]GDC[*PAKSCA]AG1<._BB*$Y3%1[#U+':Q27'-Q)[13ANW1`
MEQX5_$YEIUZ=P_+W68W+R:18 BW!">5L8O>9XP<)NI]%$7C=EOX<>*%Y5>,_
M`\6]8P_>-5UT?8:WN-CJ,MIM=3-XW+CY+ W+ZJ4WV\^3?+`A""+5O6J9.=G/

M<06"8U[\C%[VQS!%,)J0)S.U+6D<LHA^/T9XF/")\TO&D)>.SAPI`]K/.D[E
MG_+9JMB\/][LK=5(E/\Y8$7>;%?NP[7Y**&)*OM2:[J'CPJ>?O18?7T^AL/F

M>]'CR(Q8CQS+->R``V).SW7'ZT;PW7+%N4.\T9E;TV?Q"P.U7I9MD=^7L[)]
M5G.M18V4<S9)<XDV>57!T/HUJ11EWPR'?/_/![6HFZ:\U]U&QBI<13A;85=_
M&$DL"LC':>W&FT6SGAFYJM&T&#W
MH- KN$61S;,[DOF2KA7$[?P:/5M^E1AN$G!V^4G]5C8.AWY (U$*.78/Z>%F
MJ':Z'?RMDT2(=A=H\40+9K+6?POKICN'LG;MY%->$%Q;IZ9Y0Q<GZO?:G`!I


M[I&/)EKMDK0=^\]&Y`--,A76TD H(3G `&ZXDQCY7>67#GA"&UNISZJ2$#N4

M\$V_?>IOF78ISX5;T8H:7<T(/P.4XMOU[4W?2P4^O^B(O"6N[=O0HKW7$)[O
MT,[VY(<N!\WZL!O]*\DW08'3_E,R)MT9+GH!PQ/FA%J$)]]1V=+E%.U3)AF>
MDHZE'WF9GY_"Y%)GBP^9=5AT&7/9Z9&>.2[+//]5SE=S<25>0 KQCN2N[/I'
M5P._;QDGMJAGLS/RA;S5+* \//V;VK`QZ '^]./K]:V:8 G:HJ(1FET7[;I>

MJ#YX
M:Y^>>1P=%($J*YZHK9TZ#O3

MC5-;:]LP%'Y.H?_A8. F0^TJI6R0=(%=FI&7,NC82],'Q3Z.Q6PY2$JZTNV_
M[^CB)'/[,(PM^SO?Y>  RW;3:0O&EKGIBI]HIZ<G\ BSI>S^A;109=<.:5JJ


MG*Y7:5>>1O="6=0*[<>RU& ,2$%)"A]A4&"NB7/?6NIZ>-328M4HEAC4.]1O

M+)I%J)'&HF)C[L%!2-%(5/:5D!?M:&P[B\2,MJ(H<&-9;QK*N4'*KSK="LN2
M+(.[L(D?DNRSS&W6C[??>5`=S2':>%(_SW0/AV6/IWWX8<04^3ELZ;\CPPA>
M1$9X&#D
M[F#U9-$LU:>;KXM;F,VH4S**^;)BSG4&W/],T8(E9X9HP?J>0YX[R8,/^>-U

M```$``T`````````$`#M00




`
end


-----BEGIN PGP SIGNATURE-----

iD8DBQFD27Nt3w+/yD4P9tIRApOEAJsF7XK2rQjVfaYDZn17ig9d5CY2LgCgtlWN
p8J2j89nRxOsSfz7m21HG8c=
=JE+Z
-----END PGP SIGNATURE-----
Jan 28 2006
parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This is the second version of the IPv6 enabled std.socket module.

Changes since the first post:
* improved handling of unhandled AddressFamilies
* added unittests / invariant
* marked IPv4 only functions with "/// $(D_COMMENT IPv4 only)"
* fixed "InternetAddress.this(sockaddr_in6*)"

(please check digitalmars.D.bugs before testing the attachement)

Thomas

begin 644 socket_ip6_2.zip


M;V-K970N9%54"0`#H
MBDS)CI+*QQOY2.K7Q/:SW>--XO&`)&2QD4A]).6C_=*__>WB(`$"E.4TZ7P]
M$G*Q6.R%Q6()87WMVV\:^\G\/HVN)SEI[;=)W_,VG\,?+\C^)(VR/)E/6$H.
MN^1=-)VR]-MOH,?%),I(EHSS6YHR`L_S-+F)0A:29S1['F7/.N0VRB?)(B<T
MOB?L;IZR+"-)2J+9?!JQ$&A`UY3&^7V7D*.8Q`EA-RS.H=]T2O()(W0!!-*,

MZ2S*LBB)D>EK'!]XSA.DF,0,G["ST;,8<;Y(YTG&.D`GBH/I(L1! V0V8VD0
MT2FA<Q`MH#E0SSK00Q">YJ"]*.?O*0M!H6GD+W+06 Z$QBECT_L.R1;^[RS(


M*#VAP<<XN9VR\'J&=H5VI"LQ2) $"X1S=9';9`$6]B4I4&3*0*5H&U`5F H%

M$88QE6!I"I%]ANIWJP*Z;:`5!&,1C#ZC]TKI*9LE-T`#O4:RR#T374CP*D8M
M7`&X%MZ9)<%'EG=#TNMNP.O_ !)Q'LH91^./&?K''HM_IS-0YX\L3;ES(A\4
MO#K
M &_3R.?]OOU&:K UC>+%7?O;;_X$MB2,[)"]+#SGHV2`_DG'_S6*-_H2WS%Z
MT`5'#Y/;3/W=L<'(_Y;6G4(PR-QHW3R:L1NPUE4 GSC[C?Q^SD(V)N<G^S\=

M]FD+Y&Z X(V4Y8LT)K^>C]ZP_"VT'J9I`NTXWB>N,3;-"C=NE>HT-5UH7U!U

M0E]"-QF&D0#G`$OSEM?>(NOKY#B1G,&\GW/MW,/DDK[Y[3<0^6!%$CH^O`O8
M'.?AD!2/ C*RQ=!0^TG(.-G3*<UATLV>9W.(46,8EK>#L



MR8+_2K-S;5=FB8HY0D,PZ0Y&%R-R&TK!P(Z_BG`A\HTLQS^G"0U)-,;%*YF&
ML&RKZ,83'+XV=&5O7(&UUM]Q/:%\A8+UFB.AR>6T:>!$VL&I?Y[3-%_,6]Y=
MW^M['?+T-A0F`.T!4AL=[$P0*1CL=_L\RA^=W PX97"O-+DE,;NMNF^K^7/,
MDR18)J(XRB$K`5=0TP`B>4K3^V8'^7*K\J^5=+D_930&*2HT6+R8D5$88JKW
M&E:HZ?T0'5\0^_GX_/1P'[2`_XQ>7XGW#F\Y^DW"9<O1;P _.H8PK<'QG<-/
M2W0./^7HH]/3MX<7H[<_82.`BW=%:Z!Z25J#CLFYT.4

M/D\A1TN"9%KA].A4$#XZ
M!%_LFV!X1_#ISR88WKE%#TPPO/,Q*^`C"3[]96"P`N^=2IA6, M1=0T07(W0
M#V6XC>E,>P4`7^!8IM:;FR0*R3R9+R",L]8<*<&T7B/\J7!R)`H\!;`>M?31
MVARM.[_B?_.9BP/RV*GRJ&Z>G/.'ED)&E'8W7,QE],'0$/'.,*];$:X*6ULD

M=2'V7N>3D ^UN)2C/R"FQJ845HOCL-[QY=K!XF(Z5;(TI-4;/NR88-57NM^[
M/P8=MC0;:QF08<*M` :D 0)_].^Q2TMQ_$>+4R B[Y/"^$7&,:;`K:!E^(KH
M(Y'R=,&V-*8A>)^C-T!"I8V\F/FP>K6[+JG0IUJ6.S]6-C$"[_D%19)2+6`=
MR6$],J<>46R  RD =I0YF/")Y;)V(8H((T`2&.?C5G/D8\5 KL:`]N&'^$..
MMA^2[[IKV8<85B]!FYL0.X,_,QI,E'-D6Q)!>IB>*O-!/N0C;-$(9I6%3*:&
M++V)`IEA/AQ=&HML DDF9II:/%+"'(N>CA $^KKA-L:' MLE807QNID15="F
M*2; <9Y,,H6!L';I-)*+Y52%2WQ&L)+]_\-CE<WEEPI5TEWL2-4A#E<H[&Q8
M?TM!Q/S&)W?HZI`28)`M`X#RIF7SG^,\$-%&6/E2,Y)[)<^8L69"\V`BRC$/
MZ>!OBXN:_\*R57D^A=G2TB;QW[4;TF )0O_9QJH*_GDR?ED+.1<?R3&17/`-
MD`!A+QB6SV[+#YML/J-SB//-/) WV]:"(%:=3!+GR'S9D5340O$A1T7!6\B?
MI9;+981+RSD0LYX_"MV(1]WT*J!65BZ.J"U<, (]M'2I>*0"ER$>UD&D;+B-

MK+JP\XU")`I^W9J(O]?(A+7_E)X[8=W)%7846X`=<T/;Q8UCNUCT.+)8BW!U


M+%VJI&Q%[55IJI!37? 5'?*7WD>Z9\-*W2P'DI6W2.9.2Y(X;K+JQE!+=T1N
M4Z971'A$F;?\64VOC)(93[(>FV!M._.K55.K*H/5Q*KT*'=")1A7%I`L<-8J
MJBGFQM44$%$44U>.R2,J/FWR[W^3VM9!NQ"U=$Y46<7Q6BU>%ECX]SE;:UO,
MM$4E4YN2E^VVTT!54;=)KUV=<O:T'2>+.,3/I=;D8VH*5^9:X:Z(%\7C9(W0

M_0IGG,NKJKTT37);BW81=BQ3US2N;&G1'X4T3-B Z(FB,69W^=8_;E>9PF%`

MI4*Q]P"*X']K^;1BF SEX!/^]?(ID%<?,=27$UP9/6D(*RF5UBNF"O3O$.5P
M=3DW9-SKY+]:!U?[)^_>'1Y?B'4]B:?W[:KRT-ZM!8K*O:G8XEL3:M5YUMLR
MX^5[[U)&>,N)<4"]5*EU 7F&:'*NU>\N',)(*Y?BV-X`S"  IXQP?4*6WP',
MYBF]QL5A='1U_/.[P[.C_1]/SB^V:IT8QQ"&+S\/JH2QB"."1PGU:?!QIXAM
ME32<;JEEL(Q=V$'I?K?PH :",7#AWD*/#PI.BVE;F\4 \Z[\Y7-'!$(NHW[2
MM(>X>L9M;K+TS)M$DXI3(50K\T63KFF+YC0)Z!3SHJ99VK,]&/=1(`:0J+2U
MS0%<K54M1A0(:KC VOK 1Z=% KHC]TYR+A0;J8A6U,8YLXJ,O!I6AK M/FA-
MH5'E0M^%E\9(6L%1X_'Y\^=R4^96+Y]TIH 5CDV%6P)^?6F,G61UA;,VDY5]


MFM$N;CZ2L=YAOO"G43!\2,X**9[>&AW:2)W*N*T/8&FG0JHIM=.LW^&K*5QH
MSK0G!*<D%GY1Z.J:B8V; EQ%\1J)YIM5X`"A`VU-X.=1^"H\.C XNQH=_Q\_

M4Y[;8C`O]%Y3C!")[ J81=9[S0][\(6G=JMOYZ?UNWUQA,.9O!ML694`M?`8


M#XJA-4>0\T,YXQ*_N,(#IEN:Z*T:Z[?+<=LX$YI>E_\[])I5,R+-PCE*S=1Y
MQ\/F])>;D[KMN9(U!S7F'"RUY^#K
MD'_>H+QJ9&R;.%AL8=1"TJY1G%QU)`D?I'KO=7J=?F>CL]EYT1ET7G9>=7[H



MLJPJ3Q6OM7GS/)>UBZ*7/. PR6$RM,H3#L67DPH_Q
M\?>K]Y=ZFE0B+>- E6C+,^+J%Y.EN=$_./'O]O8/>O_P[-?&K`T!#TQ_R7G_
MGPT#Q9
MILW*CN_=O7Y]Y?6NO/[5A >:W'SA=&9E=0VYWCD*(BNKKJHO#E5[TP[Y0I*.
MP&>7"+?,VXNNGZP/_UCQ,TP.XQ?IC,%B?5VQI57LGUB513&"\_PI*H;O ^UJ
MX8H?7\IC\]"03&\8%X \P_R7/_U%FL_*&(U_B5UTI2`G*Q,");EA:1J%S*I)
MF=]C7#V,2H](FF\CG-2`KFVHA6"P;C)'5!OJ<UV?<EJAJ+;SH+;WP. >LC%=
M3'.);4>1BEQ+RU`/U*"((7O-1%BVD6 .A[TF["4^8S5ST^OU7_*MY>I4]?E;
MSI4O9&)Q]E./DNW'V%AUU[*<]F.,O+(=0%E&*MUXA*)QG1]YO3V3A "M8+#A
MD%-X_?IUKT*! U8,U\4BURJR8,-H2X\-:=J>MAP+WZ.22?X[7/XK5.-,48?_

M,'WKPMWNBTPRX_`'>>JT8-M(6E><?NX]R&=/P$)Z6*3J)]5&)7JUC$E$C7V=


M]=SR]70!*Y_3\0RL\4E=90 UB9D\_R=K"H]9(\RQ1"6W^=C5XE7/3>E5K[GR
M>O'*JZ'A-34-R5]0%HK2OLS:1;_ZNHDZF9*D,YJWFM]E7?5?4QRX>8][/?[0
M4P]]];!QN6(Q1#L'(2*,GR13,J'AWOTIY5_)RZ,QHBV*74UX*D^=>=S!,X3;
M1!L2S^7M%)M.F?` !76$CD-XH0</SI'M;?(*\G A2_1][[+\:3$_Q>GA+'Y2
M<*D(-S3>U*F5AK&$BO.0<:5;0Y=7ZV 0U(35CEDH\PR'W_U6GL)N:)J/].-&
MKIZNCB9VB5S%E0*:1^'T$R,[VMCJ4RSXLG8DL^"SHI7B `F %P4"W3,+GUDQ

MW>R^Z/[PJED6F1PEM5Z']#NDH-R

M?\62D2L>?IE,S"#YJ+3L4=LB8QAWDO9UMDGF]M)4H/3KHGVEO>H0G-'S1L.A

M^WU1#VOSVRJP(&2F`H_QI>9[T;]*]K*6[M?PJ3ZD_9N8UQC?57=VRL;AJU7L
MA.5`[E-H^8T#H/BR2O$]QX$=WL;!Y?!E<]4-MLRE^#Y[3M.,V:=-S6TTL,6G
M8LN1AOXA2LCM]O*2D=BW>GUO`UU,C"HWN:"3IM[=*-,E\\-_+2!):)V(&[P2
M,RW&PVS=`B?1J!B=K1^W&%3$[ME184JJ92?QFSO<[)3%C406.LHVXP-'4NZS

M)$6U^OFS2$BE>G=+[:KDS:19$G48I-+%V[(2NT_&Z7-QO=(*]?^Z\C\O 4*:
MTW9^&/3K>AD[*G??H'[$/O3JN7N%R_G<</=BJ_`Y</<=U_<=/-3WNJZOMU2M
MDY79U<+1DQ;_*=^D6JG N?VDS&,U]%V);35LNQNN<8#KMA'IK\6 5>1K'/7:


M<ZB*%7Y80=VUV=RUE,]<>F.%WBK [2I)`1Q7Q]EVB.YTIA`U$IK=0Z%A"S2V

MMEWB;+NDV78)XS1. /H,3.1`&,P",1LTMD'7-J J86`?]7 B );4 =.* =.*

M]NUS04\$T.+)=UK"=UK"=UK"=UK"K[&$CS[BF]B^\$L+%-H 9H/&-NC:!KD6
M=A],Y]N,[[JT9,4`W_(6WQ&.?3L<^TZ'\<&.EEJV+:UL6Z'/=_F/;_N/[PCB
M?ET"0_F50"8!*BQG 0(;%-H 9H.JNJ*.K(FZ0 I%WZ)6[YT=VYK4Z?34Z?34


M.0JP6JO]SJYR*:CSUW;N6UJ*G]YUL,EUO:> ?3Y9Y&%R&VO73YX=[A\>_7+(
M;Z\\N))OXF++XP-U?^;!%;XA=._DXL<26J+;8[W&7P-K`\D?9(E_O`[7_LG)
M7GFKYKOS-U<`Z)#U




M7BWM>B19'=%.D*^U 53;O%F$WX4A^ JMYZ!0C8K5'>\YX4 F'77=]1H91VGF

MOP652(J`_>O2\N O\%F0L$PHN1/> 5=`TSNR5EP?;IPK1)6)J G_+":[&$I4
MIVO0HL5%"<7U?34*=;&P3HY?'^P=79S7,1.-6XCWG<*3-QLJIG8>(<(EGQ0(

M>53=[6\_=;=:K]'X`20?0F`DM5JMEM0M]</$9\:H_GNQ/S4<BOF5,08^ 0WT


M1:MJ2PAJ:CO^S+H+]ZJ<//) :&I:5<1+J>T%=`_VC)8-O]#J5ES%M*Z:"3I4


M 3VV8;HUH.1>I':;PX:PI+6D!TU[^Z(\"6_NBO8^Z>FP+S:FQMX3ADU<_H:?

M=*_4BY+NE7K!TKU2+V:ZCY8;.KTV8#N">DTBS:6\"GF<  )IL]RU_T&NY9),
M0/3?(-T>;B['8+X0!8/_M$!L(^N6A<A'95%.IY:<"[#D9QKAX6JNLACJN/OI

M>I35J"0BI:9W)O_LUD#I$M2OSHX_79Z$0%$)8O7;UX8Z5!+Y^HY+`ZWXZ"CG
M_N($5C^ A3`Z&\AS].A/&TQL?5\!!/CV0+$UI($`HHY^'WP9$JRX]IW7P.CS
M9?^"/O=.[,KV]T#E_F"`RRL.?-?5_QCTSD:GD !Z=XF][[IJOWOTM>O4C?WO
M45"'KZE1YO!4F8]<SQGC!!-:LABM:W25RZ:0P\H8,3+I3Z1F!QX"D*--)'A_

M`PQ3,TOR!G&ZO7EVE/$\A:Q#U#P0KM0$#DBF?HQE`=GF<C,6J=QFU0*E>,XT
MI/*CH?""82:!TI0!C8#HMM1/)"MCKC&'6)36:SDCZ7<S>KL* Z% /96%2I/T
MI4J7D]**&HW9!&)?$=E HE>%RWY2EH:&8-E6:H.-YGJ:02J^&S-A ?E>2RTG
M\8<C<O[M*FKCO*S2EB^4GDI&6!:3=)X_PI)4K'&3%),<T\GI]4Z?6I )Z!IO
M'_Q`3Z6.WJ8C\_%2#S5;([SI;>()0MSKUG1<+/(6X1R)D]%I]^*D'Z'7AQA`
MM*1/?2F=M<.JC,8:A_"85HA]M1'V=,TD3_2/XC4TU8JZEVGLH\C*\2)7&PK\


ME_)LJ"K*3  QO`]HK6RPZ.`N47$YT[*^[) =5KJ%-JZ$0#PRX*2L.LJSN^`2

MV'5U^DKN1"T[\J.1C0.<&V-UZAOMC<E[V/H#W8/;6VR%`+'QT+-"!H_+HH`+

MX5'WV^"R?XS+`=_+YG/.1.=8LK,KA;.J3>H]!VJW=_;E?'!ZWAT.-P7IP  J

M:7ZYQ1:,1^U!:5O)?718#MB
M9,&M,.VC)=BJ6R5+\/5V%C,8&S.G6<N18/'HEJWX<$;JWP=EVUBU)U)2T&+*
MG0'[U?'G8[$7[^_M4TCD`T%AH7=;N^+^1A*0(G7!P;1[N&NE"=X%YDHAH:Y1
MAE5/DHJW]!L'N`OBI6L%,+.$;BULJ[#Z>`,7Y`/O7=+F!H68.A\4/\LZ-:X`
MP(KL$K"9$O!IL6[SN0C$=3.IA_;EKJX3AU4'WG/\>LZL!C<>T\*6&HQ<):<U
M*VXD`TL505>8E9/4Z\^H''RPR9851'&E/_4!3;XZVBS;T&%$LB?/RJ$U+>5A

M]KHQQD:6*+?5)7]LN QMEN,DSU$RYU&UY=8!<7(%^]C/4\SU+87X";:88M)7

ML.N+]0H$[BJ!&!LK/&(`:(,A,WPC]S7M6V7GI=B\LP_;];;_H=9=P&G&`>9&
MZZV%QC:TLXZC<RRK4(7$\-9BEHRE-I_"<0/!83"0N^A-TH0R?<^2XKJ,:S[!
M4!=#V00D4ZSR[OV'OQ %J/([`Y?"HF3$/)ME*EW]N_?O$6H5-Y[8$CYTB((8

M`;Y/YI Y*FY;[(1Z;B33;2KY"\ 4$+5W%( G$(O&PH<<N[K6"<=F2M!MP+6%
M%Z]-9">XID4^Y,Z?3#T8WP^ 'BVTGT$\DZ6<LY./0MG=.YVYV ?HA P-B_#M
M+ADOEO+T>`1;(+G(Y+$ %6]PG 4)3K^I21D<S -P-E[JVS,T;A*8\,`Q]P!(
M$I$8FRFA&UK)'VKU6 <N-7<6H6Q>?]5S,*C%#X=B'[,8C*W:(4 7Y>K11"*D
M.GHC6Y2;C:U9H]QDT!ZJ`;PL$LC*02)`OYZ:0E>SE7 LEUI?;J-LL"F17H`P

MOU4+J1\JVQ*XD?^.I[J'!5+&>]XF'!*PS( E+G?;K$IYE`-"T!Q0"?:F!9!D
MXC-Q?>C^!'&-S=:OJGTB195UBQ ,*+7GG*S_`PF,DM-FIQ-4]4\G;WJ RJ9K
M2(-SCBS')PMJK#M>7F:6:[/2.`7NW&.[AJT+FVVS(VS,(3]QP6TSH_[=Q3.F
MYFFDVGJ2&K915#G4("%6/>RE$>RJ4$![JA+JQ5M0?Q_%))M.TSF<);B K$OL
MML+XFA_=6[47>-F7_!DY3_.BQ/\BH4:G)'C[Z,IQ53K*Q5J1T5RKZ\E3G>N_
MN6/67G;R[23):_,$0:":M9;<BL*IC%"DKE^B_2NE3063E&L,8S,1$!`I39 R
MJ(,]A["PPMD8QJ.NR7>E("LXW+2UHQJ0.>;^7[7-_CE(D1F-CY->V 8T3ED-

M;GX6T9B57:I5S=-'%5]^]A3[NGAT.M6+LVU `$\<;Z>C/2MV*[&\G23JPB<K


M2;7(^Z;3^9854/5`W)95E5W)82-B!6H1UE78AW]J2MRFX(^S,!=OQIJUI>DJ
MQC?I^/NY[#T2WL

M,--[^2\U8KJ5!+;I)I_\ B;E/;S70;22VWDI][49&:2ELUO)$]3%?Y0-MR0 

M8*4:%A)0P\*_:K#H:QA6P."[QBW\LHRT"`U478X73K$V[[:#N>G7:AND&=C_
MS(N\QTFZP3UWXE.( SA*WACQ&_FH<&M[..$96XA?1,%/[%!_5*S$^'XEQL30
M3H.4<?#G837&5/LE,$Y]C$T6X8)%0;H2PBVLB*SUIB2*T9CWI;;<E]8LNY#D
MHGJ1C/IM>'2:+OH2*HZ0-%PPI>B=79RWG7A);_<;7MZ,Z<0F/4J13G95E-35

MGNR.)3\YGI\??>=2ZXH/D;50M!&ST=DA/K-$EEGRD,V6,Q8E? 05ZC>2FZ*K

M>Y<`LN\KONZ^$[\R<.P4?DPG\O2<5-2XT+\I&E+[RR)[P*:P`-YT/,OQB_$M
MD>K`,2(/6.N:YU_+RYL-CXT9;SR\..\>?8YJ3BP._0)NB:OR'""'8)S?,;*&
MW8!EQ8O2A:<_UZ+;':IXJ2B)FM8AY_C+R4N3Y_CTO$:=R^-G4`<;_1]02P,$


M;#E

M3H%4HXL+"%6HY;KV<N<]*FJA[Q^ [HRS2R:3<3*-?/\!V0R:KA`-/;L-L,6W
MW;NT)XPOW^><KE=I5YY&]T)9U`KMQ[+4:`Q(04D*'V%08*Z)<]]:ZGIXU-)B
MU2B6&-0[U&\-B,"<P)E9ZJ5*SLG,<\76=G#GQPV!'3.^%YL`,RGR*)^+5C9/
M+/7*P,Y74I4LFD6HD<:B8F/NP4%(T4A4]I60%^UH;#N+Q(RVHBAP8UEO&LJY
M0<JO.MT*RY(L [NPB1^2[+/,;=:/M]]Y4!W-(=IX4C_/=`^'98^G??AAQ!3Y





M`'-T9"]S;V-K970N9%54!0`#H/[<0U5X``!02P$"%P,4``(`"`"XE#PT2LKX


`
end

-----BEGIN PGP SIGNATURE-----

iD8DBQFD3QCq3w+/yD4P9tIRAnVAAJ9tGrAU6NGRhc5JJUtde773rbk0fgCgoVRH
GHGUZGoR76/mHpntvSt7hwY=
=FFN3
-----END PGP SIGNATURE-----
Jan 29 2006
parent reply "Chris Miller" <chris dprogramming.com> writes:
On Sun, 29 Jan 2006 11:54:30 -0500, Thomas Kuehne <thomas-dloop kuehne.cn>  
wrote:
 This is the second version of the IPv6 enabled std.socket module.
I'm not sure it's a good idea to have InternetAddress support IPv4 and IPv6. My original plan was to have a separate Address for IPv6 (possibly named Internet6Address). I'm more unsure about InternetHost. Also, there's a somewhat vague naming convention used in std.socket: address refers to an Address or derived (class), and addr refers to the actual value of it (uint for IPv4). I noticed your version doesn't adhere to this.
Jan 29 2006
parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Chris Miller schrieb am 2006-01-29:
 On Sun, 29 Jan 2006 11:54:30 -0500, Thomas Kuehne <thomas-dloop kuehne.cn>  
 wrote:
 This is the second version of the IPv6 enabled std.socket module.
I'm not sure it's a good idea to have InternetAddress support IPv4 and IPv6. My original plan was to have a separate Address for IPv6 (possibly named Internet6Address). I'm more unsure about InternetHost.
Neither is IPv4 a subset of IPv6 nor is IPv6 a subset of IPv4. While it is possible to represent IPv4 with mapped IPv6 (255.1.16.3 <-> ::FFFF:FF01:1003), it is impossible to use IPv6 sockets for IPv4. Thus the follwing designs aren't usefull: 1) abstract class Address; class InternetAddress4 : Address; class InternetAddress6 : InternetAddress4; 2) abstract class Address; class InternetAddress6 : Address; class InternetAddress4 : InternetAddress6; One seemingly obvious solution would be: 3) abstract class Address; class InternetAddress : Address; (-> IPv4) class InternetAddress6 : Address; The vast majority of applications have no to reason to discriminate between IPv4 and IPv6 but would have to use quite a bit of code duplication to implement 3). OK, next round: 4) abstract class Address; interface InternetAddress; class InternetAddress4 : Address, InternetAddress; class InternetAddress6 : Address, InternetAddress; The design might seem clean, but changing one of the core types from "class" to "interface" will lead to quite a few bugs. The current design is: 5) abstract class Address; class InternetAddress : Address; (-> IPv4 & IPv6) This keeps the commonly required code changes to a minimum and allows incremental updates to use IPv6. e.g. uint addr() (throws exception if used with IPv6) -> ubyte[] address() A possible extension of the current design: 6) abstract class Address; class InternetAddress : Address; (-> IPv4 & IPv6) class InternetAddress4 : InternetAddress; (-> constructors only return IPv4 addresses) class InternetAddress6 : InternetAddress; (-> constructors only return IPv6 addresses)
 Also, there's a somewhat vague naming convention used in std.socket:  
 address refers to an Address or derived (class), and addr refers to the  
 actual value of it (uint for IPv4). I noticed your version doesn't adhere  
 to this.
I kind of did: uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.address(); // IPv4 & IPv6 The alternatives are: A) ubyte[] InternetAddress.addr(); The clean solution, but would require instant code updates in quite a few applications. B) ucent InternetAddress.addr(); ucent is reserved for 128 bit unsigned ints but not implemented. Would you like C's way and rather use the following? uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.addr2(); // IPv4 & IPv6 Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFD3xhC3w+/yD4P9tIRAh9EAJ0eTQUPOyNcTUTynlVCYnupaCvI+gCeMN94 0HQTywfN9FUNh6VjPG+D9qw= =2CYt -----END PGP SIGNATURE-----
Jan 30 2006
parent reply "Chris Miller" <chris dprogramming.com> writes:
On Tue, 31 Jan 2006 02:38:39 -0500, Thomas Kuehne <thomas-dloop kuehne.cn>  
wrote:

 One seemingly obvious solution would be:
 3)
 abstract class Address;
 class InternetAddress : Address; (-> IPv4)
 class InternetAddress6 : Address;

 The vast majority of applications have no to reason to discriminate  
 between
 IPv4 and IPv6 but would have to use quite a bit of code duplication to
 implement 3).
That was the original plan, but you make a good point.
 OK, next round:
 4)
 abstract class Address;
 interface InternetAddress;
 class InternetAddress4 : Address, InternetAddress;
 class InternetAddress6 : Address, InternetAddress;

 The design might seem clean, but changing one of the core types
 from "class" to "interface" will lead to quite a few bugs.

 The current design is:
 5)
 abstract class Address;
 class InternetAddress : Address; (-> IPv4 & IPv6)

 This keeps the commonly required code changes to a minimum and allows
 incremental updates to use IPv6.
 e.g. uint addr() (throws exception if used with IPv6) -> ubyte[]  
 address()

 A possible extension of the current design:
 6)
 abstract class Address;
 class InternetAddress : Address; (-> IPv4 & IPv6)
 class InternetAddress4 : InternetAddress;
 (-> constructors only return IPv4 addresses)
 class InternetAddress6 : InternetAddress;
 (-> constructors only return IPv6 addresses)
That might be fair.
 Also, there's a somewhat vague naming convention used in std.socket:
 address refers to an Address or derived (class), and addr refers to the
 actual value of it (uint for IPv4). I noticed your version doesn't  
 adhere
 to this.
I kind of did: uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.address(); // IPv4 & IPv6 The alternatives are: A) ubyte[] InternetAddress.addr(); The clean solution, but would require instant code updates in quite a few applications. B) ucent InternetAddress.addr(); ucent is reserved for 128 bit unsigned ints but not implemented. Would you like C's way and rather use the following? uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.addr2(); // IPv4 & IPv6
Not really fond of either, how about: uint addr(); // Current one; throws exception if used with IPv6 ubyte[] getAddr(); // (or getAddrBytes) IPv4 & IPv6 About InternetHost, may wish to leave addrList the way it was and deprecate it, then add addressList for this new stuf.
Feb 02 2006
parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Chris Miller schrieb am 2006-02-03:
 A possible extension of the current design:
 6)
 abstract class Address;
 class InternetAddress : Address; (-> IPv4 & IPv6)
 class InternetAddress4 : InternetAddress;
 (-> constructors only return IPv4 addresses)
 class InternetAddress6 : InternetAddress;
 (-> constructors only return IPv6 addresses)
That might be fair.
Implemented with a "semi-abstract" InternetAddress class. "semi-abstract" concept: This seems to be the best way to keep the implementation simple and extendeable. e.g. "uint InternetAddress.parse(char[])" could be deprecated in the future and only "uint InternetAddress4.parse(char[])" would remain.
 Also, there's a somewhat vague naming convention used in std.socket:
 address refers to an Address or derived (class), and addr refers to the
 actual value of it (uint for IPv4). I noticed your version doesn't  
 adhere
 to this.
I kind of did: uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.address(); // IPv4 & IPv6 The alternatives are: A) ubyte[] InternetAddress.addr(); The clean solution, but would require instant code updates in quite a few applications. B) ucent InternetAddress.addr(); ucent is reserved for 128 bit unsigned ints but not implemented. Would you like C's way and rather use the following? uint InternetAddress.addr(); // throws exception if used with IPv6 ubyte[] InternetAddress.addr2(); // IPv4 & IPv6
Not really fond of either, how about: uint addr(); // Current one; throws exception if used with IPv6 ubyte[] getAddr(); // (or getAddrBytes) IPv4 & IPv6
done
 About InternetHost, may wish to leave addrList the way it was and  
 deprecate it, then add addressList for this new stuf.
How are you goning to ensure that addrList and addressList are synchronized? Thomas begin 644 socket_ip6_3.zip MVT-5>`0`Z`-D`%!+`P04``(`"`#T9D0T M5BC945))]HUB.ZFOC>VSG;;/)!X/1$(6&XG40U)VW#SI;[]=O)```4IRDO;: MR&&;O`YG,Y9\^PU07$S#E*3Q)+NE"2-PO4CBFS! `7E$TZTP?=0BMV$VC9<9 MH=$=81\6"4M3$B<DG"]F(0N`!Y`F-,KNVH0<122*";MA409TLQG)IHS0)3!( M4C)F9,IF`9F%=#QC9`),D&=`Y_2:I<"( I1A=$TF23SGE,N4D7 "EYJ0;2[W M*4OF89J&<81"7V/_(',6(\<X8GB%Q`9EWN-BF2SBE+6`3QCYLV6`G?KQ?,X2 M/Z0S0A> FD\SX)ZV $(PGF5 O3#C]PD+P*!).%YF8+4,&$T2QF9W+9(NQ[\S M,]2>4/]]%-_.6'`]1[]"._*5&"2(_27"N;G(;;P$#X\E*S!DPL"DZ!LP%;H* M%4K8OY<AF!!<6>NVR0 M"QAIO$Q\1FY8 GY-A8* _`)4BV9W9$Z3]X!&0>"E M/Q6.,8U 60J1QPS-[S8%D&VC%X1 (?0^IW?*Z`F;QS?``Z-&BL C$T-(R"IZ MS4,!I!;1F<;^>Y:U`])I;\/M_X`1<1S*$4>C]RG&QPL6_4[G8,X?69+PX$0Y M*$1UFM'(EY$.A+TMK[OE[8"<\1P4^FG)IA#B6Z`3WC=HUGS/06T_`H+:%J$! MCN`CL$`2L6P4!#AH=[C!2L">07!ZTR, 7C#C M899!F,-8?OP$A9]#B,!(3[. +4PR0. B"6\HCIOY(DXRT0H&C*Y;\AK&8R:N M?;R;A6-.]^TW,C0:(-_R0_/;;SZ"`!)&=LF+-#CGO:2`_DG'_S6,MKL2W]&[ MIY(&Z%U#Q6L)RY9)1'X]'[UBV<_0>I D,;1C?Y^XQ= LS<=?HS"G:>G<^H*K M!2:0/LDO!6<4BZ&C]N.`<;:G,YI!MIAOI0M(KA/HEK>#LH'(&6 A2"4-?TJ3 M<TZVM36HQDR<F&`1Z`Q__DGJ?5*'7T#ID78;1;X46)_PIXBW&OB/)0T T`8+ MJ.S&*S,^J;4E-98.6NOO.!%2/K5"!N9(Z'(Y;&HXD'9QZ)]G-,F6BX;WH>MU MO19Y>!L(%X#U`*F)`78FF.0"=MM=/CWA_,`Y0W E\2V)V&TY?!OU-Q&O[F#V M"&$Z '(*0D$-`\CD"4WNZBV4RVW*/S>RY?Z,T0BT*/% T7).Y&3U$J;6V5T? M`U\P>W-\?GJX#U;`_T8OK\1]B[<<_2;ALN7H-X0?'4.:UN!XS^&G!3J'GW+T MP:NSO$FT<0 VG8U^+63D30#A MGI4D/3H5C(].3\].+D[`+%SQ_=<<GD/AGL-?E>"O!/S5*\%&P>$>P1?[)ACN M;SYRL4.>.U4=U<[B<W[14,B(TFP'RX7,/I :0DX,X[H1XJPP&)#P^^_-?/]` MT4L5WH:7,IV.$T9Y/:0R)&"'&K$D`,:8)*0I0IE9BSY)2![L* .U(?=>9]-" M#C6Y%+VO45,34RJKY7&8[_AT[1!Q.9LI76K2Z[4Q/.K!K*]L_^+N&&S8T'RL M`9%0UF`B)E;KVH8L(IP`16"431KUT1B7.A:J#VCOOXO>9>C[/OFN_3A]%\'L MTRD6F5AI:OE(*7,L*!TY".QUPWV,%[FT*](*XK53(ZN 3Q,LP*,LGJ8*`V'- M(FBD%*NYBI#XC M`!ALBP2 HFG5^.<X:S+:")?LU(CD4<DK9ESLH9D_%>M(ZVSPQ>JBY;^R;F69 M%G.Z #Q?S_Q%O6E-"&+6225SCLRG'<E%313O,C04W`7\6EJYF$:XMEP",>KY MI;"-N-1=KQ)J:>;BB-K$)3/0NJE+Y2.5N`SU<!U$ZH:/D5R_-A`[)SU<5]QT M->3+%CNJ'NN%'/HZYX;S;VFY%!OAZN<P%>N>8M:%)]\P0*80UXVI^/V83%GS MHXS<*6M/KY!0/`+LF ^T;7QP;.:3'D<6<Q'.3CNR17M`E]3:$_H+RI=Z=[AT MT%1OZK,/7P/<3(Q>I1R=WCT$Z54+\K&TVF`$1Z.^C.3"&J[TRS7J"9</`K-8 MRVN:,Z;P`^!+B1KE96[H25X*+=0H*>/%,\5BD'NZ,$G1BM8K\U0IISSQ*S[D M3YU&AF?-*MVL`)(K;Z&LG584<=QEY0=#K=P1M4U17A$1$47=\K%<7AE+9KS( MNF^!-7365YN65F4!RX55$5'N DH(KCP 1>"BE4R3CXVK&2"B*J:M-AK#Y M(9N-LMP`1<BB(4OAV&CPQ8+E^"YCCYN6B$VQOJD-U,MFT^FVL &&I-,L#T1[ MN:_</L26VVDX Q[#PEDT;-/PRJ=1'/'18$8;CD-7K)6I-$OR"!#M(AEQOXHE M/^'UBL:-/2WH44G#A36*\2D:(_8A&_SM?I6%':;I%8\ALAAHEC98-"J!CKYO MY=A:#ES331%/4ZP$=B4CLW<CM J*1"[4U8I20Y2;"L5^,E`,_UNKLI70I"\[ MG_(]S8?`7FUMJ/T4G"\]Z0BK5)7>RX<*T+>("KBJ2ASJ\"?DOQH'5_LGKU\? M'E^(V3Z.9G?-LO'0WXTEJLJC*7_PMP;4IN.L,S"SZ%OO4N9]*XBQ0WT!4R.! M(1 3%SYQZ/E!P6D^;"MK&Q3>5=5\;H_`R.743YKU$%>OP\U'+[T>)^&T%%0( MG9XE5KR\-0B:R)W*O*UW8%FGQ*HNK5.O?NY70SBWG.E/2$YQ).(BMY6P2 ZX M"B.$[92!/83VM"F!'U+AD_#HX.#L:G3\+WXF2-T,'#C')\>'!1+>:5AB(>WT MY.Q"\I+%KVS&!X2WG=YEWEMO($>\4FX<QS-R\.;UZW^56_C X,W!<CZ_X^G_ M4[$(4U3J[DE_1SL_(R *ZQ4SMJQ5"]>N7`59U1L/&=T?35*4'?E2QR:=]=;V MUK-ZZ]G=K:^WJ]<TQ$$5Y\.(H8"UWJ$F4B-<91%`=<4=>HL"S5&^/:2J!,TY MCCGR>`W'7C7+L<72Y\C^*I:GOW&<++D3QG5R]J5-?%R$;I2M3IA1?^N5=W&B MRQVW?)`7H;LJ&/-06.&5*SQ].]`Z;E38OEEXOXD16_?:_%_?JY>-B#QSUX31 M.M^L-^9XM3&IVYH;V;*WF3%[FQJS]YG6?-OO7[I-V=-MV5LS=/X^6]:4,45Z M%P]`+:)MJH",:DHPTZRJ?(OEXW51W"+%QJZ910M>G4TRII/9)CF2S][E-=^5 M>4^?_.!)"R1ZZ[4ZK6YKN[73>MKJM9ZUGK=^:'4`V&EUNJW.=JNST^H\%<N4 MSL+>Y5#I3U4HTW:IIJF:74I4Y7#L]+O>=G_'>]KO><_ZS[T?^B/O17_?.^ ? M)EWG"U>*VPIVP 3>I5HIJ^+9K5R8-P=;92[[?PFW%NETMW>>?F'\<![K8FA- M_+3(TYWM;F?#B."X]XT*5/8OB`Q N_V71\?*-3F1N=4RW.JT?8_D[(C+C2/+ M^_#RY977N?*Z5]L>6&CGZ;HDU7WZE#MWYWD?L>OW4U[;_5^KIGIP^4JJBGT3 MT?<4?>ZW^(8E21 P:XW&7,<8V`3&PL?'BH&?8Z]<ZUBST$&<*QUFO*^J<>O] M"-`&1NCW.8>7+U]V2APX2%-&3JC7 GI#K?-:'J*[6I-MY8:<N2XY->I[0R?* M-V> 5.\^:Y*'#PD`Q'LSV^JV>REL*F^W!7I3):9JN<"`_?[V1D)U>A52>:90 MG?SVJ10R%T,RS<4UNI)2EZ$[3NA3)[3GA#YS0I M*GAX=9>%]/V++TY09K(TF7,AM/:-,F_?Z_8];]3O0TV_ F>_VP<<CK*>K??R M8-3W]H'O"^"+3VQ.MHBUWP>4C7 B(Z\/Z%7L9-NZ_=$OMCX\<K1W,`R,I9[= M=GY=30`E.8JD6L>WT^O\R:%<.O%9&3'06.K1(E^A7U'[0<?OUO?\CG?];F7? MYOS6DFY_OEBM%R+$^AQ0T#E4JFFKB[HF>V5%S%,O'7L]<;4=BE,)A:9[AJ+& MMXA<*RE3C:NHC#G73>M7]] %JHZ;*E MY[:;BFTB9\]-.ZFF[:VCO:ZB]5:: M&Y /!-`2$.%[-ML]P;6$."PC"J"#Z00%FYC($Z&`!2KW-$%!)Z5^)D(E%]1I M'*9B>1R64/=L,?<LXS.7W5ANMQ)X6&8I )-R/T.'ZLY "M`B 4D>"`M;H(D- MNK9!94L$:)Z )$T 3.Z"3IS0:R?4&5L!&,_2:,]2:,_29\]2QS54`S!D8$LS M=*DS=&DS="GC=(Z/]O1-9%\XS`(Q&S2Q0=<VJ*RACX;U2P+ZPHDN*'-")T[H MVX+ON:QDY8"Q%2UC1SH>V^EX[`R8,?C1,LO0LLK02GUC5_R,[? 9.Y+XN*J` MH?R]:Y,!%9ZS0+X-"FP0LT%E6U%'U41=*85B;%&+>G?7]B9U!CUU!CUU!CUU M!#UU%6VT(N(I^-LRY9XU/*DK[J ==]2*.^J(.VK''55Q9_EZ6)9/`,=E^J'E M:SL<J2L<J2N=45<ZHT5$?JJM.B2Z0_IET$=]`:%T-E+;O\SW!$O;B!ON!:=T M5GV!P&*TW-?KC^4.M_Q<WN,F;UYD7R$(OO9V=_&Z#G]QIN+UG*JC=BLVRA]. M\X]*_BW[Y;K_Q+<]UVV I_:[(FUY(K_*!2LVHM4"7A$ Y7/X!;6]'2NIY;=< MM/AP=5Y>7-:(9PU'1'[6(KXX7-+IM3VUX5SLM'J=CN=YUEFB"D;:3GCC*YX* M+LSAW.J51C'>T24/G>9IZ >NY'IKSKUZATI/3N*5Q7S?51,`/QQ)LT;]N[2M M_J^+-R;?XD$H?M%1%UUUL7WITM2]5Z/>TS,W>_!#BQC\YA:<IN'FJ_<BL$)P MYRX?JJJ&WHJRX0LF*.W`[J8S5*]ZANK9,U1/SC8]<7):A+SX_?SM93$):SA_ MIF-M<&C]!_GN*:F<FC^C^&P1<T-8VP"NWWOZ<P_^55/+?:<Y[4UJ\9H&OJLV MI<&+NU/*7[,MWJWG36'D:,%/?: /J>SBATF&1$N6^+&/774>6#H+Z1O&05(^ M-5W/ LI 5BBIO9VMBH)^_[O?BD\Z:9N:H?Z1` >= \S`+5!+F*6OWY1>,-^U MOHP`(M;S=QD*\4Q#Y"^C`_+`WE[5WC/?N)JIOQ7%2[FFN:PN:LPAN4%YL\&A MC/4'(<Q165&T],QWEZK/ )IEB_ ^\<A'J;3WITN? ':^1>W^)E?^2G4+FUP? M:(%N]_42O_* =23?M!7_>2UNUI.3%\4WE%^?O[H"0(L\>8)?<8LG$&`1_EV4 MT\/#GW(TQ$(`1\._9H$3$00'"V\ :/!;SB?'%V<G;RYX9XB=`PR2E$4!)U"2 M] VJ(HZ5Y^1'^P45R6ZNX++X4(C!$UN7LKGP[I,G%,BYN<3'P<74+'S03MF, M^1F^MJU'WCG+C+_AT%<GFR*<$U+^<7S^J?`^81_P[[JPE`\X.=>2NA\OHZS. MOT"(#V M.':+!,/ZBN`4AJ3VJE(^8X]A*O8,Y;'YJ+K;WW[]H=;7:(P-)`\A,)):K59+ M,V^3<&HD\/X+JS$=X 9ZUNO\N]UT)X(X&[,1./-71_Q'D<OC/AX:VT3TH#QX M'E9PFAH.5`0RRP5%(,3GP8]4E8L9Z <%3`9E\N'=9U3DFQ1+B)/A),L&);>M M,PF=O_/JUEPEM"[K"=K324S,9!.5*9=+C"\P:U(P"8+RI^/3`.5HXTJ'`K3: MTPU&!=)ZN6O[`ZSE LWNYF^4;G=7EV,H.Y2&(7\Z(-:1=8M<3?I%7HS'CIR+ MAN%*-5."U8X[)T?MTTJ/4(U+6JS4=$[ SW8%E"DA_>KDX./Y80P4EQ!6G[[6 M24A_")H=6C`PE: :D/V`+"5)-;:4K-X:H3]X0SMN.4F3*'-)R]N:3"AZ:W(H MR!SEJ2I-_J6!X!B&:2;AY+F9(WFC.-U</1?6<)9BCCEN' E.;4WJ W$845]A M4M2)'0LHMUDY)RE>\LKI-)XDO%`D8:0T)^ID(*8M]]."RI02TR,69Y]<3%GZ M78W>OL) *5A-7*23XGTIT\6H<'($4.Z8)%1$5ICH9<D1'I63IR8U I/(9J6Y M'F>8,?;*3EADOA^DEI?FR1,Y__85M>&D*--&*)0>`2,L\E$ZF]SCDM2L0;D] M== _:I\='K?H ;+J8AB\C\< G37CJHS!FH9PGY:$?;D2]FQF A-]3[W$ID91 M7:*-[M)2QF#Z9AO1NXOVCW;W>YWPX<6+.[6QI_ZV].0ZH U ^7_W5%AL>O#Q M1.),(B=EY?XDNXDN(9P:7N#X$Q4MO)A!D=G1WX2Y,:4)(%Y<"]\XR :*16=_ M?6GKG8*R;38W&/2&P*ZJTQ>P$S7<B+Y6-HYP;D+5N6^Z[N(H&,X?=*/97&,K M1(BUAYX3"GY8Y#D:?`57)Q%>%%.IS\CJ7%R-IOG50=0N$L/M?`UAL9%<H[C9 M"_-X29VJNX(IPD;?>OOM;]WSXP-:#N2X.YM)WE$O8)"^\/)7M4VTZD%M=TZ^ MG':/3MN]WJH ?1A1A=V[<UM1=F%BVWF4NQIOB]W:RE-.P4YLU&0KL4PP)B&` M.<%IP.NW27&Y?()U?9Y?:;$&XW%[5-J6<A\?EEWCI\M9XP<*#LX,4W^3S)QP M+4RXRH1/A:<W2WU^>LG:2TKRZPBVVJKD"+[!SF('XV+F-6MX$BP=W=!*#F>B M_FU4MDUT>R8E!Z/G3$FX7QU\/E!OD^VWVQSJ?D=QN/_-QJ:ZO0("IG?7,`8\ MDBXW:,3T^:#Y MD<[GK;<_ZD!CZFFY#YH;$VKDB')K&?D3VV5LLQP.)A.2S&543= Z,/ZY$C^< MDZB.;A:BU3O[L%YOVQ\JW=%?HW0\ /8Q8'X4]DK*`TL[YS ZI;*25$A*6Z"F M R%H\RD>-^BP1 DZ5&>4#M1X5DSQ'NNR2*P/K>,*2&YW$<F4JKQ[_^&[H(!5 MC6C02T(6.3(R8V`R004*`-TWS5,3KRAD;>UC5ED"8D\6-S_MI)EX(?QKR72= M`G\AF2*B]H8&\0AB\5CDD!-_TBKAY+T4=AN)L2&+UR6R..:&Y"/N_,74P_'] M!.KQ0OL5Q./(L#A^/2[EC=.:36=Z'V`+&3D6T=W=8#A M&Y\KH`1G[M1`!L?S`'TA%\9Z1LY-BA+9>.X>"`D02:B9%KJQ%?S0J]<Y<+FY M8H<7\6]QC5 !B 2EQ2RM64"ZW:H$1<N!(1N>MW)7K4`_U+XE:)'_0:=Z `51 M)KC>9AP&Z)F1`"XWZZQ*.,H1(6R.J$1[,P+(8!0R<77HX01)C=76KZY]"*+* M0XL8'2A-"!^H_Q,)3)+3:J<35 U/IV!ZL,JJ:\B`\XXL+S ,UGCH>'F>6:[, M`.1`Z?L$NGY!_J^<)!M=4B[A1$-NQH<JZ4`H0SK84PB+*UR<80+JVCR&&K*& M(TT;&[H!NV-N?Z]L]D]!BMUH0IS,TK: :<HJ\)M5#P]S?>*4)-KEI68P3Z0! MV[.>QO(W \DB76X?+]?F: *J_WN$1EX^S-R/Y^8G$4U8V:=:63]]7/'Y9T^S MKX_'UE;Y[&P;&<`CQ[NU95Y6;)9J<3T::(-/EM/["0K/JM"PDQH?U]NK;' % M,ZF 'XP".AR"%#VJ'"-6(J=ZI1;`T6,.UKHC=9/SW6RAWPYI0^?`'GW6?Z&E M;F?9/!U<9)-L?J^FP$6EU'.,I`.Y;?*:XD'KM^1:_/IF:^M;EF/5'75=E&5V MM9"6O.-YI>8WH1O[U'BQYT6>RO'LSN2`[,A0"<WY!4FV>BLQV$3<V:5(O<Q* MN$5NEHD6L8%JXWCN%1OW;C=GCKFM=D': ?W/WL 'G&0:W$HG(85VY0'M7/7E MCKR?^[4#G.B,S=7O*I<K=JS?SY=B?+L48V9HKT$J.(3SL!QCKOT<&*<AQC9Y M*3HG9Z=-+W#SF M[4_1.^G:ZZ*?</"$;T*MAR?//!Q(?"5^D\ +3WF.!9^\EY][X>-2Q\1'R#HH M'K_VN`][1]VBHJ\8*O^*:K")BF=H<I+.;XO9CS8#E MP>DY*KEQ;G[3-.3VYWEV1TUQ`;S>"CS'SX;73*H=SXD\XJUKKW^=5][B>&S= M>)/>V6E[_W.K\HC%HU_D6>*RW$+$(12!84BLX3806?&L\.&9SY4P^[LZE1]) MHK9U+*_X^>BYR7-P=%JASOG!$ZA#C MH?_A8. F0^TJI6R0=(%=FI&7,NC82],'Q3Z.Q6PY2$JZTNV_[^CB)'/[,(PM M^SO?Y> RW;3:0O&EKGIBI]HIZ<G\ BSI>S^A;109=<.:5JJ-6&$* NMD(JE M[L%!2-%(5/:5D!?M:&P[B\2,MJ(H<&-9;QK*N4'*KSK="LN2+(.[L(D?DNRS MS&W6C[??>5`=S2':>%(_SW0/AV6/IWWX8<04^3ELZ;\CPPA>1$9X&#D]/FZK MKXM;F,VH4S**^;)BSG4&W/],T8(E9X9HP?J>0YX[R8,/^>-UAZCK:[BY_9+X MFD:[U0HXO7O:7U!+`0(7`PH``````&Z6/30````````````````$``T````` M````$`#M00 M(7*J(28``"FD```,``T```````$```"D 3<```!S=&0O<V]C:V5T+F155`4` M`0```*2!ER8``'1E<W0N9%54!0`#ZZO &I2 ````` ` end -----BEGIN PGP SIGNATURE----- iD8DBQFD5Jpq3w+/yD4P9tIRAkqlAJ9hZqZgazcvQK6YVwhEwpNoYg07lQCfasJo gv+/wFwbq4C5Y5USAChWZko= =zlc0 -----END PGP SIGNATURE-----
Feb 04 2006
parent reply Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

some more code clean up from the previous post

As far as I'm aware, there aren't any bugs left in the code.

Thomas

begin 644 socket_ip6_4.zip


M;V-K970N9%54"0`#C+3D0^:KVT-5>`0`Z`-D`,P];5?;1K.?W7/Z'S8^MXE-

M2+,SL_.VL[.KE7BZ\>TWM?UD?I=&UY.<-/:;I.MYVYOPXQG9GZ11EB?S29B2
MPS9Y$TVG8?KM-T!Q,8DRDB7C_):F(8'K>9K<1$$8D"<TVXRR)RUR&^639)$3



MF/H1G1(Z!]5\F /WK`44G/$T!^M%.;M/PP`,FD:C10Y6RX'1.`W#Z5V+9(O1
M[Z&?(P5J,$ZFT^06^8/= ,!G3/M,ATZ;7`!*`AZ+8DM/,EMD.5 S1[N!KFF(
MI ]1SP&Y2Q9%.W`BA/A3&J'1:,X:;],D#YD$G#UH51B0'(T9CF4 S EDH1 &

MH:M0H33\]R("$X(K:]TV&:)E`2-+%JD?DILP1;]F7$%0? ZJQ=,[,J/I!T"C

MEY7W6H0"2,VC,TO\#V'>#DBGO06W_P-


M?! $F`:V60\&L*<1G-[T". ;3)D/$A-98_!CDN6<./R8AS'2+^(HSV' 9"K3

MSM/HAN(XGB$9;P6'QM<M<0WY(>?7/MY-HQ&C^_8;$:H-T&[QL?GM-W^"F`)&





MZ)Q9YPX&D8C-;[^!*01&)+?QX4<_G&-"ZY/BDG-&L4)TU'X2A(SMZ93FD+QF


MS]YA\R;I7)+=7?+D??R$=\[(-C<'U9BI$Q,L`IWAS[](O4_J\`LH/=)NH\B7

M+<OQYS2A`8G&6`4DTP"F%)G=6*7()MFVH,921FG]'2=FRJ9ZR-\,"5TNADT-
M!](N#OWSG

M+0P>8;R8$3'5O8)9>'K7Q\#GS-X>GY\>[H,5\+_AJRM^WV(M1[\)N& Y^ WA
M1\>0IA4XWC/X:8G.X*<,?7AZ^O/AQ?#GG[`1P,6]Y-635()7KZ5+SFUY`<E-
M$?O\XNQP^$908A*[XA!D>O#ZK


M9ZZJ: &"LQ'&H4BW,9TIMP! $UR8R?GF)HD"*)CF"TCC86..G&!8;Q!V500Y
M, 69?)B/&FIO38;6GE^QWVSD8H<L=\HZJITGY^RB(9$1I=D.%G.1?3`U1(P8

M+?LD$7FT*PW4AMQ[G4]*.>3D4O:^0DU%3*&LDL=AOF/3M4/$Q70J=:D)K]=&
ML/2$65_:_N7=,=BPH?A8J8`T%PX*&+`&#NQR
MF(*TG)<6*YQ&(.7I(APH0D/R/L=H ()*Z7DQ&\'LU6R[M,*8:ECA?%_=>`^,
M\ NJ)+22BQ)]Z!$I! :8!"*AJ,%X3"S7M0U9A#L
M?Q^_S]'W??)=>R-['\/LQ7DS%R(QQ'-(_8D,CFP $$2$J:4RZ^1]/L06A6%F
M3&2B-`S3F\ 7%>;J[%)3%F-*/I+*''-*1PX">]TP'^-%(>V2M()X[4S+*NC3
M%`OP.$\FF<1 Z\(R:(04R[GRD'A`LA+T__!<94OYI5*5"!<[4[6((Q0*/VO>

M-OAL=='R7U W4^93&"T-91!_KM^01X,S^F<[RU3\83I^60\Y)Q\A,1%2L`40
M!R$5=,M&MQ6']7`^HW/(\_7<G]>;UH3`9YU,,&?(;-H17.1$\3Y'0\%=P*Z%
ME<MIA&G+)."CGEURV_!+U?4RH1HS%T-4)BZ1 59-73(?R<2EJ8?[($(W7$8R
M_=I`[)ST<%=RW=V0S]OLJ%K6<SG47=(UYU]CLQ4;X>KG*./[GGS6A95O%"!3
MB.O&A/_>().P^:>(W$G8GEPA(5\"[.H+VC8N')O%I,>0^5R$L].V:%$6Z():
M6:&_I&RC>)M)!TWUICK[L#W`]<3H5<K1Z=U#D

MR5.F''/BEWS(7RJ-",^:5;I9`21VWB)1.RTIXIC+S(6A4N[PVJ8LKPB/B+)N
M^=,LK[0M,U9DW;?`VG'65^N65J:`9F%51I2[H.*"2P\($9AHAFF*L7$U!414


MOBVA( O7]'`I?.7V(;;<3J(I]!B5SJ)1FT97/HV3F(T&/=IP'+IBS:12+,DB
M +?S9,3\RK?\N-<K&M?V-*=')347UBC&)V^,PX_YX&_WJRCL,$TO68:(8J!I


MJW%PM7_RYLWA\06?[9-X>M<TC8?^;BQ0519-Q<+?&E#KCK/.0,^B[[Q+D?>M
M(,8.U0U,A03&&:*)L5:]YG`H([Q<JF-'`P C 8PSPM4!63X=T)NG]!JGC.'1


M6H^3:&($%4*5S;]HTM9]49\F/IUBM537-_SL",;5%: !+(RVIMZ!J]6T8D2!


M-J!^3C3^\K!)DH=^S Y;^1_01!LL>S>$260K*HSPG\.8-VEEH`P2?L<1K#PR

M%Z-IY/=7Z6FP8N6M1M!$[E3D;;4#RSH&J[JP3KUZW2^'<&$YM G`SI.P^7)X
M<'!V-3S^%SN^(V\&#ISCD

M*"Q+/RS=LEC6&_.O[.(JBC>:I*P1BGV)=3KKK>RM9_76L[M;71Q7;T#P4R7.
ME8.F +4Y(6<]GG/DT.0S-E45=^C-JRE'K?68RGJQX#ABR*,5''O5+$<62Y\A
M^\M8GO[&</+TCAO7R=D7-O%QQ[AA6IV$6K&LELGE\2MWW&)0*:&[+!B+4%CB
ME2L\NCM0.FY4V+Y9>K^)$5OWVNQ?WZN;1D2>A6NB>)5O5AMSM-R8U&W-M6S9

MEGN]JZ*X1<JGL'H6+7EUULF83F;KY$ VU9H;M$OSGCH[PK(()'KGM3JM;FNK

M!I49CIU^U]OJ;WO/^CWO>?^%]T-_Z+WL[WL'_4/OE8S4& 9!3:KH X0COD.W
M?5GL6U8*[C](\!5R>^U.N]O>4D92,1JJ!<&CDRO2=;'+)+DM8<=-X%W*;:TJ
MGMW*771]L%7FLO^7<&N13G=K^]EGQ _CL2J&5L1/BSS;WNIVUHP(AGO?J$!E
MOT)D`-NMKQX=2S?0>.:6>V;+T_8]DK,C+M>.+._CJU=77N?*ZUYM>6"A[6>K
MDE3WV3/FW.T7?<2NWT]YY5']2C7ERN8+J<H?<C`!FFN%,*^TB A6:YFJ5UDL
M-Z[>?&HHV[J/K.TGWH/SZ"+JP9X*V%M*:^[0+XH3U]"03&]"IA!Y  L0=O47
MJ3\IYUO%7_;.%&]/;L(TC8+0VK40SI:R\!=(ZH:+VAR73"A[ZVH4$LDOQG>G
MLL5HDRVUY?,#HT]M-V']#AGZ0_M

M8[_/.+QZ]:IC<&` 11DQ7U]SZG4-5Z!_CNV*!0>,_FI[;,EX*/I4]:?:(D2S



M_857P<.KNRRD/A%9;\#K-%]M0M$F`*-/U$=I7VLVZ7O=ON<-^WU8PRSAV>_V
M`8>AK&;KO3H8]KU]X/L2^.(*U<D6L?;[ +(63V3D]0&]BIUH6_7P= U'_BU.

M;#S`KP7X^(F"/OLB0EU.297S71V_"%!G"RYS<<$*%L1`8\D5F>461\D,';]?
MW?-[UO7[I7V_KW^>^N*]1W<7<YIF\G!+LUZ^9\RPU49E(U9DW I>QE:L5G4G

ME8BZJFPKJR+67-Q:TNW/YLOU0H1$G95*.H=*-6535M5DSU1$/]G3L;=AE]NA
M/'E1:KJG*:IM=8 .RAXJ[?-G\=*T,.]>:5W19O`LF3H<8I!XDL0Z8" 0^'OZ
M:VP$5.T#L(50BX M)I-J5$6E50%N6K^ZQRY0==Q4P7(YM]Q4X3IR]MRTXVK:
MWBK:ZRI:;ZE9)VN+J\PRCQKL3/C$K*Y9K3XI]S$5]#V!;37LN!NNL8/KIC:Y
M7?-.3>1K[/5:PWS$ 9:`"-^SV>YQK ;BCHG( 0ZF8Q1LK"./N0(6R.QIC(*.
MC7[&7"47U&FM,: PMM'W7#SVJECLV
MP>G00MW=M;4,':8*BS T4/=L,?<LXX<NNX6%W0SPCLF2`\=F/SL.U9W!%*!%


MN1-=T-`)'3NAUTZH4_,]6_$]2^\]2^T]2^L]2VF75WWP &]+M^-2>L>E\XY+

M!EW;(-?$/ +7C6S!]UQ6LG+`R(J6D2,=C^QT/'(&S`C\:)EEQ[+*CI7Z1J[X
M&=GQ,W(D\5%5`4/9N^4Z`\H]9X%\&Q38H-`&F;:BCJJ)NE(*Q=BB%O7NKNU-
MZ QZZ QZZ QZZ AZZBK::$7$4_"W9<H]:WA25]Q1.^ZH%7?4$7?4CCLJX\[R

MP6`<.54>"Q>/6HVGLVL^8H>NQ*I$D6` 6M 9.G[BDOT"S$F>Q%/E[1.))9AC
M<]:0CZK+ ]_L?.TZ!V+YD^4E9UE7'TPLCKF6!P`?+3U46[W3Q9[TLL]MNM[Y

M/-8]5E"^P\3>)JIX9ZGJ2..2`PF/)\67-O^6<PFJ0_GW5T$,?E(:KUQ'%)C7

MG?C\CA+.KMU><Z]<(9XV'`/H0<\D^!&C3J_MR:,%Y0-QK]/Q/,\Z45;!2#GS
MT/B"9\-+<SB?R`NC:*]5D\=.\S358W>FKZH?`:JYE+]E6CS85 3`;WW2O%'_

M 16!4YF]&HZ,\P>?DE<^%^;1XW6]+8PEWFUQFFVKKF_\W]`THK%&KX^MY2=<
MJJNAWCVJH1Z60^*P?E45U%M2!GW&A*N<ZUYWQNU5S[ ]>\;MB=FSQP_8\S'!
M?[]X=UD6%0K.5ZVS>JL+K5Y%I=5;6FI]$4.69EROUGIH9?'U:XO>/[*XZ'V!

M??W>\[D[62V;*^\[;RMO\_.WC_`5S`D-7MZ=4O:J=_E]!]84Q8X6_-R,_)C/


MRD/G2/U0AH/.0:;AEJ &INL;..IG#G:M[W.`D/7B)9U20-T4Q2<1`'E /P!7
MOG:P=H%6?\?K,;-,NZRNT_1!N4;%ML:QF=5'5?1Q65&']?27\JH/,.N5&/]*

M%[,/KL0=_YCV\8'\9O?!%=XA].7)Q8\EM$2W^WJ%WQI1.A(OD?/_O!8SZ\G)
MR_)+WF_.7U\!H$6>/L5O"29C"+`8_UK0Z>'A3P4:8B&`H>'?>,%Y$H(CC&X 

M$J9CROZ("WHA"_TD#MB7S?!V%OEI4L(XU;Y&5<:Q])SXTQ&<BN0W5W!9?JY&


MEH.&.ZFS`HQY3![ :MXP6WA((CL2>U;BKE`31`,EK-]1V1VB'64U33B]FZL?
MQ]6R7/Q(>3#Q3*DNEU.3ES>:\)ZH4ZV.DY)1KPF.8^MY%TAU_6QFE&F+Z[+4
MX4`U=Z TJF-N-2KDTQ&(C>=JFL_K&"/&\*%BW0X04R_<GC<31<:Q1I L*45Z
M-YUX8!V;\\'2]1/F3B> *4!BQ'_$,TWH0D* F;O".JF!3T.B,82:.]8.A)U(

MV-&PW$]23F=3%J;>;="%/VE2X$.+"4%QL*^2<& $_N&9/>,=X`)Z/CSZ]Z#K

M/+Y4,!B$;\6KSZ0JMRFC%6,O):LZ)??AU+=_DA)NTCU=_6!_<'S>J<%&U/T"


M"KJ%9O.D4W=&B0B5;IR6&&9.:M1310XJ9R=2(GL6R/WAV2-'OQ;UV$3I'B`%
M:Y%>;79;4J$W );:UO9%=1!?W+7L0]'S9E^N+8U7C^ V:_D+B0)N,S1/R8(]


M(8PR34-^.B0VL76K4A6CJJRF4\?.15KPF'NXNUJK'(7:'[R_.+0G"(L)-*(W

M)_!ST"!EWM#YZF3__
M.CF%?73O#Y=,XCQ?003U=D>K-4)/H5!'OYU^&C*MI/%<YL#HX\7Q.3\^.G`+
MN\\CA8]/3VEZ)9'GIOB_3H].1H< `+.Z),%S4_1XL/?[P"N;A,][4="[QC'*

M]K88_8'W==ISH+L(/Z?G+4T&$,&Z'"IR2'E'E2[_T4%R3,-4$U`#KN98WFA.



M.NN$1NDA*,*RG&3SXAZGI%8-PJ<E+&`SW_E1A]`'K\C[$*:1K!QOJ<[[*U,]
M5NT!X\TL$X\PXG[H3,?EHN PSSUU,#H<G!\<]^BC=G6*&1[?'X-UUHT?90S7
MU(7[K";NZ[6X9S<3[.COU`]8U1S4`W33=RJOQHM"+RCX/V#S"/ Z.NVI+2" 
M/Z![=H6Z*& 8S]S%TY!?4SC(V1TNNB0;W:25C.'TY6MD[R[:/OK=[S7LR+-G
M=VKKG?K+RI/+R&D`W__WG0I?FQ9\/H;,QUVTWTX.8EH;ADO8&^J:H:41-V3'



M$>$Z7?.GPZB=)$;;^1K"<B.(M[C8B_)XT&+-5<&\PDJ?AWN#SZ<7Q_LT'2BT
M>CX7]%LO$Y:^\O)GM87[]: .CDX^G9T>G V&PW5)^C2B!W;OUFU-VX6%;<=1
M[FJ\);;?+S,TXGC083:0EU &&*$P8$QP&/#ZK:BN5 ^P+L_C*S4V4#RN;P#D
M%^UK`4S:4Q,I79&9FBK8.&%*3SBQ=,*E$/:7!9^)3F_7>O]4,P0!+JL%.GYJ

M_8_[ZE7R^M5K!ES840PZL=W95K?7(,#L[ ;Z !O3]NXVO"R*ZI9^H7)ELZQ<
MV,.P; FD>,-_20;;*%^F5(0SQ^ VQK:&\B$/7%0/ GM)5QLT8WI_T/H,91I:
M 82UV(&P'1*,DW2\^?(*S74[J+NN<]>42>)'!UESPG+>J$87'EO#M1JL707

M<N_N2=3;IVI]O]OQKWO5=75KU#XQA5A?2)L0X0$+>==$&E5>+W_4 .;4.^4^
MZ&Y,J))CRFWDY$]LD['%<IP6!5GFTJLN+!V8A5])),X\&U<SF&$3\D3U^U,"
MFA?5?5G-<YA]9BFJS5;*YP'IW"AD0ZN9IXTQ\3F07&P9L0)8RE(`_ED6/$MJ
M.':"JDB";><6*`5Q10*BFG$'.Y)3`8FNS([N`V"MW\+;-9IXVVB"?DVR:0IU
M8 3\I/\-A`TK)&??.:-W-9T5"25#S=(Q'-LSW%<P>)#P8-31)$O5=%[-\,+J
MJDIL_*\3I7C"F?\:)B 5>?/SVS^%!2SRFQ`'JQ`TKLAG^8+W[C<__TQ4ZZ1U
M:P;ZV"!97$RSIVD+'L<&^W1UN4CSTO8V<E1>D<_*,8:9`P,\%ECZ=+&TR$PR

MTS5L-I+N1&:I*V2)&0[%1]KY-TL/^_<=I,<3[>\0'N<VQO[K?BFOG]8_.M?K
M`+O"*(*(+NG2\6()V\0]!OW`)(/U'T[8^*D%FFKF\ R,;5SX,>QQ:=QD%,6D

MO%K=FYZ*G1&#GBVJ]?K6?G1<I],!JQ&^'!%`X: 0L-W /,(^V%K=5TMS,.Z2
M$;"ND+Z!8- <?[52$!NSNHE `J$\.$<XE YOW%_A'+&6$EE$RWG6,H%TO74%
MBBX"(S;<;^526L%!4`>1H.O]"^WJ`1<DF>`>FWE(,00C`5Z^;C(K82M'AK`Z
MLA)MS1  Z214XF;7PP&2$NO-7UWZ`$R5AR8Q1DJ:;$I0_CL*F"RG]78G+!KN
M3L'P8)%UYY`AYVU97IX>+/'0]O)M1KDQ*JU#X(\]U6M9NJC:)BO"VAKR-TZX

M'/<2FE".M[JK.;Z2V_5.XZH=VH)_>]X=O*KH?SVE>Z<M>'?K*FA6>H>+!TU&

M;<9O4K)4)$-GL*<(%F>X1+T$TK6PF9JRIB-5.UNZ`L==OOZSL= _A2F.EPEY
M,E/;DJ8A:]#O-D,YS#V
M(T[D]</*_7AM?I+01)5]J=7MP\<%O_WH:?7U^>CWZV^NMI$./+*__;[YA&*[
M5LN;2:H=/GE)'TI0IER%CIW,!+/>7N?C:QA)!>U 0M;Q&*SH26,;L18YE:NU

MN5;RJN)&Z]?D4OR93;__.2^QZ(ZZJ>HZOX1N$V,EG2(<5]C;?QA)W&3XX<W"
M.MYLV&K'R%6-K[/QES-HO:>"AY^Q-XVGE+.Z)Q_L/%>+KV&\^LR$JY=5F<GV
M[(YD2 YC*(1^^XHL6[V4&&XB<>OR2OV0UPZ'_ U&I!1Q['C!I1FN'6^'WK62
M",/:)89X"H*9WL)_F373'2SY-I<]?P`TJ6YKRO>=8  .K&LSCCS+9C> $]S$
M?W2P-  0+4 TZ<CE"<<%_)C3=GYKRPYLHC\%ZJI?G8<VWEECCK,8I[>&$,M`
M*-&O!BE^VD8K,[1( (86_6K0XJ=Q6I'([H:VR!4RR2+64>T<+[W7)H[;17TR
MU](N2=NQ_]FK]T"33(5;:224T*Y\*[M0([D,'Y5^Z8`GVF-+]8LJY2X=RX_*
ME1S?KN28%=JKD`D/X3BLYIA+?PN.LY!C^X%M*:8 NX1H"2M[SGS3%L5H+.M2


MR,.&Q'??7Q/YE%.^NX)'WB>>[\*O2!T7'S'KL. RYK*SQ7KFF"RS]"Z?+6=B
M2GP/*30]DNNR:YP`AM\7.B#LIBJ*#MM"WFD651Z?#KD->QG=HU>_(VK!-95 
M%Q6/4'&2+6ZK^9<!$Y2/7.D:]XWZ58A3H_C/=`*[YZ3FRJ7Y2\N0ZU^4^1U5
MQ0GPHA^$B)^/;UA4.UZT>"0LU][S.I]S2X2QC==-AN=G [V/O<;7*I[\(M\?
MKD+`( VA9`MC4 VW MB*YY5/SSQN(![L:C!*LD1M;?<[D;"MMA0QILFU\\!L

M--[)4V_'YW"1D`U_4Z]QA\IV8_D?:HI#I]GE,-*ZLDIFB6F:%VRW2[ :_/D3

M`P04``(`"`"XE#PT2LKX
MVT-5>`0`Z`-D`(U36VO;,!1^3J'_X6#H)D/M*J5LD'2!79J1ES+HV$O3!\4^
MCL5L.4A*NM+MO^_HXB1S^S",+?L[W^7H(,MVTVD+QI:YZ8J?:*>G)_((LZ7L
M_H6T4&77#FE:JC5AA"H+K9"*I<^G)Z.MJ1W'$S\`_S7GG,-O8`<CO\`;JO'Y
M?)Y. 52CBPL(5:CENO9RYSTJ:J'O'Z#NC

MTF+5*)88U#O4
M-D\L]<K`SE=2E2R:1:B1QJ)B8^[!04C12%3VE9`7[6AL.XO$C+:B*'!C66\:
MRKE!RJ\ZW0K+DBR#N[")'Y+LL\QMUH^WWWE0'<TAVGA2/\]T#X=ECZ=]^&'$
M%/DY;.F_(\,(7D1&>! Y/3YNJVU5H79-A+>\0;6V-0UIS"^O'.X./8&$[/T*
ME#MD03`X(+%8NNY ]631+-6GFZ^+6YC-J%,RBOFR8LYU!MS_3-&")6>&:,'Z

M````````````````!``-`````````!``[4$`````<W1D+U54!0`#GP




`
end


-----BEGIN PGP SIGNATURE-----

iD8DBQFD5LV63w+/yD4P9tIRAv1mAJ9Y5higuTDJ8BLmNR4SleGZmFlBQACeJMlw
EIBMYDL8/zw7mFjVgZgcNgM=
=paHq
-----END PGP SIGNATURE-----
Feb 04 2006
parent Sohgo Takeuchi <sohgo sohgo.dyndns.org> writes:
Thomas Kuehne Wrote:

 some more code clean up from the previous post
 
 As far as I'm aware, there aren't any bugs left in the code.
I've compiled the std/socket.d of socket_ip6_4.zip on the current D1 and D2 environment. But the compiler outputs a lot of error messages. Do you have a plan to catch up with current D1 and D2? regards,
Mar 20 2010