haproxy中两个常用的宏

简介: list_for_each(pos, head)pos、head 都为list类型一般来说,head是list的虚拟头,依次取list上的各个节点container_of(ptr, type, member)ptr:现已知的指针type:要求的结构体类型member:指针在结构体中的名称该宏用于在已知结构中某个成员地址的情况下,求得结构体的起始地址两个连用haproxy中结构体间常含list成员,用于将多个节点串在一起,在依次取各节点成员的时候,需要上述两个宏搭配使用。

list_for_each(pos, head)

  • pos、head 都为list类型
  • 一般来说,head是list的虚拟头,依次取list上的各个节点

    container_of(ptr, type, member)

  • ptr:现已知的指针
  • type:要求的结构体类型
  • member:指针在结构体中的名称
  • 该宏用于在已知结构中某个成员地址的情况下,求得结构体的起始地址

两个连用

haproxy中结构体间常含list成员,用于将多个节点串在一起,在依次取各节点成员的时候,需要上述两个宏搭配使用。

list_for_each(pos_scad, sp->current_server_cad) {
    s_cad = container_of(pos_scad, struct server_cad, srv_link);
}

依次取得各server_cad的地址,方便下面对该节点进行取值或赋值。

目录
相关文章
|
监控
Zabbix实践-宏变量
一、.宏介绍 宏是一种抽象概念(Abstraction),它根据一些列预定义的规则替换一定的文本模式,而解释或编译器在遇到宏时会自动进行这一模式替换。类似地,zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本。
1813 0
|
Apache
puppet连载22:define用法
puppet define 定义 对于重复执行的代码,puppet支持用define来定义函数,然后利用变量来实现。 class user::login { define admin(uid,uname" : ensure => "present"...
859 0
|
网络安全
|
监控 应用服务中间件 开发工具
|
MySQL 关系型数据库 应用服务中间件
|
Web App开发 监控 网络安全