|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * Copyright (C) 1997 by Darren Reed. ! 24: * ! 25: * Redistribution and use in source and binary forms are permitted ! 26: * provided that this notice is preserved and due credit is given ! 27: * to the original author and the contributors. ! 28: * ! 29: */ ! 30: ! 31: #ifndef __IP_PROXY_H__ ! 32: #define __IP_PROXY_H__ ! 33: ! 34: #ifndef SOLARIS ! 35: #define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4))) ! 36: #endif ! 37: ! 38: #ifndef APR_LABELLEN ! 39: #define APR_LABELLEN 16 ! 40: #endif ! 41: #define AP_SESS_SIZE 53 ! 42: ! 43: struct nat; ! 44: struct ipnat; ! 45: ! 46: typedef struct ap_tcp { ! 47: u_short apt_sport; /* source port */ ! 48: u_short apt_dport; /* destination port */ ! 49: short apt_sel; /* seqoff/after set selector */ ! 50: short apt_seqoff[2]; /* sequence # difference */ ! 51: tcp_seq apt_after[2]; /* don't change seq-off until after this */ ! 52: u_char apt_state[2]; /* connection state */ ! 53: } ap_tcp_t; ! 54: ! 55: typedef struct ap_udp { ! 56: u_short apu_sport; /* source port */ ! 57: u_short apu_dport; /* destination port */ ! 58: } ap_udp_t; ! 59: ! 60: typedef struct ap_session { ! 61: struct aproxy *aps_apr; ! 62: struct in_addr aps_src; /* source IP# */ ! 63: struct in_addr aps_dst; /* destination IP# */ ! 64: u_char aps_p; /* protocol */ ! 65: union { ! 66: struct ap_tcp apu_tcp; ! 67: struct ap_udp apu_udp; ! 68: } aps_un; ! 69: u_int aps_flags; ! 70: QUAD_T aps_bytes; /* bytes sent */ ! 71: QUAD_T aps_pkts; /* packets sent */ ! 72: u_long aps_tout; /* time left before expiring */ ! 73: void *aps_data; /* private data */ ! 74: int aps_psiz; /* size of private data */ ! 75: struct ap_session *aps_next; ! 76: } ap_session_t ; ! 77: ! 78: #define aps_sport aps_un.apu_tcp.apt_sport ! 79: #define aps_dport aps_un.apu_tcp.apt_dport ! 80: #define aps_sel aps_un.apu_tcp.apt_sel ! 81: #define aps_seqoff aps_un.apu_tcp.apt_seqoff ! 82: #define aps_after aps_un.apu_tcp.apt_after ! 83: #define aps_state aps_un.apu_tcp.apt_state ! 84: ! 85: ! 86: typedef struct aproxy { ! 87: char apr_label[APR_LABELLEN]; /* Proxy label # */ ! 88: u_char apr_p; /* protocol */ ! 89: int apr_ref; /* +1 per rule referencing it */ ! 90: int apr_flags; ! 91: int (* apr_init) __P((fr_info_t *, ip_t *, tcphdr_t *, ! 92: ap_session_t *, struct nat *)); ! 93: int (* apr_inpkt) __P((fr_info_t *, ip_t *, tcphdr_t *, ! 94: ap_session_t *, struct nat *)); ! 95: int (* apr_outpkt) __P((fr_info_t *, ip_t *, tcphdr_t *, ! 96: ap_session_t *, struct nat *)); ! 97: } aproxy_t; ! 98: ! 99: #define APR_DELETE 1 ! 100: ! 101: ! 102: extern ap_session_t *ap_sess_tab[AP_SESS_SIZE]; ! 103: extern aproxy_t ap_proxies[]; ! 104: ! 105: extern int ap_ok __P((ip_t *, tcphdr_t *, struct ipnat *)); ! 106: extern void ap_unload __P((void)); ! 107: extern void ap_free __P((aproxy_t *)); ! 108: extern void aps_free __P((ap_session_t *)); ! 109: extern int ap_check __P((ip_t *, tcphdr_t *, fr_info_t *, struct nat *)); ! 110: extern aproxy_t *ap_match __P((u_char, char *)); ! 111: extern void ap_expire __P((void)); ! 112: ! 113: #endif /* __IP_PROXY_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.