|
|
researchv10 Norman
#ifndef _d_
#define _d_
#define MAXSAME 16
#define MAXSAMECHAR 128
/* status of a destination */
typedef enum {
d_undefined, /* address has not been matched */
d_pipe, /* repl1|repl2 == delivery command, rep */
d_cat, /* repl1 == mail file */
d_translate, /* repl1 == translation command */
d_alias, /* repl1 == translation */
d_auth, /* repl1 == command to authorize */
d_syntax, /* addr contains illegal characters */
d_unknown, /* addr does not match a rewrite rule */
d_loop, /* addressing loop */
d_eloop, /* external addressing loop */
d_noforward, /* forwarding not allowed */
d_badmbox, /* mailbox badly formatted */
d_resource, /* ran out of something we needed */
d_pipeto /* pipe to from a mailbox */
} d_status;
/* a destination */
typedef struct dest dest;
struct dest {
dest *next; /* for chaining */
dest *same; /* dests with same cmd */
dest *parent; /* destination we're a translation of */
string *addr; /* destination address */
string *repl1; /* substitution field 1 */
string *repl2; /* substitution field 2 */
int pstat; /* process status */
int uid; /* authentication */
int gid;
d_status status; /* delivery status */
int authorized; /* non-zero if we have been authorized */
int nsame; /* number of same dests chained to this entry */
int nchar; /* number of characters in the command */
};
/* dest routines */
extern dest *d_new();
extern void d_free();
extern dest *d_rm();
extern void d_insert();
extern dest *d_rm_same();
extern void d_same_insert();
extern dest *s_to_dest();
/* rewrite rule types */
#endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.