DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T t

⟦b68991290⟧ TextFile

    Length: 5307 (0x14bb)
    Types: TextFile
    Names: »types.h«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/Src/qmgr/types.h« 

TextFile

/* types.h: queue manager general purpose type definitions */

/*
 * @(#) $Header: /cs/research/pp/hubris/pp-beta/Src/qmgr/RCS/types.h,v 5.0 90/09/20 16:22:06 pp Exp Locker: pp $
 *
 * $Log:	types.h,v $
 * Revision 5.0  90/09/20  16:22:06  pp
 * rcsforce : 5.0 public release
 * 
 *
 */



#ifndef _H_QMGR_TYPES
#define _H_QMGR_TYPES


#include <stdio.h>
#include "Qmgr-types.h"
#include "table.h"
#include "chan.h"
#include "list_bpt.h"
#include "list_rchan.h"
#include "mta.h"


#define HASHSIZE	101
#define DISP_INDENT	2


#define LOAD_RETRY_INTERVAL	((time_t)(6 * 60 * 60))	/* every hour or so */
#define TRASH_START_DELAY	((time_t)(3 * 60))	/* wait 3 mins */
#define TRASH_RETRY_INTERVAL	((time_t)(3 * 60 * 60)) /* every 3 hours */
#define TIMEOUT_START_DELAY	((time_t)(30 * 60))	/* wait 30 mins */
#define TIMEOUT_RETRY_INTERVAL	((time_t)(12 * 60 * 60)) /* every 12 hours */
#define MAX_SLEEP		((time_t)(1 * 24 * 60 * 60)) /* 1 day */
#define CHAN_TIMEOUT		((time_t)(60 * 5))	/* 5 mins */
#define MAXCHANSRUNNING		3



/* --- Cache structure - general purpose. --- */
typedef struct cache {
	time_t		cachetime;
	int		cacheplus;
#define	CACHE_TIME		(5*60)	/* 5 minutes retry time */
#define CACHE_MAX		(10)	/* 50 mins max */
} Cache;



/* --- Recipient list - internal form --- */
typedef struct Reciplist {
	struct Reciplist	*rp_next;
	
	int			id;
	char			*user;
	char			*mta;
	char			*realmta;
	LIST_RCHAN		*chans;
	int			chans_done;

	/* --- non protocol stuff --- */
	enum			rstatus { st_normal, st_dr, st_delete, st_timeout } status;
	unsigned int		msg_enabled:1,
				msg_locked:1;
	Cache			cache;
} Reciplist;
#define NULLRL			((Reciplist *)0)
	


/* --- Msg information - internal form --- */
typedef struct MsgStruct {
	struct MsgStruct	*ms_forw;

	int			count;
	char			*queid;
	MPDUid			*mpduid;
	char			*originator;
	char			*contenttype;
	LIST_BPT		*eit;
	int			priority;
	int			size;
	time_t			age;
	int			warninterval;
	int			numberwarns;
	time_t			expirytime;
	time_t			defferedtime;
	char			*uacontent;
	int			m_locked:1,
				m_timeout:1;
	int			nerrors;
	CHAN			*inchan;
	Reciplist		*recips;
} MsgStruct;
#define NULLMS ((MsgStruct *)0)




/* --- Msg list - as associated with an MTA --- */
typedef struct mlist {
	struct mlist		*ml_forw;
	struct mlist		*ml_back;

	MsgStruct		*ms;
	char			*info;
	Reciplist 		**recips;
	int			rcount;
} Mlist;
#define NULLMLIST	((Mlist *)0)



/* --- List of MTA's associated with channel --- */
typedef struct Mtalist {
	struct Mtalist		*mta_forw;
	struct Mtalist		*mta_back;

	char			*mtaname;
	Cache			cache;
	time_t			oldest;
	time_t			lastattempt;
	time_t			lastsuccess;
	time_t			nextevent;
	int			num_msgs;
	int			num_drs;
	long			volume;
	int			nactive;
	char			*info;
	unsigned int		mta_enabled:1,
				mta_changed:1,
    				mta_waiting:1;
	Mlist			*msgs;
} Mtalist;
#define NULLMTALIST	((Mtalist *)0)



/* --- Channel list --- */
typedef struct chanlist {
	Mtalist		*mtas;

	CHAN		*chan;
	char		*channame;
	Cache		cache;
	time_t		lastattempt;
	time_t		lastsuccess;
	time_t		laststart;
	time_t		oldest;
	time_t		nextevent;
	float		averaget;
	int		num_msgs;
	int		num_drs;
	int		volume;
	int		nactive;
	int		nmtas;
	unsigned int
			chan_special:1,
			chan_enabled:1,
			chan_update:1;
} Chanlist;
#define NULLCHANLIST ((Chanlist *)0)




/* --- Internal 'compiled' filter type --- */
typedef struct Filter {
	char		*cont;
	LIST_BPT	*eit;
	int		priority;
	time_t		morerecent;
	time_t		earlier;
	int		maxsize;
	char		*orig;
	char		*recip;
	CHAN		*channel;
	char		*mta;
	char		*queid;
	MPDUid		*mpduid;
	char		*uacontent;
	struct	Filter	*next;
} Filter;
#define NULLFL	((Filter *)0)



enum cb_type {
	cb_channel,
	cb_special,
	cb_responder,
	cb_timer
} cb_type;



struct connblk {
	struct connblk	*cb_forw;
	struct connblk	*cb_back;

	int		cb_fd;
	int		cb_id;
	enum 		cb_type cb_type;

	union {
		struct {
			Chanlist	*cb_un_clp;
			char		*cb_un_mta;
			Mlist		*cb_un_ml;
			time_t		cb_un_ttl;
			enum {
				cb_idle,
				cb_conn_request1,
				cb_conn_request2,
				cb_conn_established,
				cb_init_sent,
				cb_active,
				cb_proc_sent,
				cb_close_sent
				} cb_un_state;
		} cb_chan;
#define cb_state	un.cb_chan.cb_un_state
#define cb_mta		un.cb_chan.cb_un_mta
#define cb_ml		un.cb_chan.cb_un_ml
#define cb_clp		un.cb_chan.cb_un_clp
#define cb_ttl		un.cb_chan.cb_un_ttl
		struct {
			IFP cb_un_proc;
			time_t	cb_un_reload;
		} cb_timer;
#define cb_proc		un.cb_timer.cb_un_proc
#define cb_reload	un.cb_timer.cb_un_reload
		struct {
			int cb_un_authenticated;
		} cb_responder;
#define cb_authenticated un.cb_responder.cb_un_authenticated
	} un;
};
typedef struct connblk Connblk;
#define	NULLCB	((Connblk *)0)


void	freecblk();
Connblk *findcblk(), *newcblk();


/* --- misc external things --- */
extern char		*myname;
extern MsgStruct	*msg_hash[];
extern Chanlist		**chan_list;
extern int		nchanlist;
extern Chanlist		*delete_chan, *loader_chan, *trash_chan, *timeout_chan;
extern time_t		current_time;
extern time_t		debris_time, load_time, cache_time, timeout_time;
extern int		maxchansrunning, submission_disabled, opmode;

#define OP_SHUTDOWN	1
#define OP_RESTART	2

extern void		advise(), adios(), acs_advise(), 
			ros_advise(), ros_adios();
extern time_t		time(), utc2time_t(), utcqb2time_t();
extern char		*chan2mta();


#endif