source: rtems-libbsd/freebsd/sys/contrib/pf/net/if_pflow.h @ 66659ff

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 66659ff was 66659ff, checked in by Sebastian Huber <sebastian.huber@…>, on 11/06/13 at 15:20:21

Update to FreeBSD 9.2

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/*      $OpenBSD: if_pflow.h,v 1.5 2009/02/27 11:09:36 gollo Exp $      */
2
3/*
4 * Copyright (c) 2008 Henning Brauer <henning@openbsd.org>
5 * Copyright (c) 2008 Joerg Goltermann <jg@osn.de>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
16 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
17 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 *
19 * $FreeBSD$
20 */
21
22#ifndef _NET_IF_PFLOW_H_
23#define _NET_IF_PFLOW_H_
24
25#define PFLOW_ID_LEN    sizeof(u_int64_t)
26
27#define PFLOW_MAXFLOWS 30
28#define PFLOW_VERSION 5
29#define PFLOW_ENGINE_TYPE 42
30#define PFLOW_ENGINE_ID 42
31#define PFLOW_MAXBYTES 0xffffffff
32#define PFLOW_TIMEOUT 30
33
34struct pflow_flow {
35        u_int32_t       src_ip;
36        u_int32_t       dest_ip;
37        u_int32_t       nexthop_ip;
38        u_int16_t       if_index_in;
39        u_int16_t       if_index_out;
40        u_int32_t       flow_packets;
41        u_int32_t       flow_octets;
42        u_int32_t       flow_start;
43        u_int32_t       flow_finish;
44        u_int16_t       src_port;
45        u_int16_t       dest_port;
46        u_int8_t        pad1;
47        u_int8_t        tcp_flags;
48        u_int8_t        protocol;
49        u_int8_t        tos;
50        u_int16_t       src_as;
51        u_int16_t       dest_as;
52        u_int8_t        src_mask;
53        u_int8_t        dest_mask;
54        u_int16_t       pad2;
55} __packed;
56
57#ifdef _KERNEL
58
59extern int pflow_ok;
60
61struct pflow_softc {
62        struct ifnet             sc_if;
63        struct ifnet            *sc_pflow_ifp;
64
65        unsigned int             sc_count;
66        unsigned int             sc_maxcount;
67        u_int64_t                sc_gcounter;
68        struct ip_moptions       sc_imo;
69#ifdef __FreeBSD__
70        struct callout           sc_tmo;
71#else
72        struct timeout           sc_tmo;
73#endif
74        struct in_addr           sc_sender_ip;
75        u_int16_t                sc_sender_port;
76        struct in_addr           sc_receiver_ip;
77        u_int16_t                sc_receiver_port;
78        struct mbuf             *sc_mbuf;       /* current cumulative mbuf */
79        SLIST_ENTRY(pflow_softc) sc_next;
80};
81
82extern struct pflow_softc       *pflowif;
83
84#endif /* _KERNEL */
85
86struct pflow_header {
87        u_int16_t       version;
88        u_int16_t       count;
89        u_int32_t       uptime_ms;
90        u_int32_t       time_sec;
91        u_int32_t       time_nanosec;
92        u_int32_t       flow_sequence;
93        u_int8_t        engine_type;
94        u_int8_t        engine_id;
95        u_int8_t        reserved1;
96        u_int8_t        reserved2;
97} __packed;
98
99#define PFLOW_HDRLEN sizeof(struct pflow_header)
100
101struct pflowstats {
102        u_int64_t       pflow_flows;
103        u_int64_t       pflow_packets;
104        u_int64_t       pflow_onomem;
105        u_int64_t       pflow_oerrors;
106};
107
108/*
109 * Configuration structure for SIOCSETPFLOW SIOCGETPFLOW
110 */
111struct pflowreq {
112        struct in_addr          sender_ip;
113        struct in_addr          receiver_ip;
114        u_int16_t               receiver_port;
115        u_int16_t               addrmask;
116#define PFLOW_MASK_SRCIP        0x01
117#define PFLOW_MASK_DSTIP        0x02
118#define PFLOW_MASK_DSTPRT       0x04
119};
120
121#ifdef _KERNEL
122int export_pflow(struct pf_state *);
123int pflow_sysctl(int *, u_int,  void *, size_t *, void *, size_t);
124#endif /* _KERNEL */
125
126#endif /* _NET_IF_PFLOW_H_ */
Note: See TracBrowser for help on using the repository browser.