亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? arp.lst

?? C8051F控制網卡芯片實現網絡通信功能。顯示出第三代51單片機的強大之處
?? LST
?? 第 1 頁 / 共 2 頁
字號:
 160          // address      of destination, otherwise we want eth addr of gateway. 
 161          // Look in ARP cache first.  If not found there, send ARP request.
 162          // Return pointer to the hardware address or NULL if not found
 163          // See "TCP/IP Illustrated, Volume 1" Sect 4.5
 164          //------------------------------------------------------------------------
 165          UCHAR xdata * arp_resolve(ULONG dest_ipaddr)
 166          {
 167   1         UCHAR i;
 168   1            
 169   1         // If destination IP is not on my subnet then we really want eth addr
 170   1              // of gateway, not destination IP
 171   1              if ((dest_ipaddr ^ my_ipaddr) & my_subnet)
 172   1              {
 173   2                      if (gateway_ipaddr == 0)
 174   2                      {
 175   3                              if (debug) serial_send("ARP: Error, gateway addr not set\r");
 176   3                              return (NULL);  
 177   3                      }
 178   2                      else dest_ipaddr = gateway_ipaddr;
 179   2              }
C51 COMPILER V7.07   ARP                                                                   11/25/2003 15:47:43 PAGE 4   

 180   1              
 181   1                 
 182   1         // See if IP addr of interest is in ARP cache
 183   1         for (i=0; i < CACHESIZE; i++)
 184   1         {
 185   2            if (arp_cache[i].ipaddr == dest_ipaddr)
 186   2               return (&arp_cache[i].hwaddr[0]);
 187   2         }
 188   1      
 189   1              if (debug) serial_send("ARP: IP addr not found in cache\r");
 190   1              if (debug) serial_send("ARP: Sending an ARP broadcast\r");
 191   1              // Not in cache so broadcast ARP request
 192   1              arp_send(NULL, dest_ipaddr, ARP_REQUEST);
 193   1                 
 194   1         // Set a flag to indicate that an IP datagram is waiting
 195   1         // to be sent
 196   1         waiting_for_arp = TRUE;
 197   1                                            
 198   1         // Null means that we have sent an ARP request
 199   1         return (NULL); 
 200   1      }
 201          
 202          
 203          
 204          
 205          
 206          //------------------------------------------------------------------------
 207          // This handles incoming ARP messages
 208          // See "TCP/IP Illustrated, Volume 1" Sect 4.4
 209          // Todo:  Resolve problem of trying to add to a full cache
 210          //------------------------------------------------------------------------
 211          void arp_rcve(UCHAR xdata * inbuf)
 212          {
 213   1         UCHAR idata i, cached, oldest;
 214   1         UINT idata minimum;
 215   1         ARP_HEADER xdata * arp;
 216   1            
 217   1         arp = (ARP_HEADER xdata *)(inbuf + 14);
 218   1         cached = FALSE;
 219   1         
 220   1         // Print message
 221   1         if (debug)
 222   1         {
 223   2            if (arp->message_type == ARP_REQUEST)
 224   2               serial_send("ARP: Request rcvd\r");
 225   2            else serial_send("ARP: Response rcvd\r");
 226   2         }
 227   1               
 228   1         // Validate incoming frame
 229   1         if ((arp->hardware_type != DIX_ETHERNET) ||
 230   1             (arp->protocol_type != IP_PACKET)) return;
 231   1      
 232   1         // Search ARP cache for senders IP address
 233   1         // If found, update entry and restart timer
 234   1         for (i=0; i < CACHESIZE; i++)
 235   1         {
 236   2            if (arp_cache[i].ipaddr == arp->source_ipaddr)
 237   2            {
 238   3               memcpy(&arp_cache[i].hwaddr[0], &arp->source_hwaddr[0], 6);
 239   3               arp_cache[i].timer = CACHETIME;                
 240   3               cached = TRUE;
 241   3               if (debug) serial_send("ARP: Cache entry updated\r");
C51 COMPILER V7.07   ARP                                                                   11/25/2003 15:47:43 PAGE 5   

 242   3                        
 243   3               break;  
 244   3            }
 245   2         }
 246   1         
 247   1         if (arp->dest_ipaddr != my_ipaddr) return;
 248   1         
 249   1         // At this point we know the the frame is addressed to me
 250   1         // If not already in cache then add entry and start timer
 251   1         if (cached == FALSE)
 252   1         {
 253   2            // Find first blank space and add entry
 254   2                      // Blank entries are indicated by ip addr = 0
 255   2            for (i=0; i < CACHESIZE; i++)
 256   2            {
 257   3               if (arp_cache[i].ipaddr == 0) 
 258   3               {
 259   4                  arp_cache[i].ipaddr = arp->source_ipaddr;
 260   4                  memcpy(&arp_cache[i].hwaddr[0], &arp->source_hwaddr[0], 6);   
 261   4                  arp_cache[i].timer = CACHETIME;
 262   4                      if (debug) serial_send("ARP: New cache entry added\r");
 263   4                      break;
 264   4               }
 265   3            }
 266   2      
 267   2                      // If no blank entries in arp cache     then sort cache
 268   2                      // to find oldest entry and replace it
 269   2                      if (i == CACHESIZE)
 270   2                      {
 271   3                              // Oldest entry is the one with lowest timer value                      
 272   3                              minimum = 0xFFFF;
 273   3                              for (i=0; i < CACHESIZE; i++)
 274   3              {
 275   4                                      if (arp_cache[i].timer < minimum) 
 276   4                                      {
 277   5                                              minimum = arp_cache[i].timer;
 278   5                                              oldest = i;
 279   5                                      }
 280   4                              }
 281   3              
 282   3                              // "oldest" is now index of oldest entry, so replace it
 283   3                              arp_cache[oldest].ipaddr = arp->source_ipaddr;
 284   3               memcpy(&arp_cache[oldest].hwaddr[0], &arp->source_hwaddr[0], 6);   
 285   3               arp_cache[oldest].timer = CACHETIME;
 286   3              if (debug) serial_send("ARP: Cache full, so replaced oldest\r");
 287   3              }
 288   2              }
 289   1      
 290   1         
 291   1         // If we are waiting for an arp response and the arp response
 292   1              // that just came in is addressed to me and is from the host
 293   1              // we are waiting for, then send        the message-in-waiting
 294   1         if (arp->message_type == ARP_RESPONSE)
 295   1         {
 296   2              if ((waiting_for_arp) && (wait.ipaddr == arp->source_ipaddr))
 297   2              {
 298   3                      waiting_for_arp = FALSE;
 299   3                              ip_send(wait.buf, wait.ipaddr, wait.proto_id, wait.len);
 300   3                      }
 301   2              }
 302   1              else if (arp->message_type == ARP_REQUEST)
 303   1         {
C51 COMPILER V7.07   ARP                                                                   11/25/2003 15:47:43 PAGE 6   

 304   2              // Send ARP response 
 305   2              if (debug) serial_send("ARP: Sending response\r");
 306   2              arp_send(arp->source_hwaddr, arp->source_ipaddr, ARP_RESPONSE);
 307   2              }
 308   1      }
 309          
 310          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1303    ----
   CONSTANT SIZE    =    372    ----
   XDATA SIZE       =    110    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      20
   IDATA SIZE       =      1       5
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产色站一区二区三区| 中文字幕+乱码+中文字幕一区| 日韩欧美的一区二区| 国产精品少妇自拍| 亚洲成av人综合在线观看| 国产精品77777| 欧美人动与zoxxxx乱| 国产精品国产三级国产普通话99| 日韩中文字幕一区二区三区| 成人av午夜电影| 欧美www视频| 日韩精品电影在线| 色94色欧美sute亚洲线路二| 国产亚洲成年网址在线观看| 日韩av成人高清| 日本韩国一区二区| 国产精品高潮呻吟| 激情综合网av| 欧美一级理论片| 亚洲成av人综合在线观看| 91一区二区三区在线观看| 2017欧美狠狠色| 日本亚洲欧美天堂免费| 欧洲在线/亚洲| 亚洲精选视频免费看| 成人高清免费观看| 欧美高清在线一区二区| 国产精品影视在线观看| 精品国产乱码久久久久久蜜臀| 亚洲国产欧美日韩另类综合| 日本乱人伦aⅴ精品| 自拍偷拍亚洲激情| av激情综合网| 专区另类欧美日韩| 一本色道久久综合精品竹菊| 国产精品久久久久久亚洲毛片 | 国产一二三精品| 日韩三级免费观看| 经典一区二区三区| 国产亚洲精品超碰| 精品中文av资源站在线观看| 欧美本精品男人aⅴ天堂| 久久99在线观看| 日韩欧美一二三区| 国产一区二区福利视频| 精品国产亚洲在线| 国产99一区视频免费| 国产精品午夜在线观看| aa级大片欧美| 婷婷综合五月天| 日韩欧美一二三四区| 国产在线视频一区二区| 久久美女艺术照精彩视频福利播放| 黄网站免费久久| 国产欧美一二三区| 色婷婷精品久久二区二区蜜臂av | 国内成人精品2018免费看| 久久这里都是精品| av电影天堂一区二区在线| 亚洲三级视频在线观看| 欧美日韩五月天| 欧美视频在线播放| 久久国产日韩欧美精品| 国产视频一区不卡| 国产黄色精品网站| 久久久久国产成人精品亚洲午夜| 成人午夜在线视频| 亚洲在线中文字幕| 日韩区在线观看| 波多野结衣在线一区| 亚洲va欧美va天堂v国产综合| 欧美成人高清电影在线| av一区二区三区在线| 丝袜诱惑亚洲看片| 国产精品污网站| 欧美色窝79yyyycom| 国产美女av一区二区三区| 一区二区三区美女视频| 精品电影一区二区| 欧美综合亚洲图片综合区| 精品一区二区免费| 亚洲国产欧美在线人成| 国产三级一区二区| 欧美一区二区免费视频| 99久久综合精品| 麻豆一区二区在线| 洋洋av久久久久久久一区| 久久久久久久久99精品| 欧美日本一区二区三区| 成人av综合在线| 蜜桃精品在线观看| 夜夜操天天操亚洲| 国产欧美日韩中文久久| 91麻豆精品国产综合久久久久久 | 天天综合网 天天综合色| 中文字幕高清不卡| 精品av久久707| 在线播放91灌醉迷j高跟美女 | 91久久香蕉国产日韩欧美9色| 久久99精品国产麻豆不卡| 亚洲一线二线三线久久久| 国产精品福利av| 久久久久久麻豆| 欧美成人性战久久| 欧美一区二区三区免费在线看| 91福利国产精品| 99久久精品99国产精品| 国产自产高清不卡| 精品在线你懂的| 日韩av午夜在线观看| 五月婷婷久久综合| 亚洲二区视频在线| 亚洲午夜久久久久中文字幕久| 国产精品区一区二区三区| 久久免费美女视频| 国产亚洲精品福利| 国产欧美视频在线观看| 国产日韩精品一区| 国产午夜一区二区三区| 久久久久久免费网| 国产精品日韩精品欧美在线| 国产日韩欧美综合在线| 亚洲国产精品高清| 中文字幕一区二区三区色视频| 欧美国产精品久久| 亚洲日本电影在线| 亚洲免费观看高清| 亚洲国产精品一区二区久久恐怖片| 亚洲欧美日韩国产手机在线| 亚洲九九爱视频| 午夜精品福利久久久| 青青草精品视频| 久久99精品久久久久久久久久久久 | 国产一区二区在线电影| 国产九色sp调教91| 99久久久久久| 欧美私人免费视频| 欧美一区二区三区婷婷月色| 欧美成人激情免费网| 欧美高清在线视频| 亚洲自拍偷拍图区| 奇米色一区二区三区四区| 国产一区二区h| 97成人超碰视| 6080午夜不卡| 久久久久国产精品麻豆ai换脸 | 欧美老肥妇做.爰bbww视频| 91精品国产麻豆国产自产在线| 精品日韩一区二区三区| 日本一二三不卡| 亚洲激情中文1区| 久久精品国产色蜜蜜麻豆| 成人av在线播放网站| 欧美视频在线一区二区三区 | 成人午夜av影视| 91久久精品一区二区二区| 日韩一区二区三区在线| 国产精品美女久久久久久| 亚洲午夜日本在线观看| 国产精品影视在线| 欧美日韩亚洲综合一区二区三区| 精品国产成人系列| 一区二区三区在线观看网站| 久久疯狂做爰流白浆xx| 色婷婷久久久久swag精品 | 五月婷婷另类国产| 国产91精品久久久久久久网曝门 | 欧美午夜不卡视频| 国产三级精品三级| 亚洲3atv精品一区二区三区| 国产91综合一区在线观看| 欧美日韩国产综合一区二区| 国产精品久久久久久久久免费丝袜 | 国产剧情一区二区三区| 欧美色成人综合| 国产精品久久久久久久久晋中| 日本三级韩国三级欧美三级| 不卡电影一区二区三区| 日韩精品一区二区三区在线 | 国产福利精品导航| 91精品一区二区三区在线观看| 欧美国产欧美综合| 久久99国产精品久久| 欧美日韩国产小视频在线观看| 中文字幕一区二| 国产精品一区二区视频| 日韩一区二区视频在线观看| 亚洲综合丁香婷婷六月香| 波多野结衣一区二区三区 | 日本va欧美va精品| 精品视频一区二区不卡| 亚洲欧美另类在线| 波多野结衣的一区二区三区| 国产亚洲欧洲一区高清在线观看| 丝袜美腿亚洲色图| 欧美日韩一区精品| 亚洲国产你懂的| 欧美日韩一区二区三区在线| 亚洲色图欧美激情| 99精品久久久久久|