alias_local.h revision 36711
155714Skris/* -*- mode: c; tab-width: 3; c-basic-offset: 3; -*-
255714Skris    Alias_local.h contains the function prototypes for alias.c,
355714Skris    alias_db.c, alias_util.c and alias_ftp.c, alias_irc.c (as well
455714Skris    as any future add-ons).  It is intended to be used only within
555714Skris    the aliasing software.  Outside world interfaces are defined
655714Skris    in alias.h
755714Skris
8280304Sjkim    This software is placed into the public domain with no restrictions
955714Skris    on its distribution.
1055714Skris
1155714Skris    Initial version:  August, 1996  (cjm)
1255714Skris
1355714Skris     <updated several times by original author and Eivind Eiklund>
1455714Skris*/
15280304Sjkim#ifndef ALIAS_LOCAL_H
1655714Skris#define ALIAS_LOCAL_H
1755714Skris
1855714Skrisextern int packetAliasMode;
1955714Skris
2055714Skrisstruct alias_link;
2155714Skris
22280304Sjkim/* General utilities */
2355714Skrisu_short IpChecksum(struct ip *);
2455714Skrisu_short TcpChecksum(struct ip *);
2555714Skrisvoid DifferentialChecksum(u_short *, u_short *, u_short *, int);
2655714Skris
2755714Skris/* Internal data access */
2855714Skrisstruct alias_link *
2955714SkrisFindIcmpIn(struct in_addr, struct in_addr, u_short);
3055714Skris
3155714Skrisstruct alias_link *
3255714SkrisFindIcmpOut(struct in_addr, struct in_addr, u_short);
3355714Skris
3455714Skrisstruct alias_link *
3555714SkrisFindFragmentIn1(struct in_addr, struct in_addr, u_short);
3655714Skris
37280304Sjkimstruct alias_link *
3855714SkrisFindFragmentIn2(struct in_addr, struct in_addr, u_short);
3955714Skris
40280304Sjkimstruct alias_link *
4155714SkrisAddFragmentPtrLink(struct in_addr, u_short);
4255714Skris
4355714Skrisstruct alias_link *
4455714SkrisFindFragmentPtr(struct in_addr, u_short);
4555714Skris
4655714Skrisstruct alias_link *
4755714SkrisFindUdpTcpIn (struct in_addr, struct in_addr, u_short, u_short, u_char);
4855714Skris
4955714Skrisstruct alias_link *
5055714SkrisFindUdpTcpOut(struct in_addr, struct in_addr, u_short, u_short, u_char);
5155714Skris
52280304Sjkimstruct in_addr
5355714SkrisFindOriginalAddress(struct in_addr);
5455714Skris
5555714Skrisstruct in_addr
5655714SkrisFindAliasAddress(struct in_addr);
5755714Skris
5855714Skris/* External data access/modification */
5955714Skrisvoid GetFragmentAddr(struct alias_link *, struct in_addr *);
6055714Skrisvoid SetFragmentAddr(struct alias_link *, struct in_addr);
6155714Skrisvoid GetFragmentPtr(struct alias_link *, char **);
62109998Smarkmvoid SetFragmentPtr(struct alias_link *, char *);
63280304Sjkimvoid SetStateIn(struct alias_link *, int);
6455714Skrisvoid SetStateOut(struct alias_link *, int);
6555714Skrisint GetStateIn(struct alias_link *);
6655714Skrisint GetStateOut(struct alias_link *);
6755714Skrisstruct in_addr GetOriginalAddress(struct alias_link *);
6855714Skrisstruct in_addr GetDestAddress(struct alias_link *);
69238405Sjkimstruct in_addr GetAliasAddress(struct alias_link *);
70280304Sjkimstruct in_addr GetDefaultAliasAddress(void);
71280304Sjkimvoid SetDefaultAliasAddress(struct in_addr);
72280304Sjkimu_short GetOriginalPort(struct alias_link *);
73280304Sjkimu_short GetAliasPort(struct alias_link *);
74109998Smarkmvoid SetAckModified(struct alias_link *);
75280304Sjkimint GetAckModified(struct alias_link *);
7655714Skrisint GetDeltaAckIn(struct ip *, struct alias_link *);
77280304Sjkimint GetDeltaSeqOut(struct ip *, struct alias_link *);
78109998Smarkmvoid AddSeq(struct ip *, struct alias_link *, int);
79280304Sjkimvoid SetExpire(struct alias_link *, int);
80280304Sjkimvoid ClearCheckNewLink(void);
8155714Skris#ifndef NO_FW_PUNCH
82280304Sjkimvoid PunchFWHole(struct alias_link *);
83280304Sjkim#endif
84280304Sjkim
8555714Skris
86280304Sjkim/* Housekeeping function */
87280304Sjkimvoid HouseKeeping(void);
88
89/* Tcp specfic routines */
90/*lint -save -library Suppress flexelint warnings */
91void AliasHandleFtpOut(struct ip *, struct alias_link *, int);
92void AliasHandleIrcOut(struct ip *pip, struct alias_link *link, int maxsize );
93void AliasHandleUdpNbt(struct ip *, struct alias_link *, struct in_addr *, u_short);
94void AliasHandleUdpNbtNS(struct ip *, struct alias_link *, struct in_addr *, u_short *, struct in_addr *, u_short *);
95
96
97
98enum alias_tcp_state {
99    ALIAS_TCP_STATE_NOT_CONNECTED,
100    ALIAS_TCP_STATE_CONNECTED,
101    ALIAS_TCP_STATE_DISCONNECTED
102};
103
104/*lint -restore */
105#endif /* defined(ALIAS_LOCAL_H) */
106