enum {
	ACCEPT = 0,
	REFUSED,
	DENIED,
	DIALUP,
	BLOCKED,
	DELAY,
	TRUSTED,
	NONE,

	MAXREJECTS = 100
};

	
typedef struct Link Link;
typedef struct List List;

struct Link {
	Link *next;
	String *p;
};

struct List {
	Link *first;
	Link *last;
};

extern	int	fflag;
extern	int	rflag;
extern	int	sflag;

extern	int	debug;
extern	NetConnInfo	*nci;
extern	char	*dom;
extern	char*	me;
extern	int	trusted;
extern	List	senders;
extern	List	rcvers;

void	addbadguy(char*);
void	auth(String *, String *);
int	blocked(String*);
void	data(void);
char*	dumpfile(char*);
int	forwarding(String*);
void	getconf(void);
void	hello(String*, int extended);
void	help(String *);
int	isbadguy(void);
void	listadd(List*, String*);
void	listfree(List*);
int	masquerade(String*, char*);
void	noop(void);
int	optoutofspamfilter(char*);
void	quit(void);
void	parseinit(void);
void	receiver(String*);
int	recipok(char*);
int	reply(char*, ...);
void	reset(void);
int	rmtdns(char*, char*);
void	sayhi(void);
void	sender(String*);
void	starttls(void);
void	turn(void);
void	verify(String*);
void	vfysenderhostok(void);
int	zzparse(void);
