Changeset 3172
- Timestamp:
- 09/22/10 21:36:20 (14 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r3168 r3172 573 573 int ridx; 574 574 int cs_ptyp; // process-type 575 uchar mbuf[1024]; // global buffer576 575 577 576 ECM_REQUEST *ecmtask; -
trunk/module-camd33.c
r3168 r3172 33 33 { 34 34 int au; 35 uchar mbuf[20]; 35 36 au=client[cs_idx].au; 36 37 if ((au<0) || (au>CS_MAXREADER)) return; // TODO … … 38 39 { 39 40 log_emm_request(au); 40 client[cs_idx].mbuf[0]=0;41 client[cs_idx].mbuf[1]=reader[au].caid[0]>>8;42 client[cs_idx].mbuf[2]=reader[au].caid[0]&0xff;43 memcpy( client[cs_idx].mbuf+3, reader[au].hexserial, 4);44 memcpy( client[cs_idx].mbuf+7, &reader[au].prid[0][1], 3);45 memcpy( client[cs_idx].mbuf+10, &reader[au].prid[2][1], 3);46 camd33_send( client[cs_idx].mbuf, 13);41 mbuf[0]=0; 42 mbuf[1]=reader[au].caid[0]>>8; 43 mbuf[2]=reader[au].caid[0]&0xff; 44 memcpy(mbuf+3, reader[au].hexserial, 4); 45 memcpy(mbuf+7, &reader[au].prid[0][1], 3); 46 memcpy(mbuf+10, &reader[au].prid[2][1], 3); 47 camd33_send(mbuf, 13); 47 48 } 48 49 } … … 53 54 uchar *usr=NULL, *pwd=NULL; 54 55 struct s_auth *account; 56 uchar mbuf[1024]; 55 57 56 58 client[cs_idx].crypted=cfg->c33_crypted; … … 65 67 aes_set_key((char *) cfg->c33_key); 66 68 67 client[cs_idx].mbuf[0]=0;68 camd33_send( client[cs_idx].mbuf, 1); // send login-request69 70 for (rc=0, client[cs_idx].camdbug[0]=0, client[cs_idx].mbuf[0]=1; (rc<2) && (client[cs_idx].mbuf[0]); rc++)71 { 72 i=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), 1);73 if ((i>0) && (! client[cs_idx].mbuf[0]))69 mbuf[0]=0; 70 camd33_send(mbuf, 1); // send login-request 71 72 for (rc=0, client[cs_idx].camdbug[0]=0, mbuf[0]=1; (rc<2) && (mbuf[0]); rc++) 73 { 74 i=process_input(mbuf, sizeof(mbuf), 1); 75 if ((i>0) && (!mbuf[0])) 74 76 { 75 usr= client[cs_idx].mbuf+1;77 usr=mbuf+1; 76 78 pwd=usr+strlen((char *)usr)+2; 77 79 } 78 80 else 79 memcpy(client[cs_idx].camdbug+1, client[cs_idx].mbuf, client[cs_idx].camdbug[0]=i);81 memcpy(client[cs_idx].camdbug+1, mbuf, client[cs_idx].camdbug[0]=i); 80 82 } 81 83 for (rc=-1, account=cfg->account; (usr) && (account) && (rc<0); account=account->next) … … 143 145 static void camd33_send_dcw(ECM_REQUEST *er) 144 146 { 145 client[cs_idx].mbuf[0]=2; 146 memcpy(client[cs_idx].mbuf+1, client[cs_idx].req+(er->cpti*REQ_SIZE), 4); // get pin 147 memcpy(client[cs_idx].mbuf+5, er->cw, 16); 148 camd33_send(client[cs_idx].mbuf, 21); 147 uchar mbuf[1024]; 148 mbuf[0]=2; 149 memcpy(mbuf+1, client[cs_idx].req+(er->cpti*REQ_SIZE), 4); // get pin 150 memcpy(mbuf+5, er->cw, 16); 151 camd33_send(mbuf, 21); 149 152 if (!cfg->c33_passive) 150 153 camd33_request_emm(); … … 177 180 { 178 181 int n; 182 uchar mbuf[1024]; 179 183 180 184 int cidx=(int)idx; … … 191 195 camd33_auth_client(); 192 196 193 while ((n=get_request( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf)))>0)194 { 195 switch( client[cs_idx].mbuf[0])197 while ((n=get_request(mbuf, sizeof(mbuf)))>0) 198 { 199 switch(mbuf[0]) 196 200 { 197 201 case 2: 198 camd33_process_ecm( client[cs_idx].mbuf, n);202 camd33_process_ecm(mbuf, n); 199 203 break; 200 204 case 3: 201 camd33_process_emm( client[cs_idx].mbuf, n);205 camd33_process_emm(mbuf, n); 202 206 break; 203 207 default: -
trunk/module-camd35.c
r3168 r3172 140 140 int i, au; 141 141 time_t now; 142 uchar mbuf[1024]; 142 143 143 144 au = client[cs_idx].au; … … 163 164 client[cs_idx].disable_counter++; 164 165 165 memset( client[cs_idx].mbuf, 0, sizeof(client[cs_idx].mbuf));166 client[cs_idx].mbuf[2] = client[cs_idx].mbuf[3] = 0xff; // must not be zero167 memcpy( client[cs_idx].mbuf + 8, i2b(2, er->srvid), 2);166 memset(mbuf, 0, sizeof(mbuf)); 167 mbuf[2] = mbuf[3] = 0xff; // must not be zero 168 memcpy(mbuf + 8, i2b(2, er->srvid), 2); 168 169 169 170 //override request provid with auprovid if set in CMD05 170 171 if(reader[au].auprovid) { 171 172 if(reader[au].auprovid != er->prid) 172 memcpy( client[cs_idx].mbuf + 12, i2b(4, reader[au].auprovid), 4);173 memcpy(mbuf + 12, i2b(4, reader[au].auprovid), 4); 173 174 else 174 memcpy( client[cs_idx].mbuf + 12, i2b(4, er->prid), 4);175 memcpy(mbuf + 12, i2b(4, er->prid), 4); 175 176 } else { 176 memcpy( client[cs_idx].mbuf + 12, i2b(4, er->prid), 4);177 } 178 179 memcpy( client[cs_idx].mbuf + 16, i2b(2, er->pid), 2);180 client[cs_idx].mbuf[0] = 5;181 client[cs_idx].mbuf[1] = 111;177 memcpy(mbuf + 12, i2b(4, er->prid), 4); 178 } 179 180 memcpy(mbuf + 16, i2b(2, er->pid), 2); 181 mbuf[0] = 5; 182 mbuf[1] = 111; 182 183 if (reader[au].caid[0]) 183 184 { 184 client[cs_idx].mbuf[39] = 1; // no. caids185 client[cs_idx].mbuf[20] = reader[au].caid[0]>>8; // caid's (max 8)186 client[cs_idx].mbuf[21] = reader[au].caid[0]&0xff;187 memcpy( client[cs_idx].mbuf + 40, reader[au].hexserial, 6); // serial now 6 bytes188 client[cs_idx].mbuf[47] = reader[au].nprov;185 mbuf[39] = 1; // no. caids 186 mbuf[20] = reader[au].caid[0]>>8; // caid's (max 8) 187 mbuf[21] = reader[au].caid[0]&0xff; 188 memcpy(mbuf + 40, reader[au].hexserial, 6); // serial now 6 bytes 189 mbuf[47] = reader[au].nprov; 189 190 for (i = 0; i < reader[au].nprov; i++) 190 191 { … … 192 193 ((reader[au].caid[0] >= 0x0600) && (reader[au].caid[0] <= 0x0699))) // Irdeto (don't know if this is correct, cause I don't own a IRDETO-Card) 193 194 { 194 client[cs_idx].mbuf[48 + (i*5)] = reader[au].prid[i][0];195 memcpy(& client[cs_idx].mbuf[50 + (i*5)], &reader[au].prid[i][1], 3);195 mbuf[48 + (i*5)] = reader[au].prid[i][0]; 196 memcpy(&mbuf[50 + (i*5)], &reader[au].prid[i][1], 3); 196 197 } 197 198 else 198 199 { 199 client[cs_idx].mbuf[48 + (i * 5)] = reader[au].prid[i][2];200 client[cs_idx].mbuf[49 + (i * 5)] =reader[au].prid[i][3];201 memcpy(& client[cs_idx].mbuf[50 + (i * 5)], &reader[au].sa[i][0],4); // for conax we need at least 4 Bytes200 mbuf[48 + (i * 5)] = reader[au].prid[i][2]; 201 mbuf[49 + (i * 5)] =reader[au].prid[i][3]; 202 memcpy(&mbuf[50 + (i * 5)], &reader[au].sa[i][0],4); // for conax we need at least 4 Bytes 202 203 } 203 204 } 204 205 //we think client/server protocols should deliver all information, and only readers should discard EMM 205 client[cs_idx].mbuf[128] = (reader[au].blockemm_g == 1) ? 0: 1;206 client[cs_idx].mbuf[129] = (reader[au].blockemm_s == 1) ? 0: 1;207 client[cs_idx].mbuf[130] = (reader[au].blockemm_u == 1) ? 0: 1;208 // client[cs_idx].mbuf[131] = reader[au].card_system; //Cardsystem for Oscam client206 mbuf[128] = (reader[au].blockemm_g == 1) ? 0: 1; 207 mbuf[129] = (reader[au].blockemm_s == 1) ? 0: 1; 208 mbuf[130] = (reader[au].blockemm_u == 1) ? 0: 1; 209 //mbuf[131] = reader[au].card_system; //Cardsystem for Oscam client 209 210 } 210 211 else // disable emm 211 client[cs_idx].mbuf[20] = client[cs_idx].mbuf[39] = client[cs_idx].mbuf[40] = client[cs_idx].mbuf[47] = client[cs_idx].mbuf[49] = 1;212 213 memcpy( client[cs_idx].mbuf + 10, client[cs_idx].mbuf + 20, 2);214 camd35_send( client[cs_idx].mbuf); // send with data-len 111 for camd3 > 3.890215 client[cs_idx].mbuf[1]++;216 camd35_send( client[cs_idx].mbuf); // send with data-len 112 for camd3 < 3.890212 mbuf[20] = mbuf[39] = mbuf[40] = mbuf[47] = mbuf[49] = 1; 213 214 memcpy(mbuf + 10, mbuf + 20, 2); 215 camd35_send(mbuf); // send with data-len 111 for camd3 > 3.890 216 mbuf[1]++; 217 camd35_send(mbuf); // send with data-len 112 for camd3 < 3.890 217 218 } 218 219 … … 295 296 { 296 297 int n; 298 uchar mbuf[1024]; 297 299 298 300 int cidx=(int)idx; … … 309 311 client[cs_idx].is_udp = (ph[client[cs_idx].ctyp].type == MOD_CONN_UDP); 310 312 311 while ((n=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle))>0)312 { 313 switch( client[cs_idx].mbuf[0])313 while ((n=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle))>0) 314 { 315 switch(mbuf[0]) 314 316 { 315 317 case 0: // ECM 316 318 case 3: // ECM (cascading) 317 camd35_process_ecm( client[cs_idx].mbuf);319 camd35_process_ecm(mbuf); 318 320 break; 319 321 case 6: // EMM 320 322 case 19: // EMM 321 camd35_process_emm( client[cs_idx].mbuf);323 camd35_process_emm(mbuf); 322 324 break; 323 325 default: 324 cs_log("unknown camd35 command! (%d)", client[cs_idx].mbuf[0]);326 cs_log("unknown camd35 command! (%d)", mbuf[0]); 325 327 } 326 328 } -
trunk/module-cccam.c
r3170 r3172 2758 2758 struct s_auth *account; 2759 2759 struct cc_data *cc = cl->cc; 2760 uchar mbuf[1024]; 2760 2761 2761 2762 memset(usr, 0, sizeof(usr)); … … 2937 2938 // check for client timeout, if timeout occurs try to send keepalive 2938 2939 for (;;) { 2939 i = process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), 10); //cfg->cmaxidle);2940 i = process_input(mbuf, sizeof(mbuf), 10); //cfg->cmaxidle); 2940 2941 //cs_log("srv process input i=%d cmi=%d", i, cmi); 2941 2942 if (i == -9) { -
trunk/module-dvbapi.c
r3170 r3172 955 955 struct dirent *dp; 956 956 int i, pmt_fd; 957 uchar mbuf[1024]; 957 958 958 959 signal=signal; //avoid compiler warnings … … 1034 1035 cs_sleepms(100); 1035 1036 1036 unsigned int len = read(pmt_fd, client[cs_idx].mbuf,sizeof(client[cs_idx].mbuf));1037 unsigned int len = read(pmt_fd,mbuf,sizeof(mbuf)); 1037 1038 close(pmt_fd); 1038 1039 … … 1053 1054 1054 1055 for(j2=0,j1=0;j2<len;j2+=2,j1++) { 1055 if (sscanf((char*) client[cs_idx].mbuf+j2, "%02X", dest+j1) != 1) {1056 if (sscanf((char*)mbuf+j2, "%02X", dest+j1) != 1) { 1056 1057 cs_log("error parsing QboxHD pmt.tmp, data not valid in position %d",j2); 1057 1058 pthread_mutex_unlock(&event_handler_lock); … … 1068 1069 continue; 1069 1070 } 1070 cs_ddump( client[cs_idx].mbuf,len,"pmt:");1071 cs_ddump(mbuf,len,"pmt:"); 1071 1072 1072 1073 memcpy(dest, "\x00\xFF\xFF\x00\x00\x13\x00", 7); 1073 1074 1074 dest[1] = client[cs_idx].mbuf[3];1075 dest[2] = client[cs_idx].mbuf[4];1076 dest[5] = client[cs_idx].mbuf[11]+1;1077 1078 memcpy(dest + 7, client[cs_idx].mbuf + 12, len - 12 - 4);1075 dest[1] = mbuf[3]; 1076 dest[2] = mbuf[4]; 1077 dest[5] = mbuf[11]+1; 1078 1079 memcpy(dest + 7, mbuf + 12, len - 12 - 4); 1079 1080 1080 1081 pmt_id = dvbapi_parse_capmt((uchar*)dest, 7 + len - 12 - 4, -1); … … 1187 1188 struct sockaddr_un servaddr; 1188 1189 ssize_t len=0; 1190 uchar mbuf[1024]; 1189 1191 1190 1192 struct s_auth *account=0; … … 1339 1341 } 1340 1342 1341 len = read(connfd, client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf));1343 len = read(connfd, mbuf, sizeof(mbuf)); 1342 1344 1343 1345 if (len < 3) { … … 1346 1348 } 1347 1349 1348 dvbapi_handlesockmsg( client[cs_idx].mbuf, len, connfd);1350 dvbapi_handlesockmsg(mbuf, len, connfd); 1349 1351 } else { // type==0 1350 1352 int demux_index=ids[i]; 1351 1353 int n=fdn[i]; 1352 1354 1353 if ((len=dvbapi_read_device(pfd2[i].fd, client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf))) <= 0) {1355 if ((len=dvbapi_read_device(pfd2[i].fd, mbuf, sizeof(mbuf))) <= 0) { 1354 1356 if (demux[demux_index].pidindex==-1) { 1355 1357 dvbapi_try_next_caid(demux_index); … … 1359 1361 1360 1362 if (pfd2[i].fd==(int)demux[demux_index].demux_fd[n].fd) { 1361 dvbapi_process_input(demux_index,n, client[cs_idx].mbuf,len);1363 dvbapi_process_input(demux_index,n,mbuf,len); 1362 1364 } 1363 1365 } -
trunk/module-monitor.c
r3153 r3172 765 765 static void monitor_server(void *idx){ 766 766 int n; 767 uchar mbuf[1024]; 767 768 768 769 int cidx=(int)idx; 769 770 client[cidx].thread=pthread_self(); 770 771 client[cs_idx].typ='m'; 771 while (((n = process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle)) >= 0) && monitor_process_request((char *)client[cs_idx].mbuf));772 while (((n = process_input(mbuf, sizeof(mbuf), cfg->cmaxidle)) >= 0) && monitor_process_request((char *)mbuf)); 772 773 cs_disconnect_client(); 773 774 } -
trunk/module-newcamd.c
r3170 r3172 619 619 int au=0; 620 620 struct s_ip *p_ip; 621 uchar mbuf[1024]; 621 622 622 623 ok = cfg->ncd_allowed ? 0 : 1; … … 640 641 client[cs_idx].ncd_msgid = 0; 641 642 642 i=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle);643 i=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle); 643 644 if ( i>0 ) 644 645 { 645 if( client[cs_idx].mbuf[2] != MSG_CLIENT_2_SERVER_LOGIN )646 if( mbuf[2] != MSG_CLIENT_2_SERVER_LOGIN ) 646 647 { 647 648 cs_debug("expected MSG_CLIENT_2_SERVER_LOGIN (%02X), received %02X", 648 MSG_CLIENT_2_SERVER_LOGIN, client[cs_idx].mbuf[2]);649 MSG_CLIENT_2_SERVER_LOGIN, mbuf[2]); 649 650 if(client[cs_idx].req) 650 651 { … … 654 655 cs_exit(0); 655 656 } 656 usr= client[cs_idx].mbuf+5;657 usr=mbuf+5; 657 658 pwd=usr+strlen((char *)usr)+1; 658 659 } … … 668 669 } 669 670 670 sprintf(client_id, "%02X%02X", client[cs_idx].mbuf[0], client[cs_idx].mbuf[1]);671 sprintf(client_id, "%02X%02X", mbuf[0], mbuf[1]); 671 672 client_name = get_ncd_client_name(client_id); 672 673 … … 747 748 memcpy(client[cs_idx].ncd_skey, key, 16); 748 749 749 i=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle);750 i=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle); 750 751 if( i>0 ) 751 752 { 752 753 int j,len=15; 753 if( client[cs_idx].mbuf[2] != MSG_CARD_DATA_REQ)754 if( mbuf[2] != MSG_CARD_DATA_REQ) 754 755 { 755 756 cs_debug("expected MSG_CARD_DATA_REQ (%02X), received %02X", 756 MSG_CARD_DATA_REQ, client[cs_idx].mbuf[2]);757 MSG_CARD_DATA_REQ, mbuf[2]); 757 758 if(client[cs_idx].req) 758 759 free(client[cs_idx].req); client[cs_idx].req=0; … … 771 772 client[cs_idx].ftab.nfilts = 1; 772 773 773 client[cs_idx].mbuf[0] = MSG_CARD_DATA;774 client[cs_idx].mbuf[1] = 0x00;775 client[cs_idx].mbuf[2] = 0x00;774 mbuf[0] = MSG_CARD_DATA; 775 mbuf[1] = 0x00; 776 mbuf[2] = 0x00; 776 777 777 778 if( au != -1 ) 778 client[cs_idx].mbuf[3] = 1;779 mbuf[3] = 1; 779 780 else 780 client[cs_idx].mbuf[3] = cs_idx+10; // Unique user number781 782 client[cs_idx].mbuf[4] = (uchar)(pufilt->caid>>8);783 client[cs_idx].mbuf[5] = (uchar)(pufilt->caid);784 client[cs_idx].mbuf[6] = 0x00;785 client[cs_idx].mbuf[7] = 0x00;781 mbuf[3] = cs_idx+10; // Unique user number 782 783 mbuf[4] = (uchar)(pufilt->caid>>8); 784 mbuf[5] = (uchar)(pufilt->caid); 785 mbuf[6] = 0x00; 786 mbuf[7] = 0x00; 786 787 787 788 if (au != -1) … … 791 792 // only 4 Bytes Hexserial for newcamd clients (Hex Base + Hex Serial) 792 793 // first 2 Byte always 00 793 client[cs_idx].mbuf[8]=0x00; //serial only 4 bytes794 client[cs_idx].mbuf[9]=0x00; //serial only 4 bytes794 mbuf[8]=0x00; //serial only 4 bytes 795 mbuf[9]=0x00; //serial only 4 bytes 795 796 // 1 Byte Hex Base (see reader-irdeto.c how this is stored in "reader[au].hexserial") 796 client[cs_idx].mbuf[10]=reader[au].hexserial[3];797 mbuf[10]=reader[au].hexserial[3]; 797 798 // 3 Bytes Hex Serial (see reader-irdeto.c how this is stored in "reader[au].hexserial") 798 client[cs_idx].mbuf[11]=reader[au].hexserial[0];799 client[cs_idx].mbuf[12]=reader[au].hexserial[1];800 client[cs_idx].mbuf[13]=reader[au].hexserial[2];799 mbuf[11]=reader[au].hexserial[0]; 800 mbuf[12]=reader[au].hexserial[1]; 801 mbuf[13]=reader[au].hexserial[2]; 801 802 } 802 803 else if (((pufilt->caid >> 8) == 0x05) || ((pufilt->caid >> 8) == 0x0D)) 803 804 { 804 client[cs_idx].mbuf[8] = 0x00;805 client[cs_idx].mbuf[9] = reader[au].hexserial[0];806 client[cs_idx].mbuf[10] = reader[au].hexserial[1];807 client[cs_idx].mbuf[11] = reader[au].hexserial[2];808 client[cs_idx].mbuf[12] = reader[au].hexserial[3];809 client[cs_idx].mbuf[13] = reader[au].hexserial[4];805 mbuf[8] = 0x00; 806 mbuf[9] = reader[au].hexserial[0]; 807 mbuf[10] = reader[au].hexserial[1]; 808 mbuf[11] = reader[au].hexserial[2]; 809 mbuf[12] = reader[au].hexserial[3]; 810 mbuf[13] = reader[au].hexserial[4]; 810 811 } 811 812 else 812 813 { 813 client[cs_idx].mbuf[8] = reader[au].hexserial[0];814 client[cs_idx].mbuf[9] = reader[au].hexserial[1];815 client[cs_idx].mbuf[10] = reader[au].hexserial[2];816 client[cs_idx].mbuf[11] = reader[au].hexserial[3];817 client[cs_idx].mbuf[12] = reader[au].hexserial[4];818 client[cs_idx].mbuf[13] = reader[au].hexserial[5];814 mbuf[8] = reader[au].hexserial[0]; 815 mbuf[9] = reader[au].hexserial[1]; 816 mbuf[10] = reader[au].hexserial[2]; 817 mbuf[11] = reader[au].hexserial[3]; 818 mbuf[12] = reader[au].hexserial[4]; 819 mbuf[13] = reader[au].hexserial[5]; 819 820 } 820 821 } … … 822 823 { 823 824 client[cs_idx].au = -1; 824 client[cs_idx].mbuf[8] = 0x00;825 client[cs_idx].mbuf[9] = 0x00;826 client[cs_idx].mbuf[10] = 0x00;827 client[cs_idx].mbuf[11] = 0x00;828 client[cs_idx].mbuf[12] = 0x00;829 client[cs_idx].mbuf[13] = 0x00;825 mbuf[8] = 0x00; 826 mbuf[9] = 0x00; 827 mbuf[10] = 0x00; 828 mbuf[11] = 0x00; 829 mbuf[12] = 0x00; 830 mbuf[13] = 0x00; 830 831 } 831 client[cs_idx].mbuf[14] = pufilt->nprids;832 mbuf[14] = pufilt->nprids; 832 833 for( j=0; j<pufilt->nprids; j++) 833 834 { 834 835 if (((pufilt->caid >> 8) == 0x17) || ((pufilt->caid >> 8) == 0x06)) // Betacrypt or Irdeto 835 836 { 836 client[cs_idx].mbuf[15+11*j] = 0;837 client[cs_idx].mbuf[16+11*j] = 0;838 client[cs_idx].mbuf[17+11*j] = j;837 mbuf[15+11*j] = 0; 838 mbuf[16+11*j] = 0; 839 mbuf[17+11*j] = j; 839 840 } 840 841 else 841 842 { 842 client[cs_idx].mbuf[15+11*j] = (uchar)(pufilt->prids[j]>>16);843 client[cs_idx].mbuf[16+11*j] = (uchar)(pufilt->prids[j]>>8);844 client[cs_idx].mbuf[17+11*j] = (uchar)(pufilt->prids[j]);843 mbuf[15+11*j] = (uchar)(pufilt->prids[j]>>16); 844 mbuf[16+11*j] = (uchar)(pufilt->prids[j]>>8); 845 mbuf[17+11*j] = (uchar)(pufilt->prids[j]); 845 846 } 846 client[cs_idx].mbuf[18+11*j] = 0x00;847 client[cs_idx].mbuf[19+11*j] = 0x00;848 client[cs_idx].mbuf[20+11*j] = 0x00;849 client[cs_idx].mbuf[21+11*j] = 0x00;847 mbuf[18+11*j] = 0x00; 848 mbuf[19+11*j] = 0x00; 849 mbuf[20+11*j] = 0x00; 850 mbuf[21+11*j] = 0x00; 850 851 if( au!=-1 ) 851 852 { … … 863 864 if (((pufilt->caid >> 8) == 0x17) || ((pufilt->caid >> 8) == 0x06)) // Betacrypt or Irdeto 864 865 { 865 client[cs_idx].mbuf[22+11*j] = reader[au].prid[k][0];866 client[cs_idx].mbuf[23+11*j] = reader[au].prid[k][1];867 client[cs_idx].mbuf[24+11*j] = reader[au].prid[k][2];868 client[cs_idx].mbuf[25+11*j] = reader[au].prid[k][3];866 mbuf[22+11*j] = reader[au].prid[k][0]; 867 mbuf[23+11*j] = reader[au].prid[k][1]; 868 mbuf[24+11*j] = reader[au].prid[k][2]; 869 mbuf[25+11*j] = reader[au].prid[k][3]; 869 870 } 870 871 else 871 872 { 872 client[cs_idx].mbuf[22+11*j] = reader[au].sa[k][0];873 client[cs_idx].mbuf[23+11*j] = reader[au].sa[k][1];874 client[cs_idx].mbuf[24+11*j] = reader[au].sa[k][2];875 client[cs_idx].mbuf[25+11*j] = reader[au].sa[k][3];873 mbuf[22+11*j] = reader[au].sa[k][0]; 874 mbuf[23+11*j] = reader[au].sa[k][1]; 875 mbuf[24+11*j] = reader[au].sa[k][2]; 876 mbuf[25+11*j] = reader[au].sa[k][3]; 876 877 } 877 878 found=1; … … 882 883 if( !found ) 883 884 { 884 client[cs_idx].mbuf[22+11*j] = 0x00;885 client[cs_idx].mbuf[23+11*j] = 0x00;886 client[cs_idx].mbuf[24+11*j] = 0x00;887 client[cs_idx].mbuf[25+11*j] = 0x00;885 mbuf[22+11*j] = 0x00; 886 mbuf[23+11*j] = 0x00; 887 mbuf[24+11*j] = 0x00; 888 mbuf[25+11*j] = 0x00; 888 889 } 889 890 } … … 892 893 if (((pufilt->caid >> 8) == 0x17) || ((pufilt->caid >> 8) == 0x06)) // Betacrypt or Irdeto 893 894 { 894 client[cs_idx].mbuf[22+11*j] = 0x00;895 client[cs_idx].mbuf[23+11*j] = (uchar)(pufilt->prids[j]>>16);896 client[cs_idx].mbuf[24+11*j] = (uchar)(pufilt->prids[j]>>8);897 client[cs_idx].mbuf[25+11*j] = (uchar)(pufilt->prids[j]);895 mbuf[22+11*j] = 0x00; 896 mbuf[23+11*j] = (uchar)(pufilt->prids[j]>>16); 897 mbuf[24+11*j] = (uchar)(pufilt->prids[j]>>8); 898 mbuf[25+11*j] = (uchar)(pufilt->prids[j]); 898 899 } 899 900 else 900 901 { 901 client[cs_idx].mbuf[22+11*j] = 0x00;902 client[cs_idx].mbuf[23+11*j] = 0x00;903 client[cs_idx].mbuf[24+11*j] = 0x00;904 client[cs_idx].mbuf[25+11*j] = 0x00;902 mbuf[22+11*j] = 0x00; 903 mbuf[23+11*j] = 0x00; 904 mbuf[24+11*j] = 0x00; 905 mbuf[25+11*j] = 0x00; 905 906 } 906 907 } … … 922 923 923 924 if( network_message_send(client[cs_idx].udp_fd, &client[cs_idx].ncd_msgid, 924 client[cs_idx].mbuf, len, key, COMMTYPE_SERVER, 0, &cd) <0 )925 mbuf, len, key, COMMTYPE_SERVER, 0, &cd) <0 ) 925 926 { 926 927 if(client[cs_idx].req) … … 949 950 int len; 950 951 ushort cl_msgid; 952 uchar mbuf[1024]; 951 953 952 954 if (!client[cs_idx].udp_fd) { … … 955 957 } 956 958 memcpy(&cl_msgid, client[cs_idx].req+(er->cpti*REQ_SIZE), 2); // get client ncd_msgid + 0x8x 957 client[cs_idx].mbuf[0] = er->ecm[0];959 mbuf[0] = er->ecm[0]; 958 960 if( client[cs_idx].ftab.filts[0].nprids==0 || er->rc>3 /*not found*/) 959 961 { 960 962 len=3; 961 client[cs_idx].mbuf[1] = client[cs_idx].mbuf[2] = 0x00;963 mbuf[1] = mbuf[2] = 0x00; 962 964 } 963 965 else 964 966 { 965 967 len = 19; 966 client[cs_idx].mbuf[1] = client[cs_idx].mbuf[2] = 0x10;967 memcpy( client[cs_idx].mbuf+3, er->cw, 16);968 } 969 970 cs_debug("ncd_send_dcw: er->cpti=%d, cl_msgid=%d, %02X", er->cpti, cl_msgid, client[cs_idx].mbuf[0]);971 972 network_message_send(client[cs_idx].udp_fd, &cl_msgid, client[cs_idx].mbuf, len,968 mbuf[1] = mbuf[2] = 0x10; 969 memcpy(mbuf+3, er->cw, 16); 970 } 971 972 cs_debug("ncd_send_dcw: er->cpti=%d, cl_msgid=%d, %02X", er->cpti, cl_msgid, mbuf[0]); 973 974 network_message_send(client[cs_idx].udp_fd, &cl_msgid, mbuf, len, 973 975 client[cs_idx].ncd_skey, COMMTYPE_SERVER, 0, NULL); 974 976 } … … 1051 1053 int cidx=(int)idx; 1052 1054 client[cidx].thread=pthread_self(); 1055 uchar mbuf[1024]; 1053 1056 1054 1057 client[cs_idx].req=(uchar *)malloc(CS_MAXPENDING*REQ_SIZE); … … 1131 1134 { 1132 1135 // process_input returns -9 on clienttimeout 1133 while ((rc=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle))>0)1136 while ((rc=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle))>0) 1134 1137 { 1135 switch( client[cs_idx].mbuf[2])1138 switch(mbuf[2]) 1136 1139 { 1137 1140 case 0x80: 1138 1141 case 0x81: 1139 newcamd_process_ecm( client[cs_idx].mbuf);1142 newcamd_process_ecm(mbuf); 1140 1143 break; 1141 1144 … … 1145 1148 1146 1149 default: 1147 if( client[cs_idx].mbuf[2]>0x81 && client[cs_idx].mbuf[2]<0x90)1148 newcamd_process_emm( client[cs_idx].mbuf+2);1150 if(mbuf[2]>0x81 && mbuf[2]<0x90) 1151 newcamd_process_emm(mbuf+2); 1149 1152 else 1150 cs_debug("unknown newcamd command! (%d)", client[cs_idx].mbuf[2]);1153 cs_debug("unknown newcamd command! (%d)", mbuf[2]); 1151 1154 } 1152 1155 } -
trunk/module-radegast.c
r3168 r3172 88 88 static void radegast_send_dcw(ECM_REQUEST *er) 89 89 { 90 client[cs_idx].mbuf[0]=0x02; // DCW 90 uchar mbuf[1024]; 91 mbuf[0]=0x02; // DCW 91 92 if (er->rc<4) 92 93 { 93 client[cs_idx].mbuf[1]=0x12; // len (overall)94 client[cs_idx].mbuf[2]=0x05; // ACCESS95 client[cs_idx].mbuf[3]=0x10; // len96 memcpy( client[cs_idx].mbuf+4, er->cw, 16);94 mbuf[1]=0x12; // len (overall) 95 mbuf[2]=0x05; // ACCESS 96 mbuf[3]=0x10; // len 97 memcpy(mbuf+4, er->cw, 16); 97 98 } 98 99 else 99 100 { 100 client[cs_idx].mbuf[1]=0x02; // len (overall)101 client[cs_idx].mbuf[2]=0x04; // NO ACCESS102 client[cs_idx].mbuf[3]=0x00; // len103 } 104 radegast_send( client[cs_idx].mbuf);101 mbuf[1]=0x02; // len (overall) 102 mbuf[2]=0x04; // NO ACCESS 103 mbuf[3]=0x00; // len 104 } 105 radegast_send(mbuf); 105 106 } 106 107 … … 153 154 { 154 155 int n; 156 uchar mbuf[1024]; 155 157 156 158 int cidx=(int)idx; … … 158 160 159 161 radegast_auth_client(client[cs_idx].ip); 160 while ((n=get_request( client[cs_idx].mbuf))>0)161 { 162 switch( client[cs_idx].mbuf[0])162 while ((n=get_request(mbuf))>0) 163 { 164 switch(mbuf[0]) 163 165 { 164 166 case 1: 165 radegast_process_ecm( client[cs_idx].mbuf+2, client[cs_idx].mbuf[1]);167 radegast_process_ecm(mbuf+2, mbuf[1]); 166 168 break; 167 169 default: 168 radegast_process_unknown( client[cs_idx].mbuf);170 radegast_process_unknown(mbuf); 169 171 } 170 172 } -
trunk/module-serial.c
r3168 r3172 521 521 static void oscam_ser_disconnect_client() 522 522 { 523 uchar mbuf[1024]; 523 524 switch(connected ? connected : oscam_ser_proto) 524 525 { 525 526 case P_GS: 526 client[cs_idx].mbuf[0] = 0x01;527 client[cs_idx].mbuf[1] = 0x00;528 client[cs_idx].mbuf[2] = 0x00;529 client[cs_idx].mbuf[3] = 0x00;530 oscam_ser_send( client[cs_idx].mbuf, 4);527 mbuf[0] = 0x01; 528 mbuf[1] = 0x00; 529 mbuf[2] = 0x00; 530 mbuf[3] = 0x00; 531 oscam_ser_send(mbuf, 4); 531 532 break; 532 533 } … … 537 538 static void oscam_ser_init_client() 538 539 { 540 uchar mbuf[1024]; 539 541 switch(oscam_ser_proto) // sure, does not work in auto-mode 540 542 { … … 542 544 oscam_ser_disconnect_client(); // send disconnect first 543 545 cs_sleepms(300); // wait a little bit 544 client[cs_idx].mbuf[0] = 0x00;545 client[cs_idx].mbuf[1] = 0x00;546 client[cs_idx].mbuf[2] = 0x00;547 client[cs_idx].mbuf[3] = 0x00;548 oscam_ser_send( client[cs_idx].mbuf, 4); // send connect546 mbuf[0] = 0x00; 547 mbuf[1] = 0x00; 548 mbuf[2] = 0x00; 549 mbuf[3] = 0x00; 550 oscam_ser_send(mbuf, 4); // send connect 549 551 break; 550 552 } … … 584 586 static void oscam_ser_send_dcw(ECM_REQUEST *er) 585 587 { 588 uchar mbuf[1024]; 586 589 int i; 587 590 uchar crc; … … 592 595 for (i=0, crc=HSIC_CRC; i<16; i++) 593 596 crc^=er->cw[i]; 594 memset( client[cs_idx].mbuf , 0x04 , 2);595 memset( client[cs_idx].mbuf+2 , 0x3a , 2);596 memcpy( client[cs_idx].mbuf+4 , er->cw, 16);597 memcpy( client[cs_idx].mbuf+20, &crc , 1);598 memset( client[cs_idx].mbuf+21, 0x1b , 2);599 oscam_ser_send( client[cs_idx].mbuf, 23);597 memset(mbuf , 0x04 , 2); 598 memset(mbuf+2 , 0x3a , 2); 599 memcpy(mbuf+4 , er->cw, 16); 600 memcpy(mbuf+20, &crc , 1); 601 memset(mbuf+21, 0x1b , 2); 602 oscam_ser_send(mbuf, 23); 600 603 break; 601 604 case P_SSSP: 602 client[cs_idx].mbuf[0]=0xF2;603 client[cs_idx].mbuf[1]=0;604 client[cs_idx].mbuf[2]=16;605 memcpy( client[cs_idx].mbuf+3, er->cw, 16);606 oscam_ser_send( client[cs_idx].mbuf, 19);605 mbuf[0]=0xF2; 606 mbuf[1]=0; 607 mbuf[2]=16; 608 memcpy(mbuf+3, er->cw, 16); 609 oscam_ser_send(mbuf, 19); 607 610 if (!sssp_fix) 608 611 { 609 client[cs_idx].mbuf[0]=0xF1;610 client[cs_idx].mbuf[1]=0;611 client[cs_idx].mbuf[2]=2;612 memcpy( client[cs_idx].mbuf+3, i2b(2, er->pid), 2);613 oscam_ser_send( client[cs_idx].mbuf, 5);612 mbuf[0]=0xF1; 613 mbuf[1]=0; 614 mbuf[2]=2; 615 memcpy(mbuf+3, i2b(2, er->pid), 2); 616 oscam_ser_send(mbuf, 5); 614 617 sssp_fix=1; 615 618 } … … 620 623 break; 621 624 case P_DSR95: 622 client[cs_idx].mbuf[0]=4;623 memcpy( client[cs_idx].mbuf+1, er->cw, 16);624 oscam_ser_send( client[cs_idx].mbuf, 17);625 mbuf[0]=4; 626 memcpy(mbuf+1, er->cw, 16); 627 oscam_ser_send(mbuf, 17); 625 628 if( dsr9500type==P_DSR_GNUSMAS ) 626 629 { … … 628 631 samsung_0a=0; 629 632 for( i=1; i<17; i++ ) 630 if( client[cs_idx].mbuf[i]==0x0A )633 if( mbuf[i]==0x0A ) 631 634 samsung_0a++; 632 635 samsung_dcw++; … … 634 637 break; 635 638 case P_GS: 636 client[cs_idx].mbuf[0]=0x03;637 client[cs_idx].mbuf[1]=0x08;638 client[cs_idx].mbuf[2]=0x10;639 client[cs_idx].mbuf[3]=0x00;640 memcpy( client[cs_idx].mbuf+4, er->cw, 16);641 oscam_ser_send( client[cs_idx].mbuf, 20);639 mbuf[0]=0x03; 640 mbuf[1]=0x08; 641 mbuf[2]=0x10; 642 mbuf[3]=0x00; 643 memcpy(mbuf+4, er->cw, 16); 644 oscam_ser_send(mbuf, 20); 642 645 break; 643 646 case P_ALPHA: 644 client[cs_idx].mbuf[0]=0x88;645 client[cs_idx].mbuf[1]=0x00;646 client[cs_idx].mbuf[2]=0x10;647 memcpy( client[cs_idx].mbuf+3, er->cw, 16);648 oscam_ser_send( client[cs_idx].mbuf, 19);647 mbuf[0]=0x88; 648 mbuf[1]=0x00; 649 mbuf[2]=0x10; 650 memcpy(mbuf+3, er->cw, 16); 651 oscam_ser_send(mbuf, 19); 649 652 break; 650 653 } … … 653 656 { 654 657 case P_GS: 655 client[cs_idx].mbuf[0]=0x03;656 client[cs_idx].mbuf[1]=0x09;657 client[cs_idx].mbuf[2]=0x00;658 client[cs_idx].mbuf[3]=0x00;659 oscam_ser_send( client[cs_idx].mbuf, 4);658 mbuf[0]=0x03; 659 mbuf[1]=0x09; 660 mbuf[2]=0x00; 661 mbuf[3]=0x00; 662 oscam_ser_send(mbuf, 4); 660 663 break; 661 664 } … … 809 812 { 810 813 int n; 814 uchar mbuf[1024]; 811 815 812 816 connected=0; 813 817 oscam_ser_init_client(); 814 818 815 while ((n=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle))>=0)819 while ((n=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle))>=0) 816 820 { 817 821 if (serial_errors > 3) … … 822 826 if (n>0) 823 827 { 824 oscam_ser_auth_client( client[cs_idx].mbuf[0] & 0xF);825 switch ( client[cs_idx].mbuf[0]>>4)828 oscam_ser_auth_client(mbuf[0] & 0xF); 829 switch (mbuf[0]>>4) 826 830 { 827 831 case IS_ECM: 828 oscam_ser_process_ecm( client[cs_idx].mbuf+1, n-1);832 oscam_ser_process_ecm(mbuf+1, n-1); 829 833 break; 830 834 case IS_PMT: 831 oscam_ser_process_pmt( client[cs_idx].mbuf+1, n-1);835 oscam_ser_process_pmt(mbuf+1, n-1); 832 836 break; 833 837 case IS_LGO: 834 oscam_ser_client_logon( client[cs_idx].mbuf+1, n-1);838 oscam_ser_client_logon(mbuf+1, n-1); 835 839 break; 836 840 } … … 899 903 client[i].ctyp=ctyp; 900 904 pthread_create(&client[i].thread, NULL, (void *)oscam_ser_fork, (void *)p + 1); 901 905 pthread_detach(client[i].thread); 902 906 } 903 907 … … 907 911 client[i].ctyp=ctyp; 908 912 pthread_create(&client[i].thread, NULL, (void *)oscam_ser_fork, (void *)sdevice); 909 913 pthread_detach(client[i].thread); 910 914 } 911 915
Note:
See TracChangeset
for help on using the changeset viewer.