1

SLIP 経由で uip デバイスに ping を実行すると、uart に次のようなパケットが表示されます。

   uip_buf[0]   0x45    
   uip_buf[1]   0x0 
   uip_buf[2]   0x0 
   uip_buf[3]   0x3c    
   uip_buf[4]   0x1 
   uip_buf[5]   0x20    
   uip_buf[6]   0x0 
   uip_buf[7]   0x0 
   uip_buf[8]   0x80    
   uip_buf[9]   1   
   uip_buf[10]  0xb5    
   uip_buf[11]  0x51    
   uip_buf[12]  0xc0    
   uip_buf[13]  0xa8    
   uip_buf[14]  0x1 
   uip_buf[15]  0x1 
   uip_buf[16]  0xc0    
   uip_buf[17]  0xa8    

コードから、このイーサネット ヘッダーは、dest addr、src addr、および type で構成されると想定されます。ただし、パケットを処理するには、タイプを 0x0008 にする必要がありますが、明らかに 0xa8c0 (uip_buf [13:12] または uip_buf [17:16]) です。したがって、比較は常に失敗します。

 if(BUF->type == HTONS(UIP_ETHTYPE_IP))  // 0xa8c0 != 0x0008

比較を行う行は、イーサネットの実装からのものです... SLIP 経由で送信される場合、タイプ フィールドが異なる可能性はありますか?

4

1 に答える 1