Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/netgraph/ng_deflate.h
34372 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2006 Alexander Motin <[email protected]>
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 unmodified, this list of conditions, and the following
12
* disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*/
29
30
#ifndef _NETGRAPH_NG_DEFLATE_H_
31
#define _NETGRAPH_NG_DEFLATE_H_
32
33
/* Node type name and magic cookie */
34
#define NG_DEFLATE_NODE_TYPE "deflate"
35
#define NGM_DEFLATE_COOKIE 1166642656
36
37
/* Hook names */
38
#define NG_DEFLATE_HOOK_COMP "comp" /* compression hook */
39
#define NG_DEFLATE_HOOK_DECOMP "decomp" /* decompression hook */
40
41
/* Config struct */
42
struct ng_deflate_config {
43
u_char enable; /* node enabled */
44
u_char windowBits; /* log2(Window size) */
45
};
46
47
/* Keep this in sync with the above structure definition. */
48
#define NG_DEFLATE_CONFIG_INFO { \
49
{ "enable", &ng_parse_uint8_type }, \
50
{ "windowBits", &ng_parse_uint8_type }, \
51
{ NULL } \
52
}
53
54
/* Statistics structure for one direction. */
55
struct ng_deflate_stats {
56
uint64_t FramesPlain;
57
uint64_t FramesComp;
58
uint64_t FramesUncomp;
59
uint64_t InOctets;
60
uint64_t OutOctets;
61
uint64_t Errors;
62
};
63
64
/* Keep this in sync with the above structure definition. */
65
#define NG_DEFLATE_STATS_INFO { \
66
{ "FramesPlain",&ng_parse_uint64_type }, \
67
{ "FramesComp", &ng_parse_uint64_type }, \
68
{ "FramesUncomp", &ng_parse_uint64_type }, \
69
{ "InOctets", &ng_parse_uint64_type }, \
70
{ "OutOctets", &ng_parse_uint64_type }, \
71
{ "Errors", &ng_parse_uint64_type }, \
72
{ NULL } \
73
}
74
75
/* Netgraph commands */
76
enum {
77
NGM_DEFLATE_CONFIG = 1,
78
NGM_DEFLATE_RESETREQ, /* sent either way! */
79
NGM_DEFLATE_GET_STATS,
80
NGM_DEFLATE_CLR_STATS,
81
NGM_DEFLATE_GETCLR_STATS,
82
};
83
84
#endif /* _NETGRAPH_NG_DEFLATE_H_ */
85
86