Postfix3.3.1
データ構造 | マクロ定義 | 関数
postscreen_smtpd.c ファイル
#include <sys_defs.h>
#include <string.h>
#include <ctype.h>
#include <msg.h>
#include <stringops.h>
#include <mymalloc.h>
#include <iostuff.h>
#include <vstring.h>
#include <mail_params.h>
#include <mail_proto.h>
#include <is_header.h>
#include <string_list.h>
#include <maps.h>
#include <ehlo_mask.h>
#include <lex_822.h>
#include <tls.h>
#include <postscreen.h>

[ソースコード]

データ構造

struct  PSC_SMTPD_COMMAND
 

マクロ定義

#define PSC_SMTPD_HAVE_PUSH_BACK(state)   (0)
 
#define PSC_SMTPD_PUSH_BACK_CHAR(state, ch)   vstream_ungetc((state)->smtp_client_stream, (ch))
 
#define PSC_SMTPD_NEXT_CHAR(state)   VSTREAM_GETC((state)->smtp_client_stream)
 
#define PSC_SMTPD_BUFFER_EMPTY(state)
 
#define PSC_SMTPD_PEEK_DATA(state)   vstream_peek_data((state)->smtp_client_stream)
 
#define PSC_SMTPD_PEEK_LEN(state)   vstream_peek((state)->smtp_client_stream)
 
#define PSC_RESUME_SMTP_CMD_EVENTS(state)
 
#define PSC_SUSPEND_SMTP_CMD_EVENTS(state)
 
#define PSC_SMTPD_ESCAPE_TEXT(dest, src, src_len, max_len)
 
#define PSC_SMTPD_NEXT_TOKEN(ptr)   mystrtok(&(ptr), " ")
 
#define PSC_CLEAR_EVENT_DROP_SESSION_STATE(state, event, reply)
 
#define PSC_CLEAR_EVENT_HANGUP(state, event)
 
#define PSC_EHLO_APPEND(save, buf, fmt)
 
#define PSC_EHLO_APPEND1(save, buf, fmt, arg1)
 
#define PSC_SMTPD_CMD_FLAG_NONE   (0) /* no flags (i.e. disabled) */
 
#define PSC_SMTPD_CMD_FLAG_ENABLE   (1<<0) /* command is enabled */
 
#define PSC_SMTPD_CMD_FLAG_DESTROY   (1<<1) /* dangling pointer alert */
 
#define PSC_SMTPD_CMD_FLAG_PRE_TLS   (1<<2) /* allowed with mandatory TLS */
 
#define PSC_SMTPD_CMD_FLAG_SUSPEND   (1<<3) /* suspend command engine */
 
#define PSC_SMTPD_CMD_ST_ANY   0
 
#define PSC_SMTPD_CMD_ST_CR   1
 
#define PSC_SMTPD_CMD_ST_CR_LF   2
 

関数

void psc_smtpd_tests (PSC_STATE *state)
 
void psc_smtpd_init (void)
 
void psc_smtpd_pre_jail_init (void)
 

マクロ定義詳解

#define PSC_CLEAR_EVENT_DROP_SESSION_STATE (   state,
  event,
  reply 
)
値:
do { \
PSC_CLEAR_EVENT_REQUEST(vstream_fileno((state)->smtp_client_stream), \
(event), (void *) (state)); \
PSC_DROP_SESSION_STATE((state), (reply)); \
} while (0);
#define PSC_CLEAR_EVENT_REQUEST(fd, time_act, context)
Definition: postscreen.h:341
#define PSC_DROP_SESSION_STATE(state, reply)
Definition: postscreen.h:432
#define vstream_fileno(vp)
Definition: vstream.h:115

postscreen_smtpd.c266 行目に定義があります。

#define PSC_CLEAR_EVENT_HANGUP (   state,
  event 
)
値:
do { \
PSC_CLEAR_EVENT_REQUEST(vstream_fileno((state)->smtp_client_stream), \
(event), (void *) (state)); \
} while (0);
#define PSC_CLEAR_EVENT_REQUEST(fd, time_act, context)
Definition: postscreen.h:341
void psc_hangup_event(PSC_STATE *)
#define vstream_fileno(vp)
Definition: vstream.h:115

postscreen_smtpd.c272 行目に定義があります。

#define PSC_EHLO_APPEND (   save,
  buf,
  fmt 
)
値:
do { \
(save) = LEN(buf); \
} while (0)
#define LEN
Definition: cleanup_addr.c:106
int const char * fmt
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
Definition: vstring.c:624
#define PSC_EHLO_APPEND1 (   save,
  buf,
  fmt,
  arg1 
)
値:
do { \
(save) = LEN(buf); \
vstring_sprintf_append((buf), (fmt), (arg1)); \
} while (0)
#define LEN
Definition: cleanup_addr.c:106
int const char * fmt
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
Definition: vstring.c:624
#define PSC_RESUME_SMTP_CMD_EVENTS (   state)
値:
do { \
PSC_READ_EVENT_REQUEST2(vstream_fileno((state)->smtp_client_stream), \
psc_smtpd_read_event, psc_smtpd_time_event, \
(void *) (state), PSC_EFF_CMD_TIME_LIMIT); \
if (!PSC_SMTPD_BUFFER_EMPTY(state)) \
psc_smtpd_read_event(EVENT_READ, (void *) state); \
} while (0)
#define PSC_EFF_CMD_TIME_LIMIT
Definition: postscreen.h:387
#define PSC_SMTPD_BUFFER_EMPTY(state)
#define EVENT_READ
Definition: events.h:40
#define vstream_fileno(vp)
Definition: vstream.h:115
#define PSC_READ_EVENT_REQUEST2(fd, read_act, time_act, context, timeout)
Definition: postscreen.h:332

postscreen_smtpd.c220 行目に定義があります。

#define PSC_SMTPD_BUFFER_EMPTY (   state)
値:
&& vstream_peek((state)->smtp_client_stream) <= 0)
#define PSC_SMTPD_HAVE_PUSH_BACK(state)
#define vstream_peek(vp)
Definition: vstream.h:232

postscreen_smtpd.c187 行目に定義があります。

#define PSC_SMTPD_CMD_FLAG_DESTROY   (1<<1) /* dangling pointer alert */

postscreen_smtpd.c701 行目に定義があります。

#define PSC_SMTPD_CMD_FLAG_ENABLE   (1<<0) /* command is enabled */

postscreen_smtpd.c700 行目に定義があります。

#define PSC_SMTPD_CMD_FLAG_NONE   (0) /* no flags (i.e. disabled) */

postscreen_smtpd.c699 行目に定義があります。

#define PSC_SMTPD_CMD_FLAG_PRE_TLS   (1<<2) /* allowed with mandatory TLS */

postscreen_smtpd.c702 行目に定義があります。

#define PSC_SMTPD_CMD_FLAG_SUSPEND   (1<<3) /* suspend command engine */

postscreen_smtpd.c703 行目に定義があります。

#define PSC_SMTPD_CMD_ST_ANY   0
#define PSC_SMTPD_CMD_ST_CR   1
#define PSC_SMTPD_CMD_ST_CR_LF   2
#define PSC_SMTPD_ESCAPE_TEXT (   dest,
  src,
  src_len,
  max_len 
)
値:
do { \
ssize_t _s_len = (src_len); \
ssize_t _m_len = (max_len); \
(void) escape((dest), (src), _s_len < _m_len ? _s_len : _m_len); \
} while (0)
VSTRING * escape(VSTRING *, const char *, ssize_t)
Definition: unescape.c:133

postscreen_smtpd.c235 行目に定義があります。

#define PSC_SMTPD_HAVE_PUSH_BACK (   state)    (0)

postscreen_smtpd.c181 行目に定義があります。

#define PSC_SMTPD_NEXT_CHAR (   state)    VSTREAM_GETC((state)->smtp_client_stream)

postscreen_smtpd.c184 行目に定義があります。

#define PSC_SMTPD_NEXT_TOKEN (   ptr)    mystrtok(&(ptr), " ")

postscreen_smtpd.c244 行目に定義があります。

#define PSC_SMTPD_PEEK_DATA (   state)    vstream_peek_data((state)->smtp_client_stream)

postscreen_smtpd.c191 行目に定義があります。

#define PSC_SMTPD_PEEK_LEN (   state)    vstream_peek((state)->smtp_client_stream)

postscreen_smtpd.c193 行目に定義があります。

#define PSC_SMTPD_PUSH_BACK_CHAR (   state,
  ch 
)    vstream_ungetc((state)->smtp_client_stream, (ch))

postscreen_smtpd.c182 行目に定義があります。

#define PSC_SUSPEND_SMTP_CMD_EVENTS (   state)
値:
PSC_CLEAR_EVENT_REQUEST(vstream_fileno((state)->smtp_client_stream), \
psc_smtpd_time_event, (void *) (state));
#define PSC_CLEAR_EVENT_REQUEST(fd, time_act, context)
Definition: postscreen.h:341
#define vstream_fileno(vp)
Definition: vstream.h:115

postscreen_smtpd.c228 行目に定義があります。

関数詳解

void psc_smtpd_init ( void  )

postscreen_smtpd.c1167 行目に定義があります。

void psc_smtpd_pre_jail_init ( void  )

postscreen_smtpd.c1255 行目に定義があります。

void psc_smtpd_tests ( PSC_STATE state)

postscreen_smtpd.c1118 行目に定義があります。