1 / 24
文档名称:

GPL关于RIP协议实现代码分析.doc

格式:doc   大小:204KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

GPL关于RIP协议实现代码分析.doc

上传人:85872037 2018/7/4 文件大小:204 KB

下载得到文件列表

GPL关于RIP协议实现代码分析.doc

相关文档

文档介绍

文档介绍:GPL关于RIP协议的实现代码分析
文档编号:00-6201-100
当前版本:
创建日期:2011-12-22
编写作者:ganjingwei
RIP代码分析
前言 3
关于此文档 3
参考资料 3
第一章 RIP协议报文格式 4
报文位置 4
RIP版本1报文 4
RIP版本2报文 5
第二章动态学****过程 7
请求与应答 7
初始化 7
接收到request 7
接收到response 7
更新 8
8
8
其他机制与策略 9
水平分割 9
定时删除 9
前言
关于此文档
此文档是本人这段时间内研究GPL发布的RIP协议源码,总结并且整理出来的文档。供大家参考。
本文档阐述代码相关研究,各章节说明如下:
1 前言,即此章节;
2 重要数据结构
3 接收与发送处理;
4 路由表结构
5 线程机制
6 ripd配置文件
参考资料
网络资源。

第一章数据结构
收发处理相关
struct rip
struct rip
{
/* RIP socket. */
int sock;
/* Default version of rip instance. */
u_char version;
/* Output buffer of RIP. */
struct stream *obuf;
/* RIP routing information base. */
struct route_table *table;
/* RIP only static routing information. */
struct route_table *route;

/* RIP neighbor. */
struct route_table *neighbor;

/* RIP threads. */
struct thread *t_read;
/* Update and garbage timer. */
struct thread *t_update;
/* Triggered update hack. */
int trigger;
struct thread *t_triggered_update;
struct thread *t_triggered_interval;
/* RIP timer values. */
unsigned long update_time;
unsigned long timeout_time;
unsigned long garbage_time;
/* RIP default metric. */
int default_metric;
/* RIP default-information originate. */
u_char default_information;
char *default_information_route_map;
/* RIP default distance. */
u_char distance;
struct route_table *distance_table;
/* For redistribute route map. */
struct
{
char *name;
struct route_map *map;
int metric_config;
u_int32_t metric;
} route_map[ZEBRA_ROUTE_MAX];
};
这个结构体包含ripd进程的所有信息,一个ripd进程只有一个struct rip对象作为全局变量。struct route_table *table是ripd进程维护的路由表的指针;struct thread *类型的数据为进程中的伪线程链表头指针(下文详细描述);此外还包含其他各种信息。
struct rte
struct rte
{
u_int16_t family; /* Address family of this route. */
u_int16_t tag; /* Route Tag which included in RIP2 packet. */
struct in_addr pre