diff options
Diffstat (limited to 'proto/rip/rip.h')
-rw-r--r-- | proto/rip/rip.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/proto/rip/rip.h b/proto/rip/rip.h new file mode 100644 index 0000000..8bcd0ce --- /dev/null +++ b/proto/rip/rip.h @@ -0,0 +1,60 @@ +/* + * Structures for RIP protocol + */ + +struct rip_connection { + ip_addr addr; + struct rip_entry *sendptr; + sock *send; +}; + +struct rip_packet_heading { + u8 command; + u8 version; +#define RIP_V1 1 +#define RIP_V2 2 + u16 unused; +}; + +struct rip_block { + u16 family; /* 0xffff on first message means this is authentication */ + u16 tag; + u32 network; + u32 netmask; + u32 nexthop; + u32 metric; +}; + +struct rip_entry { + node n; + ip_addr whotoldme; + + ip_addr network; + ip_addr netmask; + ip_addr nexthop; + + int metric; + u16 tag; + + bird_clock_t updated, changed; +}; + +struct rip_packet { + struct rip_packet_heading heading; + struct rip_block block[25]; +}; + +struct rip_data { + struct proto inherited; + sock *listen; + timer *timer; + list connections; + list rtable; + int magic; +}; + +#define P ((struct rip_data *) p) +#define E ((struct rip_entry *) e) + +#define RIP_MAGIC 81861253 +#define CHK_MAGIC do { if (P->magic != RIP_MAGIC) die( "Not enough magic\n" ); } while (0) |