added support for processing and transmitting without uIP
[gpxe.git] / src / include / gpxe / ip.h
1 #ifndef _GPXE_IP_H
2 #define _GPXE_IP_H
3
4 /** @file
5  *
6  * IP protocol
7  *
8  */
9
10 #include <ip.h>
11
12 /* IP constants */
13
14 #define IP_HLEN         20
15 #define IP_VER          4
16 #define IP_MASK_VER     0xf0
17 #define IP_MASK_HLEN    0x0f
18 #define IP_PSHLEN       12
19
20 /* IP header defaults */
21 #define IP_TOS          0
22 #define IP_TTL          64
23
24 /* IP6 constants */
25
26 #define IP6_HLEN        38
27
28 struct pk_buff;
29 struct net_device;
30 struct net_protocol;
31
32 extern struct net_protocol ipv4_protocol;
33 extern struct net_protocol ipv6_protocol;
34
35 extern int add_ipv4_address ( struct net_device *netdev,
36                               struct in_addr address, struct in_addr netmask,
37                               struct in_addr gateway );
38 extern void del_ipv4_address ( struct net_device *netdev );
39
40 extern int ipv4_uip_tx ( struct pk_buff *pkb );
41
42 extern int ipv4_tx ( struct pk_buff *pkb, uint16_t trans_proto, struct in_addr *dest );
43 extern int ipv6_tx ( struct pk_buff *pkb, uint16_t trans_proto, struct in6_addr *dest );
44
45 extern void ipv4_rx ( struct pk_buff *pkb, struct net_device *netdev, const void *ll_source );
46 extern void ipv6_rx ( struct pk_buff *pkb, struct net_device *netdev, const void *ll_source );
47
48 #endif /* _GPXE_IP_H */