alias_local.h revision 32377
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#ifndef ALIAS_LOCAL_H
16#define ALIAS_LOCAL_H
17
18extern int packetAliasMode;
19
20struct alias_link;
21
22/* General utilities */
23u_short IpChecksum(struct ip *);
24u_short TcpChecksum(struct ip *);
25void DifferentialChecksum(u_short *, u_short *, u_short *, int);
26
27/* Internal data access */
28struct alias_link *
29FindIcmpIn(struct in_addr, struct in_addr, u_short);
30
31struct alias_link *
32FindIcmpOut(struct in_addr, struct in_addr, u_short);
33
34struct alias_link *
35FindFragmentIn1(struct in_addr, struct in_addr, u_short);
36
37struct alias_link *
38FindFragmentIn2(struct in_addr, struct in_addr, u_short);
39
40struct alias_link *
41AddFragmentPtrLink(struct in_addr, u_short);
42
43struct alias_link *
44FindFragmentPtr(struct in_addr, u_short);
45
46struct alias_link *
47FindUdpTcpIn (struct in_addr, struct in_addr, u_short, u_short, u_char);
48
49struct alias_link *
50FindUdpTcpOut(struct in_addr, struct in_addr, u_short, u_short, u_char);
51
52struct in_addr
53FindOriginalAddress(struct in_addr);
54
55struct in_addr
56FindAliasAddress(struct in_addr);
57
58/* External data access/modification */
59void GetFragmentAddr(struct alias_link *, struct in_addr *);
60void SetFragmentAddr(struct alias_link *, struct in_addr);
61void GetFragmentPtr(struct alias_link *, char **);
62void SetFragmentPtr(struct alias_link *, char *);
63void SetStateIn(struct alias_link *, int);
64void SetStateOut(struct alias_link *, int);
65int GetStateIn(struct alias_link *);
66int GetStateOut(struct alias_link *);
67struct in_addr GetOriginalAddress(struct alias_link *);
68struct in_addr GetDestAddress(struct alias_link *);
69struct in_addr GetAliasAddress(struct alias_link *);
70struct in_addr GetDefaultAliasAddress(void);
71void SetDefaultAliasAddress(struct in_addr);
72u_short GetOriginalPort(struct alias_link *);
73u_short GetAliasPort(struct alias_link *);
74void SetAckModified(struct alias_link *);
75int GetAckModified(struct alias_link *);
76int GetDeltaAckIn(struct ip *, struct alias_link *);
77int GetDeltaSeqOut(struct ip *, struct alias_link *);
78void AddSeq(struct ip *, struct alias_link *, int);
79void SetExpire(struct alias_link *, int);
80void ClearCheckNewLink(void);
81void PunchFWHole(struct alias_link *);
82
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
92enum alias_tcp_state {
93    ALIAS_TCP_STATE_NOT_CONNECTED,
94    ALIAS_TCP_STATE_CONNECTED,
95    ALIAS_TCP_STATE_DISCONNECTED
96};
97
98/*lint -restore */
99#endif /* defined(ALIAS_LOCAL_H) */
100