alias_local.h revision 26026
1/* -*- mode: c; tab-width: 3; c-basic-offset: 3; -*-
2    Alias_local.h contains the function prototypes for alias.c,
3    alias_db.c, alias_util.c and alias_ftp.c, alias_irc.c (as well
4    as any future add-ons).  It is intended to be used only within
5    the aliasing software.  Outside world interfaces are defined
6    in alias.h
7
8    This software is placed into the public domain with no restrictions
9    on its distribution.
10
11    Initial version:  August, 1996  (cjm)
12
13     <updated several times by original author and Eivind Eiklund>
14*/
15
16extern int packetAliasMode;
17
18struct alias_link;
19
20/* General utilities */
21u_short IpChecksum(struct ip *);
22u_short TcpChecksum(struct ip *);
23void DifferentialChecksum(u_short *, u_short *, u_short *, int);
24
25/* Internal data access */
26struct alias_link *
27FindIcmpIn(struct in_addr, struct in_addr, u_short);
28
29struct alias_link *
30FindIcmpOut(struct in_addr, struct in_addr, u_short);
31
32struct alias_link *
33FindFragmentIn1(struct in_addr, struct in_addr, u_short);
34
35struct alias_link *
36FindFragmentIn2(struct in_addr, struct in_addr, u_short);
37
38struct alias_link *
39AddFragmentPtrLink(struct in_addr, u_short);
40
41struct alias_link *
42FindFragmentPtr(struct in_addr, u_short);
43
44struct alias_link *
45FindUdpTcpIn (struct in_addr, struct in_addr, u_short, u_short, u_char);
46
47struct alias_link *
48FindUdpTcpOut(struct in_addr, struct in_addr, u_short, u_short, u_char);
49
50struct in_addr
51FindOriginalAddress(struct in_addr);
52
53struct in_addr
54FindAliasAddress(struct in_addr);
55
56
57/* External data access/modification */
58void GetFragmentAddr(struct alias_link *, struct in_addr *);
59void SetFragmentAddr(struct alias_link *, struct in_addr);
60void GetFragmentPtr(struct alias_link *, char **);
61void SetFragmentPtr(struct alias_link *, char *);
62void SetStateIn(struct alias_link *, int);
63void SetStateOut(struct alias_link *, int);
64int GetStateIn(struct alias_link *);
65int GetStateOut(struct alias_link *);
66struct in_addr GetOriginalAddress(struct alias_link *);
67struct in_addr GetDestAddress(struct alias_link *);
68struct in_addr GetAliasAddress(struct alias_link *);
69struct in_addr GetDefaultAliasAddress(void);
70void SetDefaultAliasAddress(struct in_addr);
71void SetDefaultTargetAddress(struct in_addr);
72void ClearDefaultTargetAddress(void);
73u_short GetOriginalPort(struct alias_link *);
74u_short GetAliasPort(struct alias_link *);
75void SetAckModified(struct alias_link *);
76int GetAckModified(struct alias_link *);
77int GetDeltaAckIn(struct ip *, struct alias_link *);
78int GetDeltaSeqOut(struct ip *, struct alias_link *);
79void AddSeq(struct ip *, struct alias_link *, int);
80void SetExpire(struct alias_link *, int);
81void ClearNewDefaultLink(void);
82int CheckNewDefaultLink(void);
83
84/* Housekeeping function */
85void HouseKeeping(void);
86
87/* Tcp specfic routines */
88/*lint -save -library Suppress flexelint warnings */
89void AliasHandleFtpOut(struct ip *, struct alias_link *, int);
90void AliasHandleIrcOut(struct ip *pip, struct alias_link *link, int maxsize );
91/*lint -restore */
92