/*
 * This file is auto-generated. Modifications will be lost.
 *
 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
 * for more information.
 */
#ifndef __UAPI_PSAMPLE_H
#define __UAPI_PSAMPLE_H
enum {
  PSAMPLE_ATTR_IIFINDEX,
  PSAMPLE_ATTR_OIFINDEX,
  PSAMPLE_ATTR_ORIGSIZE,
  PSAMPLE_ATTR_SAMPLE_GROUP,
  PSAMPLE_ATTR_GROUP_SEQ,
  PSAMPLE_ATTR_SAMPLE_RATE,
  PSAMPLE_ATTR_DATA,
  PSAMPLE_ATTR_GROUP_REFCOUNT,
  PSAMPLE_ATTR_TUNNEL,
  PSAMPLE_ATTR_PAD,
  PSAMPLE_ATTR_OUT_TC,
  PSAMPLE_ATTR_OUT_TC_OCC,
  PSAMPLE_ATTR_LATENCY,
  PSAMPLE_ATTR_TIMESTAMP,
  PSAMPLE_ATTR_PROTO,
  PSAMPLE_ATTR_USER_COOKIE,
  PSAMPLE_ATTR_SAMPLE_PROBABILITY,
  __PSAMPLE_ATTR_MAX
};
enum psample_command {
  PSAMPLE_CMD_SAMPLE,
  PSAMPLE_CMD_GET_GROUP,
  PSAMPLE_CMD_NEW_GROUP,
  PSAMPLE_CMD_DEL_GROUP,
};
enum psample_tunnel_key_attr {
  PSAMPLE_TUNNEL_KEY_ATTR_ID,
  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_SRC,
  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_DST,
  PSAMPLE_TUNNEL_KEY_ATTR_TOS,
  PSAMPLE_TUNNEL_KEY_ATTR_TTL,
  PSAMPLE_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
  PSAMPLE_TUNNEL_KEY_ATTR_CSUM,
  PSAMPLE_TUNNEL_KEY_ATTR_OAM,
  PSAMPLE_TUNNEL_KEY_ATTR_GENEVE_OPTS,
  PSAMPLE_TUNNEL_KEY_ATTR_TP_SRC,
  PSAMPLE_TUNNEL_KEY_ATTR_TP_DST,
  PSAMPLE_TUNNEL_KEY_ATTR_VXLAN_OPTS,
  PSAMPLE_TUNNEL_KEY_ATTR_IPV6_SRC,
  PSAMPLE_TUNNEL_KEY_ATTR_IPV6_DST,
  PSAMPLE_TUNNEL_KEY_ATTR_PAD,
  PSAMPLE_TUNNEL_KEY_ATTR_ERSPAN_OPTS,
  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE,
  __PSAMPLE_TUNNEL_KEY_ATTR_MAX
};
#define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
#define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
#define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
#define PSAMPLE_GENL_NAME "psample"
#define PSAMPLE_GENL_VERSION 1
#endif
