/* udp_out test */ int main() { struct udp_metadata_parsed meta; struct finsFrame* pff; struct finsFrame ff; unsigned short checksum = 0; char str[20] = "00000000TESTING"; ff.dataFrame.pdu = &str[0]; meta.u_IPdst = IP4_ADR_P2N(171,2,14,10); meta.u_IPsrc = IP4_ADR_P2N(153,18,8,105); meta.u_destPort = 13; meta.u_srcPort = 1087; ff.dataFrame.pduLength = 7; ff.dataOrCtrl = DATA; ff.destinationID = UDPID; ff.dataFrame.directionFlag = DOWN; memcpy(&ff.dataFrame.metaData, &meta, 16); pff = &ff; // printf("The metadata's value for the length is %d\n", pseudoheader2.u_pslen); // printf("The UDP packet's value for the length is %d\n", packet2.u_len); udp_out(pff); return (0); }
void task(void){ uint8_t addr[4] = {192, 168, 5, 2}; uint16_t bytes; udp_set_callback(udp_callback); delay_ms(4000); while(1){ printf("\nsending packet.."); memset(frame_out + ETH_HEADER_SIZE + IP_HEADER_SIZE + UDP_HEADER_SIZE, 0xaa, 200 + ETH_HEADER_SIZE + IP_HEADER_SIZE + UDP_HEADER_SIZE); bytes = udp_out(addr, 666, 777, frame_out + ETH_HEADER_SIZE, 200 + UDP_HEADER_SIZE); if (!bytes) printf("nothing sent. maybe an ARP request was needed?"); delay_ms(2000); } }
void udp_get_FF(){ struct finsFrame ff; UDP_InputQueue_Read_local(&ff); udpStat.totalRecieved++; if(ff.dataOrCtrl == CONTROL){ // send to something to deal with FCF } if(ff.dataOrCtrl == DATA && ff.dataFrame.directionFlag == UP){ udp_in(&ff); } if(ff.dataOrCtrl == DATA && ff.dataFrame.directionFlag == DOWN){ udp_out(&ff); } }