Exemple #1
0
uint8_t ethernet_handle_packet()
{
	/* receive packet */
	uint16_t packet_size = hal_receive_packet(ethernet_rx_buffer,sizeof(ethernet_rx_buffer));
	 
	if(packet_size < 1)
	{
		return 0;
 	}
	/* get ethernet header */
	struct ethernet_header * header = (struct ethernet_header*)ethernet_rx_buffer;
	
	/* remove ethernet header from packet for upper layers */
	packet_size -= sizeof(*header);
	
	uint8_t * data = (uint8_t*)(header+1);
	
	/* redirect packet to the proper upper layer */
	uint8_t ret=1;
	
	switch(header->type)
	{
		case HTON16(ETHERNET_TYPE_IP):
			ret = ip_handle_packet((struct ip_header*)data,packet_size,(const ethernet_address*)&header->src);
			break;
		case HTON16(ETHERNET_TYPE_ARP):
			ret = arp_handle_packet((struct arp_header*)data,packet_size);
			break;
		default:
			return 0;
	}
	ethernet_stats.rx_packets++;

	return ret;
}
/*read 2 byte*/
int ReadU16(uint32_t *u16, FILE *fp) {
    if (fread(u16, 2, 1, fp) != 1) {
        return 0;
    }
    *u16 = HTON16(*u16);
    return 1;
}
Exemple #3
0
uint8_t handle_ethernet_packet()
{
  uint16_t packet_size = 0;
  
  packet_size = Enc28j60PacketReceive(sizeof(ethernet_buffer), ethernet_buffer);

  if (packet_size == 0){
    return 0; 
  }
  // char buffer[30];
  // sprintf(buffer, "ETH packet length: %" PRIu16, packet_size);
  // DBG_DYNAMIC(buffer);
  
  struct ethernet_header * header = (struct ethernet_header*)ethernet_buffer;

  packet_size -=sizeof(*header);
  
  uint8_t* data = (uint8_t*)(header +1);
  
  uint8_t ret=1;
  switch(header->type)
  {
    case HTON16(ETHERNET_TYPE_IP):
      //DBG_STATIC("Recieved IP packet.");
      //IP handle packet
      ret = ip_handle_packet((struct ip_header*)data,packet_size,(const ethernet_address*)&header->src);
      break;
    case HTON16(ETHERNET_TYPE_ARP):
      //DBG_STATIC("Recieved ARP packet.");
      //ARP handle packet
      ret = arp_handle_packet((struct arp_header*)data,packet_size);
      // if(ret){
        // DBG_STATIC("ARP packet successfully handled.");
      // } else {
        // DBG_STATIC("ARP packet FAILURE.")
      // }
      break;
    default:
      return 0;
  }
  ethernet_stats.rx_packets++;
  return ret;
}
void
send_identity_req(nas_t *nas, nas_sta_t *sta)
{
	eapol_header_t eapol;

	dbg(nas, "send Identity Request");
	memcpy(eapol.eth.ether_shost, &sta->ea, ETHER_ADDR_LEN);
	memcpy(eapol.eth.ether_dhost, &nas->ea, ETHER_ADDR_LEN);
	eapol.eth.ether_type = HTON16(ETHER_TYPE_802_1X);
	eapol.version = sta->eapol_version;
	eapol.type = EAPOL_START;
	eapol.length = 0;
	eapol_dispatch(nas, &eapol, EAPOL_HEADER_LEN);
}
Exemple #5
0
bool ZFile::Write16(int i16)
{
	i16=HTON16(i16);
	WriteData(&i16,2);
		return true;
}
void digilent::init_bulk_packet(bulk_packet* packet, int cmd, int cbit)
{
    packet->cmd = (u8)cmd;
    packet->cbit = HTON16(cbit);
}