linux-bk/include/net/flow.h
<<
>>
Prefs
   1/*
   2 *
   3 *      Generic internet FLOW.
   4 *
   5 */
   6
   7#ifndef _NET_FLOW_H
   8#define _NET_FLOW_H
   9
  10#include <linux/in6.h>
  11#include <asm/atomic.h>
  12
  13struct flowi {
  14        int     oif;
  15        int     iif;
  16
  17        union {
  18                struct {
  19                        __u32                   daddr;
  20                        __u32                   saddr;
  21                        __u32                   fwmark;
  22                        __u8                    tos;
  23                        __u8                    scope;
  24                } ip4_u;
  25                
  26                struct {
  27                        struct in6_addr         daddr;
  28                        struct in6_addr         saddr;
  29                        __u32                   flowlabel;
  30                } ip6_u;
  31
  32                struct {
  33                        __u16                   daddr;
  34                        __u16                   saddr;
  35                        __u32                   fwmark;
  36                        __u8                    scope;
  37                } dn_u;
  38        } nl_u;
  39#define fld_dst         nl_u.dn_u.daddr
  40#define fld_src         nl_u.dn_u.saddr
  41#define fld_fwmark      nl_u.dn_u.fwmark
  42#define fld_scope       nl_u.dn_u.scope
  43#define fl6_dst         nl_u.ip6_u.daddr
  44#define fl6_src         nl_u.ip6_u.saddr
  45#define fl6_flowlabel   nl_u.ip6_u.flowlabel
  46#define fl4_dst         nl_u.ip4_u.daddr
  47#define fl4_src         nl_u.ip4_u.saddr
  48#define fl4_fwmark      nl_u.ip4_u.fwmark
  49#define fl4_tos         nl_u.ip4_u.tos
  50#define fl4_scope       nl_u.ip4_u.scope
  51
  52        __u8    proto;
  53        __u8    flags;
  54        union {
  55                struct {
  56                        __u16   sport;
  57                        __u16   dport;
  58                } ports;
  59
  60                struct {
  61                        __u8    type;
  62                        __u8    code;
  63                } icmpt;
  64
  65                struct {
  66                        __u16   sport;
  67                        __u16   dport;
  68                        __u8    objnum;
  69                        __u8    objnamel; /* Not 16 bits since max val is 16 */
  70                        __u8    objname[16]; /* Not zero terminated */
  71                } dnports;
  72
  73                __u32           spi;
  74        } uli_u;
  75#define fl_ip_sport     uli_u.ports.sport
  76#define fl_ip_dport     uli_u.ports.dport
  77#define fl_icmp_type    uli_u.icmpt.type
  78#define fl_icmp_code    uli_u.icmpt.code
  79#define fl_ipsec_spi    uli_u.spi
  80} __attribute__((__aligned__(BITS_PER_LONG/8)));
  81
  82#define FLOW_DIR_IN     0
  83#define FLOW_DIR_OUT    1
  84#define FLOW_DIR_FWD    2
  85
  86typedef void (*flow_resolve_t)(struct flowi *key, u16 family, u8 dir,
  87                               void **objp, atomic_t **obj_refp);
  88
  89extern void *flow_cache_lookup(struct flowi *key, u16 family, u8 dir,
  90                               flow_resolve_t resolver);
  91extern void flow_cache_flush(void);
  92extern atomic_t flow_cache_genid;
  93
  94#endif
  95
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.