Commit f2a67a57 authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [UDP]: Fix reversed logic in udp_get_port().
  [IPV6]: Dumb typo in generic csum_ipv6_magic()
  [SCTP]: make 2 functions static
  [SCTP]: Fix typo adaption -> adaptation as per the latest API draft.
  [SCTP]: Don't export include/linux/sctp.h to userspace.
  [TCP]: Fix ambiguity in the `before' relation.
  [ATM] drivers/atm/fore200e.c: Cleanups.
  [ATM]: Remove dead ATM_TNETA1570 option.
  NetLabel: correctly fill in unused CIPSOv4 level and category mappings
  NetLabel: perform input validation earlier on CIPSOv4 DOI add ops
parents 719d3402 5c668704
...@@ -167,10 +167,6 @@ config ATM_ZATM_DEBUG ...@@ -167,10 +167,6 @@ config ATM_ZATM_DEBUG
Note that extended debugging may create certain race conditions Note that extended debugging may create certain race conditions
itself. Enable this ONLY if you suspect problems with the driver. itself. Enable this ONLY if you suspect problems with the driver.
# bool 'Rolfs TI TNETA1570' CONFIG_ATM_TNETA1570 y
# if [ "$CONFIG_ATM_TNETA1570" = "y" ]; then
# bool ' Enable extended debugging' CONFIG_ATM_TNETA1570_DEBUG n
# fi
config ATM_NICSTAR config ATM_NICSTAR
tristate "IDT 77201 (NICStAR) (ForeRunnerLE)" tristate "IDT 77201 (NICStAR) (ForeRunnerLE)"
depends on PCI && ATM && !64BIT depends on PCI && ATM && !64BIT
......
This diff is collapsed.
...@@ -137,7 +137,6 @@ header-y += radeonfb.h ...@@ -137,7 +137,6 @@ header-y += radeonfb.h
header-y += raw.h header-y += raw.h
header-y += resource.h header-y += resource.h
header-y += rose.h header-y += rose.h
header-y += sctp.h
header-y += smbno.h header-y += smbno.h
header-y += snmp.h header-y += snmp.h
header-y += sockios.h header-y += sockios.h
......
...@@ -180,7 +180,7 @@ typedef enum { ...@@ -180,7 +180,7 @@ typedef enum {
SCTP_PARAM_ERR_CAUSE = __constant_htons(0xc003), SCTP_PARAM_ERR_CAUSE = __constant_htons(0xc003),
SCTP_PARAM_SET_PRIMARY = __constant_htons(0xc004), SCTP_PARAM_SET_PRIMARY = __constant_htons(0xc004),
SCTP_PARAM_SUCCESS_REPORT = __constant_htons(0xc005), SCTP_PARAM_SUCCESS_REPORT = __constant_htons(0xc005),
SCTP_PARAM_ADAPTION_LAYER_IND = __constant_htons(0xc006), SCTP_PARAM_ADAPTATION_LAYER_IND = __constant_htons(0xc006),
} sctp_param_t; /* enum */ } sctp_param_t; /* enum */
...@@ -281,11 +281,11 @@ typedef struct sctp_ecn_capable_param { ...@@ -281,11 +281,11 @@ typedef struct sctp_ecn_capable_param {
sctp_paramhdr_t param_hdr; sctp_paramhdr_t param_hdr;
} __attribute__((packed)) sctp_ecn_capable_param_t; } __attribute__((packed)) sctp_ecn_capable_param_t;
/* ADDIP Section 3.2.6 Adaption Layer Indication */ /* ADDIP Section 3.2.6 Adaptation Layer Indication */
typedef struct sctp_adaption_ind_param { typedef struct sctp_adaptation_ind_param {
struct sctp_paramhdr param_hdr; struct sctp_paramhdr param_hdr;
__be32 adaption_ind; __be32 adaptation_ind;
} __attribute__((packed)) sctp_adaption_ind_param_t; } __attribute__((packed)) sctp_adaptation_ind_param_t;
/* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2): /* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2):
* The INIT ACK chunk is used to acknowledge the initiation of an SCTP * The INIT ACK chunk is used to acknowledge the initiation of an SCTP
......
...@@ -87,7 +87,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, ...@@ -87,7 +87,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
carry = (sum < uproto); carry = (sum < uproto);
sum += carry; sum += carry;
return csum_fold((__force __wsum)csum); return csum_fold((__force __wsum)sum);
} }
#endif #endif
......
...@@ -128,8 +128,6 @@ extern int sctp_copy_local_addr_list(struct sctp_bind_addr *, ...@@ -128,8 +128,6 @@ extern int sctp_copy_local_addr_list(struct sctp_bind_addr *,
int flags); int flags);
extern struct sctp_pf *sctp_get_pf_specific(sa_family_t family); extern struct sctp_pf *sctp_get_pf_specific(sa_family_t family);
extern int sctp_register_pf(struct sctp_pf *, sa_family_t); extern int sctp_register_pf(struct sctp_pf *, sa_family_t);
int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
void *ptr);
/* /*
* sctp/socket.c * sctp/socket.c
......
...@@ -306,7 +306,7 @@ struct sctp_sock { ...@@ -306,7 +306,7 @@ struct sctp_sock {
__u8 disable_fragments; __u8 disable_fragments;
__u8 pd_mode; __u8 pd_mode;
__u8 v4mapped; __u8 v4mapped;
__u32 adaption_ind; __u32 adaptation_ind;
/* Receive to here while partial delivery is in effect. */ /* Receive to here while partial delivery is in effect. */
struct sk_buff_head pd_lobby; struct sk_buff_head pd_lobby;
...@@ -388,7 +388,7 @@ struct sctp_cookie { ...@@ -388,7 +388,7 @@ struct sctp_cookie {
/* Padding for future use */ /* Padding for future use */
__u8 padding; __u8 padding;
__u32 adaption_ind; __u32 adaptation_ind;
/* This is a shim for my peer's INIT packet, followed by /* This is a shim for my peer's INIT packet, followed by
...@@ -431,7 +431,7 @@ union sctp_params { ...@@ -431,7 +431,7 @@ union sctp_params {
struct sctp_ipv4addr_param *v4; struct sctp_ipv4addr_param *v4;
struct sctp_ipv6addr_param *v6; struct sctp_ipv6addr_param *v6;
union sctp_addr_param *addr; union sctp_addr_param *addr;
struct sctp_adaption_ind_param *aind; struct sctp_adaptation_ind_param *aind;
}; };
/* RFC 2960. Section 3.3.5 Heartbeat. /* RFC 2960. Section 3.3.5 Heartbeat.
...@@ -1483,7 +1483,7 @@ struct sctp_association { ...@@ -1483,7 +1483,7 @@ struct sctp_association {
__u8 asconf_capable; /* Does peer support ADDIP? */ __u8 asconf_capable; /* Does peer support ADDIP? */
__u8 prsctp_capable; /* Can peer do PR-SCTP? */ __u8 prsctp_capable; /* Can peer do PR-SCTP? */
__u32 adaption_ind; /* Adaption Code point. */ __u32 adaptation_ind; /* Adaptation Code point. */
/* This mask is used to disable sending the ASCONF chunk /* This mask is used to disable sending the ASCONF chunk
* with specified parameter to peer. * with specified parameter to peer.
......
...@@ -120,7 +120,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_pdapi( ...@@ -120,7 +120,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_pdapi(
const struct sctp_association *asoc, const struct sctp_association *asoc,
__u32 indication, gfp_t gfp); __u32 indication, gfp_t gfp);
struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( struct sctp_ulpevent *sctp_ulpevent_make_adaptation_indication(
const struct sctp_association *asoc, gfp_t gfp); const struct sctp_association *asoc, gfp_t gfp);
struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
......
...@@ -75,8 +75,8 @@ enum sctp_optname { ...@@ -75,8 +75,8 @@ enum sctp_optname {
#define SCTP_SET_PEER_PRIMARY_ADDR SCTP_SET_PEER_PRIMARY_ADDR #define SCTP_SET_PEER_PRIMARY_ADDR SCTP_SET_PEER_PRIMARY_ADDR
SCTP_PRIMARY_ADDR, SCTP_PRIMARY_ADDR,
#define SCTP_PRIMARY_ADDR SCTP_PRIMARY_ADDR #define SCTP_PRIMARY_ADDR SCTP_PRIMARY_ADDR
SCTP_ADAPTION_LAYER, SCTP_ADAPTATION_LAYER,
#define SCTP_ADAPTION_LAYER SCTP_ADAPTION_LAYER #define SCTP_ADAPTATION_LAYER SCTP_ADAPTATION_LAYER
SCTP_DISABLE_FRAGMENTS, SCTP_DISABLE_FRAGMENTS,
#define SCTP_DISABLE_FRAGMENTS SCTP_DISABLE_FRAGMENTS #define SCTP_DISABLE_FRAGMENTS SCTP_DISABLE_FRAGMENTS
SCTP_PEER_ADDR_PARAMS, SCTP_PEER_ADDR_PARAMS,
...@@ -331,17 +331,17 @@ struct sctp_shutdown_event { ...@@ -331,17 +331,17 @@ struct sctp_shutdown_event {
}; };
/* /*
* 5.3.1.6 SCTP_ADAPTION_INDICATION * 5.3.1.6 SCTP_ADAPTATION_INDICATION
* *
* When a peer sends a Adaption Layer Indication parameter , SCTP * When a peer sends a Adaptation Layer Indication parameter , SCTP
* delivers this notification to inform the application * delivers this notification to inform the application
* that of the peers requested adaption layer. * that of the peers requested adaptation layer.
*/ */
struct sctp_adaption_event { struct sctp_adaptation_event {
__u16 sai_type; __u16 sai_type;
__u16 sai_flags; __u16 sai_flags;
__u32 sai_length; __u32 sai_length;
__u32 sai_adaption_ind; __u32 sai_adaptation_ind;
sctp_assoc_t sai_assoc_id; sctp_assoc_t sai_assoc_id;
}; };
...@@ -374,7 +374,7 @@ struct sctp_event_subscribe { ...@@ -374,7 +374,7 @@ struct sctp_event_subscribe {
__u8 sctp_peer_error_event; __u8 sctp_peer_error_event;
__u8 sctp_shutdown_event; __u8 sctp_shutdown_event;
__u8 sctp_partial_delivery_event; __u8 sctp_partial_delivery_event;
__u8 sctp_adaption_layer_event; __u8 sctp_adaptation_layer_event;
}; };
/* /*
...@@ -395,7 +395,7 @@ union sctp_notification { ...@@ -395,7 +395,7 @@ union sctp_notification {
struct sctp_remote_error sn_remote_error; struct sctp_remote_error sn_remote_error;
struct sctp_send_failed sn_send_failed; struct sctp_send_failed sn_send_failed;
struct sctp_shutdown_event sn_shutdown_event; struct sctp_shutdown_event sn_shutdown_event;
struct sctp_adaption_event sn_adaption_event; struct sctp_adaptation_event sn_adaptation_event;
struct sctp_pdapi_event sn_pdapi_event; struct sctp_pdapi_event sn_pdapi_event;
}; };
...@@ -412,7 +412,7 @@ enum sctp_sn_type { ...@@ -412,7 +412,7 @@ enum sctp_sn_type {
SCTP_REMOTE_ERROR, SCTP_REMOTE_ERROR,
SCTP_SHUTDOWN_EVENT, SCTP_SHUTDOWN_EVENT,
SCTP_PARTIAL_DELIVERY_EVENT, SCTP_PARTIAL_DELIVERY_EVENT,
SCTP_ADAPTION_INDICATION, SCTP_ADAPTATION_INDICATION,
}; };
/* Notification error codes used to fill up the error fields in some /* Notification error codes used to fill up the error fields in some
...@@ -488,13 +488,13 @@ struct sctp_prim { ...@@ -488,13 +488,13 @@ struct sctp_prim {
} __attribute__((packed, aligned(4))); } __attribute__((packed, aligned(4)));
/* /*
* 7.1.11 Set Adaption Layer Indicator (SCTP_ADAPTION_LAYER) * 7.1.11 Set Adaptation Layer Indicator (SCTP_ADAPTATION_LAYER)
* *
* Requests that the local endpoint set the specified Adaption Layer * Requests that the local endpoint set the specified Adaptation Layer
* Indication parameter for all future INIT and INIT-ACK exchanges. * Indication parameter for all future INIT and INIT-ACK exchanges.
*/ */
struct sctp_setadaption { struct sctp_setadaptation {
__u32 ssb_adaption_ind; __u32 ssb_adaptation_ind;
}; };
/* /*
......
...@@ -242,14 +242,9 @@ extern int tcp_memory_pressure; ...@@ -242,14 +242,9 @@ extern int tcp_memory_pressure;
static inline int before(__u32 seq1, __u32 seq2) static inline int before(__u32 seq1, __u32 seq2)
{ {
return (__s32)(seq1-seq2) < 0; return (__s32)(seq2-seq1) > 0;
} }
#define after(seq2, seq1) before(seq1, seq2)
static inline int after(__u32 seq1, __u32 seq2)
{
return (__s32)(seq2-seq1) < 0;
}
/* is s2<=s1<=s3 ? */ /* is s2<=s1<=s3 ? */
static inline int between(__u32 seq1, __u32 seq2, __u32 seq3) static inline int between(__u32 seq1, __u32 seq2, __u32 seq3)
......
...@@ -165,11 +165,14 @@ int __udp_lib_get_port(struct sock *sk, unsigned short snum, ...@@ -165,11 +165,14 @@ int __udp_lib_get_port(struct sock *sk, unsigned short snum,
goto gotit; goto gotit;
} }
size = 0; size = 0;
sk_for_each(sk2, node, head) sk_for_each(sk2, node, head) {
if (++size < best_size_so_far) { if (++size >= best_size_so_far)
best_size_so_far = size; goto next;
best = result; }
} best_size_so_far = size;
best = result;
next:
;
} }
result = best; result = best;
for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) { for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) {
......
...@@ -162,6 +162,7 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -162,6 +162,7 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
struct nlattr *nla_b; struct nlattr *nla_b;
int nla_a_rem; int nla_a_rem;
int nla_b_rem; int nla_b_rem;
u32 iter;
if (!info->attrs[NLBL_CIPSOV4_A_TAGLST] || if (!info->attrs[NLBL_CIPSOV4_A_TAGLST] ||
!info->attrs[NLBL_CIPSOV4_A_MLSLVLLST]) !info->attrs[NLBL_CIPSOV4_A_MLSLVLLST])
...@@ -185,20 +186,31 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -185,20 +186,31 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
ret_val = netlbl_cipsov4_add_common(info, doi_def); ret_val = netlbl_cipsov4_add_common(info, doi_def);
if (ret_val != 0) if (ret_val != 0)
goto add_std_failure; goto add_std_failure;
ret_val = -EINVAL;
nla_for_each_nested(nla_a, nla_for_each_nested(nla_a,
info->attrs[NLBL_CIPSOV4_A_MLSLVLLST], info->attrs[NLBL_CIPSOV4_A_MLSLVLLST],
nla_a_rem) nla_a_rem)
if (nla_a->nla_type == NLBL_CIPSOV4_A_MLSLVL) { if (nla_a->nla_type == NLBL_CIPSOV4_A_MLSLVL) {
if (nla_validate_nested(nla_a,
NLBL_CIPSOV4_A_MAX,
netlbl_cipsov4_genl_policy) != 0)
goto add_std_failure;
nla_for_each_nested(nla_b, nla_a, nla_b_rem) nla_for_each_nested(nla_b, nla_a, nla_b_rem)
switch (nla_b->nla_type) { switch (nla_b->nla_type) {
case NLBL_CIPSOV4_A_MLSLVLLOC: case NLBL_CIPSOV4_A_MLSLVLLOC:
if (nla_get_u32(nla_b) >
CIPSO_V4_MAX_LOC_LVLS)
goto add_std_failure;
if (nla_get_u32(nla_b) >= if (nla_get_u32(nla_b) >=
doi_def->map.std->lvl.local_size) doi_def->map.std->lvl.local_size)
doi_def->map.std->lvl.local_size = doi_def->map.std->lvl.local_size =
nla_get_u32(nla_b) + 1; nla_get_u32(nla_b) + 1;
break; break;
case NLBL_CIPSOV4_A_MLSLVLREM: case NLBL_CIPSOV4_A_MLSLVLREM:
if (nla_get_u32(nla_b) >
CIPSO_V4_MAX_REM_LVLS)
goto add_std_failure;
if (nla_get_u32(nla_b) >= if (nla_get_u32(nla_b) >=
doi_def->map.std->lvl.cipso_size) doi_def->map.std->lvl.cipso_size)
doi_def->map.std->lvl.cipso_size = doi_def->map.std->lvl.cipso_size =
...@@ -206,9 +218,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -206,9 +218,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
break; break;
} }
} }
if (doi_def->map.std->lvl.local_size > CIPSO_V4_MAX_LOC_LVLS ||
doi_def->map.std->lvl.cipso_size > CIPSO_V4_MAX_REM_LVLS)
goto add_std_failure;
doi_def->map.std->lvl.local = kcalloc(doi_def->map.std->lvl.local_size, doi_def->map.std->lvl.local = kcalloc(doi_def->map.std->lvl.local_size,
sizeof(u32), sizeof(u32),
GFP_KERNEL); GFP_KERNEL);
...@@ -223,6 +232,10 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -223,6 +232,10 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto add_std_failure; goto add_std_failure;
} }
for (iter = 0; iter < doi_def->map.std->lvl.local_size; iter++)
doi_def->map.std->lvl.local[iter] = CIPSO_V4_INV_LVL;
for (iter = 0; iter < doi_def->map.std->lvl.cipso_size; iter++)
doi_def->map.std->lvl.cipso[iter] = CIPSO_V4_INV_LVL;
nla_for_each_nested(nla_a, nla_for_each_nested(nla_a,
info->attrs[NLBL_CIPSOV4_A_MLSLVLLST], info->attrs[NLBL_CIPSOV4_A_MLSLVLLST],
nla_a_rem) nla_a_rem)
...@@ -230,11 +243,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -230,11 +243,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
struct nlattr *lvl_loc; struct nlattr *lvl_loc;
struct nlattr *lvl_rem; struct nlattr *lvl_rem;
if (nla_validate_nested(nla_a,
NLBL_CIPSOV4_A_MAX,
netlbl_cipsov4_genl_policy) != 0)
goto add_std_failure;
lvl_loc = nla_find_nested(nla_a, lvl_loc = nla_find_nested(nla_a,
NLBL_CIPSOV4_A_MLSLVLLOC); NLBL_CIPSOV4_A_MLSLVLLOC);
lvl_rem = nla_find_nested(nla_a, lvl_rem = nla_find_nested(nla_a,
...@@ -264,12 +272,18 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -264,12 +272,18 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
nla_for_each_nested(nla_b, nla_a, nla_b_rem) nla_for_each_nested(nla_b, nla_a, nla_b_rem)
switch (nla_b->nla_type) { switch (nla_b->nla_type) {
case NLBL_CIPSOV4_A_MLSCATLOC: case NLBL_CIPSOV4_A_MLSCATLOC:
if (nla_get_u32(nla_b) >
CIPSO_V4_MAX_LOC_CATS)
goto add_std_failure;
if (nla_get_u32(nla_b) >= if (nla_get_u32(nla_b) >=
doi_def->map.std->cat.local_size) doi_def->map.std->cat.local_size)
doi_def->map.std->cat.local_size = doi_def->map.std->cat.local_size =
nla_get_u32(nla_b) + 1; nla_get_u32(nla_b) + 1;
break; break;
case NLBL_CIPSOV4_A_MLSCATREM: case NLBL_CIPSOV4_A_MLSCATREM:
if (nla_get_u32(nla_b) >
CIPSO_V4_MAX_REM_CATS)
goto add_std_failure;
if (nla_get_u32(nla_b) >= if (nla_get_u32(nla_b) >=
doi_def->map.std->cat.cipso_size) doi_def->map.std->cat.cipso_size)
doi_def->map.std->cat.cipso_size = doi_def->map.std->cat.cipso_size =
...@@ -277,9 +291,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -277,9 +291,6 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
break; break;
} }
} }
if (doi_def->map.std->cat.local_size > CIPSO_V4_MAX_LOC_CATS ||
doi_def->map.std->cat.cipso_size > CIPSO_V4_MAX_REM_CATS)
goto add_std_failure;
doi_def->map.std->cat.local = kcalloc( doi_def->map.std->cat.local = kcalloc(
doi_def->map.std->cat.local_size, doi_def->map.std->cat.local_size,
sizeof(u32), sizeof(u32),
...@@ -296,6 +307,10 @@ static int netlbl_cipsov4_add_std(struct genl_info *info) ...@@ -296,6 +307,10 @@ static int netlbl_cipsov4_add_std(struct genl_info *info)
ret_val = -ENOMEM; ret_val = -ENOMEM;
goto add_std_failure; goto add_std_failure;
} }
for (iter = 0; iter < doi_def->map.std->cat.local_size; iter++)
doi_def->map.std->cat.local[iter] = CIPSO_V4_INV_CAT;
for (iter = 0; iter < doi_def->map.std->cat.cipso_size; iter++)
doi_def->map.std->cat.cipso[iter] = CIPSO_V4_INV_CAT;
nla_for_each_nested(nla_a, nla_for_each_nested(nla_a,
info->attrs[NLBL_CIPSOV4_A_MLSCATLST], info->attrs[NLBL_CIPSOV4_A_MLSCATLST],
nla_a_rem) nla_a_rem)
......
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,8 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
/* Event handler for inet6 address addition/deletion events. */ /* Event handler for inet6 address addition/deletion events. */
int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev,
void *ptr) void *ptr)
{ {
struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr;
struct sctp_sockaddr_entry *addr; struct sctp_sockaddr_entry *addr;
......
...@@ -601,8 +601,8 @@ static void sctp_v4_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr) ...@@ -601,8 +601,8 @@ static void sctp_v4_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr)
} }
/* Event handler for inet address addition/deletion events. */ /* Event handler for inet address addition/deletion events. */
int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev, static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
void *ptr) void *ptr)
{ {
struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; struct in_ifaddr *ifa = (struct in_ifaddr *)ptr;
struct sctp_sockaddr_entry *addr; struct sctp_sockaddr_entry *addr;
......
...@@ -184,7 +184,7 @@ struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, ...@@ -184,7 +184,7 @@ struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc,
struct sctp_sock *sp; struct sctp_sock *sp;
sctp_supported_addrs_param_t sat; sctp_supported_addrs_param_t sat;
__be16 types[2]; __be16 types[2];
sctp_adaption_ind_param_t aiparam; sctp_adaptation_ind_param_t aiparam;
/* RFC 2960 3.3.2 Initiation (INIT) (1) /* RFC 2960 3.3.2 Initiation (INIT) (1)
* *
...@@ -249,9 +249,9 @@ struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, ...@@ -249,9 +249,9 @@ struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc,
sctp_addto_chunk(retval, sizeof(ecap_param), &ecap_param); sctp_addto_chunk(retval, sizeof(ecap_param), &ecap_param);
if (sctp_prsctp_enable) if (sctp_prsctp_enable)
sctp_addto_chunk(retval, sizeof(prsctp_param), &prsctp_param); sctp_addto_chunk(retval, sizeof(prsctp_param), &prsctp_param);
aiparam.param_hdr.type = SCTP_PARAM_ADAPTION_LAYER_IND; aiparam.param_hdr.type = SCTP_PARAM_ADAPTATION_LAYER_IND;
aiparam.param_hdr.length = htons(sizeof(aiparam)); aiparam.param_hdr.length = htons(sizeof(aiparam));
aiparam.adaption_ind = htonl(sp->adaption_ind); aiparam.adaptation_ind = htonl(sp->adaptation_ind);
sctp_addto_chunk(retval, sizeof(aiparam), &aiparam); sctp_addto_chunk(retval, sizeof(aiparam), &aiparam);
nodata: nodata:
kfree(addrs.v); kfree(addrs.v);
...@@ -269,7 +269,7 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, ...@@ -269,7 +269,7 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
sctp_cookie_param_t *cookie; sctp_cookie_param_t *cookie;
int cookie_len; int cookie_len;
size_t chunksize; size_t chunksize;
sctp_adaption_ind_param_t aiparam; sctp_adaptation_ind_param_t aiparam;
retval = NULL; retval = NULL;
...@@ -323,9 +323,9 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, ...@@ -323,9 +323,9 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
if (asoc->peer.prsctp_capable) if (asoc->peer.prsctp_capable)
sctp_addto_chunk(retval, sizeof(prsctp_param), &prsctp_param); sctp_addto_chunk(retval, sizeof(prsctp_param), &prsctp_param);
aiparam.param_hdr.type = SCTP_PARAM_ADAPTION_LAYER_IND; aiparam.param_hdr.type = SCTP_PARAM_ADAPTATION_LAYER_IND;
aiparam.param_hdr.length = htons(sizeof(aiparam)); aiparam.param_hdr.length = htons(sizeof(aiparam));
aiparam.adaption_ind = htonl(sctp_sk(asoc->base.sk)->adaption_ind); aiparam.adaptation_ind = htonl(sctp_sk(asoc->base.sk)->adaptation_ind);
sctp_addto_chunk(retval, sizeof(aiparam), &aiparam); sctp_addto_chunk(retval, sizeof(aiparam), &aiparam);
/* We need to remove the const qualifier at this point. */ /* We need to remove the const qualifier at this point. */
...@@ -1300,8 +1300,8 @@ static sctp_cookie_param_t *sctp_pack_cookie(const struct sctp_endpoint *ep, ...@@ -1300,8 +1300,8 @@ static sctp_cookie_param_t *sctp_pack_cookie(const struct sctp_endpoint *ep,
/* Remember PR-SCTP capability. */ /* Remember PR-SCTP capability. */
cookie->c.prsctp_capable = asoc->peer.prsctp_capable; cookie->c.prsctp_capable = asoc->peer.prsctp_capable;
/* Save adaption indication in the cookie. */ /* Save adaptation indication in the cookie. */
cookie->c.adaption_ind = asoc->peer.adaption_ind; cookie->c.adaptation_ind = asoc->peer.adaptation_ind;
/* Set an expiration time for the cookie. */ /* Set an expiration time for the cookie. */
do_gettimeofday(&cookie->c.expiration); do_gettimeofday(&cookie->c.expiration);
...@@ -1512,7 +1512,7 @@ struct sctp_association *sctp_unpack_cookie( ...@@ -1512,7 +1512,7 @@ struct sctp_association *sctp_unpack_cookie(
retval->addip_serial = retval->c.initial_tsn; retval->addip_serial = retval->c.initial_tsn;
retval->adv_peer_ack_point = retval->ctsn_ack_point; retval->adv_peer_ack_point = retval->ctsn_ack_point;
retval->peer.prsctp_capable = retval->c.prsctp_capable; retval->peer.prsctp_capable = retval->c.prsctp_capable;
retval->peer.adaption_ind = retval->c.adaption_ind; retval->peer.adaptation_ind = retval->c.adaptation_ind;
/* The INIT stuff will be done by the side effects. */ /* The INIT stuff will be done by the side effects. */
return retval; return retval;
...@@ -1743,7 +1743,7 @@ static int sctp_verify_param(const struct sctp_association *asoc, ...@@ -1743,7 +1743,7 @@ static int sctp_verify_param(const struct sctp_association *asoc,
case SCTP_PARAM_HEARTBEAT_INFO: case SCTP_PARAM_HEARTBEAT_INFO:
case SCTP_PARAM_UNRECOGNIZED_PARAMETERS: case SCTP_PARAM_UNRECOGNIZED_PARAMETERS:
case SCTP_PARAM_ECN_CAPABLE: case SCTP_PARAM_ECN_CAPABLE:
case SCTP_PARAM_ADAPTION_LAYER_IND: case SCTP_PARAM_ADAPTATION_LAYER_IND:
break; break;
case SCTP_PARAM_HOST_NAME_ADDRESS: case SCTP_PARAM_HOST_NAME_ADDRESS:
...@@ -2098,8 +2098,8 @@ static int sctp_process_param(struct sctp_association *asoc, ...@@ -2098,8 +2098,8 @@ static int sctp_process_param(struct sctp_association *asoc,
asoc->peer.ecn_capable = 1; asoc->peer.ecn_capable = 1;
break; break;
case SCTP_PARAM_ADAPTION_LAYER_IND: case SCTP_PARAM_ADAPTATION_LAYER_IND:
asoc->peer.adaption_ind = param.aind->adaption_ind; asoc->peer.adaptation_ind = param.aind->adaptation_ind;
break; break;
case SCTP_PARAM_FWD_TSN_SUPPORT: case SCTP_PARAM_FWD_TSN_SUPPORT:
......
...@@ -688,12 +688,12 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep, ...@@ -688,12 +688,12 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep,
goto nomem_ev; goto nomem_ev;
/* Sockets API Draft Section 5.3.1.6 /* Sockets API Draft Section 5.3.1.6
* When a peer sends a Adaption Layer Indication parameter , SCTP * When a peer sends a Adaptation Layer Indication parameter , SCTP
* delivers this notification to inform the application that of the * delivers this notification to inform the application that of the
* peers requested adaption layer. * peers requested adaptation layer.
*/ */
if (new_asoc->peer.adaption_ind) { if (new_asoc->peer.adaptation_ind) {
ai_ev = sctp_ulpevent_make_adaption_indication(new_asoc, ai_ev = sctp_ulpevent_make_adaptation_indication(new_asoc,
GFP_ATOMIC); GFP_ATOMIC);
if (!ai_ev) if (!ai_ev)
goto nomem_aiev; goto nomem_aiev;
...@@ -820,12 +820,12 @@ sctp_disposition_t sctp_sf_do_5_1E_ca(const struct sctp_endpoint *ep, ...@@ -820,12 +820,12 @@ sctp_disposition_t sctp_sf_do_5_1E_ca(const struct sctp_endpoint *ep,
sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, SCTP_ULPEVENT(ev)); sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, SCTP_ULPEVENT(ev));
/* Sockets API Draft Section 5.3.1.6 /* Sockets API Draft Section 5.3.1.6
* When a peer sends a Adaption Layer Indication parameter , SCTP * When a peer sends a Adaptation Layer Indication parameter , SCTP
* delivers this notification to inform the application that of the * delivers this notification to inform the application that of the
* peers requested adaption layer. * peers requested adaptation layer.
*/ */
if (asoc->peer.adaption_ind) { if (asoc->peer.adaptation_ind) {
ev = sctp_ulpevent_make_adaption_indication(asoc, GFP_ATOMIC); ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
if (!ev) if (!ev)
goto nomem; goto nomem;
...@@ -1698,12 +1698,12 @@ static sctp_disposition_t sctp_sf_do_dupcook_b(const struct sctp_endpoint *ep, ...@@ -1698,12 +1698,12 @@ static sctp_disposition_t sctp_sf_do_dupcook_b(const struct sctp_endpoint *ep,
sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, SCTP_ULPEVENT(ev)); sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, SCTP_ULPEVENT(ev));
/* Sockets API Draft Section 5.3.1.6 /* Sockets API Draft Section 5.3.1.6
* When a peer sends a Adaption Layer Indication parameter , SCTP * When a peer sends a Adaptation Layer Indication parameter , SCTP
* delivers this notification to inform the application that of the * delivers this notification to inform the application that of the
* peers requested adaption layer. * peers requested adaptation layer.
*/ */
if (asoc->peer.adaption_ind) { if (asoc->peer.adaptation_ind) {
ev = sctp_ulpevent_make_adaption_indication(asoc, GFP_ATOMIC); ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
if (!ev) if (!ev)
goto nomem_ev; goto nomem_ev;
...@@ -1791,12 +1791,12 @@ static sctp_disposition_t sctp_sf_do_dupcook_d(const struct sctp_endpoint *ep, ...@@ -1791,12 +1791,12 @@ static sctp_disposition_t sctp_sf_do_dupcook_d(const struct sctp_endpoint *ep,
goto nomem; goto nomem;
/* Sockets API Draft Section 5.3.1.6 /* Sockets API Draft Section 5.3.1.6
* When a peer sends a Adaption Layer Indication parameter, * When a peer sends a Adaptation Layer Indication parameter,
* SCTP delivers this notification to inform the application * SCTP delivers this notification to inform the application
* that of the peers requested adaption layer. * that of the peers requested adaptation layer.
*/ */
if (asoc->peer.adaption_ind) { if (asoc->peer.adaptation_ind) {
ai_ev = sctp_ulpevent_make_adaption_indication(asoc, ai_ev = sctp_ulpevent_make_adaptation_indication(asoc,
GFP_ATOMIC); GFP_ATOMIC);
if (!ai_ev) if (!ai_ev)
goto nomem; goto nomem;
......
...@@ -2731,17 +2731,17 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva ...@@ -2731,17 +2731,17 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva
return err; return err;
} }
static int sctp_setsockopt_adaption_layer(struct sock *sk, char __user *optval, static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval,
int optlen) int optlen)
{ {
struct sctp_setadaption adaption; struct sctp_setadaptation adaptation;
if (optlen != sizeof(struct sctp_setadaption)) if (optlen != sizeof(struct sctp_setadaptation))
return -EINVAL; return -EINVAL;
if (copy_from_user(&adaption, optval, optlen)) if (copy_from_user(&adaptation, optval, optlen))
return -EFAULT; return -EFAULT;
sctp_sk(sk)->adaption_ind = adaption.ssb_adaption_ind; sctp_sk(sk)->adaptation_ind = adaptation.ssb_adaptation_ind;
return 0; return 0;
} }
...@@ -2894,8 +2894,8 @@ SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname, ...@@ -2894,8 +2894,8 @@ SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
case SCTP_MAXSEG: case SCTP_MAXSEG:
retval = sctp_setsockopt_maxseg(sk, optval, optlen); retval = sctp_setsockopt_maxseg(sk, optval, optlen);
break; break;
case SCTP_ADAPTION_LAYER: case SCTP_ADAPTATION_LAYER:
retval = sctp_setsockopt_adaption_layer(sk, optval, optlen); retval = sctp_setsockopt_adaptation_layer(sk, optval, optlen);
break; break;
case SCTP_CONTEXT: case SCTP_CONTEXT:
retval = sctp_setsockopt_context(sk, optval, optlen); retval = sctp_setsockopt_context(sk, optval, optlen);
...@@ -3123,7 +3123,7 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk) ...@@ -3123,7 +3123,7 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk)
/* User specified fragmentation limit. */ /* User specified fragmentation limit. */
sp->user_frag = 0; sp->user_frag = 0;
sp->adaption_ind = 0; sp->adaptation_ind = 0;
sp->pf = sctp_get_pf_specific(sk->sk_family); sp->pf = sctp_get_pf_specific(sk->sk_family);
...@@ -4210,21 +4210,21 @@ static int sctp_getsockopt_primary_addr(struct sock *sk, int len, ...@@ -4210,21 +4210,21 @@ static int sctp_getsockopt_primary_addr(struct sock *sk, int len,
} }
/* /*
* 7.1.11 Set Adaption Layer Indicator (SCTP_ADAPTION_LAYER) * 7.1.11 Set Adaptation Layer Indicator (SCTP_ADAPTATION_LAYER)
* *
* Requests that the local endpoint set the specified Adaption Layer * Requests that the local endpoint set the specified Adaptation Layer
* Indication parameter for all future INIT and INIT-ACK exchanges. * Indication parameter for all future INIT and INIT-ACK exchanges.
*/ */
static int sctp_getsockopt_adaption_layer(struct sock *sk, int len, static int sctp_getsockopt_adaptation_layer(struct sock *sk, int len,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
struct sctp_setadaption adaption; struct sctp_setadaptation adaptation;
if (len != sizeof(struct sctp_setadaption)) if (len != sizeof(struct sctp_setadaptation))
return -EINVAL; return -EINVAL;
adaption.ssb_adaption_ind = sctp_sk(sk)->adaption_ind; adaptation.ssb_adaptation_ind = sctp_sk(sk)->adaptation_ind;
if (copy_to_user(optval, &adaption, len)) if (copy_to_user(optval, &adaptation, len))
return -EFAULT; return -EFAULT;
return 0; return 0;
...@@ -4635,8 +4635,8 @@ SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname, ...@@ -4635,8 +4635,8 @@ SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname,
retval = sctp_getsockopt_peer_addr_info(sk, len, optval, retval = sctp_getsockopt_peer_addr_info(sk, len, optval,
optlen); optlen);
break; break;
case SCTP_ADAPTION_LAYER: case SCTP_ADAPTATION_LAYER:
retval = sctp_getsockopt_adaption_layer(sk, len, optval, retval = sctp_getsockopt_adaptation_layer(sk, len, optval,
optlen); optlen);
break; break;
case SCTP_CONTEXT: case SCTP_CONTEXT:
......
...@@ -609,31 +609,31 @@ struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( ...@@ -609,31 +609,31 @@ struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event(
return NULL; return NULL;
} }
/* Create and initialize a SCTP_ADAPTION_INDICATION notification. /* Create and initialize a SCTP_ADAPTATION_INDICATION notification.
* *
* Socket Extensions for SCTP * Socket Extensions for SCTP
* 5.3.1.6 SCTP_ADAPTION_INDICATION * 5.3.1.6 SCTP_ADAPTATION_INDICATION
*/ */
struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( struct sctp_ulpevent *sctp_ulpevent_make_adaptation_indication(
const struct sctp_association *asoc, gfp_t gfp) const struct sctp_association *asoc, gfp_t gfp)
{ {
struct sctp_ulpevent *event; struct sctp_ulpevent *event;
struct sctp_adaption_event *sai; struct sctp_adaptation_event *sai;
struct sk_buff *skb; struct sk_buff *skb;
event = sctp_ulpevent_new(sizeof(struct sctp_adaption_event), event = sctp_ulpevent_new(sizeof(struct sctp_adaptation_event),
MSG_NOTIFICATION, gfp); MSG_NOTIFICATION, gfp);
if (!event) if (!event)
goto fail; goto fail;
skb = sctp_event2skb(event); skb = sctp_event2skb(event);
sai = (struct sctp_adaption_event *) sai = (struct sctp_adaptation_event *)
skb_put(skb, sizeof(struct sctp_adaption_event)); skb_put(skb, sizeof(struct sctp_adaptation_event));
sai->sai_type = SCTP_ADAPTION_INDICATION; sai->sai_type = SCTP_ADAPTATION_INDICATION;
sai->sai_flags = 0; sai->sai_flags = 0;
sai->sai_length = sizeof(struct sctp_adaption_event); sai->sai_length = sizeof(struct sctp_adaptation_event);
sai->sai_adaption_ind = asoc->peer.adaption_ind; sai->sai_adaptation_ind = asoc->peer.adaptation_ind;
sctp_ulpevent_set_owner(event, asoc); sctp_ulpevent_set_owner(event, asoc);
sai->sai_assoc_id = sctp_assoc2id(asoc); sai->sai_assoc_id = sctp_assoc2id(asoc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment