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  * Copyright (c) 2010 Maxim Ignatenko <gelraen.ua@gmail.com>
    3  * Copyright (c) 2015 Dmitry Vagin <daemon.hammer@ya.ru>
    4  * All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  *
   27  * $FreeBSD: releng/11.1/sys/netgraph/ng_patch.h 310625 2016-12-27 08:31:40Z julian $
   28  */
   29 
   30 #ifndef _NETGRAPH_NG_PATCH_H_
   31 #define _NETGRAPH_NG_PATCH_H_
   32 
   33 /* Node type name. */
   34 #define NG_PATCH_NODE_TYPE      "patch"
   35 
   36 /* Node type cookie. */
   37 #define NGM_PATCH_COOKIE        1262445509
   38 
   39 /* Hook names */
   40 #define NG_PATCH_HOOK_IN        "in"
   41 #define NG_PATCH_HOOK_OUT       "out"
   42 
   43 /* Checksum flags */
   44 #define NG_PATCH_CSUM_IPV4      (CSUM_IP|CSUM_TCP|CSUM_UDP|CSUM_SCTP)
   45 #define NG_PATCH_CSUM_IPV6      (CSUM_TCP_IPV6|CSUM_UDP_IPV6|CSUM_SCTP_IPV6)
   46 
   47 /* Netgraph commands understood by this node type */
   48 enum {
   49         NGM_PATCH_SETCONFIG = 1,
   50         NGM_PATCH_GETCONFIG,
   51         NGM_PATCH_GET_STATS,
   52         NGM_PATCH_CLR_STATS,
   53         NGM_PATCH_GETCLR_STATS,
   54         NGM_PATCH_GETDLT,
   55         NGM_PATCH_SETDLT
   56 };
   57 
   58 /* Patching modes */
   59 enum {
   60         NG_PATCH_MODE_SET = 1,
   61         NG_PATCH_MODE_ADD = 2,
   62         NG_PATCH_MODE_SUB = 3,
   63         NG_PATCH_MODE_MUL = 4,
   64         NG_PATCH_MODE_DIV = 5,
   65         NG_PATCH_MODE_NEG = 6,
   66         NG_PATCH_MODE_AND = 7,
   67         NG_PATCH_MODE_OR  = 8,
   68         NG_PATCH_MODE_XOR = 9,
   69         NG_PATCH_MODE_SHL = 10,
   70         NG_PATCH_MODE_SHR = 11
   71 };
   72 
   73 /* Parsing declarations */
   74 
   75 #define NG_PATCH_CONFIG_TYPE {                                          \
   76         { "count",              &ng_parse_uint32_type           },      \
   77         { "csum_flags",         &ng_parse_uint64_type           },      \
   78         { "relative_offset",    &ng_parse_uint32_type           },      \
   79         { "ops",                &ng_patch_ops_array_type        },      \
   80         { NULL }                                                        \
   81 }
   82 
   83 #define NG_PATCH_OP_TYPE {                              \
   84         { "offset",     &ng_parse_uint32_type   },      \
   85         { "length",     &ng_parse_uint16_type   },      \
   86         { "mode",       &ng_parse_uint16_type   },      \
   87         { "value",      &ng_parse_uint64_type   },      \
   88         { NULL }                                        \
   89 }
   90 
   91 #define NG_PATCH_STATS_TYPE {                           \
   92         { "Received",   &ng_parse_uint64_type   },      \
   93         { "Patched",    &ng_parse_uint64_type   },      \
   94         { "Dropped",    &ng_parse_uint64_type   },      \
   95         { NULL }                                        \
   96 }
   97 
   98 union ng_patch_op_val {
   99         uint8_t         v1;
  100         uint16_t        v2;
  101         uint32_t        v4;
  102         uint64_t        v8;
  103 };
  104 
  105 struct ng_patch_op {
  106         uint32_t        offset;
  107         uint16_t        length; /* 1, 2, 4 or 8 (bytes) */
  108         uint16_t        mode;
  109         union ng_patch_op_val val;
  110 };
  111 
  112 struct ng_patch_config {
  113         uint32_t        count;
  114         uint64_t        csum_flags;
  115         uint32_t        relative_offset;
  116         struct ng_patch_op ops[];
  117 };
  118 
  119 struct ng_patch_stats {
  120         uint64_t        received;
  121         uint64_t        patched;
  122         uint64_t        dropped;
  123 };
  124 
  125 struct ng_patch_vlan_header {
  126         u_int16_t tag;
  127         u_int16_t etype;
  128 };
  129 
  130 #define NG_PATCH_CONF_SIZE(count) (sizeof(struct ng_patch_config) + \
  131         (count) * sizeof(struct ng_patch_op))
  132 
  133 #endif /* _NETGRAPH_NG_PATCH_H_ */

Cache object: 57847daf57847b188c856abab032bc35


[ 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.