text: /****************************************************************************
   ****************************************************************************
   ***
   ***   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.
   ***
   ****************************************************************************
   ****************************************************************************/
  #ifndef _IP_CONNTRACK_TUPLE_H
  #define _IP_CONNTRACK_TUPLE_H
  
  #include <linux/types.h>
  #include <linux/netfilter/nf_conntrack_tuple_common.h>
  
  union ip_conntrack_manip_proto
  {
  
   u_int16_t all;
  
   struct {
   __be16 port;
   } tcp;
   struct {
   u_int16_t port;
   } udp;
   struct {
   u_int16_t id;
   } icmp;
   struct {
   u_int16_t port;
   } sctp;
   struct {
   __be16 key;
   } gre;
  };
  
  struct ip_conntrack_manip
  {
   u_int32_t ip;
   union ip_conntrack_manip_proto u;
  };
  
  struct ip_conntrack_tuple
  {
   struct ip_conntrack_manip src;
  
   struct {
   u_int32_t ip;
   union {
  
   u_int16_t all;
  
   struct {
   u_int16_t port;
   } tcp;
   struct {
   u_int16_t port;
   } udp;
   struct {
   u_int8_t type, code;
   } icmp;
   struct {
   u_int16_t port;
   } sctp;
   struct {
   __be16 key;
   } gre;
   } u;
  
   u_int8_t protonum;
  
   u_int8_t dir;
   } dst;
  };
  
  #define IP_CT_TUPLE_U_BLANK(tuple)   do {   (tuple)->src.u.all = 0;   (tuple)->dst.u.all = 0;   } while (0)
  
  #endif
  