Merge origin/netpush (networking code) (XCC)
[akaros.git] / kern / include / net / ip.h
1 #ifndef ROS_KERN_IP_H
2 #define ROS_KERN_IP_H
3 #include <net/pbuf.h>
4 #include <net.h>
5 #include <bits/netinet.h>
6 #define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->s_addr == IPADDR_ANY)
7 #define ip_addr_cmp(addr1, addr2) ((addr1)->s_addr == (addr2)->s_addr)
8 #define ip_match(addr1, addr2) (ip_addr_isany(addr1) || ip_addr_isany(addr2) || ip_addr_cmp(addr1, addr2))
9 #define ip_addr_copy(addr1, addr2) ((addr1).s_addr = (addr2).s_addr)
10
11 struct in_addr {
12     uint32_t s_addr;
13 };
14
15 typedef struct in_addr ip_addr_t;
16
17 #define IP_PCB \
18 /* ips are in network byte order */ \
19 struct in_addr local_ip; \
20 struct in_addr remote_ip; \
21 uint8_t so_options; \
22 uint8_t tos; \
23 uint8_t ttl; \
24 uint8_t addr_hint;
25
26 int ip_output(struct pbuf *p, struct in_addr *src, struct in_addr *dest, uint8_t ttl, uint8_t tos, uint8_t proto);
27 int ip_input(struct pbuf *p);
28
29 #endif // ROS_KERN_IP_H