xref: /freebsd/sys/netgraph/ng_vlan_rotate.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1cfd6422aSLutz Donnerhacke /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3cfd6422aSLutz Donnerhacke  *
4cfd6422aSLutz Donnerhacke  * Copyright (c) 2019-2021 IKS Service GmbH
5cfd6422aSLutz Donnerhacke  *
6cfd6422aSLutz Donnerhacke  * Redistribution and use in source and binary forms, with or without
7cfd6422aSLutz Donnerhacke  * modification, are permitted provided that the following conditions
8cfd6422aSLutz Donnerhacke  * are met:
9cfd6422aSLutz Donnerhacke  * 1. Redistributions of source code must retain the above copyright
10cfd6422aSLutz Donnerhacke  *    notice, this list of conditions and the following disclaimer.
11cfd6422aSLutz Donnerhacke  * 2. Redistributions in binary form must reproduce the above copyright
12cfd6422aSLutz Donnerhacke  *    notice, this list of conditions and the following disclaimer in the
13cfd6422aSLutz Donnerhacke  *    documentation and/or other materials provided with the distribution.
14cfd6422aSLutz Donnerhacke  *
15cfd6422aSLutz Donnerhacke  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16cfd6422aSLutz Donnerhacke  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17cfd6422aSLutz Donnerhacke  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18cfd6422aSLutz Donnerhacke  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19cfd6422aSLutz Donnerhacke  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20cfd6422aSLutz Donnerhacke  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21cfd6422aSLutz Donnerhacke  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22cfd6422aSLutz Donnerhacke  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23cfd6422aSLutz Donnerhacke  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24cfd6422aSLutz Donnerhacke  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25cfd6422aSLutz Donnerhacke  * SUCH DAMAGE.
26cfd6422aSLutz Donnerhacke  *
27cfd6422aSLutz Donnerhacke  * Author: Lutz Donnerhacke <lutz@donnerhacke.de>
28cfd6422aSLutz Donnerhacke  */
29cfd6422aSLutz Donnerhacke 
30cfd6422aSLutz Donnerhacke #ifndef _NETGRAPH_NG_VLAN_ROTATE_H_
31cfd6422aSLutz Donnerhacke #define _NETGRAPH_NG_VLAN_ROTATE_H_
32cfd6422aSLutz Donnerhacke 
33cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_NODE_TYPE		"vlan_rotate"
34cfd6422aSLutz Donnerhacke #define NGM_VLANROTATE_COOKIE		1568378766
35cfd6422aSLutz Donnerhacke 
36cfd6422aSLutz Donnerhacke /* Hook names */
37cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_HOOK_ORDERED	"ordered"
38cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_HOOK_ORIGINAL	"original"
39cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_HOOK_EXCESSIVE	"excessive"
40cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_HOOK_INCOMPLETE	"incomplete"
41cfd6422aSLutz Donnerhacke 
42cfd6422aSLutz Donnerhacke /* Limits */
43cfd6422aSLutz Donnerhacke #define NG_VLANROTATE_MAX_VLANS		10
44cfd6422aSLutz Donnerhacke 
45cfd6422aSLutz Donnerhacke /* Datastructures for netgraph commands */
46cfd6422aSLutz Donnerhacke struct ng_vlanrotate_conf {
47cfd6422aSLutz Donnerhacke 	int8_t		rot;
48cfd6422aSLutz Donnerhacke 	uint8_t		min, max;
49cfd6422aSLutz Donnerhacke };
50cfd6422aSLutz Donnerhacke 
51cfd6422aSLutz Donnerhacke struct ng_vlanrotate_stat {
52cfd6422aSLutz Donnerhacke 	uint64_t	drops, excessive, incomplete;
53cfd6422aSLutz Donnerhacke 	uint64_t	histogram[NG_VLANROTATE_MAX_VLANS];
54cfd6422aSLutz Donnerhacke };
55cfd6422aSLutz Donnerhacke 
56cfd6422aSLutz Donnerhacke /* Netgraph commands understood by this node type */
57cfd6422aSLutz Donnerhacke enum {
58cfd6422aSLutz Donnerhacke 	NGM_VLANROTATE_GET_CONF = 1,
59cfd6422aSLutz Donnerhacke 	NGM_VLANROTATE_SET_CONF,
60cfd6422aSLutz Donnerhacke 	NGM_VLANROTATE_GET_STAT,
61cfd6422aSLutz Donnerhacke 	NGM_VLANROTATE_CLR_STAT,
62cfd6422aSLutz Donnerhacke 	NGM_VLANROTATE_GETCLR_STAT
63cfd6422aSLutz Donnerhacke };
64cfd6422aSLutz Donnerhacke 
65cfd6422aSLutz Donnerhacke #endif				/* _NETGRAPH_NG_VLAN_ROTATE_H_ */
66