uaodv-def.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 #ifndef __UAODV_DEF_H__
00042 #define __UAODV_DEF_H__
00043 
00044 #include "net/uip.h"
00045 
00046 #define NUM_PRECURSORS 4
00047 
00048 
00049 #define UAODV_UDPPORT 654
00050 
00051 #if 0
00052 
00053 struct uaodv_rtentry {
00054   uip_ipaddr_t dest_addr;
00055   uip_ipaddr_t next_hop;
00056   uip_ipaddr_t precursors[NUM_PRECURSORS];
00057   u32_t dest_seqno;  
00058   u16_t lifetime;
00059   u8_t dest_seqno_flag;
00060   u8_t route_flags;
00061   u8_t hop_count;
00062 };
00063 #endif
00064 
00065 
00066 struct uaodv_msg {
00067   u8_t type;
00068 };
00069 
00070 
00071 #define UAODV_RREQ_TYPE     1
00072 #define UAODV_RREQ_JOIN     (1 << 7)
00073 #define UAODV_RREQ_REPAIR   (1 << 6)
00074 #define UAODV_RREQ_GRATIOUS (1 << 5)
00075 #define UAODV_RREQ_DESTONLY (1 << 4)
00076 #define UAODV_RREQ_UNKSEQNO (1 << 3)
00077 
00078 struct uaodv_msg_rreq {
00079   u8_t type;
00080   u8_t flags;
00081   u8_t reserved;
00082   u8_t hop_count;
00083   u32_t rreq_id;
00084   uip_ipaddr_t dest_addr;
00085   u32_t dest_seqno;
00086   uip_ipaddr_t orig_addr;
00087   u32_t orig_seqno;
00088 };
00089 
00090 
00091 #define UAODV_RREP_TYPE     2
00092 #define UAODV_RREP_REPAIR  (1 << 7)
00093 #define UAODV_RREP_ACK     (1 << 6)
00094 
00095 struct uaodv_msg_rrep {
00096   u8_t type;
00097   u8_t flags;
00098   u8_t prefix_sz;               
00099   u8_t hop_count;
00100   uip_ipaddr_t dest_addr;
00101   u32_t dest_seqno;
00102   uip_ipaddr_t orig_addr;
00103   u32_t lifetime;
00104 };
00105 
00106 
00107 #define UAODV_RERR_TYPE     3
00108 #define UAODV_RERR_NODELETE (1 << 7)
00109 #define UAODV_RERR_UNKNOWN  (1 << 6) 
00110 
00111 struct uaodv_msg_rerr {
00112   u8_t type;
00113   u8_t flags;
00114   u8_t reserved;
00115   u8_t dest_count;
00116   struct {
00117     uip_ipaddr_t addr;
00118     u32_t seqno;
00119   } unreach[1];
00120 };
00121 
00122 
00123 #define UAODV_RREP_ACK_TYPE     4
00124 
00125 struct uaodv_msg_rrep_ack {
00126   u8_t type;
00127   u8_t reserved;
00128 };
00129 
00130 #define RREP_HELLO_INTERVAL_EXT 1 
00131 #define RREQ_BAD_HOP_EXT 101    
00132 
00133 struct uaodv_extension {
00134   u8_t type;
00135   u8_t length;
00136   
00137 };
00138 
00139 struct uaodv_bad_hop_ext {
00140   u8_t type;
00141   u8_t length;
00142   u8_t unused1, unused2;
00143   uip_ipaddr_t addrs[1];
00144 };
00145 
00146 #endif