|  | #ifndef ROS_KERN_IP_H | 
|  | #define ROS_KERN_IP_H | 
|  | #include <net/pbuf.h> | 
|  | #include <net.h> | 
|  | #include <bits/netinet.h> | 
|  | #define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->s_addr == IPADDR_ANY) | 
|  | #define ip_addr_cmp(addr1, addr2) ((addr1)->s_addr == (addr2)->s_addr) | 
|  | #define ip_match(addr1, addr2) (ip_addr_isany(addr1) || ip_addr_isany(addr2) || ip_addr_cmp(addr1, addr2)) | 
|  | #define ip_addr_copy(addr1, addr2) ((addr1).s_addr = (addr2).s_addr) | 
|  |  | 
|  | struct in_addr { | 
|  | uint32_t s_addr; | 
|  | }; | 
|  |  | 
|  | typedef struct in_addr ip_addr_t; | 
|  |  | 
|  | #define IP_PCB \ | 
|  | /* ips are in network byte order */ \ | 
|  | struct in_addr local_ip; \ | 
|  | struct in_addr remote_ip; \ | 
|  | uint8_t so_options; \ | 
|  | uint8_t tos; \ | 
|  | uint8_t ttl; \ | 
|  | uint8_t addr_hint; | 
|  |  | 
|  | int ip_output(struct pbuf *p, struct in_addr *src, struct in_addr *dest, uint8_t ttl, uint8_t tos, uint8_t proto); | 
|  | int ip_input(struct pbuf *p); | 
|  |  | 
|  | #endif // ROS_KERN_IP_H |