⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmp.i

📁 cs8900 c51应用
💻 I
字号:
#line 1 "..\icmp.c" /0     #error *** WARNING C318 IN LINE 72 OF ..\icmp.c: can't open file 'inet/debug.h' #error *** WARNING C318 IN LINE 73 OF ..\icmp.c: can't open file 'inet/datatypes.h' #error *** WARNING C318 IN LINE 74 OF ..\icmp.c: can't open file 'inet/ethernet.h' #error *** WARNING C318 IN LINE 75 OF ..\icmp.c: can't open file 'inet/ip.h' #error *** WARNING C318 IN LINE 76 OF ..\icmp.c: can't open file 'inet/tcp_ip.h' #error *** WARNING C318 IN LINE 77 OF ..\icmp.c: can't open file 'inet/system.h'   INT16 process_icmp_in (struct ip_frame* frame, UINT16 len)  { UINT8 type; UINT8 code_; UINT16 checksum; UINT16 i;     ICMP_DEBUGOUT("Processing ICMP...\n\r");  if( frame->protocol != IP_ICMP ) { ICMP_DEBUGOUT("ERROR: The protocol is not ICMP\n\r"); return(-1); }    checksum = 0; i = 0;  NETWORK_RECEIVE_INITIALIZE(frame->buf_index);  for(i=0; i < len; i++) checksum = ip_checksum(checksum, RECEIVE_NETWORK_B(), (UINT8)i);  checksum = ~ checksum;  if(checksum != IP_GOOD_CS) { ICMP_DEBUGOUT("ERROR: ICMP Checksum failed!\n\r"); return (-1); }  ICMP_DEBUGOUT("ICMP Checksum OK\n\r");    NETWORK_RECEIVE_INITIALIZE(frame->buf_index);  type = RECEIVE_NETWORK_B(); code_ = RECEIVE_NETWORK_B();    RECEIVE_NETWORK_B(); RECEIVE_NETWORK_B();  switch(type) { case ICMP_ECHO_REQUEST:  if(code_ != 0) { ICMP_DEBUGOUT("ERROR:Misformed ICMP ECHO Request\n\r"); return(-1); }  ICMP_DEBUGOUT("ICMP ECHO Request received\n\r");    if(len == (ICMP_ECHOREQ_HLEN + ICMP_TEMPIPSET_DATALEN) ) {   ICMP_DEBUGOUT("PING with 102 bytes of data, getting temp. IP\r\n");			 localmachine.localip = frame->dip;  }     if(localmachine.localip != frame->dip) return(-1);    TXBUF[0] = ICMP_ECHO_REPLY; TXBUF[1] = 0; TXBUF[2] = 0; TXBUF[3] = 0;    if(len > NETWORK_TX_BUFFER_SIZE) len = NETWORK_TX_BUFFER_SIZE;    checksum = ((UINT16)ICMP_ECHO_REPLY)<<8;  for(i=4; i<len; i++){ checksum = ip_checksum(checksum, TXBUF[i] = RECEIVE_NETWORK_B(), (UINT8)i); }  checksum = ~ checksum;    TXBUF[2] = (UINT8)(checksum>>8); TXBUF[3] = (UINT8)checksum;    process_ip_out(frame->sip, IP_ICMP, 0, 100, &TXBUF[0], len);  ICMP_DEBUGOUT("ICMP Reply sent\n\r");  return(0);   break;  case ICMP_ECHO_REPLY:  break;  default:				   ICMP_DEBUGOUT("Unrecognized ICMP message\n\r"); return(-1);  }  }     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -