packet_queue.c

#include "packet_queue.h"

ソースコードを見る。

データ構造

struct  ipq_rt_info
struct  ipq_queue_element
struct  ipq_queue

マクロ定義

#define IPQ_QMAX_DEFAULT   1024
#define IPQ_PROC_FS_NAME   "ip_queue"
#define NET_IPQ_QMAX   2088
#define NET_IPQ_QMAX_NAME   "ip_queue_maxlen"

型定義

typedef ipq_rt_info ipq_rt_info_t
typedef ipq_queue_element ipq_queue_element_t
typedef int(* ipq_send_cb_t )(ipq_queue_element_t *e)
typedef ipq_queue ipq_queue_t

関数

static int netfilter_receive (struct sk_buff *skb, struct nf_info *info, void *data)
static ipq_queue_element_t * ipq_dequeue (int(*cmp)(ipq_queue_element_t *, u_int32_t), u_int32_t data)
static void ipq_flush ()
static int ipq_create_queue (int *sysctl_qmax)
static int ipq_enqueue (ipq_queue_t *g, struct sk_buff *skb, struct nf_info *info)
static void ipq_destroy_queue ()
static int route_me_harder (struct sk_buff *skb)
static int id_cmp (ipq_queue_element_t *e, u_int32_t id)
static int dev_cmp (ipq_queue_element_t *e, u_int32_t ifindex)
static int ip_cmp (ipq_queue_element_t *e, u_int32_t ip)
static void ipq_dev_drop (int ifindex)
void ipq_send_ip (u_int32_t ip)
void ipq_drop_ip (u_int32_t ip)
int ipq_insert_packet (struct sk_buff *skb, struct nf_info *info)
static int receive_event (struct notifier_block *this, unsigned long event, void *ptr)
int init_packet_queue (void)
void cleanup_packet_queue (void)

変数

static ipq_queue_t * q
notifier_block ipq_dev_notifier
static int sysctl_maxlen = IPQ_QMAX_DEFAULT
static struct ctl_table_header * ipq_sysctl_header
static ctl_table ipq_table []
static ctl_table ipq_dir_table []
static ctl_table ipq_root_table []


マクロ定義

#define IPQ_PROC_FS_NAME   "ip_queue"
 

packet_queue.c の 20 行で定義されています。

#define IPQ_QMAX_DEFAULT   1024
 

packet_queue.c の 19 行で定義されています。

#define NET_IPQ_QMAX   2088
 

packet_queue.c の 21 行で定義されています。

#define NET_IPQ_QMAX_NAME   "ip_queue_maxlen"
 

packet_queue.c の 22 行で定義されています。


型定義

typedef struct ipq_queue_element ipq_queue_element_t
 

typedef struct ipq_queue ipq_queue_t
 

typedef struct ipq_rt_info ipq_rt_info_t
 

typedef int(* ipq_send_cb_t)(ipq_queue_element_t *e)
 

packet_queue.c の 38 行で定義されています。


関数

void cleanup_packet_queue (  void   ) 
 

packet_queue.c の 383 行で定義されています。

参照先 ipq_destroy_queue()・q.

参照元 cleanup_module().

static int dev_cmp (  ipq_queue_element_t *  e,
u_int32_t  ifindex
)  [inline, static]
 

packet_queue.c の 218 行で定義されています。

参照先 ipq_queue_element::info.

参照元 ipq_dev_drop().

static int id_cmp (  ipq_queue_element_t *  e,
u_int32_t  id
)  [inline, static]
 

packet_queue.c の 212 行で定義されています。

int init_packet_queue (  void   ) 
 

packet_queue.c の 359 行で定義されています。

参照先 ipq_create_queue()・ipq_root_table.

参照元 init_module().

static int ip_cmp (  ipq_queue_element_t *  e,
u_int32_t  ip
)  [inline, static]
 

packet_queue.c の 229 行で定義されています。

参照先 ipq_rt_info::daddr・ipq_queue_element::rt_info.

参照元 ipq_drop_ip()・ipq_send_ip().

static int ipq_create_queue (  int *  sysctl_qmax  )  [static]
 

packet_queue.c の 99 行で定義されています。

参照先 ipq_queue::flushing・ipq_queue::len・ipq_queue::list・ipq_queue::lock・ipq_queue::maxlen・netfilter_receive()・q・ipq_queue::terminate.

参照元 init_packet_queue().

static ipq_queue_element_t* ipq_dequeue (  int(*)(ipq_queue_element_t *, u_int32_t)  cmp,
u_int32_t  data
)  [static]
 

packet_queue.c の 58 行で定義されています。

参照先 ipq_queue::len・ipq_queue_element::list・ipq_queue::list・ipq_queue::lock・q.

参照元 ipq_dev_drop()・ipq_drop_ip()・ipq_flush()・ipq_send_ip().

static void ipq_destroy_queue (   )  [static]
 

packet_queue.c の 174 行で定義されています。

参照先 ipq_flush()・ipq_queue::lock・q・ipq_queue::terminate.

参照元 cleanup_packet_queue().

static void ipq_dev_drop (  int  ifindex  )  [static]
 

packet_queue.c の 240 行で定義されています。

参照先 dev_cmp()・ipq_queue_element::info・ipq_dequeue()・ipq_queue_element::skb・ipq_queue_element::verdict.

参照元 receive_event().

void ipq_drop_ip (  u_int32_t  ip  ) 
 

packet_queue.c の 267 行で定義されています。

参照先 ipq_queue_element::info・ip_cmp()・ipq_dequeue()・ipq_queue_element::skb・ipq_queue_element::verdict.

参照元 timer_rreq().

static int ipq_enqueue (  ipq_queue_t *  g,
struct sk_buff *  skb,
struct nf_info *  info
)  [static]
 

packet_queue.c の 123 行で定義されています。

参照先 ipq_queue::flushing・ipq_queue::len・ipq_queue::list・ipq_queue::lock・ipq_queue::maxlen・q・ipq_queue::terminate.

参照元 ipq_insert_packet()・netfilter_receive().

static void ipq_flush (   )  [static]
 

packet_queue.c の 79 行で定義されています。

参照先 ipq_queue::flushing・ipq_queue_element::info・ipq_dequeue()・ipq_queue::lock・q・ipq_queue_element::skb・ipq_queue_element::verdict.

参照元 ipq_destroy_queue().

int ipq_insert_packet (  struct sk_buff *  skb,
struct nf_info *  info
) 
 

packet_queue.c の 291 行で定義されています。

参照先 ipq_enqueue()・q.

void ipq_send_ip (  u_int32_t  ip  ) 
 

packet_queue.c の 251 行で定義されています。

参照先 ipq_queue_element::info・ip_cmp()・ipq_dequeue()・route_me_harder()・ipq_queue_element::skb・ipq_queue_element::verdict.

参照元 update_route_entry().

static int netfilter_receive (  struct sk_buff *  skb,
struct nf_info *  info,
void *  data
)  [static]
 

packet_queue.c の 298 行で定義されています。

参照先 ipq_enqueue().

参照元 ipq_create_queue().

static int receive_event (  struct notifier_block *  this,
unsigned long  event,
void *  ptr
)  [static]
 

packet_queue.c の 310 行で定義されています。

参照先 ipq_dev_drop().

static int route_me_harder (  struct sk_buff *  skb  )  [static]
 

packet_queue.c の 187 行で定義されています。

参照元 ipq_send_ip().


変数

struct notifier_block ipq_dev_notifier
 

初期値:

 {
            receive_event,
            NULL,
            0
        }

packet_queue.c の 321 行で定義されています。

ctl_table ipq_dir_table[] [static]
 

初期値:

 {
                                       {NET_IPV4, "ipv4", NULL, 0, 0555, ipq_table, 0, 0, 0, 0, 0},
                                       { 0 }
                                   }

packet_queue.c の 343 行で定義されています。

ctl_table ipq_root_table[] [static]
 

初期値:

 {
                                        {CTL_NET, "net", NULL, 0, 0555, ipq_dir_table, 0, 0, 0, 0, 0},
                                        { 0 }
                                    }

packet_queue.c の 348 行で定義されています。

参照元 init_packet_queue().

struct ctl_table_header* ipq_sysctl_header [static]
 

packet_queue.c の 335 行で定義されています。

ctl_table ipq_table[] [static]
 

初期値:

 {
                                   { NET_IPQ_QMAX, NET_IPQ_QMAX_NAME, &sysctl_maxlen,
                                     sizeof(sysctl_maxlen), 0644,  NULL, proc_dointvec },
                                   { 0 }
                               }

packet_queue.c の 337 行で定義されています。

ipq_queue_t* q [static]
 

packet_queue.c の 49 行で定義されています。

参照元 cleanup_packet_queue()・ipq_create_queue()・ipq_dequeue()・ipq_destroy_queue()・ipq_enqueue()・ipq_flush()・ipq_insert_packet().

int sysctl_maxlen = IPQ_QMAX_DEFAULT [static]
 

packet_queue.c の 333 行で定義されています。


kernel_aodvmに対してThu Nov 10 18:53:12 2005に生成されました。  doxygen 1.4.5