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 18 extern int packetAliasMode; 19 20 struct alias_link; 21 22 /* General utilities */ 23 u_short IpChecksum(struct ip *); 24 u_short TcpChecksum(struct ip *); 25 void DifferentialChecksum(u_short *, u_short *, u_short *, int); 26 27 /* Internal data access */ 28 struct alias_link * 29 FindIcmpIn(struct in_addr, struct in_addr, u_short); 30 31 struct alias_link * 32 FindIcmpOut(struct in_addr, struct in_addr, u_short); 33 34 struct alias_link * 35 FindFragmentIn1(struct in_addr, struct in_addr, u_short); 36 37 struct alias_link * 38 FindFragmentIn2(struct in_addr, struct in_addr, u_short); 39 40 struct alias_link * 41 AddFragmentPtrLink(struct in_addr, u_short); 42 43 struct alias_link * 44 FindFragmentPtr(struct in_addr, u_short); 45 46 struct alias_link * 47 FindUdpTcpIn (struct in_addr, struct in_addr, u_short, u_short, u_char); 48 49 struct alias_link * 50 FindUdpTcpOut(struct in_addr, struct in_addr, u_short, u_short, u_char); 51 52 struct in_addr 53 FindOriginalAddress(struct in_addr); 54 55 struct in_addr 56 FindAliasAddress(struct in_addr); 57 58 /* External data access/modification */ 59 void GetFragmentAddr(struct alias_link *, struct in_addr *); 60 void SetFragmentAddr(struct alias_link *, struct in_addr); 61 void GetFragmentPtr(struct alias_link *, char **); 62 void SetFragmentPtr(struct alias_link *, char *); 63 void SetStateIn(struct alias_link *, int); 64 void SetStateOut(struct alias_link *, int); 65 int GetStateIn(struct alias_link *); 66 int GetStateOut(struct alias_link *); 67 struct in_addr GetOriginalAddress(struct alias_link *); 68 struct in_addr GetDestAddress(struct alias_link *); 69 struct in_addr GetAliasAddress(struct alias_link *); 70 struct in_addr GetDefaultAliasAddress(void); 71 void SetDefaultAliasAddress(struct in_addr); 72 u_short GetOriginalPort(struct alias_link *); 73 u_short GetAliasPort(struct alias_link *); 74 void SetAckModified(struct alias_link *); 75 int GetAckModified(struct alias_link *); 76 int GetDeltaAckIn(struct ip *, struct alias_link *); 77 int GetDeltaSeqOut(struct ip *, struct alias_link *); 78 void AddSeq(struct ip *, struct alias_link *, int); 79 void SetExpire(struct alias_link *, int); 80 void ClearCheckNewLink(void); 81 void PunchFWHole(struct alias_link *); 82 83 84 /* Housekeeping function */ 85 void HouseKeeping(void); 86 87 /* Tcp specfic routines */ 88 /*lint -save -library Suppress flexelint warnings */ 89 void AliasHandleFtpOut(struct ip *, struct alias_link *, int); 90 void AliasHandleIrcOut(struct ip *pip, struct alias_link *link, int maxsize ); 91 92 enum 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