The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netgraph/ng_patch.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2010 Maxim Ignatenko <gelraen.ua@gmail.com>
    5  * Copyright (c) 2015 Dmitry Vagin <daemon.hammer@ya.ru>
    6  * All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following 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  * $FreeBSD: releng/12.0/sys/netgraph/ng_patch.h 326272 2017-11-27 15:23:17Z pfg $
   30  */
   31 
   32 #ifndef _NETGRAPH_NG_PATCH_H_
   33 #define _NETGRAPH_NG_PATCH_H_
   34 
   35 /* Node type name. */
   36 #define NG_PATCH_NODE_TYPE      "patch"
   37 
   38 /* Node type cookie. */
   39 #define NGM_PATCH_COOKIE        1262445509
   40 
   41 /* Hook names */
   42 #define NG_PATCH_HOOK_IN        "in"
   43 #define NG_PATCH_HOOK_OUT       "out"
   44 
   45 /* Checksum flags */
   46 #define NG_PATCH_CSUM_IPV4      (CSUM_IP|CSUM_TCP|CSUM_UDP|CSUM_SCTP)
   47 #define NG_PATCH_CSUM_IPV6      (CSUM_TCP_IPV6|CSUM_UDP_IPV6|CSUM_SCTP_IPV6)
   48 
   49 /* Netgraph commands understood by this node type */
   50 enum {
   51         NGM_PATCH_SETCONFIG = 1,
   52         NGM_PATCH_GETCONFIG,
   53         NGM_PATCH_GET_STATS,
   54         NGM_PATCH_CLR_STATS,
   55         NGM_PATCH_GETCLR_STATS,
   56         NGM_PATCH_GETDLT,
   57         NGM_PATCH_SETDLT
   58 };
   59 
   60 /* Patching modes */
   61 enum {
   62         NG_PATCH_MODE_SET = 1,
   63         NG_PATCH_MODE_ADD = 2,
   64         NG_PATCH_MODE_SUB = 3,
   65         NG_PATCH_MODE_MUL = 4,
   66         NG_PATCH_MODE_DIV = 5,
   67         NG_PATCH_MODE_NEG = 6,
   68         NG_PATCH_MODE_AND = 7,
   69         NG_PATCH_MODE_OR  = 8,
   70         NG_PATCH_MODE_XOR = 9,
   71         NG_PATCH_MODE_SHL = 10,
   72         NG_PATCH_MODE_SHR = 11
   73 };
   74 
   75 /* Parsing declarations */
   76 
   77 #define NG_PATCH_CONFIG_TYPE {                                          \
   78         { "count",              &ng_parse_uint32_type           },      \
   79         { "csum_flags",         &ng_parse_uint64_type           },      \
   80         { "relative_offset",    &ng_parse_uint32_type           },      \
   81         { "ops",                &ng_patch_ops_array_type        },      \
   82         { NULL }                                                        \
   83 }
   84 
   85 #define NG_PATCH_OP_TYPE {                              \
   86         { "offset",     &ng_parse_uint32_type   },      \
   87         { "length",     &ng_parse_uint16_type   },      \
   88         { "mode",       &ng_parse_uint16_type   },      \
   89         { "value",      &ng_parse_uint64_type   },      \
   90         { NULL }                                        \
   91 }
   92 
   93 #define NG_PATCH_STATS_TYPE {                           \
   94         { "Received",   &ng_parse_uint64_type   },      \
   95         { "Patched",    &ng_parse_uint64_type   },      \
   96         { "Dropped",    &ng_parse_uint64_type   },      \
   97         { NULL }                                        \
   98 }
   99 
  100 union ng_patch_op_val {
  101         uint8_t         v1;
  102         uint16_t        v2;
  103         uint32_t        v4;
  104         uint64_t        v8;
  105 };
  106 
  107 struct ng_patch_op {
  108         uint32_t        offset;
  109         uint16_t        length; /* 1, 2, 4 or 8 (bytes) */
  110         uint16_t        mode;
  111         union ng_patch_op_val val;
  112 };
  113 
  114 struct ng_patch_config {
  115         uint32_t        count;
  116         uint64_t        csum_flags;
  117         uint32_t        relative_offset;
  118         struct ng_patch_op ops[];
  119 };
  120 
  121 struct ng_patch_stats {
  122         uint64_t        received;
  123         uint64_t        patched;
  124         uint64_t        dropped;
  125 };
  126 
  127 struct ng_patch_vlan_header {
  128         u_int16_t tag;
  129         u_int16_t etype;
  130 };
  131 
  132 #define NG_PATCH_CONF_SIZE(count) (sizeof(struct ng_patch_config) + \
  133         (count) * sizeof(struct ng_patch_op))
  134 
  135 #endif /* _NETGRAPH_NG_PATCH_H_ */

Cache object: c8047b3d7a1a0b37fab5a33459b66b62


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.