/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _NF_OSF_H
#define _NF_OSF_H
#include <linux/types.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#define MAXGENRELEN 32
#define NF_OSF_GENRE (1 << 0)
#define NF_OSF_TTL (1 << 1)
#define NF_OSF_LOG (1 << 2)
#define NF_OSF_INVERT (1 << 3)
#define NF_OSF_LOGLEVEL_ALL 0
#define NF_OSF_LOGLEVEL_FIRST 1
#define NF_OSF_LOGLEVEL_ALL_KNOWN 2
#define NF_OSF_TTL_TRUE 0
#define NF_OSF_TTL_LESS 1
#define NF_OSF_TTL_NOCHECK 2
#define NF_OSF_FLAGMASK (NF_OSF_GENRE | NF_OSF_TTL | NF_OSF_LOG | NF_OSF_INVERT)
struct nf_osf_wc {
  __u32 wc;
  __u32 val;
};
struct nf_osf_opt {
  __u16 kind, length;
  struct nf_osf_wc wc;
};
struct nf_osf_info {
  char genre[MAXGENRELEN];
  __u32 len;
  __u32 flags;
  __u32 loglevel;
  __u32 ttl;
};
struct nf_osf_user_finger {
  struct nf_osf_wc wss;
  __u8 ttl, df;
  __u16 ss, mss;
  __u16 opt_num;
  char genre[MAXGENRELEN];
  char version[MAXGENRELEN];
  char subtype[MAXGENRELEN];
  struct nf_osf_opt opt[MAX_IPOPTLEN];
};
struct nf_osf_nlmsg {
  struct nf_osf_user_finger f;
  struct iphdr ip;
  struct tcphdr tcp;
};
enum iana_options {
  OSFOPT_EOL = 0,
  OSFOPT_NOP,
  OSFOPT_MSS,
  OSFOPT_WSO,
  OSFOPT_SACKP,
  OSFOPT_SACK,
  OSFOPT_ECHO,
  OSFOPT_ECHOREPLY,
  OSFOPT_TS,
  OSFOPT_POCP,
  OSFOPT_POSP,
  OSFOPT_EMPTY = 255,
};
enum nf_osf_window_size_options {
  OSF_WSS_PLAIN = 0,
  OSF_WSS_MSS,
  OSF_WSS_MTU,
  OSF_WSS_MODULO,
  OSF_WSS_MAX,
};
enum nf_osf_attr_type {
  OSF_ATTR_UNSPEC,
  OSF_ATTR_FINGER,
  OSF_ATTR_MAX,
};
enum nf_osf_msg_types {
  OSF_MSG_ADD,
  OSF_MSG_REMOVE,
  OSF_MSG_MAX,
};
#endif
