Fwd: Tariff class implementation in Kannel

tarmo <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Organization Eesti Kaugotsing
Message-ID <[email protected]>

----------  Edasi saadetud kiri  ----------

Subject: Tariff class implementation in Kannel
Date: Fri, 12 Jul 2002 10:51:37 +0300
From: tarmo <[email protected]>
To: [email protected]

Is there any plan to implement tariff class usage in CIMD2 and Kannel?

My (working) patch for version 1.2.0 is attached (also include usage of CIMD2
timestamp)

--

Best wishes,

Tarmo Fimberg
Eesti Kaugotsing
===========================================================
e-mail: [email protected]
tf.diff (text/x-diff, 6.7 KB)
diff -r --exclude=*.o gateway-1.2.0.mod/gw/msg-decl.h gateway-1.2.0/gw/msg-decl.h
46,48d45
< 		//<T.F
< 		INTEGER(tariff);
< 		//T.F>
diff -r --exclude=*.o gateway-1.2.0.mod/gw/smsbox.c gateway-1.2.0/gw/smsbox.c
294,296c294
< //<T.F
< 				      Octstr **account, int *pid, int *alt_dcs, int *tariff)
< //T.F> added tariff 
---
> 				      Octstr **account, int *pid, int *alt_dcs)
304,306c302
< //<T.F
< 	*deferred = *pid = *alt_dcs = *tariff = 0;
< //T.F> added tariff 
---
> 	*deferred = *pid = *alt_dcs = 0;
371,375d366
< //<T.F
< 	else if (octstr_case_compare(name, octstr_imm("X-Kannel-Tariff")) == 0) {
<     	    sscanf(octstr_get_cstr(val),"%d", tariff);
<         }
< //T.F>
443c434
<                                   List **tolist, int *tariff)
---
>                                   List **tolist)
445c436
< //<T.F> added tariff
---
> 
485,488c476,478
<     *mclass = *mwi = *coding = *compress = *validity =
< 	//<T.F
< 	*deferred = *pid = *alt_dcs = *tariff = 0;
< 	//T.F>
---
>     *mclass = *mwi = *coding = *compress = *validity = 
> 	*deferred = *pid = *alt_dcs = 0;
> 
557,565c547
< 	//<T.F
< 	/*Tariff class (tariff) */
< 	get_tag(tmp, octstr_imm("tariff"), &tmp, 0, 0);
< 	if(tmp) {
< 	    if(octstr_parse_long(&tmplong, tmp, 0, 10) != -1)
< 		*tariff = tmplong;
< 	    O_DESTROY(tmp);
< 	}
< 	//T.F>
---
> 
667c649
< 			 Octstr *smsc, int tariff)
---
> 			 Octstr *smsc)
729,735d710
<     if (tariff) {
<         if (urltrans_accept_x_kannel_headers(trans))
< 	    msg->sms.tariff = tariff;	  
< 	else 
< 	    warning(0, "Tried to set Tariff field, denied.");
<     }
< 	
818,821c793,794
< 	//<T.F
<     int mclass, mwi, coding, compress, pid, alt_dcs, tariff;
<     //T.F>
< 	int validity, deferred;
---
>     int mclass, mwi, coding, compress, pid, alt_dcs;
>     int validity, deferred;
857,859c830
< 					  //<T.F
< 					  &account, &pid, &alt_dcs, &tariff);
< 					  //T.F> tariff
---
> 					  &account, &pid, &alt_dcs);
868,871c839,840
< 					  &deferred, &dlr_mask, &dlr_url,
< 					  //<T.F 
< 					  &account, &pid, &alt_dcs, &tariff);
< 					  //T.F>
---
> 					  &deferred, &dlr_mask, &dlr_url, 
> 					  &account, &pid, &alt_dcs);
879,882c848,849
< 				//<T.F
< 				&dlr_mask, &dlr_url, &account, &pid, &alt_dcs, NULL, &tariff);
< 	    		//T.F>
< 		} else if (octstr_case_compare(type, octet_stream) == 0) {
---
> 				&dlr_mask, &dlr_url, &account, &pid, &alt_dcs, NULL);
> 	    } else if (octstr_case_compare(type, octet_stream) == 0) {
891,894c858,859
< 				//<T.F
< 					  &account, &pid, &alt_dcs, &tariff);
< 	    		//T.F>
< 		} else {
---
> 					  &account, &pid, &alt_dcs);
> 	    } else {
907,910c872,874
< 			mwi, coding, compress, validity, deferred, dlr_url,
< 			//<T.F 
< 			dlr_mask, pid, alt_dcs, smsc, tariff);
< 			//T.F>
---
> 			mwi, coding, compress, validity, deferred, dlr_url, 
> 			dlr_mask, pid, alt_dcs, smsc);
> 
1092,1100d1055
< 	//<T.F
< 	if(msg->sms.tariff) {
< 	    Octstr *os;
< 	    os = octstr_format("%d",msg->sms.tariff);
< 	    http_header_add(request_headers, "X-Kannel-Tariff", 
< 	    	octstr_get_cstr(os));
< 	    octstr_destroy(os);
< 	}
< 	//T.F>
1589c1544
< 				 List *receiver, int tariff)
---
> 				 List *receiver)
1741,1747c1696
<     //<T.F
<     if ( tariff < 0 || alt_dcs > 99 ) {
< 	returnerror = octstr_create("Tariff field misformed, rejected");
< 	goto fielderror;
<     }
<     msg->sms.tariff = tariff;
< 	//T.F>
---
>     
1996,1998c1945,1946
< 	//<T.F
<     int mclass, mwi, coding, compress, validity, deferred, pid, alt_dcs, tariff;
<     //T.F>
---
>     int mclass, mwi, coding, compress, validity, deferred, pid, alt_dcs;
>    
2022,2024c1970,1971
< 	//<T.F
< 	deferred = pid = alt_dcs = tariff = 0;
< 	//T.F>
---
> 	deferred = pid = alt_dcs = 0;
> 
2046,2051c1993
< 	//<T.F
<     tmp_string = NULL;
<     tmp_string = http_cgi_variable(args, "tariff");
<     if(tmp_string != NULL)
<         sscanf(octstr_get_cstr(tmp_string),"%d", &tariff);
< 	//T.F>
---
> 
2097,2099c2039,2040
< 				 //<T.F
< 			     pid, alt_dcs, NULL, tariff);
<     			 //T.F>
---
> 			     pid, alt_dcs, NULL);
>     
2118,2120c2059,2060
< 	//<T.F
<     int mclass, mwi, coding, compress, validity, deferred, pid, alt_dcs, tariff;
<  	//T.F>
---
>     int mclass, mwi, coding, compress, validity, deferred, pid, alt_dcs;
>  
2132,2136c2072,2074
< 		       	&compress, &validity, &deferred, &dlr_mask, &dlr_url,
< 			//<T.F 
< 			&account, &pid, &alt_dcs, &tolist, &tariff);
<     		//T.F>
< 	} else {
---
> 		       	&compress, &validity, &deferred, &dlr_mask, &dlr_url, 
> 			&account, &pid, &alt_dcs, &tolist);
>     } else {
2140,2143c2078,2079
< 				  //<T.F
< 			      &dlr_mask, &dlr_url, &account, &pid, &alt_dcs, &tariff);
<     			  //T.F>
< 	}
---
> 			      &dlr_mask, &dlr_url, &account, &pid, &alt_dcs);
>     }
2182c2118
< 				    dlr_url, account, pid, alt_dcs, tolist, tariff);
---
> 				    dlr_url, account, pid, alt_dcs, tolist);
diff -r --exclude=*.o gateway-1.2.0.mod/gw/smsc_cimd2.c gateway-1.2.0/gw/smsc_cimd2.c
167,172d166
< //<T.F
< static const int chval2(char one, char two) {
< 	return (one & 0x0f) * 10 + (two & 0x0f); 
< }
< //>T.F
< 
590,597d583
< // It is essential reference - <T.F>
< // We use local timezone and century!
< 
< static Octstr *packet_get_time_parm(struct packet *packet, int parmno) {
< 	/* Our code should never even try a bad parameter access. */
< 	gw_assert(parm_type(parmno) == P_TIME);
< 	return packet_get_parm(packet, parmno);
< }
818,821d803
< 	//T.F<
< 	    info(0, "CIMD2 received: <%s>", octstr_get_cstr(packet->data));
< 	//>T.F
< 
1255,1259d1236
< 	if ( octstr_len(msg->sms.sender) > 0 )
< 		packet_add_address_parm(packet,
< 			P_ORIGINATING_ADDRESS, msg->sms.sender);
< 	//T.F if we give orig. addr, let SMSC prepend service nr
< 
1295,1298c1272
< 	//<T.F
< 	if ( msg->sms.tariff > 0 )
< 		packet_add_int_parm(packet, P_TARIFF_CLASS, msg->sms.tariff);
< 	//T.F>
---
> 
1430,1432c1404
<     Octstr *cimdt = NULL;
< 	struct tm tm;
< 	int DCS;
---
>     int DCS;
1451,1466d1422
< 	
< 	cimdt = packet_get_time_parm(request, P_MC_TIMESTAMP);
< 
< 	// Initialize tm with current time
< 	tm = gw_gmtime(time(NULL));
< 	// extract century
< 	tm.tm_year = (tm.tm_year / 100) * 100;
< 	tm.tm_year+= chval2(octstr_get_char(cimdt, 0), octstr_get_char(cimdt, 1));
< 	tm.tm_mon  = chval2(octstr_get_char(cimdt, 2), octstr_get_char(cimdt, 3)) - 1;
< 	tm.tm_mday = chval2(octstr_get_char(cimdt, 4), octstr_get_char(cimdt, 5));
< 	tm.tm_hour = chval2(octstr_get_char(cimdt, 6), octstr_get_char(cimdt, 7));
< 	tm.tm_min  = chval2(octstr_get_char(cimdt, 8), octstr_get_char(cimdt, 9));
< 	tm.tm_sec  = chval2(octstr_get_char(cimdt,10), octstr_get_char(cimdt,11));
< 	// some problems if timedrift
< 	//T.F>
< 
1516,1517d1471
< 	message->sms.time = (int)mktime(&tm);
< 
1584,1586d1537
< 	//T.F<
<     info(0, "CIMD2 sending: <%s>", octstr_get_cstr(request->data));
< 	//>T.F
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.