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