-
Notifications
You must be signed in to change notification settings - Fork 1
/
aodv_rreq.h~
61 lines (52 loc) · 1.41 KB
/
aodv_rreq.h~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef _AODV_RREQ_H_
#define _AODV_RREQ_H_
#include "defs.h"
#include "list.h"
#include "timer_queue.h"
#include "aodv_timeout.h"
typedef struct
{
u8_t type;
u8_t j:1;
u8_t r:1;
u8_t g:1;
u8_t d:1;
u8_t u:1;
u8_t res1:3;
u8_t res2;
u8_t hopcnt;
u32_t rreq_id;
u32_t dest_addr;
u32_t dest_seqno;
u32_t orig_addr;
u32_t orig_seqno;
}RREQ;
#define RREQ_SIZE sizeof(RREQ)
#define RREQ_JOIN (1 << 7)
#define RREQ_REPAIR (1 << 6)
#define RREQ_GRATUITOUS (1 << 5)
#define RREQ_DEST_ONLY (1 << 4)
#define RREQ_UNKNOWN_SEQNO (1 << 3)
struct rreq_record
{
list_t l;
struct in_addr orig_addr;
u32_t rreq_id;
struct timer rec_timer;
};
struct rreq_blacklist
{
list_t l;
struct in_addr dest_addr;
struct timer bl_timer;
};
void rreq_process(RREQ *rreq, s32_t len, struct in_addr ip_src, struct in_addr ip_dest, s32_t ip_ttl);
void rreq_send(struct in_addr dest_addr, u32_t dest_seqno, s32_t ttl, u8_t flags);
void rreq_route_discovery(struct in_addr dest_addr, u8_t flags);
void rreq_forward(RREQ *rreq, s32_t len, s32_t ttl);
struct rreq_record *rreq_record_insert(struct in_addr orig_addr, u32_t rreq_id);
struct rreq_record *rreq_record_check(struct in_addr orig_addr, u32_t rreq_id);
struct rreq_blacklist *rreq_blacklist_insert(struct in_addr dest_addr);
struct rreq_blacklist *rreq_blacklist_check(struct in_addr dest_addr);
void rreq_local_repair(rt_table_t *rt, struct in_addr src_addr);
#endif