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_scad, sp->current_server_cad) {
s_cad = container_of(pos_scad, struct server_cad, srv_link);
}
依次取得各server_cad的地址,方便下面对该节点进行取值或赋值。