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