struct_sock

Langue: en

Version: October 2010 (fedora - 01/12/10)

Section: 9 (Appels noyau Linux)

NAME

struct_sock - network layer representation of sockets

SYNOPSIS

 struct sock {
   struct sock_common __sk_common;
 #define sk_node                 __sk_common.skc_node
 #define sk_nulls_node           __sk_common.skc_nulls_node
 #define sk_refcnt               __sk_common.skc_refcnt
 #define sk_tx_queue_mapping     __sk_common.skc_tx_queue_mapping
 #define sk_copy_start           __sk_common.skc_hash
 #define sk_hash                 __sk_common.skc_hash
 #define sk_family               __sk_common.skc_family
 #define sk_state                __sk_common.skc_state
 #define sk_reuse                __sk_common.skc_reuse
 #define sk_bound_dev_if         __sk_common.skc_bound_dev_if
 #define sk_bind_node            __sk_common.skc_bind_node
 #define sk_prot                 __sk_common.skc_prot
 #define sk_net                  __sk_common.skc_net
   unsigned int sk_shutdown:2;
   unsigned int sk_no_check:2;
   unsigned int sk_userlocks:4;
   unsigned int sk_protocol:8;
   unsigned int sk_type:16;
   int sk_rcvbuf;
   socket_lock_t sk_lock;
   struct sk_backlog;
   struct socket_wq * sk_wq;
   struct dst_entry * sk_dst_cache;
 #ifdef CONFIG_XFRM
   struct xfrm_policy * sk_policy[2];
 #endif
   spinlock_t sk_dst_lock;
   atomic_t sk_rmem_alloc;
   atomic_t sk_wmem_alloc;
   atomic_t sk_omem_alloc;
   int sk_sndbuf;
   struct sk_buff_head sk_receive_queue;
   struct sk_buff_head sk_write_queue;
 #ifdef CONFIG_NET_DMA
   struct sk_buff_head sk_async_wait_queue;
 #endif
   int sk_wmem_queued;
   int sk_forward_alloc;
   gfp_t sk_allocation;
   int sk_route_caps;
   int sk_route_nocaps;
   int sk_gso_type;
   unsigned int sk_gso_max_size;
   int sk_rcvlowat;
 #ifdef CONFIG_RPS
   __u32 sk_rxhash;
 #endif
   unsigned long sk_flags;
   unsigned long sk_lingertime;
   struct sk_buff_head sk_error_queue;
   struct proto * sk_prot_creator;
   rwlock_t sk_callback_lock;
   int sk_err;
   int sk_err_soft;
   atomic_t sk_drops;
   unsigned short sk_ack_backlog;
   unsigned short sk_max_ack_backlog;
   __u32 sk_priority;
   struct ucred sk_peercred;
   long sk_rcvtimeo;
   long sk_sndtimeo;
   struct sk_filter * sk_filter;
   void * sk_protinfo;
   struct timer_list sk_timer;
   ktime_t sk_stamp;
   struct socket * sk_socket;
   void * sk_user_data;
   struct page * sk_sndmsg_page;
   struct sk_buff * sk_send_head;
   __u32 sk_sndmsg_off;
   int sk_write_pending;
 #ifdef CONFIG_SECURITY
   void * sk_security;
 #endif
   __u32 sk_mark;
   void (* sk_state_change) (struct sock *sk);
   void (* sk_data_ready) (struct sock *sk, int bytes);
   void (* sk_write_space) (struct sock *sk);
   void (* sk_error_report) (struct sock *sk);
   int (* sk_backlog_rcv) (struct sock *sk,struct sk_buff *skb);
   void (* sk_destruct) (struct sock *sk);
 };  
 

MEMBERS

__sk_common

shared layout with inet_timewait_sock

sk_shutdown

mask of SEND_SHUTDOWN and/or RCV_SHUTDOWN

sk_no_check


SO_NO_CHECK setting, wether or not checkup packets

sk_userlocks


SO_SNDBUF and SO_RCVBUF settings

sk_protocol

which protocol this socket belongs in this network family

sk_type

socket type (SOCK_STREAM, etc)

sk_rcvbuf

size of receive buffer in bytes

sk_lock

synchronizer

sk_backlog

always used with the per-socket spinlock held

sk_wq

sock wait queue and async head

sk_dst_cache

destination cache

sk_policy[2]

flow policy

sk_dst_lock

destination cache lock

sk_rmem_alloc

receive queue bytes committed

sk_wmem_alloc

transmit queue bytes committed

sk_omem_alloc

"olq is rqoptionlq or rqother"

sk_sndbuf

size of send buffer in bytes

sk_receive_queue

incoming packets

sk_write_queue

Packet sending queue

sk_async_wait_queue

DMA copied packets

sk_wmem_queued

persistent queue size

sk_forward_alloc

space allocated forward

sk_allocation

allocation mode

sk_route_caps

route capabilities (e.g. NETIF_F_TSO)

sk_route_nocaps

forbidden route capabilities (e.g NETIF_F_GSO_MASK)

sk_gso_type

GSO type (e.g. SKB_GSO_TCPV4)

sk_gso_max_size

Maximum GSO segment size to build

sk_rcvlowat


SO_RCVLOWAT setting

sk_rxhash

flow hash received from netif layer

sk_flags


SO_LINGER (l_onoff), SO_BROADCAST, SO_KEEPALIVE, SO_OOBINLINE settings, SO_TIMESTAMPING settings

sk_lingertime


SO_LINGER l_linger setting

sk_error_queue

rarely used

sk_prot_creator

sk_prot of original sock creator (see ipv6_setsockopt, IPV6_ADDRFORM for instance)

sk_callback_lock

used with the callbacks in the end of this struct

sk_err

last error

sk_err_soft

errors that don't cause failure but are the cause of a persistent failure not just 'timed out'

sk_drops

raw/udp drops counter

sk_ack_backlog

current listen backlog

sk_max_ack_backlog

listen backlog set in listen

sk_priority


SO_PRIORITY setting

sk_peercred


SO_PEERCRED setting

sk_rcvtimeo


SO_RCVTIMEO setting

sk_sndtimeo


SO_SNDTIMEO setting

sk_filter

socket filtering instructions

sk_protinfo

private area, net family specific, when not using slab

sk_timer

sock cleanup timer

sk_stamp

time stamp of last packet received

sk_socket

Identd and reporting IO signals

sk_user_data

RPC layer private data

sk_sndmsg_page

cached page for sendmsg

sk_send_head

front of stuff to transmit

sk_sndmsg_off

cached offset for sendmsg

sk_write_pending

a write to stream socket waits to start

sk_security

used by security modules

sk_mark

generic packet mark

sk_state_change

callback to indicate change in the state of the sock

sk_data_ready

callback to indicate there is data to be processed

sk_write_space

callback to indicate there is bf sending space available

sk_error_report

callback to indicate errors (e.g. MSG_ERRQUEUE)

sk_backlog_rcv

callback to process the backlog

sk_destruct

called at sock freeing time, i.e. when all refcnt == 0