123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #define INCLUDE_FROM_UDP_C
- #include "UDP.h"
- int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart,
- void* UDPHeaderInStart,
- void* UDPHeaderOutStart)
- {
- UDP_Header_t* UDPHeaderIN = (UDP_Header_t*)UDPHeaderInStart;
- UDP_Header_t* UDPHeaderOUT = (UDP_Header_t*)UDPHeaderOutStart;
- int16_t RetSize = NO_RESPONSE;
- DecodeUDPHeader(UDPHeaderInStart);
- switch (SwapEndian_16(UDPHeaderIN->DestinationPort))
- {
- case UDP_PORT_DHCP_REQUEST:
- RetSize = DHCP_ProcessDHCPPacket(IPHeaderInStart,
- &((uint8_t*)UDPHeaderInStart)[sizeof(UDP_Header_t)],
- &((uint8_t*)UDPHeaderOutStart)[sizeof(UDP_Header_t)]);
- break;
- }
-
- if (RetSize > 0)
- {
-
- UDPHeaderOUT->SourcePort = UDPHeaderIN->DestinationPort;
- UDPHeaderOUT->DestinationPort = UDPHeaderIN->SourcePort;
- UDPHeaderOUT->Checksum = 0;
- UDPHeaderOUT->Length = SwapEndian_16(sizeof(UDP_Header_t) + RetSize);
-
- return (sizeof(UDP_Header_t) + RetSize);
- }
- return NO_RESPONSE;
- }
|