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/netpfil/ipfilter/netinet/ip_frag.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 /*      $FreeBSD$       */
    2 
    3 /*
    4  * Copyright (C) 2012 by Darren Reed.
    5  *
    6  * See the IPFILTER.LICENCE file for details on licencing.
    7  *
    8  * @(#)ip_frag.h        1.5 3/24/96
    9  * $FreeBSD$
   10  * Id: ip_frag.h,v 2.23.2.1 2004/03/29 16:21:56 darrenr Exp
   11  */
   12 
   13 #ifndef __IP_FRAG_H__
   14 #define __IP_FRAG_H__
   15 
   16 #define IPFT_SIZE       257
   17 
   18 typedef struct  ipfr    {
   19         struct  ipfr    *ipfr_hnext, **ipfr_hprev;
   20         struct  ipfr    *ipfr_next, **ipfr_prev;
   21         void    *ipfr_data;
   22         frentry_t *ipfr_rule;
   23         u_long  ipfr_ttl;
   24         u_int   ipfr_pkts;
   25         u_int   ipfr_bytes;
   26         u_int   ipfr_badorder;
   27         int     ipfr_ref;
   28         u_short ipfr_off;
   29         u_short ipfr_firstend;
   30         u_char  ipfr_p;
   31         u_char  ipfr_seen0;
   32         /*
   33          * All of the fields, from ipfr_ifp to ipfr_pass, are compared
   34          * using bcmp to see if an identical entry is present.  It is
   35          * therefore important for this set to remain together.
   36          */
   37         void    *ipfr_ifp;
   38         i6addr_t        ipfr_source;
   39         i6addr_t        ipfr_dest;
   40         u_32_t  ipfr_optmsk;
   41         u_short ipfr_secmsk;
   42         u_short ipfr_auth;
   43         u_32_t  ipfr_id;
   44         u_32_t  ipfr_pass;
   45         int     ipfr_v;
   46 } ipfr_t;
   47 
   48 #define ipfr_src        ipfr_source.in4
   49 #define ipfr_dst        ipfr_dest.in4
   50 
   51 
   52 typedef struct  ipfrstat {
   53         u_long  ifs_exists;     /* add & already exists */
   54         u_long  ifs_nomem;
   55         u_long  ifs_new;
   56         u_long  ifs_hits;
   57         u_long  ifs_expire;
   58         u_long  ifs_inuse;
   59         u_long  ifs_retrans0;
   60         u_long  ifs_short;
   61         u_long  ifs_bad;
   62         u_long  ifs_overlap;
   63         u_long  ifs_unordered;
   64         u_long  ifs_strict;
   65         u_long  ifs_miss;
   66         u_long  ifs_maximum;
   67         u_long  ifs_newbad;
   68         u_long  ifs_newrestrictnot0;
   69         struct  ipfr    **ifs_table;
   70         struct  ipfr    **ifs_nattab;
   71 } ipfrstat_t;
   72 
   73 typedef struct ipf_frag_softc_s  {
   74         ipfrwlock_t     ipfr_ipidfrag;
   75         ipfrwlock_t     ipfr_frag;
   76         ipfrwlock_t     ipfr_natfrag;
   77         int             ipfr_size;
   78         int             ipfr_ttl;
   79         int             ipfr_lock;
   80         int             ipfr_inited;
   81         ipftuneable_t   *ipf_frag_tune;
   82         ipfr_t          *ipfr_list;
   83         ipfr_t          **ipfr_tail;
   84         ipfr_t          *ipfr_natlist;
   85         ipfr_t          **ipfr_nattail;
   86         ipfr_t          *ipfr_ipidlist;
   87         ipfr_t          **ipfr_ipidtail;
   88         ipfr_t          **ipfr_heads;
   89         ipfr_t          **ipfr_nattab;
   90         ipfr_t          **ipfr_ipidtab;
   91         ipfrstat_t      ipfr_stats;
   92 } ipf_frag_softc_t;
   93 
   94 #define IPFR_CMPSZ      (offsetof(ipfr_t, ipfr_pass) - \
   95                          offsetof(ipfr_t, ipfr_ifp))
   96 
   97 extern  void    *ipf_frag_soft_create(ipf_main_softc_t *);
   98 extern  int     ipf_frag_soft_init(ipf_main_softc_t *, void *);
   99 extern  int     ipf_frag_soft_fini(ipf_main_softc_t *, void *);
  100 extern  void    ipf_frag_soft_destroy(ipf_main_softc_t *, void *);
  101 extern  int     ipf_frag_main_load(void);
  102 extern  int     ipf_frag_main_unload(void);
  103 extern  int     ipf_frag_load(void);
  104 extern  void    ipf_frag_clear(ipf_main_softc_t *);
  105 extern  void    ipf_frag_expire(ipf_main_softc_t *);
  106 extern  void    ipf_frag_forget(void *);
  107 extern  int     ipf_frag_init(void);
  108 extern  u_32_t  ipf_frag_ipidknown(fr_info_t *);
  109 extern  int     ipf_frag_ipidnew(fr_info_t *, u_32_t);
  110 extern  frentry_t *ipf_frag_known(fr_info_t *, u_32_t *);
  111 extern  void    ipf_frag_natforget(ipf_main_softc_t *, void *);
  112 extern  int     ipf_frag_natnew(ipf_main_softc_t *, fr_info_t *, u_32_t, struct nat *);
  113 extern  nat_t   *ipf_frag_natknown(fr_info_t *);
  114 extern  int     ipf_frag_new(ipf_main_softc_t *, fr_info_t *, u_32_t);
  115 extern  ipfrstat_t      *ipf_frag_stats(void *);
  116 extern  void    ipf_frag_setlock(void *, int);
  117 extern  void    ipf_frag_pkt_deref(ipf_main_softc_t *, void *);
  118 extern  int     ipf_frag_pkt_next(ipf_main_softc_t *, ipftoken_t *,
  119                                        ipfgeniter_t *);
  120 extern  void    ipf_frag_nat_deref(ipf_main_softc_t *, void *);
  121 extern  int     ipf_frag_nat_next(ipf_main_softc_t *, ipftoken_t *,
  122                                        ipfgeniter_t *);
  123 extern  void    ipf_slowtimer(ipf_main_softc_t *);
  124 
  125 #endif  /* __IP_FRAG_H__ */

Cache object: f6f29202577b3bae9b0bea4f23924fa2


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