/* $Id: seenby.h,v 1.10.2.4 2004/11/18 22:50:39 d_sergienko Exp $ */

/*****************************************************************************
 * HPT --- FTN NetMail/EchoMail Tosser
 *****************************************************************************
 * Copyright (C) 1997-1999
 *
 * Matthias Tichy
 *
 * Fido:     2:2433/1245 2:2433/1247 2:2432/605.14
 * Internet: mtt@tichy.de
 *
 * Grimmestr. 12         Buchholzer Weg 4
 * 33098 Paderborn       40472 Duesseldorf
 * Germany               Germany
 *
 * This file is part of HPT.
 *
 * HPT is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2, or (at your option) any
 * later version.
 *
 * HPT is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with HPT; see the file COPYING.  If not, write to the Free
 * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 *****************************************************************************/
#ifndef SEENBY_H
#define SEENBY_H
#include <fidoconf/typesize.h>

struct seenBy {
   UINT16 net, node;
};

#define MAX_ZONE 32768

typedef struct seenBy s_seenBy;

struct seenByZone {
    s_seenBy *seenByArray;
    UINT16 seenByCount;
};

typedef struct seenByZone s_seenByZone;
extern s_seenByZone seenBysZone[MAX_ZONE];

void sortSeenBys(s_seenBy *seenBys, UINT16 count);

char *createControlText(s_seenBy seenBys[], UINT16 seenByCount, char *lineHeading);

void createSeenByArrayFromMsg(s_message *msg, s_seenBy
							  **seenBys, UINT16 *seenByCount);

void createPathArrayFromMsg(s_message *msg, s_seenBy **seenBys, UINT16 *seenByCount);


void zero_seenBysZone();
void print_seenBysZone();
void free_seenBysZone();
void attachTo_seenBysZone(UINT16 zone, s_seenBy **seenBys, UINT16 count);
void addTo_seenByZone(UINT16 zone, UINT16 net, UINT16 node);
void deleteFrom_seenByZone(UINT16 zone, UINT16 net, UINT16 node);
void createNewLinksArray(s_area *echo, s_arealink ***newLinks,
                         hs_addr pktOrigAddr, UINT16 rsb);
void addLinksTo_seenByZone(s_arealink **newLinks, UINT16 count);
void addAkasTo_seenByZone();
void processAutoAdd_seenByZone(s_area *echo);
void cleanDupes_seenByZone();

#endif
