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的地址,方便下面对该节点进行取值或赋值。

posted @ 2017-08-06 18:44  抟九  阅读(206)  评论(0编辑  收藏  举报