diff options
| author | Ivan Skytte Jørgensen <isj-sctp@i1.dk> | 2005-10-06 21:36:17 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2005-10-06 21:36:17 -0700 | 
| commit | 5fe467ee9787007dd9b263eb42dde3742deb743b (patch) | |
| tree | 607c106b4c35a4a329cf1656f047b969faedca8d /include | |
| parent | edb4a3534adbaf90768d67da35f0bfeac4767db6 (diff) | |
| download | olio-linux-3.10-5fe467ee9787007dd9b263eb42dde3742deb743b.tar.xz olio-linux-3.10-5fe467ee9787007dd9b263eb42dde3742deb743b.zip  | |
[SCTP] Fix sctp_get{pl}addrs() API to work with 32-bit apps on 64-bit kernels.
The old socket options are marked with a _OLD suffix so that the
existing 32-bit apps on 32-bit kernels do not break.
Signed-off-by: Ivan Skytte Jørgensen <isj-sctp@i1.dk>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/sctp/user.h | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index f6328aeddcc..e81ab52755f 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h @@ -103,16 +103,20 @@ enum sctp_optname {  #define SCTP_SOCKOPT_BINDX_REM	SCTP_SOCKOPT_BINDX_REM  	SCTP_SOCKOPT_PEELOFF, 	/* peel off association. */  #define SCTP_SOCKOPT_PEELOFF	SCTP_SOCKOPT_PEELOFF -	SCTP_GET_PEER_ADDRS_NUM, 	/* Get number of peer addresss. */ -#define SCTP_GET_PEER_ADDRS_NUM	SCTP_GET_PEER_ADDRS_NUM +	SCTP_GET_PEER_ADDRS_NUM_OLD, 	/* Get number of peer addresss. */ +#define SCTP_GET_PEER_ADDRS_NUM_OLD	SCTP_GET_PEER_ADDRS_NUM_OLD +	SCTP_GET_PEER_ADDRS_OLD, 	/* Get all peer addresss. */ +#define SCTP_GET_PEER_ADDRS_OLD	SCTP_GET_PEER_ADDRS_OLD +	SCTP_GET_LOCAL_ADDRS_NUM_OLD, 	/* Get number of local addresss. */ +#define SCTP_GET_LOCAL_ADDRS_NUM_OLD	SCTP_GET_LOCAL_ADDRS_NUM_OLD +	SCTP_GET_LOCAL_ADDRS_OLD, 	/* Get all local addresss. */ +#define SCTP_GET_LOCAL_ADDRS_OLD	SCTP_GET_LOCAL_ADDRS_OLD +	SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ +#define SCTP_SOCKOPT_CONNECTX	SCTP_SOCKOPT_CONNECTX  	SCTP_GET_PEER_ADDRS, 	/* Get all peer addresss. */  #define SCTP_GET_PEER_ADDRS	SCTP_GET_PEER_ADDRS -	SCTP_GET_LOCAL_ADDRS_NUM, 	/* Get number of local addresss. */ -#define SCTP_GET_LOCAL_ADDRS_NUM	SCTP_GET_LOCAL_ADDRS_NUM  	SCTP_GET_LOCAL_ADDRS, 	/* Get all local addresss. */  #define SCTP_GET_LOCAL_ADDRS	SCTP_GET_LOCAL_ADDRS -	SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ -#define SCTP_SOCKOPT_CONNECTX	SCTP_SOCKOPT_CONNECTX  };  /* @@ -559,11 +563,16 @@ struct sctp_status {   * SCTP_GET_LOCAL_ADDRS socket options used internally to implement   * sctp_getpaddrs() and sctp_getladdrs() API.    */ -struct sctp_getaddrs { +struct sctp_getaddrs_old {  	sctp_assoc_t            assoc_id;  	int			addr_num;  	struct sockaddr		__user *addrs;  }; +struct sctp_getaddrs { +	sctp_assoc_t		assoc_id; /*input*/ +	__u32			addr_num; /*output*/ +	__u8			addrs[0]; /*output, variable size*/ +};  /* These are bit fields for msghdr->msg_flags.  See section 5.1.  */  /* On user space Linux, these live in <bits/socket.h> as an enum.  */  |