Windows port compiles again. Moved all LQ packet functions to a single
[olsrd.git] / src / lq_packet.h
1 /*
2  * OLSR ad-hoc routing table management protocol
3  * Copyright (C) 2003 Andreas T√łnnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of the olsr.org OLSR daemon.
6  *
7  * olsr.org is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * olsr.org is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsr.org; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  * 
21  * 
22  * $Id: lq_packet.h,v 1.1 2004/11/03 18:19:54 tlopatic Exp $
23  *
24  */
25
26 #define LQ_HELLO_MESSAGE      5
27 #define LQ_TC_MESSAGE         6
28
29 // deserialized OLSR header
30
31 struct olsr_common
32 {
33   olsr_u8_t          type;
34   double             vtime;
35   olsr_u16_t         size;
36   union olsr_ip_addr orig;
37   olsr_u8_t          ttl;
38   olsr_u8_t          hops;
39   olsr_u16_t         seqno;
40 };
41
42 // serialized IPv4 OLSR header
43
44 struct olsr_header_v4
45 {
46   olsr_u8_t  type;
47   olsr_u8_t  vtime;
48   olsr_u16_t size;
49   olsr_u32_t orig;
50   olsr_u8_t  ttl;
51   olsr_u8_t  hops;
52   olsr_u16_t seqno;
53 };
54
55 // serialized IPv6 OLSR header
56
57 struct olsr_header_v6
58 {
59   olsr_u8_t     type;
60   olsr_u8_t     vtime;
61   olsr_u16_t    size;
62   unsigned char orig[16];
63   olsr_u8_t     ttl;
64   olsr_u8_t     hops;
65   olsr_u16_t    seqno;
66 };
67
68 // deserialized LQ_HELLO
69
70 struct lq_hello_neighbor
71 {
72   olsr_u8_t                link_type;
73   olsr_u8_t                neigh_type;
74   double                   link_quality;
75   union olsr_ip_addr       addr;
76   struct lq_hello_neighbor *next;
77 };
78
79 struct lq_hello_message
80 {
81   struct olsr_common       comm;
82   double                   htime;
83   olsr_u8_t                will;
84   struct lq_hello_neighbor *neigh;
85 };
86
87 // serialized LQ_HELLO
88
89 struct lq_hello_info_header
90 {
91   olsr_u8_t  link_code;
92   olsr_u8_t  reserved;
93   olsr_u16_t size;
94 };
95
96 struct lq_hello_header
97 {
98   olsr_u16_t reserved;
99   olsr_u8_t  htime;
100   olsr_u8_t  will;
101 };
102
103 // deserialized LQ_TC
104
105 struct lq_tc_neighbor
106 {
107   double                link_quality;
108   union olsr_ip_addr    main;
109   struct lq_tc_neighbor *next;
110 };
111
112 struct lq_tc_message
113 {
114   struct olsr_common    comm;
115   union olsr_ip_addr    from;
116   olsr_u16_t            ansn;
117   struct lq_tc_neighbor *neigh;
118 };
119
120 // serialized LQ_TC
121
122 struct lq_tc_header
123 {
124   olsr_u16_t ansn;
125   olsr_u16_t reserved;
126 };
127
128 void olsr_output_lq_hello(void *para);
129
130 void olsr_output_lq_tc(void *para);
131
132 void olsr_input_lq_hello(union olsr_message *ser, struct interface *inif,
133                          union olsr_ip_addr *from);
134
135 void olsr_input_lq_tc(union olsr_message *ser, struct interface *inif,
136                       union olsr_ip_addr *from);