unsigned int __nocast gfp) 
gfp_t gfp) 
static int sctp_process_param(struct sctp_association *asoc,			      union sctp_params param,			      const union sctp_addr *peer_addr,			      unsigned int __nocast gfp){	union sctp_addr addr;	int i;	__u16 sat;	int retval = 1;	sctp_scope_t scope;	time_t stale;	struct sctp_af *af;	/* We maintain all INIT parameters in network byte order all the	 * time.  This allows us to not worry about whether the parameters	 * came from a fresh INIT, and INIT ACK, or were stored in a cookie.	 */	switch (param.p->type) {	case SCTP_PARAM_IPV6_ADDRESS:		if (PF_INET6 != asoc->base.sk->sk_family)			break;		/* Fall through. */	case SCTP_PARAM_IPV4_ADDRESS:		af = sctp_get_af_specific(param_type2af(param.p->type));		af->from_addr_param(&addr, param.addr, asoc->peer.port, 0);		scope = sctp_scope(peer_addr);		if (sctp_in_scope(&addr, scope))			if (!sctp_assoc_add_peer(asoc, &addr, gfp, SCTP_ACTIVE))				return 0;		break;	case SCTP_PARAM_COOKIE_PRESERVATIVE:		if (!sctp_cookie_preserve_enable)			break;		stale = ntohl(param.life->lifespan_increment);		/* Suggested Cookie Life span increment's unit is msec,		 * (1/1000sec).		 */		asoc->cookie_life.tv_sec += stale / 1000;		asoc->cookie_life.tv_usec += (stale % 1000) * 1000;		break;	case SCTP_PARAM_HOST_NAME_ADDRESS:		SCTP_DEBUG_PRINTK("unimplemented SCTP_HOST_NAME_ADDRESS\n");		break;	case SCTP_PARAM_SUPPORTED_ADDRESS_TYPES:		/* Turn off the default values first so we'll know which		 * ones are really set by the peer.		 */		asoc->peer.ipv4_address = 0;		asoc->peer.ipv6_address = 0;		/* Cycle through address types; avoid divide by 0. */		sat = ntohs(param.p->length) - sizeof(sctp_paramhdr_t);		if (sat)			sat /= sizeof(__u16);		for (i = 0; i < sat; ++i) {			switch (param.sat->types[i]) {			case SCTP_PARAM_IPV4_ADDRESS:				asoc->peer.ipv4_address = 1;				break;			case SCTP_PARAM_IPV6_ADDRESS:				asoc->peer.ipv6_address = 1;				break;			case SCTP_PARAM_HOST_NAME_ADDRESS:				asoc->peer.hostname_address = 1;				break;			default: /* Just ignore anything else.  */				break;			};		}		break;	case SCTP_PARAM_STATE_COOKIE:		asoc->peer.cookie_len =			ntohs(param.p->length) - sizeof(sctp_paramhdr_t);		asoc->peer.cookie = param.cookie->body;		break;	case SCTP_PARAM_HEARTBEAT_INFO:		/* Would be odd to receive, but it causes no problems. */		break;	case SCTP_PARAM_UNRECOGNIZED_PARAMETERS:		/* Rejected during verify stage. */		break;	case SCTP_PARAM_ECN_CAPABLE:		asoc->peer.ecn_capable = 1;		break;	case SCTP_PARAM_ADAPTION_LAYER_IND:		asoc->peer.adaption_ind = param.aind->adaption_ind;		break;	case SCTP_PARAM_FWD_TSN_SUPPORT:		if (sctp_prsctp_enable) {			asoc->peer.prsctp_capable = 1;			break;		}		/* Fall Through */ 	default:		/* Any unrecognized parameters should have been caught		 * and handled by sctp_verify_param() which should be		 * called prior to this routine.  Simply log the error		 * here.		 */		SCTP_DEBUG_PRINTK("Ignoring param: %d for association %p.\n",				  ntohs(param.p->type), asoc);		break;	};	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7/sm_make_chunk.c/buggy/net/sctp/sm_make_chunk.c