85 #include <netinet/in.h>
86 #include <arpa/inet.h>
114 static void smtp_key_append_na(
VSTRING *buffer,
const char *delim_na)
116 if (delim_na[1] != 0)
123 static void smtp_key_append_str(
VSTRING *buffer,
const char *str,
124 const char *delim_na)
126 if (str == 0 || str[0] == 0) {
127 smtp_key_append_na(buffer, delim_na);
128 }
else if (str[strcspn(str, delim_na)] != 0) {
138 static void smtp_key_append_uint(
VSTRING *buffer,
unsigned num,
139 const char *delim_na)
149 static const char myname[] =
"smtp_key_prefix";
156 msg_panic(
"%s: no parent state", myname);
172 smtp_key_append_str(buffer, state->
service, delim_na);
174 smtp_key_append_str(buffer, state->
request->
sender, delim_na);
182 smtp_key_append_str(buffer,
STR(iter->
dest), delim_na);
188 smtp_key_append_str(buffer,
STR(iter->
host), delim_na);
190 smtp_key_append_str(buffer,
STR(iter->
addr), delim_na);
192 smtp_key_append_uint(buffer, ntohs(iter->
port), delim_na);
#define SMTP_KEY_FLAG_HOSTNAME
struct SMTP_STATE * parent
#define BASE64_FLAG_APPEND
VSTRING * request_nexthop
NORETURN msg_panic(const char *fmt,...)
VSTRING * base64_encode_opt(VSTRING *result, const char *in, ssize_t len, int flags)
DELIVER_REQUEST * request
#define SMTP_KEY_FLAG_SERVICE
char * smtp_key_prefix(VSTRING *buffer, const char *delim_na, SMTP_ITERATOR *iter, int flags)
#define VSTRING_TERMINATE(vp)
#define VSTRING_ADDCH(vp, ch)
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
#define SMTP_KEY_FLAG_PORT
#define SMTP_KEY_MASK_ALL
#define VSTRING_RESET(vp)
#define SMTP_KEY_FLAG_REQ_NEXTHOP
#define SMTP_KEY_FLAG_NEXTHOP
#define SMTP_KEY_FLAG_ADDR
#define SMTP_KEY_FLAG_SENDER