/************************************************************************/
/* */
/* ***** ***** */
/* ***** ***** */
/* ***** ***** */
/* ***** ***** */
/* *************** *************** */
/* ***************** ***************** */
/* *************** *************** */
/* ***** ***** TheNetNode */
/* ***** ***** Portable */
/* ***** ***** Network */
/* ***** ***** Software */
/* */
/* File include/typedef.h (maintained by: ???) */
/* */
/* This file is part of "TheNetNode" - Software Package */
/* */
/* Copyright (C) 1998 - 2008 NORD>fp geupdate? */
#endif
CONNECTION *convers; /* Pointer auf Convers-Struktur */
#ifdef PACSAT
PACSATBLK *pacsat; /* Zeiger auf den PACSAT-Block */
#endif
MONBUF *monitor; /* Zeiger auf den Monitor-Filter-Buffer */
int auditlevel;
char talkcall[11];
UBYTE status; /* USER-Status */
#define US_NULL 0 /* leer/dummy */
#define US_CCP 1 /* CCP-User */
#define US_CREQ 2 /* Connect-Request */
#define US_WPWD 3 /* Warte auf Sysop-Passwort */
#define US_RTXT 4 /* Empfange Textdatei */
#define US_WBIN 5 /* Warte auf #BIN# */
#define US_SBIN 6 /* Sende Binaerdaten */
#define US_RBIN 7 /* Empfange Binaerdaten */
#define US_CHST 8 /* ConversHost */
#define US_TALK 9 /* TALK-Mode */
#define US_DIG 10 /* User muss weitergereicht werden */
#define US_EXTP 12 /* externes Programm laeuft (Linux) */
#define US_CQ 13 /* User ruft CQ */
#define US_WUPW 14 /* warte auf User-Password */
#ifdef USER_MONITOR
#define US_TRAC 15 /* Ein User Trace auf einen Port. */
#endif /* USER_MONITOR */
#ifdef USERPROFIL
#define US_UPWD 16 /* Warte auf User-Passwort */
#endif /* USERPROFIL */
#if defined(__LINUX__) || defined(__WIN32__)
pid_t child_pid; /* PID des Child-Prozesses */
UWORD child_timeout; /* Timeout */
int child_fd; /* Filedescriptor des tty-Interfaces */
BOOLEAN child_iactive; /* interaktive Shell oder nur Single-Command */
#endif /* LINUX / WIN32 */
UBYTE sysflg; /* SYSOP Flag */
UBYTE errcnt; /* CCP Fehlerzaehler */
UBYTE convflag; /* wenn != 0 soll nicht in den ccp zurueck */
/* 1 = CVSHOST von aussen 2= CVSHOST von uns */
UBYTE paswrd[5]; /* gegebene Passwort Stellen */
#ifdef USER_PASSWORD
UBYTE pwdtyp; /* User-Password Typ */
#define PW_NOPW 0 /* noch kein Password eingegeben */
#define PW_USER 1 /* User hat Password eingegeben */
#endif
#ifdef L1IRC
UWORD IrcMode; /* IRC-Mode markieren. */
#endif /* L1IRC */
} USRBLK;
typedef struct /* Zum Host connectete User */
{
char call[L2IDLEN]; /* Call des Users */
char conflg; /* User ist connected Flag */
char disflg; /* Flag: Verbindung trennen, wenn Info weg */
char direction; /* 0 = Conn. von aussen; 1 = Conn. zum Knoten */
UWORD noacti; /* Timer fuer keine Aktivitaet */
UWORD inlin; /* eingelaufene Zeilen */
UWORD outlin; /* auszugebende Zeilen */
UWORD outsta; /* auszugebende Meldung */
LHEAD inbuf; /* Listenkopf Eingabebuffer */
LHEAD outbuf; /* Listenkopf Ausgabebuffer */
} HOSTUS;
typedef struct l2_link
{
#ifdef BUFFER_DEBUG
void *next;
void *prev;
UBYTE owner; /* Muss an 9. Bytestelle stehen */
#endif
char call[L2IDLEN]; /* Rufzeichen */
char alias[L2CALEN]; /* Alias */
char digil[L2VLEN+1]; /* Digiliste */
/* char digil[2*L2IDLEN+1];*/ /* Digiliste - NUR 2 DIGIS! */
UWORD port; /* L2-Port */
UWORD ssid_high; /* SSID oben fuer Flexnet */
#ifdef LINKSMODINFO
#define INFOSIZE 28
char info[INFOSIZE + 1]; /* Stationsbeschreibung. */
#endif /* LINKSMODINFO */
#ifdef AUTOROUTING
UWORD ppAuto; /* Fixed/Auto-Route. */
#endif /* AUTOROUTING */
#ifdef PORT_L2_CONNECT_TIME
UWORD sabmtime; /* Intervall fuer SABM */
#endif
} L2LINK;
#define NOMODE -1 /* Linkmode ist noch nicht gesetzt/egal */
#define INP 0 /* Knoten nach INP-Protokoll */
#define TNN 1 /* neuer TNN-Typ */
#define THENET 2 /* Nachbar, der nicht auf Messung reagiert */
#define NETROM 3 /* unser guter alter Netrom */
/* alles <= NETROM wird als NETROM behandelt! */
#define FLEXNET 4 /* FlexNet */
#define LOCAL 5 /* Local */
#define LOCAL_M 6 /* Local mit Messung */
#ifdef LINKSMOD_LOCALMOD
#define LOCAL_N 7 /* Local ohne Messung und ohne Weiterleitung an */
/* den Nachbarn. */
#define LOCAL_V 8 /* Local ohne Messung, ohne Weiterleitung und */
/* versteckt, nur fuer den Sysop sichtbar. */
#endif /* LINKSMOD_LOCALMOD */
#define SSID(x) ((x[L2CALEN]>>1)&0x0F)
#define MAX_SSIDs 16
typedef struct /* Weginformation */
{
unsigned reported_quality; /* letzte gemeldete Qualitaet */
unsigned quality; /* letzte empfangene Qualitaet */
int timeout; /* Timeout (> 0 wenn aktiv) */
char lt; /* Hops seit dem Ziel */
char ssid_high; /* oberer SSID-Bereich */
} ROUTE;
typedef struct peer /* ein Segment ("Nachbar") */
{
ROUTE *routes; /* Liste mit Weginformationen */
/* alle Qualitaeten in ms Schritten */
ULONG quality; /* geglaettete Qualitaet zum Segment */
ULONG my_quality; /* meine Messung */
ULONG his_quality; /* seine Messung */
BOOLEAN used; /* frei? */
BOOLEAN locked; /* feste Route, nicht loeschen */
int options;
int num_routes; /* Anzahl der Routen */
struct peer *primary; /* Flag: == 0 primaerer Weg */
/* != 0 der beste Weg dorthin */
L2LINK *l2link; /* vorgegebener Link-Weg */
WORD rtt_time; /* Messintervalle fuer L3RTT */
ULONG rttstart; /* Laufzeitmessung, Startzeit */
LHEAD rxfl; /* Neigbour Frame List */
WORD tosend; /* Frames fuer den Nachbarn */
LNKBLK *nbrl2l; /* Querverweis zur Level2 Tabelle */
UBYTE tries; /* Anzahl der Connectversuche */
char soll_typ; /* Nachbar Typ (soll) */
char typ; /* Nachbar Typ (ist) */
#ifdef PROXYFUNC
#define PROXYMASK 64
BOOLEAN proxy; /* Proxyfunktion fuer diesen Link */
#endif
BOOLEAN secured;
WORD version; /* TNN-Version */
UBYTE token; /* Flexnet, wer hat das Token? */
UWORD brotim; /* Broadcast Timer */
UWORD maxtime; /* max. gewuenschte Laufzeit */
#ifdef CONNECTTIME
ULONG contime; /* Connectzeit in Flexnet-Stil. */
#endif /* CONNECTTIME */
#ifdef THENETMOD
UWORD obscnt; /* Restlebensdauer fuer Rundspruch. */
BOOLEAN constatus; /* Connect-Status. */
#endif /* THENETMOD */
} PEER;
typedef struct node /* Nodes-Liste */
{
struct node *next; /* doppelt verkettete Liste */
struct node *prev;
char id[L2IDLEN]; /* Rufzeichen des Nodes */
char alias[L2CALEN]; /* Alias dieses Zieles */
ULONG ipa; /* IP-Adresse */
UBYTE bits; /* Bits fuer Subnet-Maske */
MBHEAD *options; /* unbekannte INP-Options in Buffer */
char ssid_high; /* oberer SSID-Bereich */
} NODE;
typedef struct network /* ein Netzwerk */
{
PEER *peertab; /* Segment-Tabelle */
NODE *nodetab; /* Nodes-Tabelle */
LHEAD nodelis; /* sortierte Nodes-Liste */
int max_peers; /* max. Anzahl der Segmente */
int num_peers; /* Anzahl der aktiven Segmente */
int max_nodes; /* max. Anzahl der Nodes */
int num_nodes; /* Anzahl der aktiven Nodes */
} NETWORK;
typedef struct { /* ein Netrom Route Record Eintrag */
#ifdef __WIN32__
UBYTE id[L2IDLEN];
UBYTE lt;
#else
char id[L2IDLEN];
char lt;
#endif
} NRRLIST;
typedef struct ptcent /* Patchcord Liste */
{
ULONG inforx; /* Empfangene Info-Bytes */
ULONG infotx; /* Gesendete Info-Bytes */
ULONG lastrx; /* letzter Stand der Info-Bytes */
ULONG lasttx; /* letzter Stand der Info-Bytes */
ULONG contime; /* Connect-Zeit */
ULONG rxbps; /* Empfangsbaudrate */
ULONG txbps; /* Sendebaudrate */
BOOLEAN recflg; /* Nach einem DISCONNECT reconnect in CCP? */
UID p_uid; /* Partner User-ID */
USRBLK *ublk; /* Zugehoeriger User-Block (p_uid==CCP_USER) */
LINKTYP state; /* Ist das der Uplink? */
UBYTE local;
#define PTC_NORMAL 0
#define PTC_LOCAL 1
} PTCENT; /* es gehoeren immer 2 Eintraege zusammen */
typedef struct cirblk /* Level 3 Kontrollblock */
{
struct cirblk *head; /* doppelt verkettete Liste */
struct cirblk *tail;
char state; /* Status: 0=leer, 1=ConReq, 2=Con, 3=DisReq */
#ifdef __WIN32__
unsigned char idxpar; /* Partner Index */
unsigned char ideige; /* eigener ID */
unsigned char idpart; /* Partner ID */
#else
char idxpar; /* Partner Index */
char ideige; /* eigener ID */
char idpart; /* Partner ID */
#endif /* WIN32 */
char destca[L2IDLEN]; /* Zielrufzeichen (wenn != myid -> LOCAL) */
char downca[L2IDLEN]; /* Downlink Call */
char upcall[L2IDLEN]; /* Uplink Call */
char window; /* Fenstergroesse */
char l4rxvs; /* letzte bestaetigte Framenummer */
char l4vs; /* letzte gesendete Framenummer */
char l4vr; /* letzte erhaltene Framenummer */
char l4rs; /* notwendige Antwort: 0=ACK, 1=NAK, 2=NAKweg*/
UBYTE l4try; /* Transport Versuche */
char l4flag; /* DISC-req, selbst choked, Partner choked */
UWORD RTT; /* Round-Trip-Timer (10 ms) */
UWORD SRTT; /* Smoothed Round Trip Timer */
/* SRTT = (Alpha x SRTT + RTT)/(Alpha + 1) */
char RTTvs; /* RTT gestartet bei dieser Framenummer */
UWORD traout; /* Transport Timeout */
UWORD acktim; /* Acknowledge Timer */
UWORD tranoa; /* no-activity-Timeout */
UWORD numrx; /* empfangene Frames */
UWORD numtx; /* zu sendende Frames */
MBHEAD *fragme; /* Fragment eines kommenden Frames */
char l3node[L2IDLEN]; /* Node-Call fuer diesen Circuit */
LHEAD mbhdrx; /* Listenkopf empfangene Frames */
LHEAD mbhdtx; /* Listenkopf zu sendende Frames */
LHEAD mbhdos; /* Listenkopf: Frames ausserhalb der Folge */
UWORD ll4txNR; /* last level 4 tx NR (on5zs) */
char upnod[L2IDLEN]; /* Uplinkknoten */
char upnodv[L2VLEN+1];/* Digipeaterkette beim Uplink */
#ifdef NEW_L4
UBYTE pid; /* aktuelle PID des Links */
#endif
} CIRBLK;
typedef struct param /* Parameter */
{
UWORD *paradr; /* Adresse des Parameters */
UWORD minimal; /* Minimalwert */
UWORD maximal; /* Maximalwert */
const char *parstr; /* Name des Parameters */
} PARAM;
typedef struct command /* Befehls-Struktur */
{
const char *cmdstr; /* Befehlsname */
void (*cmdfun)(const char *); /* auszufuehrende Funktion */
const char *cmdpar; /* Zeiger auf Parameter */
} COMAND;
/* WICHTIG!: bei ST gibts eine Struktur COMMAND schon (os-headers) */
typedef struct hostcomand /* Funktionen nur fuer Console */
{
const char *cmdstr; /* Funktionsname */
void (*cmdfun)(void); /* auszufuehrende Funktion */
} HOSTCMD;
typedef struct statistik /* Fuer Statistik */
{
char call[L2IDLEN]; /* Rufzeichen */
char viacall[L2IDLEN]; /* falls Call nur via gefuehrt wird */
time_t hfirst; /* zuerst gehoert */
time_t hlast; /* zuletzt gehoert */
/* rx = 0, tx = 1 */
ULONG Bytetotal[2]; /* Anzahl Info+Protokoll Bytes */
ULONG Byteheader[2]; /* Anzahl Protokoll Bytes */
ULONG Ino[2]; /* Anzahl I-Frames */
ULONG RRno[2]; /* Anzahl RR-Frames */
ULONG REJno[2]; /* Anzahl REJ-Frames */
ULONG RNRno[2]; /* Anzahl RNR-Frames */
ULONG SABMno[2];
ULONG DISCno[2];
ULONG UAno[2];
ULONG DMno[2];
ULONG FRMRno[2];
ULONG UIno[2];
ULONG txByterepeated; /* Anzahl wiederholte Infobytes */
} STAT;
typedef struct mhtab { /* MHEARD-Tabelle */
const char *name;
time_t mhstart;
LHEAD heardl;
UWORD max;
UWORD act;
} MHTAB;
typedef struct mheard /* Direkt am Digi-Standort gehoerte */
{ /* L2-Frames */
struct mheard *next; /* doppelt verkettete Liste */
struct mheard *prev;
#ifdef BUFFER_DEBUG
UBYTE owner; /* Muss an 9. Bytestelle stehen */
#endif
time_t heard; /* Zeitpunkt des Empfangs */
ULONG tx_bytes; /* Gesendete Info-Bytes zum User */
ULONG rx_bytes; /* Empfangene Info-Bytes vom User */
ULONG tx_rej; /* wieviele rej gesendet ? */
ULONG rx_rej; /* wieviele empfangen */
UWORD port; /* TNC, an dem das Frames gehoert wurde */
char id[L2IDLEN]; /* Rufzeichen */
char via[L2IDLEN]; /* via einer Station? */
UWORD damawarn; /* Meckermeldungen/DISC's vom Knoten */
#ifdef EAX25
BOOLEAN eax_link; /* Merker: Link unterstuetzt EAX.25 */
#endif
#ifdef MH_LISTE
WORD flag; /* zuletzt gehoertes Rufzeichen/Port */
#endif /* anzeigen. */
} MHEARD;
typedef struct cqbuf /* Eintrag fuer User im CQ-Modus */
{
struct cqbuf *next; /* doppelt verkettete Liste */
struct cqbuf *prev;
#ifdef BUFFER_DEBUG
UBYTE owner; /* Muss an 9. Bytestelle stehen */
#endif
char id[7]; /* Rufzeichen */
UID uid; /* User ID */
UID p_uid;
} CQBUF;
typedef struct portinfo /* Alle L1 Parameter fuer einen Port */
{
char name[11]; /* Pseudoname des Ports */
UWORD speed; /* Port Speed (z.Z. nur fuer Vanessa */
WORD reset_port; /* Diesen Port resetten ? */
UWORD nmblks; /* Anzahl Links auf dem Port */
UWORD nmbstn; /* Anzahl Stationen auf dem Port */
UWORD txdelay; /* Txdelay auf diesem Port */
UWORD mtu; /* Maximum Transmition Units (I-Feld) */
UWORD persistance; /* AUTOPAR: Persistance */
UWORD slottime; /* AUTOPAR: Slottime */
UWORD IRTT; /* AUTOPAR: IRTT (T1) */
UWORD T2; /* AUTOPAR: T2 */
UWORD retry; /* AUTOPAR: retry */
UWORD maxframe; /* MANUELL: maxframe */
#ifdef PORT_MANUELL
UWORD paclen; /* MANUELL: Packetlaenge */
UWORD T3; /* MANUELL: T3_timer */
#endif /* PORT_MANUELL */
#ifdef IPOLL_FRAME
UWORD ipoll_paclen; /* MANUELL: IPOLL-Paecketlaenge */
UWORD ipoll_retry; /* MANUELL: IPOLL-Retry */
#endif /* IPOLL_FRAME */
#ifdef PORT_L2_CONNECT_TIME
UWORD l2_connect_time; /* Intervall fuer SABM */
#endif
#ifdef PORT_L2_CONNECT_RETRY
UWORD l2_connect_retry; /* MANUELL: RETRY fuer LINKAUFBAU */
#endif
#ifdef AUTOROUTING
#define L_NOROUTE 0 /* Auto-Routing ausgeschaltet. */
#define L_THENET 1 /* THENET. */
#define L_INP 2 /* INP. */
#define L_FLEXNET 3 /* FLEXNET. */
#define L_INPFLEX 4 /* INP/THENET/FLEXNET (Vollmodus). */
UWORD poAuto; /* MANUELL: Fixed/Auto-Routing. */
#endif /* AUTOROUTING */
#ifdef THENETMOD
UWORD broadcast; /* MANUELL: fuer Broadcast-Nodes Bake. */
#endif /* THENETMOD */
#ifdef EAX25
UWORD maxframe_eax; /* MANUELL: maxframe bei Extended-AX.25 */
UWORD eax_behaviour; /* MANUELL: Verhalten des EAX.25 */
#endif
#ifdef SETTAILTIME
UWORD tailtime; /* MANUELL: tailtime */
#endif
UWORD l1mode; /* Mode-Flags */
/* Masken fuer den L1-Mode-Parameter */
#ifdef PORT_SYNRONATION
#define MODE_ss 0x0008 /* Port Synronation */
#endif
#ifdef PORT_SUSPEND
#define MODE_l 0x0004 /* Port sperren */
#endif
#define MODE_m 0x0200 /* Multibaud Flag (Kanalkopplung) */
#define MODE_e 0x0100 /* externer Takt Vanessa */
#define MODE_d 0x0080 /* Vollduplex */
#define MODE_r 0x0040 /* externer RX-Takt */
#define MODE_t 0x0020 /* externer TX-Takt */
#define MODE_z 0x0010 /* NRZ statt NRZI bei SCC */
#define MODE_c 0x0002 /* CRC bei KISS, DCD bei SER12 */
#define MODE_off 0x0001 /* Special: Wenn 1, Kanal abgeschaltet */
#define CLR_L1MODE(port) portpar[port].l1mode = 0
#define SET_L1MODE(port,mode) portpar[port].l1mode |= mode
UWORD l2mode; /* Mode-Flags */
/* Masken fuer den L2-Mode-Parameter */
#define MODE_am 0x8000 /* Maxframe-Automatik */
#define MODE_ds 0x4000 /* DAMA-Slave */
#define MODE_h 0x2000 /* MH Flag (an=HEARD fuehren/aus) */
#define MODE_s 0x1000 /* SYSOP Flag (an=nur mit PRIV/aus) */
#define MODE_a 0x0800 /* DAMA Flag (an/aus) */
#define MODE_x 0x0400 /* CTEXT Flag (an/aus) */
#ifdef EXPERTPARAMETER
UWORD l2autoparam; /* mode flags */
/* Masken fuer Autoparameter */
#define MODE_apers 0x8000 /* Persistence-Automatik */
#define MODE_aslot 0x4000 /* Slottime-Automatik */
#define MODE_aIRTT 0x2000 /* IRTT-Automatik */
#define MODE_aT2 0x1000 /* T2-Automatik */
#define MODE_aretry 0x0800 /* Retry-Automatik */
#endif
UWORD l1_tx_timer; /* Verzoegerung fuer Sendertastung */
int dch; /* Dama-Kanal */
int major;
#define NO_MAJOR 0
int minor;
#define NO_MINOR (-1)
#ifdef DAMASLAVE
UWORD damaok; /* != 0 ->Port ist DAMA-Slave */
UWORD sendok;
#endif
#ifdef USERMAXCON /* != 0 ->max. Anzahl simultaner Connects */
int maxcon; /* eines Users (fuer alle User gleich) */
#endif
} PORTINFO;
#define portenabled(port) (portpar[port].major != NO_MAJOR)
#define dama(port) (portpar[port].l2mode & MODE_a)
#ifdef DAMASLAVE
#define damaslave(port) (portpar[port].l2mode & MODE_ds)
#define damaslaveon(port) (damaslave(port) && (portpar[port].damaok != 0))
#endif
#define updmheard(port) (portpar[port].l2mode & MODE_h)
#define sysoponly(port) (portpar[port].l2mode & MODE_s)
#define ctextenabled(port) (portpar[port].l2mode & MODE_x)
#define automaxframe(port) (portpar[port].l2mode & MODE_am)
#define fullduplex(port) (portpar[port].l1mode & MODE_d)
#define extclock(port) (portpar[port].l1mode & MODE_e)
#define multibaud(port) (portpar[port].l1mode & MODE_m)
#ifdef PORT_SUSPEND
#define port_suspend_enabled(port) (portpar[port].l1mode & MODE_l)
#endif
#ifdef PORT_SYNRONATION
#define port_synronation_enabled(port) (portpar[port].l1mode & MODE_ss)
#endif
typedef struct l1modetab {
char ch;
int mode;
} L1MODETAB;
#define DCDFLAG 0x1 /* Kanal-Zustaende fuer iscd() */
#define PTTFLAG 0x2
#define RXBFLAG 0x4
#define TXBFLAG 0x8
#define L1CRES 1 /* Requests fuer l1_ctl() */
#define L1CCMD 2
#define L1CTST 3
typedef struct portcmd /* Port-Befehls-Struktur */
{
const char *cmdstr; /* Befehlsname */
const char cmdpar; /* Zeiger auf Parameter DB7KG */
} PORTCMD;
typedef struct portstat
{
UWORD reset_count; /* Anzahl der Resets ? */
ULONG rx_bytes; /* Anzahl bisher empfangener Bytes */
ULONG tx_bytes; /* Anzahl bisher gesendeter Bytes */
ULONG last_rx; /* letzter Zaehlerstand empfangene Bytes */
ULONG last_tx; /* letzter Zaehlerstand gesendeter Bytes */
ULONG rx_baud; /* Empfangsbaudrate (MAC) */
ULONG tx_baud; /* Sendebaudrate (MAC) */
ULONG rx_overhead; /* empfangener Protokolloverhead */
ULONG tx_overhead; /* gesendeter Protokolloverhead */
UWORD invalid[4]; /* Invalid Frames + 1 in Reserve */
} PORTSTAT;
#define INV_FRAME(port, type) portstat[port].invalid[type]++
#define INVF_ADR 0 /* Addressfehler (L2) */
#define INVF_ALN 1 /* Addressfeldlaenge (L2) */
#define INVF_CTL 2 /* Controlfeldfehler (L2) */
typedef struct major { /* Layer 1 Geraetestruktur */
char *name;
int (*istome)(int, char *);
void (*init)(void);
void (*exit)(void);
void (*handle)(void);
void (*ctl)(int, int);
WORD (*dcd)(PORTINFO *);
int (*attach)(int, int, BOOLEAN);
int (*detach)(int);
void (*info)(int, int, MBHEAD *);
void (*timer)(UWORD);
#define HW_INF_IDENT 1
#define HW_INF_INFO 2
#define HW_INF_STAT 3
#define HW_INF_CLEAR 4
} MAJOR;
typedef struct devtable { /* Layer 1 Geraeteliste */
char *name;
int major; /* Major des Treiber nach der reg. */
int (*reg_func)(void);
} DEVTABLE;
#define REGISTER_DEVICE(a,b) {a,0,b}
typedef struct suspend /* Liste gesperrter Rufzeichen */
{
char call[L2CALEN]; /* gesperrtes Rufzeichen */
UWORD port; /* Port auf dem gesperrt ist */
UBYTE okcount; /* Anzahl zulaessiger Links */
} SUSPEND;
typedef struct bake
{
char beades[L2IDLEN]; /* Zielrufzeichen fuer Bake */
char beadil[L2VLEN+1]; /* Digiliste fuer Bake */
WORD interval; /* Zeitinterval in Minuten */
WORD beatim; /* Minuten-Zaehler */
WORD telemetrie; /* Telemetrie mitsenden */
char text[80]; /* Bakentext */
} BEACON;
typedef struct
{
char call[L2IDLEN]; /* Rufzeichen incl. SSID */
char via[L2VLEN+1]; /* VIA-Pfad */
WORD port; /* Port */
#ifdef EAX25
BOOLEAN eax; /* Flag: EAX-Verbindung */
#endif
char typ;
char nbrcal[L2IDLEN];
NODE *np;
UID uid;
} DEST;
typedef union max_buffer /* sizeof() -> groesster Buffer */
{
MB mb;
MBHEAD mbhead;
MHEARD mheard;
USRBLK usrblk;
L2LINK l2link;
} MAX_BUFFER;
#ifdef BUFFER_DEBUG
#define sizeof_MBDATA (sizeof(MAX_BUFFER)-sizeof(UBYTE)-sizeof(void*)*2)
#else
#define sizeof_MBDATA (sizeof(MAX_BUFFER)-sizeof(void*)*2)
#endif
#ifdef GRAPH
typedef struct tgraphpeak
{
ULONG max;
ULONG ave;
ULONG min;
} TGRAPHPEAK;
typedef struct tgraphelement
{
TGRAPHPEAK hour[GRAPH_STD_ELEMENTS];
TGRAPHPEAK day [GRAPH_DAY_ELEMENTS];
TGRAPHPEAK week[GRAPH_WEK_ELEMENTS];
} TGRAPHELEMENT;
#ifdef PORTGRAPH
typedef struct tportgraphpeak
{
ULONG rx;
ULONG tx;
} TPORTGRAPHPEAK;
typedef struct tportgraphelement
{
TPORTGRAPHPEAK hour[GRAPH_STD_ELEMENTS];
TPORTGRAPHPEAK day [GRAPH_DAY_ELEMENTS];
TPORTGRAPHPEAK week[GRAPH_WEK_ELEMENTS];
} TPORTGRAPHELEMENT;
#endif
typedef struct tgraph
{
BOOLEAN enabled;
int hour_pos; /* Position des aktuellen Elementes */
int day_pos;
int week_pos;
int hour_slot; /* Anzahl der gespeicherten Werte im akt. Element */
int day_slot;
int week_slot;
TGRAPHELEMENT circuit;
TGRAPHELEMENT freebuffer;
TGRAPHELEMENT l2link;
TGRAPHELEMENT node;
TGRAPHELEMENT roundpsec;
TGRAPHELEMENT throughput;
#ifdef PORTGRAPH
TPORTGRAPHELEMENT sabm[L2PNUM];
TPORTGRAPHELEMENT disc[L2PNUM];
TPORTGRAPHELEMENT dm[L2PNUM];
TPORTGRAPHELEMENT info[L2PNUM];
TPORTGRAPHELEMENT reject[L2PNUM];
TPORTGRAPHELEMENT frmr[L2PNUM];
#endif
} TGRAPH;
#endif /* ifdef graph */
#ifdef MC68302
struct ftime
{
unsigned ft_tsec: 5;
unsigned ft_min: 6;
unsigned ft_hour: 5;
unsigned ft_year: 7;
unsigned ft_month: 4;
unsigned ft_day: 5;
};
#endif
#ifdef ALIASCMD
#define MAXALIASLEN 8
#define MAXALIASCMDLEN 16
typedef struct cmdalias {
char alias[MAXALIASLEN + 1]; /* Alias */
char cmd[MAXALIASCMDLEN + 1]; /* auszufuehrendes Kommando */
struct cmdalias *next; /* pointer to next entry */
} CMDALIAS;
#endif
#endif
/* End of include/typedef.h */