示例#1
0
/* 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);
}
示例#2
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);
	}
}
示例#3
0
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);
	}



}