#include <sys_defs.h>
#include <mymalloc.h>
#include <msg.h>
#include <mail_proto.h>
#include <smtpd.h>
void smtpd_xforward_init(SMTPD_STATE *state)
{
state->xforward.flags = 0;
state->xforward.name = 0;
state->xforward.addr = 0;
state->xforward.port = 0;
state->xforward.namaddr = 0;
state->xforward.protocol = 0;
state->xforward.helo_name = 0;
state->xforward.ident = 0;
state->xforward.domain = 0;
}
void smtpd_xforward_preset(SMTPD_STATE *state)
{
if (state->xforward.flags)
msg_panic("smtpd_xforward_preset: bad flags: 0x%x",
state->xforward.flags);
state->xforward.flags = SMTPD_STATE_XFORWARD_INIT;
state->xforward.name = mystrdup(CLIENT_NAME_UNKNOWN);
state->xforward.addr = mystrdup(CLIENT_ADDR_UNKNOWN);
state->xforward.port = mystrdup(CLIENT_PORT_UNKNOWN);
state->xforward.namaddr = mystrdup(CLIENT_NAMADDR_UNKNOWN);
state->xforward.rfc_addr = mystrdup(CLIENT_ADDR_UNKNOWN);
state->xforward.protocol = mystrdup(CLIENT_PROTO_UNKNOWN);
}
void smtpd_xforward_reset(SMTPD_STATE *state)
{
#define FREE_AND_WIPE(s) { if (s) myfree(s); s = 0; }
state->xforward.flags = 0;
FREE_AND_WIPE(state->xforward.name);
FREE_AND_WIPE(state->xforward.addr);
FREE_AND_WIPE(state->xforward.port);
FREE_AND_WIPE(state->xforward.namaddr);
FREE_AND_WIPE(state->xforward.rfc_addr);
FREE_AND_WIPE(state->xforward.protocol);
FREE_AND_WIPE(state->xforward.helo_name);
FREE_AND_WIPE(state->xforward.ident);
FREE_AND_WIPE(state->xforward.domain);
}