Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
feat.c File Reference
#include <linux/module.h>
#include <linux/slab.h>
#include "ccid.h"
#include "feat.h"

Go to the source code of this file.


#define DCCP_FEAT_SUPPORTED_MAX   ARRAY_SIZE(dccp_feat_table)
#define dccp_feat_print_opt(opt, feat, val, len, mandatory)
#define dccp_feat_print_fnlist(fn_list)


void dccp_feat_list_purge (struct list_head *fn_list)
 EXPORT_SYMBOL_GPL (dccp_feat_list_purge)
int dccp_feat_clone_list (struct list_head const *from, struct list_head *to)
int dccp_feat_insert_opts (struct dccp_sock *dp, struct dccp_request_sock *dreq, struct sk_buff *skb)
int dccp_feat_register_sp (struct sock *sk, u8 feat, u8 is_local, u8 const *list, u8 len)
u64 dccp_feat_nn_get (struct sock *sk, u8 feat)
 EXPORT_SYMBOL_GPL (dccp_feat_nn_get)
int dccp_feat_signal_nn_change (struct sock *sk, u8 feat, u64 nn_val)
 EXPORT_SYMBOL_GPL (dccp_feat_signal_nn_change)
int dccp_feat_finalise_settings (struct dccp_sock *dp)
int dccp_feat_server_ccid_dependencies (struct dccp_request_sock *dreq)
int dccp_feat_parse_options (struct sock *sk, struct dccp_request_sock *dreq, u8 mandatory, u8 opt, u8 feat, u8 *val, u8 len)
int dccp_feat_init (struct sock *sk)
int dccp_feat_activate_values (struct sock *sk, struct list_head *fn_list)


unsigned long
__read_mostly = 100

Macro Definition Documentation

#define dccp_feat_print_fnlist (   fn_list)

Definition at line 305 of file feat.c.

#define dccp_feat_print_opt (   opt,

Definition at line 304 of file feat.c.

#define DCCP_FEAT_SUPPORTED_MAX   ARRAY_SIZE(dccp_feat_table)

Definition at line 169 of file feat.c.

Function Documentation

int dccp_feat_activate_values ( struct sock sk,
struct list_head fn_list 

Definition at line 1494 of file feat.c.

int dccp_feat_clone_list ( struct list_head const from,
struct list_head to 

Definition at line 555 of file feat.c.

int dccp_feat_finalise_settings ( struct dccp_sock dp)

dccp_feat_finalise_settings - Finalise settings before starting negotiation : client or listening socket (settings will be inherited)

This is called after all registrations (socket initialisation, sysctls, and sockopt calls), and before sending the first packet containing Change options (ie. client-Request or server-Response), to ensure internal consistency.

Definition at line 968 of file feat.c.

int dccp_feat_init ( struct sock sk)

dccp_feat_init - Seed feature negotiation with host-specific defaults This initialises global defaults, depending on the value of the sysctls. These can later be overridden by registering changes via setsockopt calls. The last link in the chain is finalise_settings, to make sure that between here and the start of actual feature negotiation no inconsistencies enter.

All features not appearing below use either defaults or are otherwise later adjusted through dccp_feat_finalise_settings().

Definition at line 1440 of file feat.c.

int dccp_feat_insert_opts ( struct dccp_sock dp,
struct dccp_request_sock dreq,
struct sk_buff skb 

dccp_feat_insert_opts - Generate FN options from current list state : next sk_buff to be sent to the peer : for client during handshake and general negotiation : used by the server only (all Changes/Confirms in LISTEN/RESPOND)

Definition at line 634 of file feat.c.

void dccp_feat_list_purge ( struct list_head fn_list)

Definition at line 544 of file feat.c.

u64 dccp_feat_nn_get ( struct sock sk,
u8  feat 

dccp_feat_nn_get - Query current/pending value of NN feature : DCCP socket of an established connection : NN feature number from dccp_feature_numbers

For a known NN feature, returns value currently being negotiated, or current (confirmed) value if no negotiation is going on.

Definition at line 771 of file feat.c.

int dccp_feat_parse_options ( struct sock sk,
struct dccp_request_sock dreq,
u8  mandatory,
u8  opt,
u8  feat,
u8 val,
u8  len 

dccp_feat_parse_options - Process Feature-Negotiation Options : for general use and used by the client during connection setup : used by the server during connection setup : whether was preceded by a Mandatory option : DCCPO_CHANGE_L | DCCPO_CHANGE_R | DCCPO_CONFIRM_L | DCCPO_CONFIRM_R : one of dccp_feature_numbers : value contents of : length of in bytes

Returns 0 on success, a Reset code for ending the connection otherwise.

Definition at line 1394 of file feat.c.

int dccp_feat_register_sp ( struct sock sk,
u8  feat,
u8  is_local,
u8 const list,
u8  len 

dccp_feat_register_sp - Register requests to change SP feature values : client or listening socket : one of dccp_feature_numbers : whether the local (1) or remote (0) is meant : array of preferred values, in descending order of preference : length of in bytes

Definition at line 752 of file feat.c.

int dccp_feat_server_ccid_dependencies ( struct dccp_request_sock dreq)

dccp_feat_server_ccid_dependencies - Resolve CCID-dependent features It is the server which resolves the dependencies once the CCID has been fully negotiated. If no CCID has been negotiated, it uses the default CCID.

Definition at line 998 of file feat.c.

int dccp_feat_signal_nn_change ( struct sock sk,
u8  feat,
u64  nn_val 

dccp_feat_signal_nn_change - Update NN values for an established connection : DCCP socket of an established connection : NN feature number from dccp_feature_numbers : the new value to use

This function is used to communicate NN updates out-of-band.

Definition at line 801 of file feat.c.

EXPORT_SYMBOL_GPL ( dccp_feat_list_purge  )
EXPORT_SYMBOL_GPL ( dccp_feat_nn_get  )
EXPORT_SYMBOL_GPL ( dccp_feat_signal_nn_change  )

Variable Documentation

Definition at line 31 of file feat.c.

int(* activation_hdlr)(struct sock *sk, u64 val, bool rx)

Definition at line 138 of file feat.c.

u8 default_value

Definition at line 137 of file feat.c.

u8 feat_num

Definition at line 134 of file feat.c.

enum dccp_feat_type reconciliation

Definition at line 136 of file feat.c.

enum dccp_feat_type rxtx

Definition at line 135 of file feat.c.