RIP源码分析.docxVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RIP源码分析

RIP源码分析 (2009-04-21 16:06) 分类: linux由于工作原因,看了一阵子RIP的源码,写个大概出来,以防止以后忘的快。代码是自己一行一行的看的,没有找到半点资料,比较郁闷。至于要看懂RIP源码,得先熟悉RIP协议,其实RIP应该是路由协议里最简单得了,google一下,网上很多。? 首先进入Int main (intargc, char **argv){ char *p;intdaemon_mode = 0; char *progname;struct thread thread; /* Set umask before anything for security */umask (0027); /* Get program name. */progname = ((p = strrchr (argv[0], /)) ? ++p : argv[0]); /* First of all we need logging init. *///在这里设置logzlog_default = openzlog (progname, ZLOG_NOLOG, ZLOG_RIP, LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON); /* Command line option parse. */ while (1) {int opt;//解析参数 opt = getopt_long (argc, argv, df:hA:P:rv, longopts, 0); if (opt == EOF)break; switch (opt) {case 0: break;case d:daemon_mode = 1; break;case f:config_file = optarg; break;case A:vty_addr = optarg; break; case i:pid_file = optarg; break;case P:vty_port = atoi (optarg); break;case r:retain_mode = 1; break;case v:print_version (progname); exit (0); break;case h: usage (progname, 0); break;default: usage (progname, 1); break;} } /* Prepare master thread. */ master = thread_master_create (); /* Library initialization. */signal_init ();cmd_init (1);vty_init ();memory_init ();keychain_init (); /* RIP related initialization. */rip_init ();rip_if_init ();rip_zclient_init ();rip_peer_init (); /* Sort all installed commands. */sort_node (); /* Get configuration file. */vty_read_config (config_file, config_current, config_default); /* Change to the daemon program. */ if (daemon_mode) //进入后台运行,成为守护进程 daemon (0, 0); /* Pid file create. */pid_output (pid_file); /* Create VTYs socket */vty_serv_sock (vty_addr, vty_port, RIP_VTYSH_PATH); /* Execute each thread. */ while (thread_fetch (master, thread))//真正执行线程在这里thread_call (thread); /* Not reached. */ exit (0);}先看看thread_call (thread);这一行,进入此函数voidthread_call (struct thread *thread){ unsigned long thread_time; RUSAGE_T ru; GETRUSAGE (thread-ru); (*thread-func) (

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档