文档介绍:RIP源码分析(2009-04-2116:06)分类:linux由于工作原因,看了一阵子RIP的源码,写个大概出来,以防止以后忘的快。代码是自己一行一行的看的,没有找到半点资料,比较郁闷。至于要看懂RTP源码,得先熟悉RIP协议,其实RIP应该是路由协议里最简单得了,google-下,网上很多。首先进入Intmain(intargc,char**argv){char*p;intdaemon_mode=0;char^progname;structthreadthread;/*Setumaskbeforeanythingforsecurity*/umask(0027);/*Getprogramname.*/progname=((p=strrchr(argvfOJ,7'))?++p:argv[0]);/*Firstofallweneedlogginginit.*/〃在这里设置logzlog_default=openzlog(progname,ZLOG_NOLOG,ZLOG_RIP,LOG_CONSILOG_NDELAYILOG_PID,);/*Commandlineoptionparse.*/while(1){intopt;〃解析参数opt=getopt_long(urge,argv,ndf:hA:P:rvn,longopts,0);if(opt==EOF)break;switch(opt){case0:break;case'cT:daemon_mode=I;break;casef:config_file=optarg;break;caseA:vty_addr=optarg;break;case丫:pid_file=optarg;break;caseP:vty_port=atoi(optarg);break;caseF:retain_mode=1;break;caseV:print_version(progname);exit(0);break;caseh:usage(progname,0);break;default:usage(progname,1);break;/*Preparemasterthread.*/master=thread_master_create();/*Libraryinitialization.*/signal_init();cmd_init(1);vtyjnit();memory_init();keychain_init();/*RIPrelatedinitialization.*/ripjnit();ripjfjnit();rip_zclient_init();rip_peer_init();/*mands.*/sort_node();/*Getconfigurationfile.*/vty_read_config(config_file,config_current,config_default);/*Changetothedaemonprogram.*/讦(daemon_mode)〃进入后台运行,成为守护进程daemon(0,0);/*Pidfilecreate.*/pid_output(pid_file);/*CreateVTY'ssocket*/vty_serv_sock(vty_addr,vty_