📄 ppp_c source file.htm
字号:
00197 <SPAN class=keywordflow>if</SPAN> (reteDEBUG&4) {
00198 printf(<SPAN class=stringliteral>"(lun=%u) "</SPAN>,scbyte(ppplog_len)+8);
00199 <SPAN class=keywordflow>for</SPAN> (t=0;( t<(scbyte(ppplog_len)+8) )&&(t<60);t++)
00200 printf(<SPAN class=stringliteral>"%x "</SPAN>,ppplog[t]);printf(<SPAN class=stringliteral>"\n"</SPAN>);
00201 }
00202
00203 <SPAN class=keywordflow>if</SPAN> ((reteDEBUG&8)==0) <SPAN class=keywordflow>return</SPAN>;
00204 <SPAN class=keywordflow>if</SPAN> ( ((stato&0x03ff)==0x03ff)&(!(reteDEBUG&1))) <SPAN class=keywordflow>return</SPAN>;
00205 <SPAN class=keywordflow>if</SPAN> ((stato&0x03ff)<0x03ff) printf(<SPAN class=stringliteral>"stato=%x: "</SPAN>,stato);
00206 <SPAN class=keywordflow>if</SPAN> (scbyte(ppplog_proto)==0x80fd) <SPAN class=keywordflow>return</SPAN>;
00207 Log <SPAN class=stringliteral>"%s: "</SPAN>,iniz);
00208 <SPAN class=keywordflow>switch</SPAN> (scbyte(ppplog_proto)) {
00209 <SPAN class=keywordflow>case</SPAN> 0xc021: <SPAN class=comment>/*LCP*/</SPAN>
00210 Log <SPAN class=stringliteral>"LCP "</SPAN>);
00211 Log <SPAN class=stringliteral>"0x%x "</SPAN>,ppplog_id);
00212 CoNf();
00213 leggiOPZ();
00214 <SPAN class=keywordflow>break</SPAN>;
00215 <SPAN class=keywordflow>case</SPAN> 0xc023:Log <SPAN class=stringliteral>"PAP "</SPAN>); <SPAN class=comment>/*PAP*/</SPAN>
00216 Log <SPAN class=stringliteral>"0x%x "</SPAN>,ppplog_id);
00217 CoNf();
00218 <SPAN class=keywordflow>for</SPAN> (t=0;t<(scbyte(ppplog_len)-4);t++)
00219 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[t]==0x06) Log <SPAN class=stringliteral>" Us:"</SPAN> ); <SPAN class=keywordflow>else</SPAN>
00220 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[t]==0x07) Log <SPAN class=stringliteral>" Pass:"</SPAN> ); <SPAN class=keywordflow>else</SPAN>
00221 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[t]==0x08) Log <SPAN class=stringliteral>" OK:"</SPAN> ); <SPAN class=keywordflow>else</SPAN>
00222 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[t]>31) Log <SPAN class=stringliteral>"%c"</SPAN>,ppplog_dati[t]);
00223 Log <SPAN class=stringliteral>" "</SPAN>);
00224 <SPAN class=keywordflow>break</SPAN>;
00225 <SPAN class=keywordflow>case</SPAN> 0x8021:Log <SPAN class=stringliteral>"IPCP "</SPAN>); <SPAN class=comment>/*IPCP*/</SPAN>
00226 Log <SPAN class=stringliteral>"0x%x "</SPAN>,ppplog_id);
00227 CoNf();
00228 leggiOPZ();<SPAN class=keywordflow>break</SPAN>;
00229 <SPAN class=keywordflow>case</SPAN> 0x0021:Log <SPAN class=stringliteral>"IP (%u) "</SPAN>,scbyte(*(u_short *)(ppplog+7))); <SPAN class=comment>/*IP*/</SPAN>
00230 Log <SPAN class=stringliteral>"src=%u.%u.%u.%u "</SPAN>, ppplog_dati[8], ppplog_dati[9],ppplog_dati[10],ppplog_dati[11]);
00231 Log <SPAN class=stringliteral>"dst=%u.%u.%u.%u "</SPAN>,ppplog_dati[12],ppplog_dati[13],ppplog_dati[14],ppplog_dati[15]);
00232 Log <SPAN class=stringliteral>"proto=%u "</SPAN>,ppplog_dati[5]);
00233 <SPAN class=keywordflow>if</SPAN> ((ppplog_dati[5]==6)||(ppplog_dati[5]==17)) {
00234 Log <SPAN class=stringliteral>"%u:%u "</SPAN>,scbyte(*(u_short *)(ppplog_dati+16)),scbyte(*(u_short *)(ppplog_dati+18)));
00235 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[5]==6) {
00236 Log <SPAN class=stringliteral>"(%x:%x) "</SPAN>,scbyte4(*(u_int *)(ppplog_dati+20)),scbyte4(*(u_int *)(ppplog_dati+24)));
00237 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x02) Log <SPAN class=stringliteral>"S"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00238 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x10) Log <SPAN class=stringliteral>"A"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00239 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x01) Log <SPAN class=stringliteral>"F"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00240 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x04) Log <SPAN class=stringliteral>"R"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00241 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x08) Log <SPAN class=stringliteral>"P"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00242 <SPAN class=keywordflow>if</SPAN> (ppplog_dati[29]&0x20) Log <SPAN class=stringliteral>"U"</SPAN>); <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>"_"</SPAN>);
00243 }
00244 }
00245 <SPAN class=keywordflow>break</SPAN>;
00246
00247 <SPAN class=keywordflow>default</SPAN> :
00248 Log <SPAN class=stringliteral>"Proto=%x "</SPAN>,scbyte(ppplog_proto));
00249 <SPAN class=keywordflow>break</SPAN>;
00250 }
00251 <SPAN class=keywordflow>if</SPAN> (ppplog_fcs==pppfcs(PPPINITFCS,ppplog+1,scbyte(ppplog_len)+4))
00252 Log <SPAN class=stringliteral>" fcsPPP_OK"</SPAN>);
00253 <SPAN class=keywordflow>else</SPAN> Log <SPAN class=stringliteral>" fcsPPP_BAD"</SPAN>);
00254 <SPAN class=keywordflow>if</SPAN> (scbyte(ppplog_proto)!=0x80fd) { Scrivilog;} <SPAN class=keywordflow>else</SPAN> nlog=0;
00255 }
00256
00257 u_int indirizzoPPP() { <SPAN class=comment>/* ritorna l'IP locale (da cancellare perche' inutile)*/</SPAN>
00258 <SPAN class=keywordflow>return</SPAN> IPlocale;
00259 }
00260
00261 <SPAN class=preprocessor>#define PPPout(a,b,c,d,e) pppout_flag=0x73;pppout_addr=0xff;\</SPAN>
00262 <SPAN class=preprocessor> pppout_code=a;pppout_id=b;pppout_control=c;\</SPAN>
00263 <SPAN class=preprocessor> pppout_proto=scbyte(d);pppout_len=scbyte(e);</SPAN>
00264 <SPAN class=preprocessor></SPAN>
00265
00266 <SPAN class=keywordtype>void</SPAN> mandaser() { <SPAN class=comment>/* funzione che pesca dal buffer in trasmissione e invia */</SPAN>
00267 <SPAN class=keywordtype>int</SPAN> ta;
00268 <SPAN class=keywordflow>for</SPAN> (ta=0;ta<3000;ta++) <SPAN class=comment>/* trasmette non piu' di 3000 caratteri presenti nel buffer */</SPAN>
00269 <SPAN class=keywordflow>if</SPAN> (bufTX2!=bufTX1) {
00270 scrivibyteseriale(bufTX[bufTX2]);
00271 bufTX2=(bufTX2+1)%100000;
00272 }
00273 }
00274
00275
00276 <SPAN class=keywordtype>void</SPAN> mandabyte(u_char Ch1) { <SPAN class=comment>/* scrive sul buffer di trasmissione */</SPAN>
00277 bufTX[bufTX1]=Ch1;
00278 bufTX1=(bufTX1+1)%100000;
00279 }
00280
00281
00282 <SPAN class=keywordtype>void</SPAN> mandappp() { <SPAN class=comment>/* costruisce un frame in trasmissione */</SPAN>
00283 <SPAN class=keywordtype>int</SPAN> t;
00284 u_short lungh;
00285 u_char chu;
00286 <SPAN class=keywordflow>if</SPAN> (reteDEBUG&2) printf(<SPAN class=stringliteral>"mandaPPP\n"</SPAN>);
00287 <SPAN class=comment>/*if (stato<7) delay(100); */</SPAN>
00288 <SPAN class=keywordflow>if</SPAN> (pppout_proto==0x2100) lungh=IP_LUNGH; <SPAN class=keywordflow>else</SPAN> lungh=scbyte(pppout_len);
00289 leds|=2;
00290 pppout_fcs=0;
00291 pppout_fcs=pppfcs(PPPINITFCS,pppout+1,lungh+4);
00292 mandabyte('\x7e');
00293 <SPAN class=keywordflow>for</SPAN> (t=1;t<(lungh+7);t++)
00294 <SPAN class=keywordflow>if</SPAN> ((pppout[t]==0x7d)||(pppout[t]==0x7e)||
00295 ((pppout[t]<32)&&((1<<pppout[t])&asyncmap)) ) {
00296 chu=pppout[t]^0x20;
00297 mandabyte('\x7d');
00298 mandabyte(chu);
00299 } <SPAN class=keywordflow>else</SPAN> mandabyte(pppout[t]);
00300 pppout[0]=pppout[t]='\x7e';
00301 logga(pppout,<SPAN class=stringliteral>"Out"</SPAN>);
00302 mandabyte('\x7e');
00303 }
00304
00305
00306 u_char mandaPPP(u_char *bufen,u_short lungh) {
00307 <SPAN class=comment>/* while (F_PPP) delay(50);</SPAN>
00308 <SPAN class=comment> F_PPP=1;*/</SPAN>
00309 <SPAN class=keywordflow>if</SPAN> (reteDEBUG&2) printf(<SPAN class=stringliteral>"mandaPPP\n"</SPAN>);
00310 copymem(bufen,buff+5,lungh);
00311 <SPAN class=comment>/* printf("%0x %02x %0x %02x\n",bufen,*bufen,pppout,pppout[9]); */</SPAN>
00312 <SPAN class=keywordflow>if</SPAN> (lungh!=IP_LUNGH)
00313 {printf(<SPAN class=stringliteral>"mandaPPP:lungh!=pppout_len\n"</SPAN>); <SPAN class=comment>/* F_PPP=0 */</SPAN>;<SPAN class=keywordflow>return</SPAN> 0;}
00314 pppout_flag=0x7e;
00315 pppout_addr=0xff;
00316 pppout_control=0x03;
00317 pppout_proto=scbyte(0x0021);
00318 <SPAN class=comment>/* *(u_int *)(pppout+25)=IPlocale; :))))) */</SPAN>
00319 mandappp();
00320 <SPAN class=comment>/* for (t=1;pppout[t]!=0x7e;t++) printf("%02x ",pppout[t]); puts(""); */</SPAN>
00321
00322 <SPAN class=comment>/* F_PPP=0; */</SPAN>
00323 <SPAN class=keywordflow>return</SPAN> 1;
00324 }
00325
00326 <SPAN class=comment>/* stato:</SPAN>
00327 <SPAN class=comment>1.TxLcpConfReq</SPAN>
00328 <SPAN class=comment>2.RxLcpConfAck</SPAN>
00329 <SPAN class=comment>*/</SPAN>
00330
00331
00332 u_short riceviPPP() {
00333 <SPAN class=keywordtype>int</SPAN> tPPP,ppp_ack,ppp_ack2;
00334 <SPAN class=preprocessor>#define TIMEOUT_PPP (stato&0x0800)</SPAN>
00335 <SPAN class=preprocessor></SPAN><SPAN class=keywordtype>void</SPAN> TxLCPConfReq() {
00336 <SPAN class=comment>/* while (F_PPP);</SPAN>
00337 <SPAN class=comment> F_PPP=1;*/</SPAN>
00338 <SPAN class=keywordflow>if</SPAN> (reteDEBUG&2) printf(<SPAN class=stringliteral>"mandaPPP1\n"</SPAN>);
00339 PPPout(1,1,0x03,0xc021,4+6)
00340 copymem(<SPAN class=stringliteral>"\x02\x06\xff\xff\xff\xff"</SPAN>,pppout_dati,6);
00341 asyncmap2=0xffffffff;
00342 mandappp();
00343 <SPAN class=comment>/* F_PPP=0; */</SPAN>
00344
00345 }
00346
00347
00348 <SPAN class=keywordtype>void</SPAN> TxLCPConfAckNack() {
00349 ppp_ack2=ppp_ack=2;
00350 <SPAN class=keywordflow>for</SPAN> (tPPP=t=0;t<(scbyte(ppp_len)-4);) {
00351 <SPAN class=keywordflow>if</SPAN> (ppp_dati[t]==2) {
00352 <SPAN class=comment>/* asyncmap2=scbyte4(*(u_int *)(ppp_dati+2)); */</SPAN>
00353 <SPAN class=keywordflow>if</SPAN> (reteDEBUG&4) printf(<SPAN class=stringliteral>"Async=%x\n"</SPAN>,asyncmap2);
00354 }
00355 <SPAN class=keywordflow>if</SPAN> ((ppp_dati[t]==3)&&(ppp_dati[t+1]==5))
00356 {
00357 ppp_ack2=3;
00358 <SPAN class=keywordflow>if</SPAN> (ppp_ack!=4) {
00359 copymem(<SPAN class=stringliteral>"\x03\x04\xc0\x23"</SPAN>,pppout_dati+tPPP,4);
00360 tPPP+=4;
00361 }
00362 }
00363 <SPAN class=keywordflow>else</SPAN> <SPAN class=comment>/* nack */</SPAN>
00364 <SPAN class=comment>/* if ((ppp_dati[t]==2)&&(ppp_dati[t+2]!=0xff))</SPAN>
00365 <SPAN class=comment> ppp_confnack++; else </SPAN>
00366 <SPAN class=comment> if ((ppp_dati[t]==2)&&asyncmapno)</SPAN>
00367 <SPAN class=comment> ppp_ack2=3; else */</SPAN>
00368 <SPAN class=keywordflow>if</SPAN> (ppp_dati[t]==2)
00369 ppp_ack2=2; <SPAN class=keywordflow>else</SPAN>
00370 <SPAN class=keywordflow>if</SPAN> ((ppp_dati[t]==3)&&(ppp_dati[t+1]==4))
00371 ppp_ack2=2;
00372 <SPAN class=keywordflow>else</SPAN>
00373 ppp_ack2=4;
00374 <SPAN class=comment>/*</SPAN>
00375 <SPAN class=comment> ppp_ack2 ppp_ack</SPAN>
00376 <SPAN class=comment> 2 2 copia ->2</SPAN>
00377 <SPAN class=comment> 2 3 copia ->3</SPAN>
00378 <SPAN class=comment> 2 4 noncopia ->4</SPAN>
00379 <SPAN class=comment> 3 2 copia ->3</SPAN>
00380 <SPAN class=comment> 3 3 copia ->3</SPAN>
00381 <SPAN class=comment> 3 4 noncopia ->4</SPAN>
00382 <SPAN class=comment> 4 2 tPPP=0 copia ->4</SPAN>
00383 <SPAN class=comment> 4 3 tPPP=0 copia ->4</SPAN>
00384 <SPAN class=comment> 4 4 copia ->4 </SPAN>
00385 <SPAN class=comment> </SPAN>
00386 <SPAN class=comment> </SPAN>
00387 <SPAN class=comment> </SPAN>
00388 <SPAN class=comment>*/</SPAN>
00389
00390 <SPAN class=keywordflow>if</SPAN> ((ppp_ack2==4)&&(ppp_ack<4)) tPPP=0;
00391 <SPAN class=keywordflow>if</SPAN> (((ppp_ack!=4)||(ppp_ack2==4))&&(ppp_ack2!=3)) {
00392 copymem(ppp_dati+t,pppout_dati+tPPP,ppp_dati[t+1]);
00393 tPPP+=pppout_dati[tPPP+1];
00394 }
00395 <SPAN class=keywordflow>if</SPAN> (ppp_ack<ppp_ack2) ppp_ack=ppp_ack2;
00396 t+=ppp_dati[t+1];
00397 }<SPAN class=comment>/* loop opzioni */</SPAN>
00398 PPPout(ppp_ack,ppp_id,0x03,0xc021,tPPP+11-7);
00399 mandappp();
00400 }
00401
00402 u_char RxLCPConfReq() {
00403 <SPAN class=keywordflow>return</SPAN> (stato&0x1000)&&(ppp_code==1);
00404 }
00405 u_char RxLCPConfAck() {
00406 <SPAN class=keywordflow>return</SPAN> (stato&0x1000)&&(ppp_code==2);
00407 }
00408 u_char RxLCPConfNackRej() {
00409 <SPAN class=keywordflow>return</SPAN> (stato&0x1000)&&(ppp_code>2);
00410 }
00411 <SPAN class=keywordtype>void</SPAN> TxPAPConfReq() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -