From b03ae36a9a06bf9b7f96657bf3e5fc173b99459b Mon Sep 17 00:00:00 2001 From: kieron Date: Thu, 10 May 2018 10:33:37 +0000 Subject: [PATCH] git-svn-id: https://spexeah.com:8443/svn/Asuro@682 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5251072 -> 5251072 bytes bin/kernel.bin | Bin 196836 -> 196836 bytes iso/boot/asuro.bin | Bin 196836 -> 196836 bytes lib/arp.ppu | Bin 3813 -> 4564 bytes lib/asuro.ppu | Bin 2128 -> 2128 bytes lib/eth2.ppu | Bin 2298 -> 2870 bytes lib/ipv4.ppu | Bin 3045 -> 3304 bytes lib/libpconsole.a | Bin 271148 -> 271148 bytes lib/libpmultiboot.a | Bin 29980 -> 29980 bytes lib/libpsystem.a | Bin 191880 -> 191880 bytes lib/net.ppu | Bin 3623 -> 3623 bytes lib/shell.ppu | Bin 4916 -> 4916 bytes lib/terminal.ppu | Bin 11999 -> 11999 bytes src/driver/net/l2/eth2.pas | 23 +++++++ src/driver/net/l3/arp.pas | 125 ++++++++++++++++++++++++++++--------- src/driver/net/l3/ipv4.pas | 6 ++ src/include/asuro.pas | 4 +- 17 files changed, 126 insertions(+), 32 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 7d7e7b7cf955133c45902ec1952b856d5f16e594..a95d4e2e550b150463221d4e6e9b60800b68d2d8 100644 GIT binary patch delta 39607 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 W0Xr=owxO^MgKfBloi?J@^8W$5_d-wr diff --git a/bin/kernel.bin b/bin/kernel.bin index e4247951695d0532325eefff778ba1c43e28e474..61776e4f9dfda525d7b3a3f358ca7704fd54c912 100755 GIT binary patch delta 29604 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 delta 28829 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 delta 28829 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 D6SvMM delta 809 zcmXw0O=uHQ5T4n*-Rx$Yv`Lfxq$b;Jnwt7kwWWykP>R@#VxriCio{YETMS7^Q|qk- zJ*XfO2le8?qX$7jdQcI>3JRrAK~y|>(Njf4gjyAx_fmJ+Z~ne-cHX?V>CcH&K0m%^ za7bK4@WJ!E3(rCT^WMJK&f@x99{>#1Q+@iizdueqt>?DaZ(cFSj;}xdnWIaz7pw7? zJ^&2s8WU{Zcahzq zX=dWz?-?2?HRcf{067iRixFNTdkX}qK z!Ri@3nlDV3rrWtqC#p6GpIE(Ba@u0F(h?v3qPhzB#@1DNxnh0)#N-rTMpt7)O#iNU u02^$xk{4?yH=MTraIE^p5|j_Sj>dC!sCt@FRK3abd#2nS>Daj(`L-0>4-jF_IwZwy$(%GkL1Gpi9JyP=h_v6Z3WW*v4FMgVV4 B4j}*l delta 45 zcmca0a6w>#2*=dAWBN}gW_wMPF=E=wy)j@BE2Hw}&#Xp_>;_f_=2ixln|0V#7y*N2 B4tW3o diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 51de1e0cfe0b66c09743adfbb4cef56ffc195896..00d1313f11a1f43c0f2b30c3ef6bc83ce0777e53 100644 GIT binary patch literal 2870 zcmb_e%Ws=S5a0Ryh~vDQq>9v}3C2LxR0SFW5)zceF%U={%l`UES}8Kgr!>g1jcp1M z6|Gt!Dxn_80RacZ0eV706-WqyDpWY4!ht^k4qQ;Ba^O&EkeT1??q??y#Rt~<_A&F@ z-I>{WIGsNF@Wf>BBB_A-CLL4V9ZG$B^Xp%7o9|s6R!Z&T4=uzWQP8WNJ`}|CD2QE{ zIS~*KmU5NN(LWYH11S)$Y*eb=`sH5_zj-6I_ad;}`E_r-Sl(FA6>_Uy`Geoz`1n@P zJr7p!t3K4=?`o{X`L@w&h}>Qp|fdPu)5< zu$eso8tbhn6c$~I4ljB@2uJg4FO-CsgWhP=CVfQucIl(iuSk!B6lI_Y_2Zy$b|LE~ zk3>>Q*Ih^_vyU;6`bd$A5R1!*fSo+qpoL{hU;i%|ccQrxx_|WbxP_w@;g!7d2 zB)!uN8?bV;|2GvJ`?GK@w#eF}d6v`4i59!F6)ch!#?LMTM!Q{xD1z*@|namgZEi*%7BpsVJj@1+9~d792ez4FwMi* zlI{ftmVl;{zV2OHbl*uyY({e=uame5-N75~;*UnalRCrcm_!*#r6YJRQ&)TrDin=C zn{DNVGj~Y#>NBCdR2ilZHk}DsO|jv$u6Mu>X#^m@<|v9Z^TLKFrH6Sva$=wCLv26> zQq-=uXyFljrVuHLYR;f+KmoD!NKuDo!Ov+BRV7&Q3M=f=+SsJdFl|h@-Q0JUz120Y zv}NNd7Il_+Vw*uo6|pEqJr;3+>1b4gT?uC5L7asChFQpuX_EA^4%#>Xhq1%71m+HF z*DHn4lDCiT;vs8=wQ9XibG#=dxAxnUoak(7){QR#*1)#zNpZfA_5<(QBYA#;=Q*>k z*R@RBRnt`7ZT!$**K|IGm0xT+vw(R^k@7Ah-v^o|{YcUI6e;0<$fump8u@h6&!?{# zY0vZ6$fu(Ww)u3@&!-m*_AMS8`E-o2&G~fF&!?9S{v940`IODApc{frQ?d}IAV|>_SKOfNk&%7&gRZxA(<9z}~Bt??d)A02QU*JQp3RI~t ucpMWbLMw1&D#2Iys4orbI*&TOkZOWuPMrP|k^0V{sD`vkS?>PTsQwR-y(=dG delta 1007 zcmYjQ&ubG=5T4o1ZZ^BAHEA1ynA)U9ZF8trTS^sct*r&A)>1`92&G+WAf_Q%MK9){ zAmXV!{3ASx2L&(ElLy6%UPaWKH}MDfgQDNO>=qZ^%$u2S-kbT}?9T{dwl{w+{ zjp$^+~?5cbANK44$oG@YsjiqJ3 zL2O(4PN|A>a*tE<#f@SZ+C|Gt%!1vBU2r^jlJ&oTDkJ{axgT{-8dZ1D*@= zF&#LdSNVzatuAcsdU<6jSb}T2t`cwkIZXTtEpNRC+9(JqR=r&HYryV`u-`-MCNvP{ zpvDSIiFz3f1^x~2+B+2C|Au&(Of~NIwUThSyQddths%{(1=tjaY^4E_G2@I3pSuup z>aP%|+l(WYm3AmbdFY}BZ-aEEgDb*4Ub<@w+OMHR1JHdM+DSA<=G^2IarYKXPbk9p XXGjK_d(x1x2BsX1L=QEpQeN>N4#9jg diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index 84da8a75e0a72e8ef47fb27ad79e2cb894ef65b7..c25761f7226b64a0c179405ac9e6cdc85e608dd4 100644 GIT binary patch delta 1005 zcmYjPO=uHQ5T4oWZZ}Drzvic{wQ2fqi%7K<4?-%nEwN3rmZk@P2ur$#NKHZ-YsEtk z7B3=F-$4rXqTta|aw-UxdJ#|JL6G7>MDZZ>;z>cB_p)2Nuru?%`R03X-kYzH@69n? zPY<3NmhU1sU`OwOoqB)=BfarodoQl{13=$eY`_r+|6EILYp;L2{A@g0-(o(zrM5W$ z(9ir*h&{!l!$?a|5fq8M2LVAtAWix$(5vtj2#dl>Y#+m|#IuVJg+eDtgev;jGiegT zY+s5FMn$2+)~+XQt}2V|giM_UsUi`q#vPN04t8Ho;xhXv@8V6ip|q%)Mr9h?l3UmZ z#XA^rEBtWOQcpsk8_G=g61Ww zmCam!v0|11JvPH&8+E6T@b1shP21mD9!u1m&ncR#)4c96!X`M50T$DyLo$WQLp2vE zzQk6wxL>7A_E09r{y2}h*9c)8#a5;{=T;&Vs-?`lQ85Ve)ou=!vy{me3l(#@Li`gp|DMHvNIuq98!V81FH->y zkN~V(1PbAaIQ14GRgU5mJL$UG-cF%fGRnq{MS{9*<>yx6Cfjs%uK0-L>JlT6FXZV6 z0Te`pZQ}KEwXmOaW~>J>=K&j)ni$|KAtu8c^1OWv2go}0a{s&Lq Bjko{+ delta 846 zcmYk4&1(~35XNWrBh6;hbdxlx#?;!TQEQYoXeD~FXblvN4T8mwN{DS*0yPO~&>})X z1wE*=%t<{6MLc=3ryc}}|Alz*AbJ!;5Jd2Kx0}+1%*;OXo9CU~&5ym``UZ=|E7{}Y z#zQ8ZJ{E`QgH2Ry^?Vu2P38_0QF?taqi_8CwLZP&&tLnq^?O<#iNkk&-!&o*%TFyP z8{D73IFZg|LZ*xQ&Q%+g#JL%$l@~0yo7m+kLYDIRg{Q;MciE<+*Rf&f)g7lK6(SeFg5`bh^%S zY6419sj(2EzgbzVF1IR8;%?i7Kumdg?LWCsJr65q?=n@b`H37$zFJ8MTHSUCnxk~Q zkYVdmOzj=tHIqP{lE>DWuz}9eU7ayud&IsDWmc&i7dtSs+KbZHD9x8!Wk`;@4;DJ* z4W2~~;DsForVYgq%|>adQUg2CVJAJdfDAkRh|9(itww3CUTalWTHr@J{IthkMIPM0 z{WVDYyMh7EL=bOz07_bLx4sAEzEU|aT~ra z930(Y#XI-~a>`{Rl*fwa>a~UHB605y`N|{TAn#FREQ)9}D|2^nLg)YR7TsfRHz_ZJ O1A%;}@lHMk)BgbldTpiv diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 230fb4fcb179e40a413219c7d04117638b1de283..e58e656236d63ed3ce127b785568e4e8810a5a06 100644 GIT binary patch delta 3675 zcmZWse{fXQ6`pf8OG3Jkmk>f?H)M%n&={5tHA-}7F%C{DOMb|b01XgHgb{)SXQ-k? zLJLlrhMARzIm6UQP#Co)#_$XWhJwpTog^i&3?gwvS*B7dQiM>{P#AjO?&jUQ>woY2 z&Ub#ibI-l^y^c?{j!!jzw!NsZxOjSZ?k;EKX?s(KanAXpErK}oCH7(JuiR^Qo zqUlA&VZEv9z4w`@%0#78RMeZVqEdIIRO+Sfr}X?y`*iQLBqK0=Hp;xNqE4wJ|1ZI- zYcnSrPZd`ybm%5}4Q=Lo3Z=C}89lND9ESU`OOiJ{v$sm5H?Nv&O!{p>9Mj`f7~^*N z>(Xv?%-fqFt7}+rN= z3)LGXFCC2bXJ1pc#b+2Zng^5&t}WS#RxRW?4_;$W%W6el;2%H15*Rh_3@fEKcJ@i7 z-q=~DFFBZIeANA{WT_zsyySTl6OBLjtdzW=9UPEI_|_P{!)o4hfiI-p2p%g^^1Ax( zS5W=Qi^>btf2Kyca(11x>A_=Oqxammk}-~7SS=B04`3NBX@@aJ*S}tp*;|*x?~GlS z-;@kB>=9!#wi8kfzN+v>Kkr2T3>+# z9?XO`>B3?!9hGtx>v>p#!s-C7$b%lm#Wf|yB{1Erx?&zU==OF<*FQWpndcV3i;73c z4S!dn3J+znc+W#nDVK@0M`3-EHIuyOakw~2LQ#v49v4-k_h8w|2HwUgxf|-{|!m>ffL8k_k-ZkwUh*^^`JAZZLg;mdWy}4#P&lZ z6d7{LZFV{^-!`6(oP(*9Rb|WN^C7qkTA}CXJ{zv8Z_2(Qm@ikGBMs_G&obMWuXm*< zQhBv4+bZX;K+oNRU&vM5aSKL|mhgZLC(Fw!5{@=j+p;2Kadi~tDY3M|hkjPz{%K+? z%>7Ok={Si(<&Z{SSKD&T*&s0+Yx$~%EVn<4KB`^ck%8(o2k$|U?`K|s=It?-OLI`U zggBUsW27u{ces}coo@;%w}CmdXXFx#TECLW98V`uW&voN_aJu4xe+>X-X+bzqmtuq z9>FXnrPy|5`YS7v__^QUNhRol$8nP)6URVUMnaa%zEV_oa)TG!q?Yq4aa;6Ipg;{~ z@`)<^E?NNxn=l!ue=$zs?-$|mXhT`(?v6;rb29LWTD%#xl5i>^?Pcua({(sxu`ggI zU0#br{MmB6Zn05qFMZyCIru#A)34$+MSgxO-csPr7W_$pqy2bWLK1Kez4-|y>9evE=s$K$q}r!3Rll}k2RU9t zm!4Hn!|gk;Df+@@J;kl~Lo@_6zK_eebtk^95Ouu!4SXwxcz;(M(eqXu@$ud`qVHXc zV3EZh9Wygy9e?$KWu(9-g1FQjM_m6Xj`$zP5%xoIM9PskBI~F{u*hPSU}l8bRJj6k z!;K0a#d|ri7kjO#FiU#4-|{wVT*k8oWShc8&k4pUe5d0SOFy?1=Ks$>Fy-OcL&#*$ zSnHX=!LPAS*^mNm1#0_F9NF!c@JTV$^|YZL(n%}9deSc9Zh0IYzld|?h9q&yc)9s9 zsvm0;hp-Q5VF<_4150hmeD?t<8 delta 3675 zcmZWse{fXQ6`pf8OG3Jkmk>f?H)M%n&={755+pjb7zZbnB|l_IfCh*p!U#cvGgMI` zp#`T*!_3OVoMCDtD2!SYV|a!GL&0UFPLdK>29Y?TEK?~JDMBb}C=9)Cck}Mu^}qLh z=Q}^%x#!;dUi+t7`=^>e+dh59%xOhkxx1Z_ryY$M#(C$Dwg}?Tm)MJ`zjCjg;&QpB z7EUWH3hPZ(&;8FtRVFH#q@tdD6_vOvq*5<&Kc(ky-miP7BpHEeb5Q1W6?RA+`F{ys zU7I!Dc&eyMp+mROYiP6HQz)$sO6ifM;4s{eU6#DznX^qIy=nD4W5RC>;+Sr)!WehT zUYB;Geg3`#SzZ0Y(+XO+q{}XCd9^nbKhMfSMcK4^gS6?MIbNe??JUU{2cO@pAm8t| zTByz_e(6xOKl>ZAEk47T+0?IOaBa;_v}z&G1@Ibso7X7v0{_@?mcXcfXGkf%p`%wS z^@fg8ed(bzO%-*sBerN2y z@}^{{ey;Oiq{tBlLS(kg`{!g%$D9|G)4g6nzWSkEI06jldtc^-5tF0M&2E`e!g)#dZSL3egQy8hwmi9D|WUQ|3n zZuq+rRd^_q#d~K!gPq56w4 z_j1iDXjI&PS_7vg3@bd($0&N%D~fU4y#X>UhjIMvMsQj%gI!HMSf!WWv8&c7sJm6^d7Q@QBoW5V{%>Mx3Ac@w{Tq_#11FB5?+3u6Ybgm-<3VR!+g?wd>M1fC659`v zP-Ms{v)Sq30^3+RdLAZIR;4YMFNEM8Xj45u_t|(&eN*-g!UDP49BEKzdY0L~e7!S0 zk;=SJwnd6zU3k4cWd zc?7eRlw#YJ>aVO!;^%&Yr<9-zAIHs#OdJDY83|c3`$|yV$@N}rm0HfL!0pjPfdbW- z$tNrEyJ!U*Y{X=sz9l$`zh8_eq77xCyEiNm&&j|iYw%XoO2Vm_w3o4$&(z|e#lC=< zbY&e5@@FgXhQ&s;J@k1!=IC!cP^Eivo9Wyde3435h zprDA)BK|)WqL^A=z$A9A$Ijt$g>1-Dh~z8^J!}~p@ow~aN255BoAAHGCh-y6ht&Qm zT4Ozq&%BD)75Rm2cw2$Dn(-$Ej`ZUl2}!`Y^yVj+q|eSyp#Ru0k!qgCRQ>wOo#c28 zU3ykQHMi}=#^?*1^%S+>577|R@IEf*mRA9C72LIO2aCN7xU?5h+LGh^%84!6J)Qf|(KKP{m5j z4L2%y4DaW}9_+EE!Yt|GKFiyzaXHWKmu(6cJvSJq@STZMEc@J2nEyZjz?6q$4qxtVd*pF=;u6l28#tE{lriPZ5h8vZ9Ss|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7`~LBLvKbD8LGbQSy-dinYahNecQmS6{ftp#h9mxF0lFap}8sKvNB zU;Yy#vi*uO2-k^k-m0R7;EHYjrG6B_mDqeoTM(72$vAnfIsarC7NN~*y89UUOo0wT zxMQ<|kvc-X*ybeDmC%6MEMN^Y3CJ{rm{P^WwYk9lILvhceiEBQ9ND1;Y))|54l@fB z41V5{jFa=_1vbZeUV-U=i2sEK&*lI>Wta|7JoE*gMCKNSKIDgnLxPL==KRzom@J6< cHlqi|1?dF`rguIfFvT_(#tE{lCT12!mK&9PSs|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7`~LBLvKbD8LGbQSy-dinYahNecQmS6{ftp#h9mxF0lFap}8sKvNB zU;Yy#vi*uO2-k^k-m0R7;EHYjrG6B_mDqeoTM(72$vAnfIsarC7NN~*y89UUOo0wT zxMQ<|kvc-X*ybeDmC%6MEMN^Y3CJ{rm{P^WwYk9lILvhceiEBQ9ND1;Y))|54l@fB z41V5{jFa=_1vbZeUV-U=i2sEK&*lI>Wta|7JoE*gMCKNSKIDgnLxPL==KRzom@J6< cHlqi|1?dF`rguIfFvT_(tT)~uN@5& zt-;|EQCObJz;5}O#)?~EjaXj!7v&>$Yk6hAm0OWxUCPQ9mG>NW!{N#8Y>m~tpuhF5 z9P6g+98r7kk#v)2Uhr3!rZpZCHPs;?PZ3+(ug@dVOUB2lsa|ZoxvXC#mYy^|5*2SQ zds+KMMc0Z0MzgwBoU(Gi3W%OngWgrv^+>-+KIrGV9!cjK8%^gL8+EuQ#1z;5_}w6i zA3p6;?~mW4KVy}MBu?r;s;o%jTbU;jTXztw`!?jbxldk(D(iA{vFP5Qw&Du2x;LD$ z*CZc1>h7Ry--@B8zo%p3a`SP|ZpC88X7nP~jLkNmm3TH={NTxM$a9O#)R_DjMbC`V zrwECPt?An8ZRuK5Yr6KrpVGDWo-+kfrF}23)MCrR`X`NO2uJb)6cGJdJllmKOXLZ)&y#un=J67H( zRvr2PtZ}{RX7PCMZg)r3ZVN@rkzE;BM_(qk_h=@T9LmIoj%8x!Pk1oVbtY(c+J~o( ztMZZUPx$}RV-bVHS3LT;3rd&6%=4fgW`d-~^<2$4&_FiWt<2WX&kxHO&y`u{>~x zuAF;Se6SEM%3^ppC%~^xgihQPgaGj07D8H0R3W+byFpU%;^~{=Hu-I=7jp7&$|UH5 zyi$K6T)(j@Q1@&Laq(pEd}x~I3-Omf)F3V7!;7FA*WLmhW>XvEgr#IAvHEsU16byu z4mXv+YbuWt-~Lck;c9iN})%RG4Z_L)9Y*cDF>@EXe7jlA}HpKS3 z!1Q4Vw^c$2_}+UUfV(RE7IjOg-Ab^xN`GksellN!G8>fcJMi-bFl@4clp#&lk^t{* zix+EPM9+pG4@Y1L{(LDEnpVKXawr<5?%$B)3jrn{0CUX*k=D%x{{A|k0vSK{?FXSi zM_?O&rTId*dku`%Y7hq>f+w^Z#djJZZLD%qPvPE2Oi9xbvR!v1ISh97;>qlP`1B6wfn4XB^u}9{sh51q2uLB#2R%|Yy{6+rl2yWv z?AAH8!^LZzJ|+U({2$vR6Xpy=6M(E=YKbK{@hx~sSC4~n!tA+--=OK{^F0v5(k^IM z-7Eo4z+r3XYyc;`uR}tzsBB6(47SH@z1oA@WRb%@G6Ed3%0BIixdVobWS4BkkoIuM zT0ZuX5#W%mJ)vE3-lv9)WS8veGup!;OP=$Q5#W%uU(l|Y_}q|@?2_R>wTFCbHSoYC zI4!tqBZKA| z`i0>l+2#7lVjtJD_d8rmYkXW}&|LGD87`9DyfqhQVdqNkarm{>4&Mi>e0*fke0w8? zk7PHtP`!zb&;}lFbn>WXl8nlk*vlqZq_bx{6_KO zQzi-ta02?;+E@Xme$U>^oW9P`9K{FrcTxcG~~#Ha4s-UNT1c z1JAQQIb0_HnH@_vAQ{wij^5ii`9(IpQavkzSa+6<=x0C>8$V-D8I^w7?`ORGAI$%M SfLSx0=cMNv!JdD!6#E{*(S5D} delta 4252 zcmZWteQ;FO6`ym(gpVxbYj)8RNYP@6xJHmPv5mnvSjtC|GB7YA&KfqIO>||MGBDc4 z;Gh*dIE1`5S4V7O6%}a^xW%I}njHz?CLzs8fy!5qvC}VtIMk_hr1aeP-o1C<+x&IT z@0|O)=bm@Yxp%YW^n@*^C$tvbcz0R(?23KUzc<5?+TuY`KjZ5gj5e`sKg*vJUVCRT z{oOTp_S_142``SbHSM>seBRmzc~Km*8Dz<;)3qk^Hg@Cb{LrvR>vm^187w z*%}%t5rq}04D8k)X{@*n)`;a*uPYy^Tg$5ktlY{R>rz&>sJj2K8xBuyXKSpM1p{sO zYAdcVt7pR* zdrk7mqwWsM_N^Fh{wy66ms^f|b}JUMHlr7@W^K0lti%i1;ycguK%QGS3Dy(s;_EUmXnKXAUs+H|O_8!f|lEazU@Ucwn{0R>xy3YjdPW$B4 zaaBID{R#h1dMsjScR}fLcwGEzgD#Pvcr;1Su)U7bKl9&7$g6NBmMKe_v#4mgs@F)}YP#BQ*FnuSRYoeeB_et~rD9Oy z4c9YJAQBh`Ok{zoIEjpN55<$ega$k~0raSo04E^DJ9k2WSH_@DBx}b2uWf-ikL7_o zbmiQu=0k;WQ5M6aIRSokGIZglAOwK_q7c$*q8iCNF!=R?yxUx*KVSA(>Wk1T>3Tze~YnoVtt6PA*h#G3De8o)9K z^|+}7-c)&%04HG3c3pWp90WeIR3Ax)vZGY*s=miU{KFg#%0{J@!=5tmbs;CnX+!L| z2TUJ^a9b6GfbYE@0=TQvZ&9~|+N}ips`ZyP;GgGfP-cVDeLH@!07gtUkTRsnS`*;C zZSi6)jOy7Ci!K$z7SyYK`_@$5NTaG@Q>C370AT#?>-C# zIs)7Hh~^97?lmx0t3e$489c4kD8APOX=9a>dJ6YGZc3VtknOr7$ziao7f-H-LDl@! zj13sr21lY&V!{>HDFXTGcq&MCMOugz`MnDQ_KIoCM=}jFMlB^PT zWVg<#9WGw$@-Y$M=Kt6pnJ{M{ngC?|QcEns$$x}bb@ezHC(NFU_zjwFKHm#5EbWF4 z)y)#%1RS=8&jxVPM>-@Vi^`^y!(e;d)~7wVO%^%qBO|~etLoRTm^*05NOs9q3~LXE zto2hL837L2+7sFp=l#Wyk?fK^cSd_SWXW?rG6Ed3jtklq6JHoIl3grDkNOrk4-t6N#I?dr~EAnxXL33@IZn#Kx^Hy7sg`+dfaW02hBd?t0@UarZCk;pj z%}0PfC&_MXE9RKkY_6_yCvRN^+4w}6cOxXD=8OE$@R98D9jWs170q{IyHM?mjSQM= z_{WBeWS8p)i+x-#{M6xETI=H?gXWsI%y5zH=B=eL3%gc&kHfF6cKAMC<>MoR=Gz-F zd?dTEg&It3gf{Yclasfzh1pmUGaE@Gl2P-~FI9b0kW7Ow`2bzrjq8}cDF}{Y=g*mb z(n)|5(C^$78`m=$d>NCMuCXZgJi*kR90bmp6 delta 54 zcmZ23vs`9_5szj-3I81f3l|FpAYe``DyUDjJR!gJM>&Ykl3J2s nil then begin + buffer:= kalloc(p_len + sizeof(TEthernetHeader)); + copyMAC(@p_context^.MAC.Source[0], @hdr.src[0]); + copyMAC(@p_context^.MAC.Destination[0], @hdr.dst[0]); + hdr.EthTypeHi:= 0; + hdr.EthTypeLo:= 1; + memcpy(uint32(@hdr), uint32(buffer), sizeof(TEthernetHeader)); + memcpy(uint32(p_data), uint32(buffer+sizeof(TEthernetHeader)), p_len); + net.send(buffer, p_len + sizeof(TEthernetHeader)); + kfree(buffer); + end; +end; + procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext); var Header : PEthernetHeader; diff --git a/src/driver/net/l3/arp.pas b/src/driver/net/l3/arp.pas index 37756e12..65185e97 100644 --- a/src/driver/net/l3/arp.pas +++ b/src/driver/net/l3/arp.pas @@ -3,11 +3,11 @@ unit arp; interface uses - tracer, + tracer, lmemorymanager, util, lists, console, net, nettypes, netutils, netlog, - eth2; + eth2, ipv4; type PARPCacheRecord = ^TARPCacheRecord; @@ -62,15 +62,57 @@ begin pop_trace; end; +procedure send(hType : uint16; pType : uint16; op : uint16; p_context : PPacketContext); +var + buf : void; + hdr : PARPHeader; + hSize, pSize : uint8; + +begin + push_trace('arp.send'); + writeToLogLn(' L3: arp.send'); + if p_context <> nil then begin + buf:= kalloc(sizeof(TARPHeader)); + hdr:= PARPHeader(buf); + case hType of + $1 : hSize:= 6; + else hSize:= 0; + end; + case pType of + $8000 : pSize:= 4; + else pSize:= 0; + end; + if (hSize > 0) and (pSize > 0) then begin + hdr^.Hardware_Type_Hi:= hType SHR 8; + hdr^.Hardware_Type_Lo:= hType AND $FF; + hdr^.Protocol_Type_Hi:= pType SHR 8; + hdr^.Protocol_Type_Lo:= pType AND $FF; + hdr^.Hardware_Address_Length:= hSize; + hdr^.Protocol_Address_Length:= pSize; + hdr^.Operation_Hi:= op SHR 8; + hdr^.Operation_Lo:= op AND $FF; + copyMAC(@p_context^.MAC.Source[0], @hdr^.Source_Hardware[0]); + copyIPv4(@p_context^.IP.Source[0], @hdr^.Source_Protocol[0]); + copyMAC(@p_context^.MAC.Destination[0], @hdr^.Destination_Hardware[0]); + copyIPv4(@p_context^.IP.Destination[0], @hdr^.Destination_Protocol[0]); + eth2.send(buf, sizeof(TARPHeader), p_context); + end; + kfree(buf); + end; +end; + procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext); var Header : PARPHeader; AHeader : TARPAbstractHeader; CacheElement : PARPCacheRecord; + Merge : boolean; + context : PPacketContext; begin push_trace('arp.recv'); writeToLogLn(' L3: arp.recv'); + { Get our converted Header } Header:= PARPHeader(p_data); AHeader.Hardware_Type:= (Header^.Hardware_Type_Hi SHL 8) + Header^.Hardware_Type_Lo; @@ -82,36 +124,59 @@ begin copyIPv4(@Header^.Source_Protocol[0], @AHeader.Source_Protocol[0]); copyMAC(@Header^.Destination_Hardware[0], @AHeader.Destination_Hardware[0]); copyIPv4(@Header^.Destination_Protocol[0], @AHeader.Destination_Protocol[0]); - case AHeader.Operation of - $1:begin { ARP Request } - writeToLogLn(' arp.recv.arp.req'); - end; - $2:begin { ARP Reply } - writeToLogLn(' arp.recv.arp.rep'); - end; - $3:begin { RARP Request } - writeToLogLn(' arp.recv.rarp.req'); - end; - $4:begin { RARP Reply } - writeToLogLn(' arp.recv.rarp.rep'); - end; - $5:begin { DRARP Request } - writeToLogLn(' arp.recv.drarp.req'); - end; - $6:begin { DRARP Reply } - writeToLogLn(' arp.recv.drarp.rep'); - end; - $7:begin { DRARP Error } - writeToLogLn(' arp.recv.drarp.err'); - end; - $8:begin { InARP Request } - writeToLogLn(' arp.recv.inarp.req'); - end; - $9:begin { InARP Reply } - writeToLogLn(' arp.recv.inarp.rep'); + + { Process ARP Packet } + Merge:= false; + CacheElement:= findCacheRecordByIP(@AHeader.Source_Protocol[0]); + if CacheElement <> nil then begin + copyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); + Merge:= true; + end else begin + if IPEqual(@AHeader.Destination_Protocol[0], @getIPv4Config^.Address[0]) then begin + if not Merge then begin + CacheElement:= PARPCacheRecord(LL_Add(Cache)); + CopyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); + copyIPv4(@AHeader.Source_Protocol[0], @CacheElement^.IP[0]); + end; + case AHeader.Operation of + $1:begin { ARP Request } + writeToLogLn(' arp.recv.arp.req'); + context:= newPacketContext; + //context^. + copyMAC(@AHeader.Source_Hardware[0], @context^.MAC.Destination[0]); + copyIPv4(@AHeader.Source_Protocol[0], @context^.IP.Destination[0]); + copyMAC(getMAC, @context^.MAC.Source[0]); + copyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); + send($1, $8000, $2, context); + freePacketContext(context); + end; + $2:begin { ARP Reply } + writeToLogLn(' arp.recv.arp.rep'); + end; + $3:begin { RARP Request } + writeToLogLn(' arp.recv.rarp.req'); + end; + $4:begin { RARP Reply } + writeToLogLn(' arp.recv.rarp.rep'); + end; + $5:begin { DRARP Request } + writeToLogLn(' arp.recv.drarp.req'); + end; + $6:begin { DRARP Reply } + writeToLogLn(' arp.recv.drarp.rep'); + end; + $7:begin { DRARP Error } + writeToLogLn(' arp.recv.drarp.err'); + end; + $8:begin { InARP Request } + writeToLogLn(' arp.recv.inarp.req'); + end; + $9:begin { InARP Reply } + writeToLogLn(' arp.recv.inarp.rep'); + end; + end; end; end; - pop_trace; end; procedure register; diff --git a/src/driver/net/l3/ipv4.pas b/src/driver/net/l3/ipv4.pas index 6775d261..8f0059c6 100644 --- a/src/driver/net/l3/ipv4.pas +++ b/src/driver/net/l3/ipv4.pas @@ -10,6 +10,7 @@ uses eth2; procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback); +function getIPv4Config : PIPv4Configuration; procedure register; implementation @@ -19,6 +20,11 @@ var Protocols : Array[0..255] of TRecvCallback; Config : TIPv4Configuration; +function getIPv4Config : PIPv4Configuration; +begin + getIPv4Config:= @Config; +end; + procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext); var Header : PIPV4Header; diff --git a/src/include/asuro.pas b/src/include/asuro.pas index 8e6780d6..c54bdcfa 100644 --- a/src/include/asuro.pas +++ b/src/include/asuro.pas @@ -9,14 +9,14 @@ const VERSION_SUB = '1'; REVISION = '677'; RELEASE = 'ia'; - LINE_COUNT = 27683; + LINE_COUNT = 27777; FILE_COUNT = 89; DRIVER_COUNT = 32; FPC_VERSION = '2.6.4'; NASM_VERSION = '2.10.09'; MAKE_VERSION = '3.81'; COMPILE_DATE = '10/05/18'; - COMPILE_TIME = '10:07:09'; + COMPILE_TIME = '11:33:11'; implementation