902aa402b3830b9c9aa26758390b6eb93b42a0f5
Stefan Schuermans added file headers

Stefan Schuermans authored 12 years ago

1) /* MIPS I system
Stefan Schuermans replace email address in he...

Stefan Schuermans authored 12 years ago

2)  * Copyright 2011-2012 Stefan Schuermans <stefan@blinkenarea.org>
Stefan Schuermans added file headers

Stefan Schuermans authored 12 years ago

3)  * Copyleft GNU public license V2 or later
4)  *          http://www.gnu.org/copyleft/gpl.html
5)  */
6) 
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

52)  * ptr must point to a ip_packet