- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cmdline_process_mode(argc, argv);
这个函数用来判断程序启动参数中是否有-d选项,如果有,就把变量config_daemon_mode的值设置为1,表示程序运行于后台模式。
log_init(argv[0]);
初始化日志记录程序打开一个到系统日志记录程序的连接atexit(log_exit);
注册log_exit函数,log_exit函数将在程序终止之前被调用
cmdline_process(argc, argv);
命令行参数解析
config_file_use( config_get_value( CONFIG_NAME_CONFIG_FILE ) );
读取配置文件amvpn.conf,将配置文件中的键值对记录在数组config_options中,config_options的元素是一个数据结构:
struct config_option_t
{
char *config_name;
char option_char;
char config_value[MAX_CONFIG_VALUE_SIZE];
char *default_value;
char *help;
};
位于Config.c 32行
log_set_severity(
config_get_log_severity_index(
config_get_value(CONFIG_NAME_LOG_LEVEL) )
);
此函数用于设置日志的级别
server_mode = config_is_server_mode();
判断是否是服务器模式,返回config_server_mode的值
config_server_mode初始值是1,服务器模式保持不变,如果是客户端模式则在函数config_set_value中置0:
if(strcmp(config_name, CONFIG_NAME_SERVER_IP) == 0)
config_server_mode = 0;
vpn_init();
初始化SSL
vpn_tun_open( vpn_relay, tun_if);
打开隧道设备,将隧道描述符储存在typedef struct vpn_relay_t数据结构中,relay-tun_fd = fd;
vpn_ifconfig(tun_if, tun_ip, IFF_UP)
为隧道设备设置IP地址
if(strcmp(route_smb, yes) == 0)
{
if(netbios_relay_init(vpn_relay,
config_get_value(CONFIG_NAME_LOCAL_NET),
config_get_value(CONFIG_NAME_LOCAL_MASK),
config_get_value(CONFIG_NAME_REMOTE_NET),
config_get_value(CONFIG_NAME_REMOTE_MASK) ) 0)
{
log(LOG_ERROR, %s: Cannot initialize NBT relay. Aborting., __FUNCTION__);
exit(1);
}
}
网络共享相关,不用管
keepalive_msg_init()
用于连接保活???反正是用于初始化一个IP数据包,这个IP数据包只要头部,没有内容。
block_signals()
加入信号到进程屏蔽
perm_secure_file_mtime()
证书检查
notify_init();
通知邮件的初始化,不用管
vpn_socket_open(vpn_relay, server_mode, remote_ip, port, run_as_user, run_as_group,1)
打开vpn套接口
if(config_is_daemon_mode())
make_daemon();
进入后台运行
main_task();
主函数
tmp_relay.conn_fd = -1;
while (tmp_relay.conn_fd 0)
{
if( perm_check_keyce
文档评论(0)