2a4b80d0fbe03ad69747e148b5fd93b0ed7f3f0c
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

1) #ifndef IP_H
2) #define IP_H
3) 
4) #include "ethernet.h"
5) 
6) /// header of IP packet
7) struct ip_header
8) {
9)   unsigned char ver__hdr_len;
10)   unsigned char tos;
11)   unsigned short total_len;
12)   unsigned short id;
13)   unsigned short frag_ofs;
14)   unsigned char ttl;
15)   unsigned char proto;
16)   unsigned short hdr_chk;
17)   unsigned char src[4];
18)   unsigned char dest[4];
19) } __attribute__((packed));
20) 
21) /// IP packet
22) struct ip_packet
23) {
24)   struct ethernet_header eth_hdr;
25)   struct ip_header ip_hdr;
26) } __attribute__((packed));
27) 
28) /// initialize
29) void ip_init(void);
30) 
31) /// tick procedure - call every 200ms
32) void ip_tick200(void);
33) 
34) /**
35)  * @brief process a received IP packet
36)  * @param[in] ptr pointer to data of packet
37)  * @param[in] sz size of packet
38)  */
39) void ip_recv(void *ptr, unsigned int sz);
40) 
41) /**
42)  * @brief send an IP packet
43)  * @param[in] ptr pointer to data of packet
44)  * @param[in] sz size of packet
45)  *
Stefan Schuermans handle padding to minimum e...

Stefan Schuermans authored 12 years ago

46)  * ptr must point to a ip_packet