Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/netinet/ip_divert.h
39475 views
1
/*-
2
* SPDX-License-Identifier: BSD-3-Clause
3
*
4
* Copyright (c) 2003 Sam Leffler, Errno Consulting
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer,
12
* without modification.
13
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
14
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
15
* redistribution must be conditioned upon including a substantially
16
* similar Disclaimer requirement for further binary redistribution.
17
* 3. Neither the names of the above-listed copyright holders nor the names
18
* of any contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* NO WARRANTY
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
25
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
26
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
27
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
30
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32
* THE POSSIBILITY OF SUCH DAMAGES.
33
*/
34
35
#ifndef _NETINET_IP_DIVERT_H_
36
#define _NETINET_IP_DIVERT_H_
37
#include <sys/types.h>
38
39
/*
40
* All communication occurs through a sockaddr_in socket where
41
*
42
* kernel-->userland
43
* sin_port = matching rule, host format;
44
* sin_addr = IN: first address of the incoming interface;
45
* OUT: INADDR_ANY
46
* sin_zero = if fits, the interface name (max 7 bytes + NUL)
47
*
48
* userland->kernel
49
* sin_port = restart-rule - 1, host order
50
* (we restart at sin_port + 1)
51
* sin_addr = IN: address of the incoming interface;
52
* OUT: INADDR_ANY
53
*/
54
55
struct divstat {
56
uint64_t div_diverted; /* successfully diverted to userland */
57
uint64_t div_noport; /* failed due to no bound socket */
58
uint64_t div_outbound; /* re-injected as outbound */
59
uint64_t div_inbound; /* re-injected as inbound */
60
};
61
#endif /* _NETINET_IP_DIVERT_H_ */
62
63