On Fri, 2005-07-29 at 03:53 +0400, Alexey Dobriyan wrote:
> * Use __be16, __be32.
> * Add SCTP_NL() in the spirit of SCTP_U32() and friends.
> * Tiny tweak in sctp_chunk_assign_ssn().
How do we run sparse to check for endian errors?
I tried make C=1 net/sctp/sctp.ko, but i didn't see any
endian warnings.
But your changes look fine.
Thanks
Sridhar
>
> Signed-off-by: Alexey Dobriyan <[EMAIL PROTECTED]>
> ---
>
> include/linux/sctp.h | 60
> ++++++++++++++++++++++-----------------------
> include/net/sctp/command.h | 2 +
> include/net/sctp/sctp.h | 2 -
> include/net/sctp/sm.h | 6 ++--
> include/net/sctp/structs.h | 4 +--
> include/net/sctp/tsnmap.h | 4 +--
> include/net/sctp/user.h | 2 -
> net/sctp/associola.c | 2 -
> net/sctp/ipv6.c | 4 +--
> net/sctp/outqueue.c | 2 -
> net/sctp/protocol.c | 2 -
> net/sctp/sm_make_chunk.c | 31 +++++++++++------------
> net/sctp/sm_statefuns.c | 10 +++----
> net/sctp/ulpevent.c | 2 -
> 14 files changed, 67 insertions(+), 66 deletions(-)
>
> diff -uprN linux-vanilla/include/linux/sctp.h linux-sctp/include/linux/sctp.h
> --- linux-vanilla/include/linux/sctp.h 2005-07-29 03:31:11.000000000
> +0400
> +++ linux-sctp/include/linux/sctp.h 2005-07-29 03:39:50.000000000 +0400
> @@ -57,17 +57,17 @@
>
> /* Section 3.1. SCTP Common Header Format */
> typedef struct sctphdr {
> - __u16 source;
> - __u16 dest;
> - __u32 vtag;
> - __u32 checksum;
> + __be16 source;
> + __be16 dest;
> + __be32 vtag;
> + __be32 checksum;
> } __attribute__((packed)) sctp_sctphdr_t;
>
> /* Section 3.2. Chunk Field Descriptions. */
> typedef struct sctp_chunkhdr {
> __u8 type;
> __u8 flags;
> - __u16 length;
> + __be16 length;
> } __attribute__((packed)) sctp_chunkhdr_t;
>
>
> @@ -153,8 +153,8 @@ enum { SCTP_CHUNK_FLAG_T = 0x01 };
> */
>
> typedef struct sctp_paramhdr {
> - __u16 type;
> - __u16 length;
> + __be16 type;
> + __be16 length;
> } __attribute__((packed)) sctp_paramhdr_t;
>
> typedef enum {
> @@ -203,9 +203,9 @@ enum { SCTP_PARAM_ACTION_MASK = __consta
> /* RFC 2960 Section 3.3.1 Payload Data (DATA) (0) */
>
> typedef struct sctp_datahdr {
> - __u32 tsn;
> - __u16 stream;
> - __u16 ssn;
> + __be32 tsn;
> + __be16 stream;
> + __be16 ssn;
> __u32 ppid;
> __u8 payload[0];
> } __attribute__((packed)) sctp_datahdr_t;
> @@ -232,11 +232,11 @@ enum { SCTP_DATA_FRAG_MASK = 0x03, };
> * endpoints.
> */
> typedef struct sctp_inithdr {
> - __u32 init_tag;
> - __u32 a_rwnd;
> - __u16 num_outbound_streams;
> - __u16 num_inbound_streams;
> - __u32 initial_tsn;
> + __be32 init_tag;
> + __be32 a_rwnd;
> + __be16 num_outbound_streams;
> + __be16 num_inbound_streams;
> + __be32 initial_tsn;
> __u8 params[0];
> } __attribute__((packed)) sctp_inithdr_t;
>
> @@ -261,7 +261,7 @@ typedef struct sctp_ipv6addr_param {
> /* Section 3.3.2.1 Cookie Preservative (9) */
> typedef struct sctp_cookie_preserve_param {
> sctp_paramhdr_t param_hdr;
> - uint32_t lifespan_increment;
> + __be32 lifespan_increment;
> } __attribute__((packed)) sctp_cookie_preserve_param_t;
>
> /* Section 3.3.2.1 Host Name Address (11) */
> @@ -284,7 +284,7 @@ typedef struct sctp_ecn_capable_param {
> /* ADDIP Section 3.2.6 Adaption Layer Indication */
> typedef struct sctp_adaption_ind_param {
> struct sctp_paramhdr param_hdr;
> - __u32 adaption_ind;
> + __be32 adaption_ind;
> } __attribute__((packed)) sctp_adaption_ind_param_t;
>
> /* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2):
> @@ -328,10 +328,10 @@ typedef union {
> } sctp_sack_variable_t;
>
> typedef struct sctp_sackhdr {
> - __u32 cum_tsn_ack;
> - __u32 a_rwnd;
> - __u16 num_gap_ack_blocks;
> - __u16 num_dup_tsns;
> + __be32 cum_tsn_ack;
> + __be32 a_rwnd;
> + __be16 num_gap_ack_blocks;
> + __be16 num_dup_tsns;
> sctp_sack_variable_t variable[0];
> } __attribute__((packed)) sctp_sackhdr_t;
>
> @@ -371,7 +371,7 @@ typedef struct sctp_abort_chunk {
> * and the highest consecutive acking value.
> */
> typedef struct sctp_shutdownhdr {
> - __u32 cum_tsn_ack;
> + __be32 cum_tsn_ack;
> } __attribute__((packed)) sctp_shutdownhdr_t;
>
> struct sctp_shutdown_chunk_t {
> @@ -382,8 +382,8 @@ struct sctp_shutdown_chunk_t {
> /* RFC 2960. Section 3.3.10 Operation Error (ERROR) (9) */
>
> typedef struct sctp_errhdr {
> - __u16 cause;
> - __u16 length;
> + __be16 cause;
> + __be16 length;
> __u8 variable[0];
> } __attribute__((packed)) sctp_errhdr_t;
>
> @@ -462,7 +462,7 @@ typedef enum {
> * Explicit Congestion Notification Echo (ECNE) (12)
> */
> typedef struct sctp_ecnehdr {
> - __u32 lowest_tsn;
> + __be32 lowest_tsn;
> } sctp_ecnehdr_t;
>
> typedef struct sctp_ecne_chunk {
> @@ -474,7 +474,7 @@ typedef struct sctp_ecne_chunk {
> * Congestion Window Reduced (CWR) (13)
> */
> typedef struct sctp_cwrhdr {
> - __u32 lowest_tsn;
> + __be32 lowest_tsn;
> } sctp_cwrhdr_t;
>
> typedef struct sctp_cwr_chunk {
> @@ -529,12 +529,12 @@ typedef struct sctp_cwr_chunk {
> * chunks this field MUST be filled in.
> */
> struct sctp_fwdtsn_skip {
> - __u16 stream;
> - __u16 ssn;
> + __be16 stream;
> + __be16 ssn;
> } __attribute__((packed));
>
> struct sctp_fwdtsn_hdr {
> - __u32 new_cum_tsn;
> + __be32 new_cum_tsn;
> struct sctp_fwdtsn_skip skip[0];
> } __attribute((packed));
>
> @@ -582,7 +582,7 @@ typedef struct sctp_addip_param {
> } __attribute__((packed)) sctp_addip_param_t;
>
> typedef struct sctp_addiphdr {
> - __u32 serial;
> + __be32 serial;
> __u8 params[0];
> } __attribute__((packed)) sctp_addiphdr_t;
>
> diff -uprN linux-vanilla/include/net/sctp/command.h
> linux-sctp/include/net/sctp/command.h
> --- linux-vanilla/include/net/sctp/command.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/command.h 2005-07-29 03:39:50.000000000
> +0400
> @@ -113,6 +113,7 @@ typedef enum {
> #define SCTP_MAX_NUM_COMMANDS 14
>
> typedef union {
> + __be32 nl;
> __s32 i32;
> __u32 u32;
> __u16 u16;
> @@ -160,6 +161,7 @@ static inline sctp_arg_t \
> SCTP_## name (type arg) \
> { sctp_arg_t retval; retval.elt = arg; return retval; }
>
> +SCTP_ARG_CONSTRUCTOR(NL, __be32, nl)
> SCTP_ARG_CONSTRUCTOR(I32, __s32, i32)
> SCTP_ARG_CONSTRUCTOR(U32, __u32, u32)
> SCTP_ARG_CONSTRUCTOR(U16, __u16, u16)
> diff -uprN linux-vanilla/include/net/sctp/sctp.h
> linux-sctp/include/net/sctp/sctp.h
> --- linux-vanilla/include/net/sctp/sctp.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/sctp.h 2005-07-29 03:39:50.000000000
> +0400
> @@ -537,7 +537,7 @@ static inline int ipver2af(__u8 ipver)
> }
>
> /* Convert from an address parameter type to an address family. */
> -static inline int param_type2af(__u16 type)
> +static inline int param_type2af(__be16 type)
> {
> switch (type) {
> case SCTP_PARAM_IPV4_ADDRESS:
> diff -uprN linux-vanilla/include/net/sctp/sm.h
> linux-sctp/include/net/sctp/sm.h
> --- linux-vanilla/include/net/sctp/sm.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/sm.h 2005-07-29 03:39:50.000000000 +0400
> @@ -213,7 +213,7 @@ struct sctp_chunk *sctp_make_shutdown_ac
> const struct sctp_chunk *);
> struct sctp_chunk *sctp_make_shutdown_complete(const struct sctp_association
> *,
> const struct sctp_chunk *);
> -void sctp_init_cause(struct sctp_chunk *, __u16 cause, const void *, size_t);
> +void sctp_init_cause(struct sctp_chunk *, __be16 cause, const void *,
> size_t);
> struct sctp_chunk *sctp_make_abort(const struct sctp_association *,
> const struct sctp_chunk *,
> const size_t hint);
> @@ -237,14 +237,14 @@ struct sctp_chunk *sctp_make_heartbeat_a
> const size_t paylen);
> struct sctp_chunk *sctp_make_op_error(const struct sctp_association *,
> const struct sctp_chunk *chunk,
> - __u16 cause_code,
> + __be16 cause_code,
> const void *payload,
> size_t paylen);
>
> struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *,
> union sctp_addr *,
> struct sockaddr *,
> - int, __u16);
> + int, __be16);
> struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc,
> union sctp_addr *addr);
> struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
> diff -uprN linux-vanilla/include/net/sctp/structs.h
> linux-sctp/include/net/sctp/structs.h
> --- linux-vanilla/include/net/sctp/structs.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/structs.h 2005-07-29 03:39:50.000000000
> +0400
> @@ -547,7 +547,7 @@ struct sctp_pf {
> struct sctp_sock *);
> int (*bind_verify) (struct sctp_sock *, union sctp_addr *);
> int (*send_verify) (struct sctp_sock *, union sctp_addr *);
> - int (*supported_addrs)(const struct sctp_sock *, __u16 *);
> + int (*supported_addrs)(const struct sctp_sock *, __be16 *);
> struct sock *(*create_accept_sk) (struct sock *sk,
> struct sctp_association *asoc);
> void (*addr_v4map) (struct sctp_sock *, union sctp_addr *);
> @@ -1432,7 +1432,7 @@ struct sctp_association {
> /* This mask is used to disable sending the ASCONF chunk
> * with specified parameter to peer.
> */
> - __u16 addip_disabled_mask;
> + __be16 addip_disabled_mask;
>
> struct sctp_inithdr i;
> int cookie_len;
> diff -uprN linux-vanilla/include/net/sctp/tsnmap.h
> linux-sctp/include/net/sctp/tsnmap.h
> --- linux-vanilla/include/net/sctp/tsnmap.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/tsnmap.h 2005-07-29 03:39:50.000000000
> +0400
> @@ -105,7 +105,7 @@ struct sctp_tsnmap {
> * every SACK. Store up to SCTP_MAX_DUP_TSNS worth of
> * information.
> */
> - __u32 dup_tsns[SCTP_MAX_DUP_TSNS];
> + __be32 dup_tsns[SCTP_MAX_DUP_TSNS];
> __u16 num_dup_tsns;
>
> /* Record gap ack block information here. */
> @@ -162,7 +162,7 @@ static inline __u16 sctp_tsnmap_num_dups
> }
>
> /* Return pointer to duplicate tsn array as needed by SACK. */
> -static inline __u32 *sctp_tsnmap_get_dups(struct sctp_tsnmap *map)
> +static inline __be32 *sctp_tsnmap_get_dups(struct sctp_tsnmap *map)
> {
> map->num_dup_tsns = 0;
> return map->dup_tsns;
> diff -uprN linux-vanilla/include/net/sctp/user.h
> linux-sctp/include/net/sctp/user.h
> --- linux-vanilla/include/net/sctp/user.h 2005-07-29 03:31:12.000000000
> +0400
> +++ linux-sctp/include/net/sctp/user.h 2005-07-29 03:39:50.000000000
> +0400
> @@ -270,7 +270,7 @@ struct sctp_remote_error {
> __u16 sre_type;
> __u16 sre_flags;
> __u32 sre_length;
> - __u16 sre_error;
> + __be16 sre_error;
> sctp_assoc_t sre_assoc_id;
> __u8 sre_data[0];
> };
> diff -uprN linux-vanilla/net/sctp/associola.c linux-sctp/net/sctp/associola.c
> --- linux-vanilla/net/sctp/associola.c 2005-07-29 03:31:13.000000000
> +0400
> +++ linux-sctp/net/sctp/associola.c 2005-07-29 03:39:50.000000000 +0400
> @@ -803,7 +803,7 @@ struct sctp_transport *sctp_assoc_lookup
> struct list_head *entry, *pos;
> struct sctp_transport *transport;
> struct sctp_chunk *chunk;
> - __u32 key = htonl(tsn);
> + __be32 key = htonl(tsn);
>
> match = NULL;
>
> diff -uprN linux-vanilla/net/sctp/ipv6.c linux-sctp/net/sctp/ipv6.c
> --- linux-vanilla/net/sctp/ipv6.c 2005-07-29 03:31:13.000000000 +0400
> +++ linux-sctp/net/sctp/ipv6.c 2005-07-29 03:39:50.000000000 +0400
> @@ -242,7 +242,7 @@ static inline int sctp_v6_addr_match_len
> int i, j;
>
> for (i = 0; i < 4 ; i++) {
> - __u32 a1xora2;
> + __be32 a1xora2;
>
> a1xora2 = a1->s6_addr32[i] ^ a2->s6_addr32[i];
>
> @@ -862,7 +862,7 @@ static int sctp_inet6_send_verify(struct
> * Returns number of addresses supported.
> */
> static int sctp_inet6_supported_addrs(const struct sctp_sock *opt,
> - __u16 *types)
> + __be16 *types)
> {
> types[0] = SCTP_PARAM_IPV4_ADDRESS;
> types[1] = SCTP_PARAM_IPV6_ADDRESS;
> diff -uprN linux-vanilla/net/sctp/outqueue.c linux-sctp/net/sctp/outqueue.c
> --- linux-vanilla/net/sctp/outqueue.c 2005-07-29 03:31:13.000000000 +0400
> +++ linux-sctp/net/sctp/outqueue.c 2005-07-29 03:39:50.000000000 +0400
> @@ -1621,7 +1621,7 @@ pass:
> }
>
> static inline int sctp_get_skip_pos(struct sctp_fwdtsn_skip *skiplist,
> - int nskips, __u16 stream)
> + int nskips, __be16 stream)
> {
> int i;
>
> diff -uprN linux-vanilla/net/sctp/protocol.c linux-sctp/net/sctp/protocol.c
> --- linux-vanilla/net/sctp/protocol.c 2005-07-29 03:31:13.000000000 +0400
> +++ linux-sctp/net/sctp/protocol.c 2005-07-29 03:39:50.000000000 +0400
> @@ -787,7 +787,7 @@ static int sctp_inet_send_verify(struct
> * chunks. Returns number of addresses supported.
> */
> static int sctp_inet_supported_addrs(const struct sctp_sock *opt,
> - __u16 *types)
> + __be16 *types)
> {
> types[0] = SCTP_PARAM_IPV4_ADDRESS;
> return 1;
> diff -uprN linux-vanilla/net/sctp/sm_make_chunk.c
> linux-sctp/net/sctp/sm_make_chunk.c
> --- linux-vanilla/net/sctp/sm_make_chunk.c 2005-07-29 03:31:13.000000000
> +0400
> +++ linux-sctp/net/sctp/sm_make_chunk.c 2005-07-29 03:39:50.000000000
> +0400
> @@ -111,7 +111,7 @@ static const struct sctp_paramhdr prsctp
> * provided chunk, as most cause codes will be embedded inside an
> * abort chunk.
> */
> -void sctp_init_cause(struct sctp_chunk *chunk, __u16 cause_code,
> +void sctp_init_cause(struct sctp_chunk *chunk, __be16 cause_code,
> const void *payload, size_t paylen)
> {
> sctp_errhdr_t err;
> @@ -183,7 +183,7 @@ struct sctp_chunk *sctp_make_init(const
> int num_types, addrs_len = 0;
> struct sctp_sock *sp;
> sctp_supported_addrs_param_t sat;
> - __u16 types[2];
> + __be16 types[2];
> sctp_adaption_ind_param_t aiparam;
>
> /* RFC 2960 3.3.2 Initiation (INIT) (1)
> @@ -777,7 +777,7 @@ struct sctp_chunk *sctp_make_abort_no_da
> const struct sctp_chunk *chunk, __u32 tsn)
> {
> struct sctp_chunk *retval;
> - __u32 payload;
> + __be32 payload;
>
> retval = sctp_make_abort(asoc, chunk, sizeof(sctp_errhdr_t)
> + sizeof(tsn));
> @@ -965,7 +965,7 @@ nodata:
> /* Create an Operation Error chunk. */
> struct sctp_chunk *sctp_make_op_error(const struct sctp_association *asoc,
> const struct sctp_chunk *chunk,
> - __u16 cause_code, const void *payload,
> + __be16 cause_code, const void *payload,
> size_t paylen)
> {
> struct sctp_chunk *retval;
> @@ -1209,10 +1209,9 @@ void sctp_chunk_assign_ssn(struct sctp_c
> ssn = sctp_ssn_next(&chunk->asoc->ssnmap->out, sid);
> else
> ssn = sctp_ssn_peek(&chunk->asoc->ssnmap->out, sid);
> - ssn = htons(ssn);
> }
>
> - chunk->subh.data_hdr->ssn = ssn;
> + chunk->subh.data_hdr->ssn = htons(ssn);
> chunk->has_ssn = 1;
> }
>
> @@ -1517,8 +1516,8 @@ malformed:
> ********************************************************************/
>
> struct __sctp_missing {
> - __u32 num_missing;
> - __u16 type;
> + __be32 num_missing;
> + __be16 type;
> } __attribute__((packed));
>
> /*
> @@ -2208,7 +2207,7 @@ struct sctp_chunk *sctp_make_asconf_upda
> union sctp_addr *laddr,
> struct sockaddr *addrs,
> int addrcnt,
> - __u16 flags)
> + __be16 flags)
> {
> sctp_addip_param_t param;
> struct sctp_chunk *retval;
> @@ -2342,13 +2341,13 @@ static struct sctp_chunk *sctp_make_asco
>
> /* Add response parameters to an ASCONF_ACK chunk. */
> static void sctp_add_asconf_response(struct sctp_chunk *chunk, __u32 crr_id,
> - __u16 err_code, sctp_addip_param_t *asconf_param)
> + __be16 err_code, sctp_addip_param_t *asconf_param)
> {
> sctp_addip_param_t ack_param;
> sctp_errhdr_t err_param;
> int asconf_param_len = 0;
> int err_param_len = 0;
> - __u16 response_type;
> + __be16 response_type;
>
> if (SCTP_ERROR_NO_ERROR == err_code) {
> response_type = SCTP_PARAM_SUCCESS_REPORT;
> @@ -2382,7 +2381,7 @@ static void sctp_add_asconf_response(str
> }
>
> /* Process a asconf parameter. */
> -static __u16 sctp_process_asconf_param(struct sctp_association *asoc,
> +static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
> struct sctp_chunk *asconf,
> sctp_addip_param_t *asconf_param)
> {
> @@ -2465,7 +2464,7 @@ struct sctp_chunk *sctp_process_asconf(s
> sctp_addip_param_t *asconf_param;
> struct sctp_chunk *asconf_ack;
>
> - __u16 err_code;
> + __be16 err_code;
> int length = 0;
> int chunk_len = asconf->skb->len;
> __u32 serial;
> @@ -2602,7 +2601,7 @@ static int sctp_asconf_param_success(str
> * All TLVs after the failed response are considered unsuccessful unless a
> * specific success indication is present for the parameter.
> */
> -static __u16 sctp_get_asconf_response(struct sctp_chunk *asconf_ack,
> +static __be16 sctp_get_asconf_response(struct sctp_chunk *asconf_ack,
> sctp_addip_param_t *asconf_param,
> int no_err)
> {
> @@ -2610,7 +2609,7 @@ static __u16 sctp_get_asconf_response(st
> sctp_errhdr_t *err_param;
> int length;
> int asconf_ack_len = asconf_ack->skb->len;
> - __u16 err_code;
> + __be16 err_code;
>
> if (no_err)
> err_code = SCTP_ERROR_NO_ERROR;
> @@ -2666,7 +2665,7 @@ int sctp_process_asconf_ack(struct sctp_
> int all_param_pass = 0;
> int no_err = 1;
> int retval = 0;
> - __u16 err_code = SCTP_ERROR_NO_ERROR;
> + __be16 err_code = SCTP_ERROR_NO_ERROR;
>
> /* Skip the chunkhdr and addiphdr from the last asconf sent and store
> * a pointer to address parameter.
> diff -uprN linux-vanilla/net/sctp/sm_statefuns.c
> linux-sctp/net/sctp/sm_statefuns.c
> --- linux-vanilla/net/sctp/sm_statefuns.c 2005-07-29 03:31:13.000000000
> +0400
> +++ linux-sctp/net/sctp/sm_statefuns.c 2005-07-29 03:39:50.000000000
> +0400
> @@ -93,7 +93,7 @@ static sctp_disposition_t sctp_sf_shut_8
> static struct sctp_sackhdr *sctp_sm_pull_sack(struct sctp_chunk *chunk);
>
> static sctp_disposition_t sctp_stop_t1_and_abort(sctp_cmd_seq_t *commands,
> - __u16 error,
> + __be16 error,
> const struct sctp_association *asoc,
> struct sctp_transport *transport);
>
> @@ -2236,7 +2236,7 @@ sctp_disposition_t sctp_sf_do_9_1_abort(
> {
> struct sctp_chunk *chunk = arg;
> unsigned len;
> - __u16 error = SCTP_ERROR_NO_ERROR;
> + __be16 error = SCTP_ERROR_NO_ERROR;
>
> if (!sctp_vtag_verify_either(chunk, asoc))
> return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
> @@ -2280,7 +2280,7 @@ sctp_disposition_t sctp_sf_cookie_wait_a
> {
> struct sctp_chunk *chunk = arg;
> unsigned len;
> - __u16 error = SCTP_ERROR_NO_ERROR;
> + __be16 error = SCTP_ERROR_NO_ERROR;
>
> if (!sctp_vtag_verify_either(chunk, asoc))
> return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
> @@ -2340,7 +2340,7 @@ sctp_disposition_t sctp_sf_cookie_echoed
> * This is common code called by several sctp_sf_*_abort() functions above.
> */
> static sctp_disposition_t sctp_stop_t1_and_abort(sctp_cmd_seq_t *commands,
> - __u16 error,
> + __be16 error,
> const struct sctp_association *asoc,
> struct sctp_transport *transport)
> {
> @@ -2437,7 +2437,7 @@ sctp_disposition_t sctp_sf_do_9_2_shutdo
> * received by the SHUTDOWN sender.
> */
> sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_CTSN,
> - SCTP_U32(chunk->subh.shutdown_hdr->cum_tsn_ack));
> + SCTP_NL(chunk->subh.shutdown_hdr->cum_tsn_ack));
>
> /* API 5.3.1.5 SCTP_SHUTDOWN_EVENT
> * When a peer sends a SHUTDOWN, SCTP delivers this notification to
> diff -uprN linux-vanilla/net/sctp/ulpevent.c linux-sctp/net/sctp/ulpevent.c
> --- linux-vanilla/net/sctp/ulpevent.c 2005-07-29 03:31:13.000000000 +0400
> +++ linux-sctp/net/sctp/ulpevent.c 2005-07-29 03:39:50.000000000 +0400
> @@ -356,7 +356,7 @@ struct sctp_ulpevent *sctp_ulpevent_make
> struct sctp_remote_error *sre;
> struct sk_buff *skb;
> sctp_errhdr_t *ch;
> - __u16 cause;
> + __be16 cause;
> int elen;
>
> ch = (sctp_errhdr_t *)(chunk->skb->data);
>
>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html