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_tipq_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_tq
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.c20 行で定義されています。

#define IPQ_QMAX_DEFAULT   1024
 

packet_queue.c19 行で定義されています。

#define NET_IPQ_QMAX   2088
 

packet_queue.c21 行で定義されています。

#define NET_IPQ_QMAX_NAME   "ip_queue_maxlen"
 

packet_queue.c22 行で定義されています。


型定義

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.c38 行で定義されています。


関数

void cleanup_packet_queue void   ) 
 

packet_queue.c383 行で定義されています。

参照先 ipq_destroy_queue()q.

参照元 cleanup_module().

static int dev_cmp ipq_queue_element_t e,
u_int32_t  ifindex
[inline, static]
 

packet_queue.c218 行で定義されています。

参照先 ipq_queue_element::info.

参照元 ipq_dev_drop().

static int id_cmp ipq_queue_element_t e,
u_int32_t  id
[inline, static]
 

packet_queue.c212 行で定義されています。

int init_packet_queue void   ) 
 

packet_queue.c359 行で定義されています。

参照先 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.c229 行で定義されています。

参照先 ipq_rt_info::daddripq_queue_element::rt_info.

参照元 ipq_drop_ip()ipq_send_ip().

static int ipq_create_queue int *  sysctl_qmax  )  [static]
 

packet_queue.c99 行で定義されています。

参照先 ipq_queue::flushingipq_queue::lenipq_queue::listipq_queue::lockipq_queue::maxlennetfilter_receive()qipq_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.c58 行で定義されています。

参照先 ipq_queue::lenipq_queue_element::listipq_queue::listipq_queue::lockq.

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

static void ipq_destroy_queue  )  [static]
 

packet_queue.c174 行で定義されています。

参照先 ipq_flush()ipq_queue::lockqipq_queue::terminate.

参照元 cleanup_packet_queue().

static void ipq_dev_drop int  ifindex  )  [static]
 

packet_queue.c240 行で定義されています。

参照先 dev_cmp()ipq_queue_element::infoipq_dequeue()ipq_queue_element::skbipq_queue_element::verdict.

参照元 receive_event().

void ipq_drop_ip u_int32_t  ip  ) 
 

packet_queue.c267 行で定義されています。

参照先 ipq_queue_element::infoip_cmp()ipq_dequeue()ipq_queue_element::skbipq_queue_element::verdict.

参照元 timer_rreq().

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

packet_queue.c123 行で定義されています。

参照先 ipq_queue::flushingipq_queue::lenipq_queue::listipq_queue::lockipq_queue::maxlenqipq_queue::terminate.

参照元 ipq_insert_packet()netfilter_receive().

static void ipq_flush  )  [static]
 

packet_queue.c79 行で定義されています。

参照先 ipq_queue::flushingipq_queue_element::infoipq_dequeue()ipq_queue::lockqipq_queue_element::skbipq_queue_element::verdict.

参照元 ipq_destroy_queue().

int ipq_insert_packet struct sk_buff *  skb,
struct nf_info *  info
 

packet_queue.c291 行で定義されています。

参照先 ipq_enqueue()q.

void ipq_send_ip u_int32_t  ip  ) 
 

packet_queue.c251 行で定義されています。

参照先 ipq_queue_element::infoip_cmp()ipq_dequeue()route_me_harder()ipq_queue_element::skbipq_queue_element::verdict.

参照元 update_route_entry().

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

packet_queue.c298 行で定義されています。

参照先 ipq_enqueue().

参照元 ipq_create_queue().

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

packet_queue.c310 行で定義されています。

参照先 ipq_dev_drop().

static int route_me_harder struct sk_buff *  skb  )  [static]
 

packet_queue.c187 行で定義されています。

参照元 ipq_send_ip().


変数

struct notifier_block ipq_dev_notifier
 

初期値:

 {
            receive_event,
            NULL,
            0
        }

packet_queue.c321 行で定義されています。

ctl_table ipq_dir_table[] [static]
 

初期値:

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

packet_queue.c343 行で定義されています。

ctl_table ipq_root_table[] [static]
 

初期値:

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

packet_queue.c348 行で定義されています。

参照元 init_packet_queue().

struct ctl_table_header* ipq_sysctl_header [static]
 

packet_queue.c335 行で定義されています。

ctl_table ipq_table[] [static]
 

初期値:

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

packet_queue.c337 行で定義されています。

ipq_queue_t* q [static]
 

packet_queue.c49 行で定義されています。

参照元 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.c333 行で定義されています。


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