blob: c084055ec2129026b1c68c5b472d140a01bbfe50 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include "udp.h"
#include "inet.h"
#include "ipv4.h"
#include "ntp.h"
uint32_t udp_generic(struct netdev *dev, uint32_t ip, uint16_t src, uint16_t dst, uint8_t* pos,uint8_t *end)
{
pos-=8; //we need 64 bytes
struct udp_v4 *udp=pos;
udp->src_port=htons(src);
udp->dst_port=htons(dst);
udp->len=htons(end-pos);
udp->csum=0; // TODO: optional
return ipv4_generic(dev,ip,IPV4_P_UDP,pos,end);
}
uint32_t udp_incoming(uint8_t* start,uint8_t *pos)
{
struct udp_v4 *udp=pos;
pos+=8; //header 64 bytes
if(udp->src_port==htons(123)) return ntp_incoming(start, pos);
return 0;
}
|