summaryrefslogtreecommitdiffstats
path: root/perftool/new.cpel
blob: b0f35958dc0c4dbb8477f1d470ed8a4579bcde5c (plain)
ofshex dumpascii
0000 01 00 00 04 56 b3 c5 f2 00 00 00 01 00 00 00 38 46 69 6c 65 53 74 72 74 61 62 00 72 78 00 25 73 ....V..........8FileStrtab.rx.%s
0020 00 77 6f 72 6b 65 72 73 20 32 00 31 29 3a 20 33 00 77 6f 72 6b 65 72 73 20 31 00 31 29 3a 20 34 .workers.2.1):.3.workers.1.1):.4
0040 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 50 46 69 6c 65 53 74 72 74 61 62 00 00 00 00 00 00 ...............PFileStrtab......
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 0b 00 00 00 0e ................................
00a0 00 00 00 04 00 00 00 54 46 69 6c 65 53 74 72 74 61 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......TFileStrtab..............
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 21 00 00 00 01 00 00 00 11 00 00 00 05 ...................!............
0100 00 00 05 84 46 69 6c 65 53 74 72 74 61 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....FileStrtab..................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 43 3b 9a ca 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 1b .......C;.......................
0160 00 00 00 00 00 02 1e 9e 00 00 00 00 00 00 00 00 00 00 00 2b 00 00 00 00 02 a5 dd f7 00 00 00 00 ...................+............
0180 00 00 00 00 00 00 00 1b 00 00 00 00 05 4c 00 2a 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 .............L.*................
01a0 07 f2 1c 2a 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 0a 98 43 58 00 00 00 01 00 00 00 00 ...*..................CX........
01c0 00 00 00 1b 00 00 00 00 0d 3e 6f 00 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 0f e4 96 09 .........>o.....................
01e0 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 12 8a bb 9b 00 00 00 01 00 00 00 00 00 00 00 1b ................................
0200 00 00 00 00 15 30 e4 34 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 17 d7 0f 99 00 00 00 01 .....0.4........................
0220 00 00 00 00 00 00 00 1b 00 00 00 00 1a 7d 32 db 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 .............}2.................
0240 1d 23 5c f7 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 1f c9 81 79 00 00 00 00 00 00 00 00 .#\....................y........
0260 00 00 00 1b 00 00 00 00 22 6f ac 38 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 25 15 d3 23 ........"o.8................%..#
0280 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 27 bb f8 be 00 00 00 01 00 00 00 00 00 00 00 1b ................'...............
02a0 00 00 00 00 2a 62 21 1e 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 2d 08 4a 00 00 00 00 01 ....*b!.................-.J.....
02c0 00 00 00 00 00 00 00 1b 00 00 00 00 2f ae 71 3f 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 ............/.q?................
02e0 32 54 94 a0 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 34 fa c2 84 00 00 00 00 00 00 00 00 2T..................4...........
0300 00 00 00 1b 00 00 00 00 37 a0 e8 fe 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 3a 47 14 c7 ........7...................:G..
0320 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 3c ed 36 c2 00 00 00 00 00 00 00 00 00 00 00 1b ................<.6.............
0340 00 00 00 00 3f 93 5f 26 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 42 39 81 f1 00 00 00 00 ....?._&................B9......
0360 00 00 00 00 00 00 00 1b 00 00 00 00 44 df ae 74 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 ............D..t................
0380 47 85 d4 68 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 4a 2b ff ed 00 00 00 01 00 00 00 00 G..h................J+..........
03a0 00 00 00 1b 00 00 00 00 4c d2 26 a2 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 4f 78 4c f6 ........L.&.................OxL.
03c0 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 52 1e 72 ef 00 00 00 00 00 00 00 00 00 00 00 1b ................R.r.............
03e0 00 00 00 00 54 c4 9d 52 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 57 6a c3 b4 00 00 00 00 ....T..R................Wj......
0400 00 00 00 00 00 00 00 1b 00 00 00 00 5a 10 ec 68 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 ............Z..h................
0420 5c b7 12 f1 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 5f 5d 3e 15 00 00 00 01 00 00 00 00 \..................._]>.........
0440 00 00 00 1b 00 00 00 00 62 03 63 9e 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 64 a9 88 86 ........b.c.................d...
0460 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 67 4f b0 35 00 00 00 01 00 00 00 00 00 00 00 1b ................gO.5............
0480 00 00 00 00 69 f5 d7 5d 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 6c 9c 01 dd 00 00 00 01 ....i..]................l.......
04a0 00 00 00 00 00 00 00 1b 00 00 00 00 6f 42 26 fd 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 ............oB&.................
04c0 71 e8 4e 9e 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 74 8e 76 4e 00 00 00 00 00 00 00 00 q.N.................t.vN........
04e0 00 00 00 1b 00 00 00 00 77 34 a0 97 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 79 da c8 3a ........w4..................y..:
0500 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 7c 80 ef ab 00 00 00 01 00 00 00 00 00 00 00 1b ................|...............
0520 00 00 00 00 7f 27 18 20 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 81 cd 41 8a 00 00 00 01 .....'....................A.....
0540 00 00 00 00 00 00 00 1b 00 00 00 00 84 73 65 61 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 .............sea................
0560 87 19 8f c0 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 89 bf b2 f5 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 1b 00 00 00 00 8c 65 dc 17 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 8f 0c 06 1d .........e......................
05a0 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 91 b2 2c 04 00 00 00 00 00 00 00 00 00 00 00 1b ..................,.............
05c0 00 00 00 00 94 58 53 47 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 96 fe 7e 0d 00 00 00 00 .....XSG..................~.....
05e0 00 00 00 00 00 00 00 1b 00 00 00 00 99 a4 a5 56 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 ...............V................
0600 9c 4a cc 5a 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 9e f0 f5 35 00 00 00 01 00 00 00 00 .J.Z...................5........
0620 00 00 00 1b 00 00 00 00 a1 97 17 56 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 00 a4 3d 42 40 ...........V.................=B@
0640 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 a6 e3 6c 88 00 00 00 00 00 00 00 00 00 00 00 1b ..................l.............
0660 00 00 00 00 a9 89 91 ac 00 00 00 01 00 00 00 00 00 00 00 1b 00 00 00 00 ac 2f b7 02 00 00 00 00 ........................./......
0680 00 00 00 00 00 00 00 1b ........
ref='#n360'>360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
/*
 * Copyright (c) 2015 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
 * vnet/buffer.h: vnet buffer flags
 *
 * Copyright (c) 2008 Eliot Dresselhaus
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#ifndef included_vnet_buffer_h
#define included_vnet_buffer_h

#include <vlib/vlib.h>

/**
 * Flags that are set in the high order bits of ((vlib_buffer*)b)->flags
 */
#define foreach_vnet_buffer_flag \
  _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed")	\
  _( 2, L4_CHECKSUM_CORRECT, "l4-cksum-correct")	\
  _( 3, VLAN_2_DEEP, "vlan-2-deep")			\
  _( 4, VLAN_1_DEEP, "vlan-1-deep")			\
  _( 5, SPAN_CLONE, "span-clone")			\
  _( 6, LOOP_COUNTER_VALID, 0)                          \
  _( 7, LOCALLY_ORIGINATED, "local")			\
  _( 8, IS_IP4, "ip4")					\
  _( 9, IS_IP6, "ip6")					\
  _(10, OFFLOAD_IP_CKSUM, "offload-ip-cksum")		\
  _(11, OFFLOAD_TCP_CKSUM, "offload-tcp-cksum")		\
  _(12, OFFLOAD_UDP_CKSUM, "offload-udp-cksum")		\
  _(13, IS_NATED, "nated")				\
  _(14, L2_HDR_OFFSET_VALID, 0)				\
  _(15, L3_HDR_OFFSET_VALID, 0)				\
  _(16, L4_HDR_OFFSET_VALID, 0)				\
  _(17, FLOW_REPORT, "flow-report")			\
  _(18, IS_DVR, "dvr")                                  \
  _(19, QOS_DATA_VALID, 0)

#define VNET_BUFFER_FLAGS_VLAN_BITS \
  (VNET_BUFFER_F_VLAN_1_DEEP | VNET_BUFFER_F_VLAN_2_DEEP)

enum
{
#define _(bit, name, v) VNET_BUFFER_F_##name  = (1 << LOG2_VLIB_BUFFER_FLAG_USER(bit)),
  foreach_vnet_buffer_flag
#undef _
};

enum
{
#define _(bit, name, v) VNET_BUFFER_F_LOG2_##name  = LOG2_VLIB_BUFFER_FLAG_USER(bit),
  foreach_vnet_buffer_flag
#undef _
};

#define foreach_buffer_opaque_union_subtype     \
_(ip)                                           \
_(l2)                                           \
_(l2t)                                          \
_(l2_classify)                                  \
_(policer)                                      \
_(ipsec)					\
_(map)						\
_(map_t)					\
_(ip_frag)					\
_(mpls)					        \
_(tcp)

/*
 * vnet stack buffer opaque array overlay structure.
 * The vnet_buffer_opaque_t *must* be the same size as the
 * vlib_buffer_t "opaque" structure member, 32 bytes.
 *
 * When adding a union type, please add a stanza to
 * foreach_buffer_opaque_union_subtype (directly above).
 * Code in vnet_interface_init(...) verifies the size
 * of the union, and will announce any deviations in an
 * impossible-to-miss manner.
 */
typedef struct
{
  u32 sw_if_index[VLIB_N_RX_TX];
  i16 l2_hdr_offset;
  i16 l3_hdr_offset;
  i16 l4_hdr_offset;
  u8 feature_arc_index;
  u8 dont_waste_me;

  union
  {
    /* IP4/6 buffer opaque. */
    struct
    {
      /* Adjacency from destination IP address lookup [VLIB_TX].
         Adjacency from source IP address lookup [VLIB_RX].
         This gets set to ~0 until source lookup is performed. */
      u32 adj_index[VLIB_N_RX_TX];

      union
      {
	struct
	{
	  /* Flow hash value for this packet computed from IP src/dst address
	     protocol and ports. */
	  u32 flow_hash;

	  union
	  {
	    /* next protocol */
	    u32 save_protocol;

	    /* Hint for transport protocols */
	    u32 fib_index;
	  };

	  /* Rewrite length */
	  u32 save_rewrite_length;

	  /* MFIB RPF ID */
	  u32 rpf_id;
	};

	/* ICMP */
	struct
	{
	  u8 type;
	  u8 code;
	  u32 data;
	} icmp;

	/* reassembly */
	union
	{
	  /* in/out variables */
	  struct
	  {
	    u32 next_index;	/* index of next node - ignored if "feature" node */
	    u16 estimated_mtu;	/* estimated MTU calculated during reassembly */
	  };
	  /* internal variables used during reassembly */
	  struct
	  {
	    u16 fragment_first;
	    u16 fragment_last;
	    u16 range_first;
	    u16 range_last;
	    u32 next_range_bi;
	    u16 ip6_frag_hdr_offset;
	  };
	} reass;
      };

    } ip;

    /*
     * MPLS:
     * data copied from the MPLS header that was popped from the packet
     * during the look-up.
     */
    struct
    {
      /* do not overlay w/ ip.adj_index[0,1] nor flow hash */
      u32 pad[VLIB_N_RX_TX + 1];
      u8 ttl;
      u8 exp;
      u8 first;
      /* Rewrite length */
      u32 save_rewrite_length;
      /*
       * BIER - the nubmer of bytes in the header.
       *  the len field inthe header is not authoritative. It's the
       * value in the table that counts.
       */
      struct
      {
	u8 n_bytes;
      } bier;
    } mpls;

    /* l2 bridging path, only valid there */
    struct opaque_l2
    {
      u32 feature_bitmap;
      u16 bd_index;		/* bridge-domain index */
      u8 l2_len;		/* ethernet header length */
      u8 shg;			/* split-horizon group */
      u16 l2fib_sn;		/* l2fib bd/int seq_num */
      u8 bd_age;		/* aging enabled */
    } l2;

    /* l2tpv3 softwire encap, only valid there */
    struct
    {
      u32 pad[4];		/* do not overlay w/ ip.adj_index[0,1] */
      u8 next_index;
      u32 session_index;
    } l2t;

    /* L2 classify */
    struct
    {
      struct opaque_l2 pad;
      union
      {
	u32 table_index;
	u32 opaque_index;
      };
      u64 hash;
    } l2_classify;

    /* vnet policer */
    struct
    {
      u32 pad[8 - VLIB_N_RX_TX - 1];	/* to end of opaque */
      u32 index;
    } policer;

    /* interface output features */
    struct
    {
      u32 flags;
      u32 sad_index;
    } ipsec;

    /* MAP */
    struct
    {
      u16 mtu;
    } map;

    /* MAP-T */
    struct
    {
      u32 map_domain_index;
      struct
      {
	u32 saddr, daddr;
	u16 frag_offset;	//Fragmentation header offset
	u16 l4_offset;		//L4 header overall offset
	u8 l4_protocol;		//The final protocol number
      } v6;			//Used by ip6_map_t only
      u16 checksum_offset;	//L4 checksum overall offset
      u16 mtu;			//Exit MTU
    } map_t;

    /* IP Fragmentation */
    struct
    {
      u32 pad[2];		/* do not overlay w/ ip.adj_index[0,1] */
      u16 header_offset;
      u16 mtu;
      u8 next_index;
      u8 flags;			//See ip_frag.h
    } ip_frag;

    /* COP - configurable junk filter(s) */
    struct
    {
      /* Current configuration index. */
      u32 current_config_index;
    } cop;

    /* LISP */
    struct
    {
      /* overlay address family */
      u16 overlay_afi;
    } lisp;

    /* TCP */
    struct
    {
      u32 connection_index;
      u32 seq_number;
      u32 seq_end;
      u32 ack_number;
      u16 hdr_offset;		/**< offset relative to ip hdr */
      u16 data_offset;		/**< offset relative to ip hdr */
      u16 data_len;		/**< data len */
      u8 flags;
    } tcp;

    /* SCTP */
    struct
    {
      u32 connection_index;
      u16 sid; /**< Stream ID */
      u16 ssn; /**< Stream Sequence Number */
      u32 tsn; /**< Transmission Sequence Number */
      u16 hdr_offset;		/**< offset relative to ip hdr */
      u16 data_offset;		/**< offset relative to ip hdr */
      u16 data_len;		/**< data len */
      u8 subconn_idx; /**< index of the sub_connection being used */
      u8 flags;
    } sctp;

    /* SNAT */
    struct
    {
      u32 flags;
    } snat;

    u32 unused[6];
  };
} vnet_buffer_opaque_t;

/*
 * The opaque field of the vlib_buffer_t is intepreted as a
 * vnet_buffer_opaque_t. Hence it should be big enough to accommodate one.
 */
STATIC_ASSERT (sizeof (vnet_buffer_opaque_t) <=
	       STRUCT_SIZE_OF (vlib_buffer_t, opaque),
	       "VNET buffer meta-data too large for vlib_buffer");

#define vnet_buffer(b) ((vnet_buffer_opaque_t *) (b)->opaque)

/* Full cache line (64 bytes) of additional space */
typedef struct
{
  /**
   * QoS marking data that needs to persist from the recording nodes
   * (nominally in the ingress path) to the marking node (in the
   * egress path)
   */
  struct
  {
    u8 bits;
    u8 source;
  } qos;

  u8 loop_counter;
  u8 __unused[1];

  /* Group Based Policy */
  struct
  {
    u8 __unused;
    u8 flags;
    u16 src_epg;
  } gbp;

  union
  {
    struct
    {
#if VLIB_BUFFER_TRACE_TRAJECTORY > 0
      /* buffer trajectory tracing */
      u16 *trajectory_trace;
#endif
    };
    struct
    {
      u64 pad[1];
      u64 pg_replay_timestamp;
    };
    u32 unused[10];
  };
} vnet_buffer_opaque2_t;

#define vnet_buffer2(b) ((vnet_buffer_opaque2_t *) (b)->opaque2)

/*
 * The opaque2 field of the vlib_buffer_t is intepreted as a
 * vnet_buffer_opaque2_t. Hence it should be big enough to accommodate one.
 */
STATIC_ASSERT (sizeof (vnet_buffer_opaque2_t) <=
	       STRUCT_SIZE_OF (vlib_buffer_t, opaque2),
	       "VNET buffer opaque2 meta-data too large for vlib_buffer");

format_function_t format_vnet_buffer;

#endif /* included_vnet_buffer_h */

/*
 * fd.io coding-style-patch-verification: ON
 *
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */