int flags, int state, int error, unsigned int __nocast gfp) 
int flags, int state, int error, gfp_t gfp) 
struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change(	const struct sctp_association *asoc,	const struct sockaddr_storage *aaddr,	int flags, int state, int error, unsigned int __nocast gfp){	struct sctp_ulpevent *event;	struct sctp_paddr_change  *spc;	struct sk_buff *skb;	event = sctp_ulpevent_new(sizeof(struct sctp_paddr_change),				  MSG_NOTIFICATION, gfp);	if (!event)		goto fail;	skb = sctp_event2skb(event);	spc = (struct sctp_paddr_change *)		skb_put(skb, sizeof(struct sctp_paddr_change));	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_type:	 *	 *    It should be SCTP_PEER_ADDR_CHANGE.	 */	spc->spc_type = SCTP_PEER_ADDR_CHANGE;	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_length: sizeof (__u32)	 *	 * This field is the total length of the notification data, including	 * the notification header.	 */	spc->spc_length = sizeof(struct sctp_paddr_change);	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_flags: 16 bits (unsigned integer)	 * Currently unused.	 */	spc->spc_flags = 0;	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_state:  32 bits (signed integer)	 *	 * This field holds one of a number of values that communicate the	 * event that happened to the address.	 */	spc->spc_state = state;	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_error:  32 bits (signed integer)	 *	 * If the state was reached due to any error condition (e.g.	 * ADDRESS_UNREACHABLE) any relevant error information is available in	 * this field.	 */	spc->spc_error = error;	/* Socket Extensions for SCTP	 * 5.3.1.1 SCTP_ASSOC_CHANGE	 *	 * spc_assoc_id: sizeof (sctp_assoc_t)	 *	 * The association id field, holds the identifier for the association.	 * All notifications for a given association have the same association	 * identifier.  For TCP style socket, this field is ignored.	 */	sctp_ulpevent_set_owner(event, asoc);	spc->spc_assoc_id = sctp_assoc2id(asoc);	/* Sockets API Extensions for SCTP	 * Section 5.3.1.2 SCTP_PEER_ADDR_CHANGE	 *	 * spc_aaddr: sizeof (struct sockaddr_storage)	 *	 * The affected address field, holds the remote peer's address that is	 * encountering the change of state.	 */	memcpy(&spc->spc_aaddr, aaddr, sizeof(struct sockaddr_storage));	/* Map ipv4 address into v4-mapped-on-v6 address.  */	sctp_get_pf_specific(asoc->base.sk->sk_family)->addr_v4map(					sctp_sk(asoc->base.sk),					(union sctp_addr *)&spc->spc_aaddr);	return event;fail:	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7/ulpevent.c/buggy/net/sctp/ulpevent.c