initial tcp commit!
[akaros.git] / kern / include / net / udp.h
1 #ifndef ROS_KERN_UDP_H
2 #define ROS_KERN_UDP_H
3 #include <net/pbuf.h>
4 #include <net/ip.h>
5 #include <net.h>
6 #include <bits/netinet.h>
7 #include <socket.h>
8
9 #define UDP_HLEN 8
10 #define UDP_TTL 255
11
12
13 struct udp_pcb {
14                 IP_PCB;
15     /** ports are in host byte order */
16     uint16_t local_port, remote_port;
17     uint8_t flags;
18                 uint8_t pad2;
19     /* Protocol specific PCB members */
20     struct udp_pcb *next;
21                 struct socket *pcbsock;
22 };
23
24 extern struct udp_pcb *udp_pcbs;
25 #define GLOBAL_IP 0x0A000001 // 10.0.0.1
26 struct udp_pcb * udp_new(void);
27 int udp_send(struct udp_pcb *pcb, struct pbuf *p);
28 int udp_sendto(struct udp_pcb *pcb, struct pbuf *p,
29                     struct in_addr *dst_ip, uint16_t dst_port);
30 int udp_bind(struct udp_pcb *pcb, const struct in_addr *ip, uint16_t port);
31 int udp_input(struct pbuf *p);
32
33 #define UDP_FLAGS_NOCHKSUM       0x01U
34 #define UDP_FLAGS_UDPLITE        0x02U
35 #define UDP_FLAGS_CONNECTED      0x04U
36 #define UDP_FLAGS_MULTICAST_LOOP 0x08U
37
38 #endif