keepalived源码浅析——sock
来源:互联网 发布:子曰法语之言能无从乎 编辑:程序博客网 时间:2024/06/07 03:47
sock.h 源码
#ifndef _SOCK_H#define _SOCK_H/* system includes */#include <openssl/ssl.h> //需包含openssl库#include <openssl/md5.h>/* Engine socket pool element structure */ //sock 池 元素的结构体typedef struct {int fd;SSL *ssl;BIO *bio;MD5_CTX context;int status;int lock;char *buffer;char *extracted;int size;int total_size;} SOCK;/* global vars exported */ //全局变量extern SOCK *sock;/* Prototypes */extern void free_sock(SOCK *);extern void init_sock(void);#endif
sock.c源码
#include <string.h>#include "memory.h"#include "utils.h"#include "list.h"#include "sock.h"#include "layer4.h"#include "ssl.h"#include "main.h"/* global var */ //全局变量 SOCK指针SOCK *sock = NULL;/* Close the descriptor */ //关闭sock 如果有ssl句柄则关闭销毁static voidclose_sock(SOCK * sock_obj){if (sock_obj->ssl) {SSL_shutdown(sock_obj->ssl);SSL_free(sock_obj->ssl);}close(sock_obj->fd);}/* Destroy the socket handler */ //销毁socket句柄voidfree_sock(SOCK * sock_obj){DBG("Freeing fd:%d\n", sock_obj->fd);close_sock(sock_obj);FREE(sock_obj);}/* Init socket handler */ //sock句柄的初始化 voidinit_sock(void){sock = (SOCK *) MALLOC(sizeof (SOCK));memset(sock, 0, sizeof (SOCK));thread_add_event(master, tcp_connect_thread, sock, 0);}
调用位置:
main.c 中
/* Register the GET request */init_sock();
Scheduler.c中
/* Add simple event thread. */thread_t *thread_add_event(thread_master_t * m, int (*func) (thread_t *) , void *arg, int val){thread_t *thread;assert(m != NULL);thread = thread_new(m);thread->type = THREAD_EVENT;thread->id = 0;thread->master = m;thread->func = func;thread->arg = arg;thread->u.val = val;thread_list_add(&m->event, thread);return thread;}其中 /* global vars */thread_master_t *master = NULL;
- keepalived源码浅析——sock
- keepalived源码浅析——日志
- keepalived源码浅析——pid文件
- keepalived源码浅析——SSL engine
- keepalived源码浅析——Html
- keepalived源码浅析——Notify
- keepalived源码浅析——Daemon进程
- keepalived源码浅析——Memory 内存管理
- keepalived源码浅析——Global_data全局定义块
- keepalived源码浅析——Global_data全局数据解析
- keepalived源码浅析——parser关键字解析
- JDK8—LinkedHashMap源码浅析
- Keepalived系列—配置文件keepalived.conf详解
- JDK-Map源码浅析——IdentityHashMap
- Couchbase源码浅析——Couchstore部分
- mina源码浅析——总结
- JDK源码研究——ReentrantLock浅析
- zoj3432——Find the Lost Sock
- form data enctype
- 自定义控件集合属性的设计时支持
- android pn推送是出现reomte-server-error(502)
- 麻省理工学院(MIT)研究生学习指导—— 怎样做研究生(下)
- 在网络编程的时候使用非阻塞的connect
- keepalived源码浅析——sock
- Android之TextView实现文字过长时省略部分或者滚动显示
- 如何获取设备描述表句柄--WIN32 api
- 沈志华:中苏60年代分裂的起源
- create schema 与create database的区别
- opencv 直方图 这篇文章是转载的
- jw player去掉logo 二次开发
- Android开发之重力传感器
- oracle 存储过程的基本语法