alias_local.h revision 74778
174778Sbrian/* 274778Sbrian * Alias_local.h contains the function prototypes for alias.c, 374778Sbrian * alias_db.c, alias_util.c and alias_ftp.c, alias_irc.c (as well 474778Sbrian * as any future add-ons). It also includes macros, globals and 574778Sbrian * struct definitions shared by more than one alias*.c file. 674778Sbrian * 774778Sbrian * This include file is intended to be used only within the aliasing 874778Sbrian * software. Outside world interfaces are defined in alias.h 974778Sbrian * 1074778Sbrian * This software is placed into the public domain with no restrictions 1174778Sbrian * on its distribution. 1274778Sbrian * 1374778Sbrian * Initial version: August, 1996 (cjm) 1474778Sbrian * 1574778Sbrian * <updated several times by original author and Eivind Eklund> 1674778Sbrian * 1774778Sbrian * $FreeBSD: head/sys/netinet/libalias/alias_local.h 74778 2001-03-25 12:05:10Z brian $ 1874778Sbrian */ 1926026Sbrian 2074778Sbrian#ifndef _ALIAS_LOCAL_H_ 2174778Sbrian#define _ALIAS_LOCAL_H_ 2244307Sbrian 2374778Sbrian/* Macros */ 2426026Sbrian 2544307Sbrian/* 2674778Sbrian * The following macro is used to update an 2774778Sbrian * internet checksum. "delta" is a 32-bit 2874778Sbrian * accumulation of all the changes to the 2974778Sbrian * checksum (adding in new 16-bit words and 3074778Sbrian * subtracting out old words), and "cksum" 3174778Sbrian * is the checksum value to be updated. 3244307Sbrian */ 3374778Sbrian#define ADJUST_CHECKSUM(acc, cksum) \ 3474778Sbrian do { \ 3574778Sbrian acc += cksum; \ 3674778Sbrian if (acc < 0) { \ 3774778Sbrian acc = -acc; \ 3874778Sbrian acc = (acc >> 16) + (acc & 0xffff); \ 3974778Sbrian acc += acc >> 16; \ 4074778Sbrian cksum = (u_short) ~acc; \ 4174778Sbrian } else { \ 4274778Sbrian acc = (acc >> 16) + (acc & 0xffff); \ 4374778Sbrian acc += acc >> 16; \ 4474778Sbrian cksum = (u_short) acc; \ 4574778Sbrian } \ 4674778Sbrian } while (0) 4744307Sbrian 4874778Sbrian/* Globals */ 4944307Sbrian 5026026Sbrianextern int packetAliasMode; 5126026Sbrian 5274778Sbrian/* Prototypes */ 5326026Sbrian 5426026Sbrian/* General utilities */ 5574778Sbrianu_short IpChecksum(struct ip *_pip); 5674778Sbrianu_short TcpChecksum(struct ip *_pip); 5774778Sbrianvoid DifferentialChecksum(u_short *_cksum, u_short *_new, u_short *_old, 5874778Sbrian int _n); 5926026Sbrian 6026026Sbrian/* Internal data access */ 6126026Sbrianstruct alias_link * 6274778Sbrian FindIcmpIn(struct in_addr _dst_addr, struct in_addr _alias_addr, 6374778Sbrian u_short _id_alias, int _create); 6426026Sbrianstruct alias_link * 6574778Sbrian FindIcmpOut(struct in_addr _src_addr, struct in_addr _dst_addr, 6674778Sbrian u_short _id, int _create); 6726026Sbrianstruct alias_link * 6874778Sbrian FindFragmentIn1(struct in_addr _dst_addr, struct in_addr _alias_addr, 6974778Sbrian u_short _ip_id); 7026026Sbrianstruct alias_link * 7174778Sbrian FindFragmentIn2(struct in_addr _dst_addr, struct in_addr _alias_addr, 7274778Sbrian u_short _ip_id); 7326026Sbrianstruct alias_link * 7474778Sbrian AddFragmentPtrLink(struct in_addr _dst_addr, u_short _ip_id); 7526026Sbrianstruct alias_link * 7674778Sbrian FindFragmentPtr(struct in_addr _dst_addr, u_short _ip_id); 7726026Sbrianstruct alias_link * 7874778Sbrian FindProtoIn(struct in_addr _dst_addr, struct in_addr _alias_addr, 7974778Sbrian u_char _proto); 8059356Srustruct alias_link * 8174778Sbrian FindProtoOut(struct in_addr _src_addr, struct in_addr _dst_addr, 8274778Sbrian u_char _proto); 8359356Srustruct alias_link * 8474778Sbrian FindUdpTcpIn(struct in_addr _dst_addr, struct in_addr _alias_addr, 8574778Sbrian u_short _dst_port, u_short _alias_port, u_char _proto, int _create); 8626026Sbrianstruct alias_link * 8774778Sbrian FindUdpTcpOut(struct in_addr _src_addr, struct in_addr _dst_addr, 8874778Sbrian u_short _src_port, u_short _dst_port, u_char _proto, int _create); 8961861Srustruct alias_link * 9074778Sbrian AddPptp(struct in_addr _src_addr, struct in_addr _dst_addr, 9174778Sbrian struct in_addr _alias_addr, u_int16_t _src_call_id); 9261861Srustruct alias_link * 9374778Sbrian FindPptpOutByCallId(struct in_addr _src_addr, 9474778Sbrian struct in_addr _dst_addr, u_int16_t _src_call_id); 9563899Sarchiestruct alias_link * 9674778Sbrian FindPptpInByCallId(struct in_addr _dst_addr, 9774778Sbrian struct in_addr _alias_addr, u_int16_t _dst_call_id); 9867966Srustruct alias_link * 9974778Sbrian FindPptpOutByPeerCallId(struct in_addr _src_addr, 10074778Sbrian struct in_addr _dst_addr, u_int16_t _dst_call_id); 10167966Srustruct alias_link * 10274778Sbrian FindPptpInByPeerCallId(struct in_addr _dst_addr, 10374778Sbrian struct in_addr _alias_addr, u_int16_t _alias_call_id); 10467966Srustruct alias_link * 10574778Sbrian FindRtspOut(struct in_addr _src_addr, struct in_addr _dst_addr, 10674778Sbrian u_short _src_port, u_short _alias_port, u_char _proto); 10726026Sbrianstruct in_addr 10874778Sbrian FindOriginalAddress(struct in_addr _alias_addr); 10926026Sbrianstruct in_addr 11074778Sbrian FindAliasAddress(struct in_addr _original_addr); 11126026Sbrian 11226026Sbrian/* External data access/modification */ 11374778Sbrianint FindNewPortGroup(struct in_addr _dst_addr, struct in_addr _alias_addr, 11474778Sbrian u_short _src_port, u_short _dst_port, u_short _port_count, 11574778Sbrian u_char _proto, u_char _align); 11674778Sbrianvoid GetFragmentAddr(struct alias_link *_link, struct in_addr *_src_addr); 11774778Sbrianvoid SetFragmentAddr(struct alias_link *_link, struct in_addr _src_addr); 11874778Sbrianvoid GetFragmentPtr(struct alias_link *_link, char **_fptr); 11974778Sbrianvoid SetFragmentPtr(struct alias_link *_link, char *fptr); 12074778Sbrianvoid SetStateIn(struct alias_link *_link, int _state); 12174778Sbrianvoid SetStateOut(struct alias_link *_link, int _state); 12274778Sbrianint GetStateIn(struct alias_link *_link); 12374778Sbrianint GetStateOut(struct alias_link *_link); 12474778Sbrianstruct in_addr 12574778Sbrian GetOriginalAddress(struct alias_link *_link); 12674778Sbrianstruct in_addr 12774778Sbrian GetDestAddress(struct alias_link *_link); 12874778Sbrianstruct in_addr 12974778Sbrian GetAliasAddress(struct alias_link *_link); 13074778Sbrianstruct in_addr 13174778Sbrian GetDefaultAliasAddress(void); 13274778Sbrianvoid SetDefaultAliasAddress(struct in_addr _alias_addr); 13374778Sbrianu_short GetOriginalPort(struct alias_link *_link); 13474778Sbrianu_short GetAliasPort(struct alias_link *_link); 13574778Sbrianstruct in_addr 13674778Sbrian GetProxyAddress(struct alias_link *_link); 13774778Sbrianvoid SetProxyAddress(struct alias_link *_link, struct in_addr _addr); 13874778Sbrianu_short GetProxyPort(struct alias_link *_link); 13974778Sbrianvoid SetProxyPort(struct alias_link *_link, u_short _port); 14074778Sbrianvoid SetAckModified(struct alias_link *_link); 14174778Sbrianint GetAckModified(struct alias_link *_link); 14274778Sbrianint GetDeltaAckIn(struct ip *_pip, struct alias_link *_link); 14374778Sbrianint GetDeltaSeqOut(struct ip *_pip, struct alias_link *_link); 14474778Sbrianvoid AddSeq(struct ip *_pip, struct alias_link *_link, int _delta); 14574778Sbrianvoid SetExpire(struct alias_link *_link, int _expire); 14674778Sbrianvoid ClearCheckNewLink(void); 14774778Sbrianvoid SetLastLineCrlfTermed(struct alias_link *_link, int _yes); 14874778Sbrianint GetLastLineCrlfTermed(struct alias_link *_link); 14974778Sbrianvoid SetDestCallId(struct alias_link *_link, u_int16_t _cid); 15036711Sbrian#ifndef NO_FW_PUNCH 15174778Sbrianvoid PunchFWHole(struct alias_link *_link); 15236711Sbrian#endif 15326026Sbrian 15426026Sbrian/* Housekeeping function */ 15574778Sbrianvoid HouseKeeping(void); 15626026Sbrian 15726026Sbrian/* Tcp specfic routines */ 15874778Sbrian/* lint -save -library Suppress flexelint warnings */ 15944307Sbrian 16044307Sbrian/* FTP routines */ 16174778Sbrianvoid AliasHandleFtpOut(struct ip *_pip, struct alias_link *_link, 16274778Sbrian int _maxpacketsize); 16344307Sbrian 16444307Sbrian/* IRC routines */ 16574778Sbrianvoid AliasHandleIrcOut(struct ip *_pip, struct alias_link *_link, 16674778Sbrian int _maxsize); 16744307Sbrian 16863899Sarchie/* RTSP routines */ 16974778Sbrianvoid AliasHandleRtspOut(struct ip *_pip, struct alias_link *_link, 17074778Sbrian int _maxpacketsize); 17163899Sarchie 17261861Sru/* PPTP routines */ 17374778Sbrianvoid AliasHandlePptpOut(struct ip *_pip, struct alias_link *_link); 17474778Sbrianvoid AliasHandlePptpIn(struct ip *_pip, struct alias_link *_link); 17574778Sbrianint AliasHandlePptpGreOut(struct ip *_pip); 17674778Sbrianint AliasHandlePptpGreIn(struct ip *_pip); 17761861Sru 17844307Sbrian/* NetBIOS routines */ 17974778Sbrianint AliasHandleUdpNbt(struct ip *_pip, struct alias_link *_link, 18074778Sbrian struct in_addr *_alias_address, u_short _alias_port); 18174778Sbrianint AliasHandleUdpNbtNS(struct ip *_pip, struct alias_link *_link, 18274778Sbrian struct in_addr *_alias_address, u_short *_alias_port, 18374778Sbrian struct in_addr *_original_address, u_short *_original_port); 18444307Sbrian 18544307Sbrian/* CUSeeMe routines */ 18674778Sbrianvoid AliasHandleCUSeeMeOut(struct ip *_pip, struct alias_link *_link); 18774778Sbrianvoid AliasHandleCUSeeMeIn(struct ip *_pip, struct in_addr _original_addr); 18827864Sbrian 18944307Sbrian/* Transparent proxy routines */ 19074778Sbrianint ProxyCheck(struct ip *_pip, struct in_addr *_proxy_server_addr, 19174778Sbrian u_short *_proxy_server_port); 19274778Sbrianvoid ProxyModify(struct alias_link *_link, struct ip *_pip, 19374778Sbrian int _maxpacketsize, int _proxy_type); 19436321Samurai 19532377Seivindenum alias_tcp_state { 19674778Sbrian ALIAS_TCP_STATE_NOT_CONNECTED, 19774778Sbrian ALIAS_TCP_STATE_CONNECTED, 19874778Sbrian ALIAS_TCP_STATE_DISCONNECTED 19932377Seivind}; 20074778Sbrian 20126026Sbrian/*lint -restore */ 20274778Sbrian 20374778Sbrian#endif /* !_ALIAS_LOCAL_H_ */ 204