1. NAME▲
struct_sock - network layer representation of sockets
2. 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_dontcopy_begin __sk_common.skc_dontcopy_begin
#define sk_dontcopy_end __sk_common.skc_dontcopy_end
#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_reuseport __sk_common.skc_reuseport
#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
socket_lock_t sk_lock;
struct
sk_buff_head sk_receive_queue;
struct
sk_backlog;
#define sk_rmem_alloc sk_backlog.rmem_alloc
int
sk_forward_alloc;
#ifdef CONFIG_RPS
__u32 sk_rxhash;
#endif
atomic_t sk_drops;
int
sk_rcvbuf;
struct
sk_filter __rcu *
sk_filter;
struct
socket_wq __rcu *
sk_wq;
#ifdef CONFIG_NET_DMA
struct
sk_buff_head sk_async_wait_queue;
#endif
#ifdef CONFIG_XFRM
struct
xfrm_policy *
sk_policy[2
];
#endif
unsigned
long
sk_flags;
struct
dst_entry *
sk_rx_dst;
struct
dst_entry __rcu *
sk_dst_cache;
spinlock_t sk_dst_lock;
atomic_t sk_wmem_alloc;
atomic_t sk_omem_alloc;
int
sk_sndbuf;
struct
sk_buff_head sk_write_queue;
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_wmem_queued;
gfp_t sk_allocation;
netdev_features_t sk_route_caps;
netdev_features_t sk_route_nocaps;
int
sk_gso_type;
unsigned
int
sk_gso_max_size;
u16 sk_gso_max_segs;
int
sk_rcvlowat;
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;
unsigned
short
sk_ack_backlog;
unsigned
short
sk_max_ack_backlog;
__u32 sk_priority;
#if IS_ENABLED(CONFIG_NETPRIO_CGROUP)
__u32 sk_cgrp_prioidx;
#endif
struct
pid *
sk_peer_pid;
const
struct
cred *
sk_peer_cred;
long
sk_rcvtimeo;
long
sk_sndtimeo;
void
*
sk_protinfo;
struct
timer_list sk_timer;
ktime_t sk_stamp;
struct
socket *
sk_socket;
void
*
sk_user_data;
struct
page_frag sk_frag;
struct
sk_buff *
sk_send_head;
__s32 sk_peek_off;
int
sk_write_pending;
#ifdef CONFIG_SECURITY
void
*
sk_security;
#endif
__u32 sk_mark;
u32 sk_classid;
struct
cg_proto *
sk_cgrp;
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);
}
;
3. MEMBERS ▲
__sk_common
shared layout with inet_timewait_sock
sk_lock
synchronizer
sk_receive_queue
incoming packets
sk_backlog
always used with the per-socket spinlock held
sk_forward_alloc
space allocated forward
sk_rxhash
flow hash received from netif layer
sk_drops
raw/udp drops counter
sk_rcvbuf
size of receive buffer in bytes
sk_filter
socket filtering instructions
sk_wq
sock wait queue and async head
sk_async_wait_queue
DMA copied packets
sk_policy[2]
flow policy
sk_flags
SO_LINGER (l_onoff), SO_BROADCAST, SO_KEEPALIVE, SO_OOBINLINE settings, SO_TIMESTAMPING settings
sk_rx_dst
receive input route used by early tcp demux
sk_dst_cache
destination cache
sk_dst_lock
destination cache lock
sk_wmem_alloc
transmit queue bytes committed
sk_omem_alloc
"o« is »option« or »other"
sk_sndbuf
size of send buffer in bytes
sk_write_queue
Packet sending queue
sk_shutdown
mask of SEND_SHUTDOWN and/or RCV_SHUTDOWN
sk_no_check
SO_NO_CHECK setting, whether 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_wmem_queued
persistent queue size
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_gso_max_segs
Maximum number of GSO segments
sk_rcvlowat
SO_RCVLOWAT setting
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 donAqt cause failure but are the cause of a persistent failure not just Aqtimed outAq
sk_ack_backlog
current listen backlog
sk_max_ack_backlog
listen backlog set in listen
sk_priority
SO_PRIORITY setting
sk_cgrp_prioidx
socket groupAqs priority map index
sk_peer_pid
struct pid for this socketAqs peer
sk_peer_cred
SO_PEERCRED setting
sk_rcvtimeo
SO_RCVTIMEO setting
sk_sndtimeo
SO_SNDTIMEO setting
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_frag
cached page frag
sk_send_head
front of stuff to transmit
sk_peek_off
current peek_offset value
sk_write_pending
a write to stream socket waits to start
sk_security
used by security modules
sk_mark
generic packet mark
sk_classid
this socketAqs cgroup classid
sk_cgrp
this socketAqs cgroup-specific proto data
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
4. COPYRIGHT ▲