Postfix3.3.1
データ構造 | マクロ定義 | 型定義 | 関数 | 変数
qmgr.h ファイル
#include <sys/time.h>
#include <time.h>
#include <vstream.h>
#include <scan_dir.h>
#include <recipient_list.h>
#include <dsn.h>

[ソースコード]

データ構造

struct  QMGR_TRANSPORT_LIST
 
struct  QMGR_FEEDBACK
 
struct  QMGR_QUEUE_LIST
 
struct  QMGR_TRANSPORT
 
struct  QMGR_ENTRY_LIST
 
struct  QMGR_QUEUE
 
struct  QMGR_ENTRY
 
struct  QMGR_MESSAGE
 
struct  QMGR_SCAN
 

マクロ定義

#define QMGR_LIST_ROTATE(head, object)
 
#define QMGR_LIST_UNLINK(head, type, object)
 
#define QMGR_LIST_APPEND(head, object)
 
#define QMGR_LIST_PREPEND(head, object)
 
#define QMGR_LIST_INIT(head)
 
#define QMGR_FEEDBACK_IDX_NONE   0 /* no window dependence */
 
#define QMGR_FEEDBACK_IDX_WIN   1 /* 1/window dependence */
 
#define QMGR_FEEDBACK_VAL(fb, win)   ((fb).index == QMGR_FEEDBACK_IDX_NONE ? (fb).base : (fb).base / (win))
 
#define QMGR_TRANSPORT_STAT_DEAD   (1<<1)
 
#define QMGR_TRANSPORT_STAT_RATE_LOCK   (1<<2)
 
#define QMGR_TRANSPORT_THROTTLED(t)   ((t)->flags & QMGR_TRANSPORT_STAT_DEAD)
 
#define QMGR_QUEUE_TODO   1 /* waiting for service */
 
#define QMGR_QUEUE_BUSY   2 /* recipients on the wire */
 
#define QMGR_QUEUE_STAT_THROTTLED   0 /* back-off timer */
 
#define QMGR_QUEUE_STAT_SUSPENDED   -1 /* voluntary delay timer */
 
#define QMGR_QUEUE_STAT_SAVED   -2 /* delayed cleanup timer */
 
#define QMGR_QUEUE_STAT_BAD   -3 /* can't happen */
 
#define QMGR_QUEUE_READY(q)   ((q)->window > 0)
 
#define QMGR_QUEUE_THROTTLED(q)   ((q)->window == QMGR_QUEUE_STAT_THROTTLED)
 
#define QMGR_QUEUE_SUSPENDED(q)   ((q)->window == QMGR_QUEUE_STAT_SUSPENDED)
 
#define QMGR_QUEUE_SAVED(q)   ((q)->window == QMGR_QUEUE_STAT_SAVED)
 
#define QMGR_QUEUE_BAD(q)   ((q)->window <= QMGR_QUEUE_STAT_BAD)
 
#define QMGR_QUEUE_STATUS(q)
 
#define QMGR_READ_FLAG_SEEN_ALL_NON_RCPT   (1<<16)
 
#define QMGR_MESSAGE_LOCKED   ((QMGR_MESSAGE *) 1)
 
#define QMGR_MSG_STATS(stats, message)
 
#define QMGR_SCAN_START   (1<<0) /* start now/restart when done */
 
#define QMGR_SCAN_ALL   (1<<1) /* all queue file time stamps */
 
#define QMGR_FLUSH_ONCE   (1<<2) /* unthrottle once */
 
#define QMGR_FLUSH_DFXP   (1<<3) /* override defer_transports */
 
#define QMGR_FLUSH_EACH   (1<<4) /* unthrottle per message */
 

型定義

typedef struct QMGR_TRANSPORT QMGR_TRANSPORT
 
typedef struct QMGR_QUEUE QMGR_QUEUE
 
typedef struct QMGR_ENTRY QMGR_ENTRY
 
typedef struct QMGR_MESSAGE QMGR_MESSAGE
 
typedef struct QMGR_TRANSPORT_LIST QMGR_TRANSPORT_LIST
 
typedef struct QMGR_QUEUE_LIST QMGR_QUEUE_LIST
 
typedef struct QMGR_ENTRY_LIST QMGR_ENTRY_LIST
 
typedef struct QMGR_SCAN QMGR_SCAN
 
typedef struct QMGR_FEEDBACK QMGR_FEEDBACK
 
typedef void(* QMGR_TRANSPORT_ALLOC_NOTIFY) (QMGR_TRANSPORT *, VSTREAM *)
 

関数

void qmgr_feedback_init (QMGR_FEEDBACK *, const char *, const char *, const char *, const char *)
 
QMGR_TRANSPORTqmgr_transport_select (void)
 
void qmgr_transport_alloc (QMGR_TRANSPORT *, QMGR_TRANSPORT_ALLOC_NOTIFY)
 
void qmgr_transport_throttle (QMGR_TRANSPORT *, DSN *)
 
void qmgr_transport_unthrottle (QMGR_TRANSPORT *)
 
QMGR_TRANSPORTqmgr_transport_create (const char *)
 
QMGR_TRANSPORTqmgr_transport_find (const char *)
 
QMGR_QUEUEqmgr_queue_create (QMGR_TRANSPORT *, const char *, const char *)
 
QMGR_QUEUEqmgr_queue_select (QMGR_TRANSPORT *)
 
void qmgr_queue_done (QMGR_QUEUE *)
 
void qmgr_queue_throttle (QMGR_QUEUE *, DSN *)
 
void qmgr_queue_unthrottle (QMGR_QUEUE *)
 
QMGR_QUEUEqmgr_queue_find (QMGR_TRANSPORT *, const char *)
 
void qmgr_queue_suspend (QMGR_QUEUE *, int)
 
QMGR_ENTRYqmgr_entry_select (QMGR_QUEUE *)
 
void qmgr_entry_unselect (QMGR_QUEUE *, QMGR_ENTRY *)
 
void qmgr_entry_move_todo (QMGR_QUEUE *, QMGR_ENTRY *)
 
void qmgr_entry_done (QMGR_ENTRY *, int)
 
QMGR_ENTRYqmgr_entry_create (QMGR_QUEUE *, QMGR_MESSAGE *)
 
void qmgr_message_free (QMGR_MESSAGE *)
 
void qmgr_message_update_warn (QMGR_MESSAGE *)
 
void qmgr_message_kill_record (QMGR_MESSAGE *, long)
 
QMGR_MESSAGEqmgr_message_alloc (const char *, const char *, int, mode_t)
 
QMGR_MESSAGEqmgr_message_realloc (QMGR_MESSAGE *)
 
void qmgr_defer_transport (QMGR_TRANSPORT *, DSN *)
 
void qmgr_defer_todo (QMGR_QUEUE *, DSN *)
 
void qmgr_defer_recipient (QMGR_MESSAGE *, RECIPIENT *, DSN *)
 
void qmgr_bounce_recipient (QMGR_MESSAGE *, RECIPIENT *, DSN *)
 
void qmgr_deliver (QMGR_TRANSPORT *, VSTREAM *)
 
int qmgr_active_feed (QMGR_SCAN *, const char *)
 
void qmgr_active_drain (void)
 
void qmgr_active_done (QMGR_MESSAGE *)
 
void qmgr_move (const char *, const char *, time_t)
 
void qmgr_enable_all (void)
 
void qmgr_enable_transport (QMGR_TRANSPORT *)
 
void qmgr_enable_queue (QMGR_QUEUE *)
 
QMGR_SCANqmgr_scan_create (const char *)
 
void qmgr_scan_request (QMGR_SCAN *, int)
 
char * qmgr_scan_next (QMGR_SCAN *)
 
QMGR_TRANSPORTqmgr_error_transport (const char *)
 
QMGR_QUEUEqmgr_error_queue (const char *, DSN *)
 
char * qmgr_error_nexthop (DSN *)
 

変数

struct HTABLEqmgr_transport_byname
 
QMGR_TRANSPORT_LIST qmgr_transport_list
 
int qmgr_queue_count
 
int qmgr_message_count
 
int qmgr_recipient_count
 
int qmgr_vrfy_pend_count
 
int qmgr_deliver_concurrency
 

マクロ定義詳解

#define QMGR_FEEDBACK_IDX_NONE   0 /* no window dependence */

qmgr.h119 行目に定義があります。

#define QMGR_FEEDBACK_IDX_WIN   1 /* 1/window dependence */

qmgr.h120 行目に定義があります。

#define QMGR_FEEDBACK_VAL (   fb,
  win 
)    ((fb).index == QMGR_FEEDBACK_IDX_NONE ? (fb).base : (fb).base / (win))

qmgr.h132 行目に定義があります。

#define QMGR_FLUSH_DFXP   (1<<3) /* override defer_transports */

qmgr.h400 行目に定義があります。

#define QMGR_FLUSH_EACH   (1<<4) /* unthrottle per message */

qmgr.h401 行目に定義があります。

#define QMGR_FLUSH_ONCE   (1<<2) /* unthrottle once */

qmgr.h399 行目に定義があります。

#define QMGR_LIST_APPEND (   head,
  object 
)
値:
{ \
object->peers.next = head.next; \
object->peers.prev = 0; \
if (head.next) { \
head.next->peers.prev = object; \
} else { \
head.prev = object; \
} \
head.next = object; \
}

qmgr.h66 行目に定義があります。

#define QMGR_LIST_INIT (   head)
値:
{ \
head.prev = 0; \
head.next = 0; \
}

qmgr.h88 行目に定義があります。

#define QMGR_LIST_PREPEND (   head,
  object 
)
値:
{ \
object->peers.prev = head.prev; \
object->peers.next = 0; \
if (head.prev) { \
head.prev->peers.next = object; \
} else { \
head.next = object; \
} \
head.prev = object; \
}

qmgr.h77 行目に定義があります。

#define QMGR_LIST_ROTATE (   head,
  object 
)
値:
{ \
head.next->peers.prev = head.prev; \
head.prev->peers.next = head.next; \
head.next = object->peers.next; \
if (object->peers.next) \
head.next->peers.prev = 0; \
head.prev = object; \
object->peers.next = 0; \
}

qmgr.h46 行目に定義があります。

#define QMGR_LIST_UNLINK (   head,
  type,
  object 
)
値:
{ \
type next = object->peers.next; \
type prev = object->peers.prev; \
if (prev) prev->peers.next = next; \
else head.next = next; \
if (next) next->peers.prev = prev; \
else head.prev = prev; \
object->peers.next = object->peers.prev = 0; \
}

qmgr.h56 行目に定義があります。

#define QMGR_MESSAGE_LOCKED   ((QMGR_MESSAGE *) 1)

qmgr.h329 行目に定義があります。

#define QMGR_MSG_STATS (   stats,
  message 
)
値:
incoming_arrival, message->arrival_time, \
active_arrival, message->active_time)
#define MSG_STATS_INIT2(st, m1, v1, m2, v2)
Definition: msg_stats.h:77

qmgr.h341 行目に定義があります。

#define QMGR_QUEUE_BAD (   q)    ((q)->window <= QMGR_QUEUE_STAT_BAD)

qmgr.h248 行目に定義があります。

#define QMGR_QUEUE_BUSY   2 /* recipients on the wire */

qmgr.h217 行目に定義があります。

#define QMGR_QUEUE_READY (   q)    ((q)->window > 0)

qmgr.h244 行目に定義があります。

#define QMGR_QUEUE_SAVED (   q)    ((q)->window == QMGR_QUEUE_STAT_SAVED)

qmgr.h247 行目に定義があります。

#define QMGR_QUEUE_STAT_BAD   -3 /* can't happen */

qmgr.h242 行目に定義があります。

#define QMGR_QUEUE_STAT_SAVED   -2 /* delayed cleanup timer */

qmgr.h241 行目に定義があります。

#define QMGR_QUEUE_STAT_SUSPENDED   -1 /* voluntary delay timer */

qmgr.h240 行目に定義があります。

#define QMGR_QUEUE_STAT_THROTTLED   0 /* back-off timer */

qmgr.h239 行目に定義があります。

#define QMGR_QUEUE_STATUS (   q)
値:
( \
QMGR_QUEUE_READY(q) ? "ready" : \
QMGR_QUEUE_THROTTLED(q) ? "throttled" : \
QMGR_QUEUE_SUSPENDED(q) ? "suspended" : \
QMGR_QUEUE_SAVED(q) ? "saved" : \
"invalid queue status" \
)
#define QMGR_QUEUE_SUSPENDED(q)
Definition: qmgr.h:246
#define QMGR_QUEUE_READY(q)
Definition: qmgr.h:244
#define QMGR_QUEUE_SAVED(q)
Definition: qmgr.h:247
#define QMGR_QUEUE_THROTTLED(q)
Definition: qmgr.h:245

qmgr.h250 行目に定義があります。

#define QMGR_QUEUE_SUSPENDED (   q)    ((q)->window == QMGR_QUEUE_STAT_SUSPENDED)

qmgr.h246 行目に定義があります。

#define QMGR_QUEUE_THROTTLED (   q)    ((q)->window == QMGR_QUEUE_STAT_THROTTLED)

qmgr.h245 行目に定義があります。

#define QMGR_QUEUE_TODO   1 /* waiting for service */

qmgr.h216 行目に定義があります。

#define QMGR_READ_FLAG_SEEN_ALL_NON_RCPT   (1<<16)

qmgr.h327 行目に定義があります。

#define QMGR_SCAN_ALL   (1<<1) /* all queue file time stamps */

qmgr.h398 行目に定義があります。

#define QMGR_SCAN_START   (1<<0) /* start now/restart when done */

qmgr.h397 行目に定義があります。

#define QMGR_TRANSPORT_STAT_DEAD   (1<<1)

qmgr.h170 行目に定義があります。

#define QMGR_TRANSPORT_STAT_RATE_LOCK   (1<<2)

qmgr.h171 行目に定義があります。

#define QMGR_TRANSPORT_THROTTLED (   t)    ((t)->flags & QMGR_TRANSPORT_STAT_DEAD)

qmgr.h181 行目に定義があります。

型定義詳解

typedef struct QMGR_ENTRY QMGR_ENTRY

qmgr.h35 行目に定義があります。

qmgr.h39 行目に定義があります。

typedef struct QMGR_FEEDBACK QMGR_FEEDBACK

qmgr.h41 行目に定義があります。

typedef struct QMGR_MESSAGE QMGR_MESSAGE

qmgr.h36 行目に定義があります。

typedef struct QMGR_QUEUE QMGR_QUEUE

qmgr.h34 行目に定義があります。

qmgr.h38 行目に定義があります。

typedef struct QMGR_SCAN QMGR_SCAN

qmgr.h40 行目に定義があります。

qmgr.h33 行目に定義があります。

typedef void(* QMGR_TRANSPORT_ALLOC_NOTIFY) (QMGR_TRANSPORT *, VSTREAM *)

qmgr.h173 行目に定義があります。

qmgr.h37 行目に定義があります。

関数詳解

void qmgr_active_done ( QMGR_MESSAGE )

qmgr_active.c258 行目に定義があります。

void qmgr_active_drain ( void  )

qmgr_active.c574 行目に定義があります。

int qmgr_active_feed ( QMGR_SCAN ,
const char *   
)

qmgr_active.c171 行目に定義があります。

void qmgr_bounce_recipient ( QMGR_MESSAGE ,
RECIPIENT ,
DSN  
)

qmgr_bounce.c57 行目に定義があります。

void qmgr_defer_recipient ( QMGR_MESSAGE ,
RECIPIENT ,
DSN  
)

qmgr_defer.c147 行目に定義があります。

void qmgr_defer_todo ( QMGR_QUEUE ,
DSN  
)

qmgr_defer.c103 行目に定義があります。

void qmgr_defer_transport ( QMGR_TRANSPORT ,
DSN  
)

qmgr_defer.c83 行目に定義があります。

void qmgr_deliver ( QMGR_TRANSPORT ,
VSTREAM  
)

qmgr_deliver.c374 行目に定義があります。

void qmgr_enable_all ( void  )

qmgr_enable.c60 行目に定義があります。

void qmgr_enable_queue ( QMGR_QUEUE )

qmgr_enable.c98 行目に定義があります。

void qmgr_enable_transport ( QMGR_TRANSPORT )

qmgr_enable.c77 行目に定義があります。

QMGR_ENTRY* qmgr_entry_create ( QMGR_QUEUE ,
QMGR_MESSAGE  
)

qmgr_entry.c304 行目に定義があります。

void qmgr_entry_done ( QMGR_ENTRY ,
int   
)

qmgr_entry.c212 行目に定義があります。

void qmgr_entry_move_todo ( QMGR_QUEUE ,
QMGR_ENTRY  
)

qmgr_entry.c180 行目に定義があります。

QMGR_ENTRY* qmgr_entry_select ( QMGR_QUEUE )

qmgr_entry.c102 行目に定義があります。

void qmgr_entry_unselect ( QMGR_QUEUE ,
QMGR_ENTRY  
)

qmgr_entry.c170 行目に定義があります。

char* qmgr_error_nexthop ( DSN )

qmgr_error.c115 行目に定義があります。

QMGR_QUEUE* qmgr_error_queue ( const char *  ,
DSN  
)

qmgr_error.c85 行目に定義があります。

QMGR_TRANSPORT* qmgr_error_transport ( const char *  )

qmgr_error.c65 行目に定義があります。

void qmgr_feedback_init ( QMGR_FEEDBACK ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

qmgr_feedback.c103 行目に定義があります。

QMGR_MESSAGE* qmgr_message_alloc ( const char *  ,
const char *  ,
int  ,
mode_t   
)

qmgr_message.c1347 行目に定義があります。

void qmgr_message_free ( QMGR_MESSAGE )

qmgr_message.c1296 行目に定義があります。

void qmgr_message_kill_record ( QMGR_MESSAGE ,
long   
)

qmgr_message.c868 行目に定義があります。

QMGR_MESSAGE* qmgr_message_realloc ( QMGR_MESSAGE )

qmgr_message.c1415 行目に定義があります。

void qmgr_message_update_warn ( QMGR_MESSAGE )

qmgr_message.c850 行目に定義があります。

void qmgr_move ( const char *  ,
const char *  ,
time_t   
)

qmgr_move.c57 行目に定義があります。

QMGR_QUEUE* qmgr_queue_create ( QMGR_TRANSPORT ,
const char *  ,
const char *   
)

qmgr_queue.c407 行目に定義があります。

void qmgr_queue_done ( QMGR_QUEUE )

qmgr_queue.c374 行目に定義があります。

QMGR_QUEUE* qmgr_queue_find ( QMGR_TRANSPORT ,
const char *   
)

qmgr_queue.c439 行目に定義があります。

QMGR_QUEUE* qmgr_queue_select ( QMGR_TRANSPORT )

qmgr_queue.c353 行目に定義があります。

void qmgr_queue_suspend ( QMGR_QUEUE ,
int   
)

qmgr_queue.c160 行目に定義があります。

void qmgr_queue_throttle ( QMGR_QUEUE ,
DSN  
)

qmgr_queue.c278 行目に定義があります。

void qmgr_queue_unthrottle ( QMGR_QUEUE )

qmgr_queue.c198 行目に定義があります。

QMGR_SCAN* qmgr_scan_create ( const char *  )

qmgr_scan.c176 行目に定義があります。

char* qmgr_scan_next ( QMGR_SCAN )

qmgr_scan.c154 行目に定義があります。

void qmgr_scan_request ( QMGR_SCAN ,
int   
)

qmgr_scan.c112 行目に定義があります。

void qmgr_transport_alloc ( QMGR_TRANSPORT ,
QMGR_TRANSPORT_ALLOC_NOTIFY   
)

qmgr_transport.c339 行目に定義があります。

QMGR_TRANSPORT* qmgr_transport_create ( const char *  )

qmgr_transport.c410 行目に定義があります。

QMGR_TRANSPORT* qmgr_transport_find ( const char *  )

qmgr_transport.c469 行目に定義があります。

QMGR_TRANSPORT* qmgr_transport_select ( void  )

qmgr_transport.c298 行目に定義があります。

void qmgr_transport_throttle ( QMGR_TRANSPORT ,
DSN  
)

qmgr_transport.c211 行目に定義があります。

void qmgr_transport_unthrottle ( QMGR_TRANSPORT )

qmgr_transport.c183 行目に定義があります。

変数詳解

int qmgr_deliver_concurrency

qmgr_deliver.c93 行目に定義があります。

int qmgr_message_count

qmgr_message.c150 行目に定義があります。

int qmgr_queue_count

qmgr_queue.c112 行目に定義があります。

int qmgr_recipient_count

qmgr_message.c151 行目に定義があります。

struct HTABLE* qmgr_transport_byname

qmgr_transport.c107 行目に定義があります。

QMGR_TRANSPORT_LIST qmgr_transport_list

qmgr_transport.c108 行目に定義があります。

int qmgr_vrfy_pend_count

qmgr_message.c152 行目に定義があります。