|
|
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) 1995-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: * @(#)ip_state.h 1.3 1/12/96 (C) 1995 Darren Reed ! 30: */ ! 31: #ifndef __IP_STATE_H__ ! 32: #define __IP_STATE_H__ ! 33: ! 34: #define IPSTATE_SIZE 257 ! 35: #define IPSTATE_MAX 2048 /* Maximum number of states held */ ! 36: ! 37: #define PAIRS(s1,d1,s2,d2) ((((s1) == (s2)) && ((d1) == (d2))) ||\ ! 38: (((s1) == (d2)) && ((d1) == (s2)))) ! 39: #define IPPAIR(s1,d1,s2,d2) PAIRS((s1).s_addr, (d1).s_addr, \ ! 40: (s2).s_addr, (d2).s_addr) ! 41: ! 42: ! 43: typedef struct udpstate { ! 44: u_short us_sport; ! 45: u_short us_dport; ! 46: } udpstate_t; ! 47: ! 48: typedef struct icmpstate { ! 49: u_short ics_id; ! 50: u_short ics_seq; ! 51: u_char ics_type; ! 52: } icmpstate_t; ! 53: ! 54: typedef struct tcpstate { ! 55: u_short ts_sport; ! 56: u_short ts_dport; ! 57: u_long ts_seq; ! 58: u_long ts_ack; ! 59: u_short ts_swin; ! 60: u_short ts_dwin; ! 61: u_char ts_state[2]; ! 62: } tcpstate_t; ! 63: ! 64: typedef struct ipstate { ! 65: struct ipstate *is_next; ! 66: u_long is_age; ! 67: u_int is_pass; ! 68: U_QUAD_T is_pkts; ! 69: U_QUAD_T is_bytes; ! 70: void *is_ifpin; ! 71: void *is_ifpout; ! 72: struct in_addr is_src; ! 73: struct in_addr is_dst; ! 74: u_char is_p; ! 75: u_char is_flags; ! 76: u_32_t is_opt; ! 77: u_32_t is_optmsk; ! 78: u_short is_sec; ! 79: u_short is_secmsk; ! 80: u_short is_auth; ! 81: u_short is_authmsk; ! 82: union { ! 83: icmpstate_t is_ics; ! 84: tcpstate_t is_ts; ! 85: udpstate_t is_us; ! 86: } is_ps; ! 87: } ipstate_t; ! 88: ! 89: #define is_icmp is_ps.is_ics ! 90: #define is_tcp is_ps.is_ts ! 91: #define is_udp is_ps.is_us ! 92: #define is_seq is_tcp.ts_seq ! 93: #define is_ack is_tcp.ts_ack ! 94: #define is_dwin is_tcp.ts_dwin ! 95: #define is_swin is_tcp.ts_swin ! 96: #define is_sport is_tcp.ts_sport ! 97: #define is_dport is_tcp.ts_dport ! 98: #define is_state is_tcp.ts_state ! 99: ! 100: #define TH_OPENING (TH_SYN|TH_ACK) ! 101: ! 102: ! 103: typedef struct ipslog { ! 104: U_QUAD_T isl_pkts; ! 105: U_QUAD_T isl_bytes; ! 106: struct in_addr isl_src; ! 107: struct in_addr isl_dst; ! 108: u_char isl_p; ! 109: u_char isl_flags; ! 110: u_short isl_type; ! 111: union { ! 112: u_short isl_filler[2]; ! 113: u_short isl_ports[2]; ! 114: u_short isl_icmp; ! 115: } isl_ps; ! 116: } ipslog_t; ! 117: ! 118: #define isl_sport isl_ps.isl_ports[0] ! 119: #define isl_dport isl_ps.isl_ports[1] ! 120: #define isl_itype isl_ps.isl_icmp ! 121: ! 122: #define ISL_NEW 0 ! 123: #define ISL_EXPIRE 0xffff ! 124: #define ISL_FLUSH 0xfffe ! 125: ! 126: ! 127: typedef struct ips_stat { ! 128: u_long iss_hits; ! 129: u_long iss_miss; ! 130: u_long iss_max; ! 131: u_long iss_tcp; ! 132: u_long iss_udp; ! 133: u_long iss_icmp; ! 134: u_long iss_nomem; ! 135: u_long iss_expire; ! 136: u_long iss_fin; ! 137: u_long iss_active; ! 138: u_long iss_logged; ! 139: u_long iss_logfail; ! 140: ipstate_t **iss_table; ! 141: } ips_stat_t; ! 142: ! 143: ! 144: extern u_long fr_tcpidletimeout; ! 145: extern u_long fr_tcpclosewait; ! 146: extern u_long fr_tcplastack; ! 147: extern u_long fr_tcptimeout; ! 148: extern u_long fr_tcpclosed; ! 149: extern u_long fr_udptimeout; ! 150: extern u_long fr_icmptimeout; ! 151: extern int fr_tcpstate __P((ipstate_t *, fr_info_t *, ip_t *, tcphdr_t *)); ! 152: extern int fr_addstate __P((ip_t *, fr_info_t *, u_int)); ! 153: extern int fr_checkstate __P((ip_t *, fr_info_t *)); ! 154: extern void fr_timeoutstate __P((void)); ! 155: extern void fr_tcp_age __P((u_long *, u_char *, ip_t *, fr_info_t *, int)); ! 156: extern void fr_stateunload __P((void)); ! 157: extern void ipstate_log __P((struct ipstate *, u_short)); ! 158: #if defined(__NetBSD__) || defined(__OpenBSD__) ! 159: extern int fr_state_ioctl __P((caddr_t, u_long, int)); ! 160: #else ! 161: extern int fr_state_ioctl __P((caddr_t, int, int)); ! 162: #endif ! 163: ! 164: #endif /* __IP_STATE_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.