linux/net/atm/mpoa_caches.h
<<
>>
Prefs
   1#ifndef MPOA_CACHES_H
   2#define MPOA_CACHES_H
   3
   4#include <linux/netdevice.h>
   5#include <linux/types.h>
   6#include <linux/atm.h>
   7#include <linux/atmdev.h>
   8#include <linux/atmmpc.h>
   9
  10struct mpoa_client;
  11
  12void atm_mpoa_init_cache(struct mpoa_client *mpc);
  13
  14typedef struct in_cache_entry {
  15        struct in_cache_entry *next;
  16        struct in_cache_entry *prev;
  17        struct timeval  tv;
  18        struct timeval  reply_wait;
  19        struct timeval  hold_down;
  20        uint32_t  packets_fwded;
  21        uint16_t  entry_state;
  22        uint32_t retry_time;
  23        uint32_t refresh_time;
  24        uint32_t count;
  25        struct   atm_vcc *shortcut;
  26        uint8_t  MPS_ctrl_ATM_addr[ATM_ESA_LEN];
  27        struct   in_ctrl_info ctrl_info;
  28        atomic_t use;
  29} in_cache_entry;
  30
  31struct in_cache_ops{
  32        in_cache_entry *(*add_entry)(__be32 dst_ip,
  33                                      struct mpoa_client *client);
  34        in_cache_entry *(*get)(__be32 dst_ip, struct mpoa_client *client);
  35        in_cache_entry *(*get_with_mask)(__be32 dst_ip,
  36                                         struct mpoa_client *client,
  37                                         __be32 mask);
  38        in_cache_entry *(*get_by_vcc)(struct atm_vcc *vcc,
  39                                      struct mpoa_client *client);
  40        void            (*put)(in_cache_entry *entry);
  41        void            (*remove_entry)(in_cache_entry *delEntry,
  42                                        struct mpoa_client *client );
  43        int             (*cache_hit)(in_cache_entry *entry,
  44                                     struct mpoa_client *client);
  45        void            (*clear_count)(struct mpoa_client *client);
  46        void            (*check_resolving)(struct mpoa_client *client);
  47        void            (*refresh)(struct mpoa_client *client);
  48        void            (*destroy_cache)(struct mpoa_client *mpc);
  49};
  50
  51typedef struct eg_cache_entry{
  52        struct               eg_cache_entry *next;
  53        struct               eg_cache_entry *prev;
  54        struct               timeval  tv;
  55        uint8_t              MPS_ctrl_ATM_addr[ATM_ESA_LEN];
  56        struct atm_vcc       *shortcut;
  57        uint32_t             packets_rcvd;
  58        uint16_t             entry_state;
  59        __be32             latest_ip_addr;    /* The src IP address of the last packet */
  60        struct eg_ctrl_info  ctrl_info;
  61        atomic_t             use;
  62} eg_cache_entry;
  63
  64struct eg_cache_ops{
  65        eg_cache_entry *(*add_entry)(struct k_message *msg, struct mpoa_client *client);
  66        eg_cache_entry *(*get_by_cache_id)(__be32 cache_id, struct mpoa_client *client);
  67        eg_cache_entry *(*get_by_tag)(__be32 cache_id, struct mpoa_client *client);
  68        eg_cache_entry *(*get_by_vcc)(struct atm_vcc *vcc, struct mpoa_client *client);
  69        eg_cache_entry *(*get_by_src_ip)(__be32 ipaddr, struct mpoa_client *client);
  70        void            (*put)(eg_cache_entry *entry);
  71        void            (*remove_entry)(eg_cache_entry *entry, struct mpoa_client *client);
  72        void            (*update)(eg_cache_entry *entry, uint16_t holding_time);
  73        void            (*clear_expired)(struct mpoa_client *client);
  74        void            (*destroy_cache)(struct mpoa_client *mpc);
  75};
  76
  77
  78/* Ingress cache entry states */
  79
  80#define INGRESS_REFRESHING 3
  81#define INGRESS_RESOLVED   2
  82#define INGRESS_RESOLVING  1
  83#define INGRESS_INVALID    0
  84
  85/* VCC states */
  86
  87#define OPEN   1
  88#define CLOSED 0
  89
  90/* Egress cache entry states */
  91
  92#define EGRESS_RESOLVED 2
  93#define EGRESS_PURGE    1
  94#define EGRESS_INVALID  0
  95
  96#endif
  97