ip_frag.h revision 1.2.2.2 1 1.2.2.2 joerg /* $NetBSD: ip_frag.h,v 1.2.2.2 2012/04/17 19:25:19 joerg Exp $ */
2 1.2.2.2 joerg
3 1.2.2.2 joerg /*
4 1.2.2.2 joerg * Copyright (C) 2011 by Darren Reed.
5 1.2.2.2 joerg *
6 1.2.2.2 joerg * See the IPFILTER.LICENCE file for details on licencing.
7 1.2.2.2 joerg *
8 1.2.2.2 joerg * @(#)ip_frag.h 1.5 3/24/96
9 1.2.2.2 joerg * Id: ip_frag.h,v 2.34.2.2 2012/01/26 05:29:11 darrenr Exp
10 1.2.2.2 joerg */
11 1.2.2.2 joerg
12 1.2.2.2 joerg #ifndef _NETINET_IP_FRAG_H_
13 1.2.2.2 joerg #define _NETINET_IP_FRAG_H_
14 1.2.2.2 joerg
15 1.2.2.2 joerg #define IPFT_SIZE 257
16 1.2.2.2 joerg
17 1.2.2.2 joerg typedef struct ipfr {
18 1.2.2.2 joerg struct ipfr *ipfr_hnext, **ipfr_hprev;
19 1.2.2.2 joerg struct ipfr *ipfr_next, **ipfr_prev;
20 1.2.2.2 joerg void *ipfr_data;
21 1.2.2.2 joerg frentry_t *ipfr_rule;
22 1.2.2.2 joerg u_long ipfr_ttl;
23 1.2.2.2 joerg u_int ipfr_pkts;
24 1.2.2.2 joerg u_int ipfr_bytes;
25 1.2.2.2 joerg u_int ipfr_badorder;
26 1.2.2.2 joerg int ipfr_ref;
27 1.2.2.2 joerg u_short ipfr_off;
28 1.2.2.2 joerg u_short ipfr_firstend;
29 1.2.2.2 joerg u_char ipfr_p;
30 1.2.2.2 joerg u_char ipfr_seen0;
31 1.2.2.2 joerg /*
32 1.2.2.2 joerg * All of the fields, from ipfr_ifp to ipfr_pass, are compared
33 1.2.2.2 joerg * using bcmp to see if an identical entry is present. It is
34 1.2.2.2 joerg * therefore important for this set to remain together.
35 1.2.2.2 joerg */
36 1.2.2.2 joerg void *ipfr_ifp;
37 1.2.2.2 joerg i6addr_t ipfr_source;
38 1.2.2.2 joerg i6addr_t ipfr_dest;
39 1.2.2.2 joerg u_32_t ipfr_optmsk;
40 1.2.2.2 joerg u_short ipfr_secmsk;
41 1.2.2.2 joerg u_short ipfr_auth;
42 1.2.2.2 joerg u_32_t ipfr_id;
43 1.2.2.2 joerg u_32_t ipfr_pass;
44 1.2.2.2 joerg int ipfr_v;
45 1.2.2.2 joerg } ipfr_t;
46 1.2.2.2 joerg
47 1.2.2.2 joerg #define ipfr_src ipfr_source.in4
48 1.2.2.2 joerg #define ipfr_dst ipfr_dest.in4
49 1.2.2.2 joerg
50 1.2.2.2 joerg
51 1.2.2.2 joerg typedef struct ipfrstat {
52 1.2.2.2 joerg u_long ifs_exists; /* add & already exists */
53 1.2.2.2 joerg u_long ifs_nomem;
54 1.2.2.2 joerg u_long ifs_new;
55 1.2.2.2 joerg u_long ifs_hits;
56 1.2.2.2 joerg u_long ifs_expire;
57 1.2.2.2 joerg u_long ifs_inuse;
58 1.2.2.2 joerg u_long ifs_retrans0;
59 1.2.2.2 joerg u_long ifs_short;
60 1.2.2.2 joerg u_long ifs_bad;
61 1.2.2.2 joerg u_long ifs_overlap;
62 1.2.2.2 joerg u_long ifs_unordered;
63 1.2.2.2 joerg u_long ifs_strict;
64 1.2.2.2 joerg u_long ifs_miss;
65 1.2.2.2 joerg u_long ifs_maximum;
66 1.2.2.2 joerg u_long ifs_newbad;
67 1.2.2.2 joerg u_long ifs_newrestrictnot0;
68 1.2.2.2 joerg struct ipfr **ifs_table;
69 1.2.2.2 joerg struct ipfr **ifs_nattab;
70 1.2.2.2 joerg } ipfrstat_t;
71 1.2.2.2 joerg
72 1.2.2.2 joerg #define IPFR_CMPSZ (offsetof(ipfr_t, ipfr_pass) - \
73 1.2.2.2 joerg offsetof(ipfr_t, ipfr_ifp))
74 1.2.2.2 joerg
75 1.2.2.2 joerg extern void *ipf_frag_soft_create(ipf_main_softc_t *);
76 1.2.2.2 joerg extern int ipf_frag_soft_init(ipf_main_softc_t *, void *);
77 1.2.2.2 joerg extern int ipf_frag_soft_fini(ipf_main_softc_t *, void *);
78 1.2.2.2 joerg extern void ipf_frag_soft_destroy(ipf_main_softc_t *, void *);
79 1.2.2.2 joerg extern int ipf_frag_main_load(void);
80 1.2.2.2 joerg extern int ipf_frag_main_unload(void);
81 1.2.2.2 joerg extern int ipf_frag_load(void);
82 1.2.2.2 joerg extern void ipf_frag_clear(ipf_main_softc_t *);
83 1.2.2.2 joerg extern void ipf_frag_expire(ipf_main_softc_t *);
84 1.2.2.2 joerg extern void ipf_frag_forget(void *);
85 1.2.2.2 joerg extern int ipf_frag_init(void);
86 1.2.2.2 joerg extern u_32_t ipf_frag_ipidknown(fr_info_t *);
87 1.2.2.2 joerg extern int ipf_frag_ipidnew(fr_info_t *, u_32_t);
88 1.2.2.2 joerg extern frentry_t *ipf_frag_known(fr_info_t *, u_32_t *);
89 1.2.2.2 joerg extern void ipf_frag_natforget(ipf_main_softc_t *, void *);
90 1.2.2.2 joerg extern int ipf_frag_natnew(ipf_main_softc_t *, fr_info_t *, u_32_t, struct nat *);
91 1.2.2.2 joerg extern nat_t *ipf_frag_natknown(fr_info_t *);
92 1.2.2.2 joerg extern int ipf_frag_new(ipf_main_softc_t *, fr_info_t *, u_32_t);
93 1.2.2.2 joerg extern ipfrstat_t *ipf_frag_stats(void *);
94 1.2.2.2 joerg extern void ipf_frag_setlock(void *, int);
95 1.2.2.2 joerg extern void ipf_frag_pkt_deref(ipf_main_softc_t *, void *);
96 1.2.2.2 joerg extern int ipf_frag_pkt_next(ipf_main_softc_t *, ipftoken_t *,
97 1.2.2.2 joerg ipfgeniter_t *);
98 1.2.2.2 joerg extern void ipf_frag_nat_deref(ipf_main_softc_t *, void *);
99 1.2.2.2 joerg extern int ipf_frag_nat_next(ipf_main_softc_t *, ipftoken_t *,
100 1.2.2.2 joerg ipfgeniter_t *);
101 1.2.2.2 joerg extern void ipf_slowtimer(ipf_main_softc_t *);
102 1.2.2.2 joerg
103 1.2.2.2 joerg #endif /* _NETINET_IP_FRAG_H_ */
104