rem: ss_nr=2; suffix_source[0]=msg->via1->host; suffix_source[1]=msg->via1->port_str; if (msg->via1->branch) suffix_source[ss_nr++]=msg->via1->branch->value; crcitt_string_array( tag_suffix, suffix_source, ss_nr );
add: calc_crc_suffix(msg);
context: int sl_filter_ACK(struct sip_msg *msg ){	str *tag_str;	str suffix_source[3];	int ss_nr;	if (msg->first_line.u.request.method_value!=METHOD_ACK)		goto pass_it;	/*check the timeout value*/	if ( *(sl_timeout)<= get_ticks() )	{		DBG("DEBUG : sl_filter_ACK: to late to be a local ACK!\n");		goto pass_it;	}	/*force to parse to header -> we need it for tag param*/	if (parse_headers( msg, HDR_TO, 0 )==-1)	{		LOG(L_ERR,"ERROR : SL_FILTER_ACK: unable to parse To header\n");		return -1;	}	tag_str = &(get_to(msg)->tag_value);	if ( tag_str->len==TOTAG_LEN )	{		/* calculate the variable part of to-tag */			ss_nr=2;		suffix_source[0]=msg->via1->host;		suffix_source[1]=msg->via1->port_str;		if (msg->via1->branch)			suffix_source[ss_nr++]=msg->via1->branch->value;		crcitt_string_array( tag_suffix, suffix_source, ss_nr );		/* test whether to-tag equal now */		if (memcmp(tag_str->s,sl_tag,TOTAG_LEN)==0) {			DBG("DEBUG: sl_filter_ACK : local ACK found -> dropping it! \n" );			return 0;		}	}pass_it:	return 1;}