Changeset 3390
- Timestamp:
- 10/06/10 08:33:25 (13 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r3381 r3390 275 275 #define MAX_ATR_LEN 33 // max. ATR length 276 276 #define MAX_HIST 15 // max. number of historical characters 277 278 #define MAX_SIDBITS 64 // max services 279 #define SIDTABBITS uint64 // 64bit type for services, if a system does not support this type, 280 // please use a define and define it as uint32 / MAX_SIDBITS 32 277 281 278 282 … … 532 536 CAIDTAB ctab; 533 537 TUNTAB ttab; 534 ulongsidtabok; // positiv services535 ulongsidtabno; // negative services538 SIDTABBITS sidtabok; // positiv services 539 SIDTABBITS sidtabno; // negative services 536 540 int typ; 537 541 int ctyp; … … 701 705 uchar atr[64]; 702 706 int atrlen; 703 ulongsidtabok; // positiv services704 ulongsidtabno; // negative services707 SIDTABBITS sidtabok; // positiv services 708 SIDTABBITS sidtabno; // negative services 705 709 uchar hexserial[8]; 706 710 int nprov; … … 874 878 int tosleep; 875 879 CAIDTAB ctab; 876 ulongsidtabok; // positiv services877 ulongsidtabno; // negative services880 SIDTABBITS sidtabok; // positiv services 881 SIDTABBITS sidtabno; // negative services 878 882 FTAB fchid; 879 883 FTAB ftab; // user [caid] and ident filter … … 1177 1181 extern void create_rand_str(char *dst, int size); 1178 1182 #endif 1183 extern void sidtabbits2bitchar(SIDTABBITS value, char *result); 1179 1184 extern void long2bitchar(long value, char *result); 1180 1185 extern int file_exists(const char * filename); … … 1297 1302 extern void chk_caidtab(char *caidasc, CAIDTAB *ctab); 1298 1303 extern void chk_tuntab(char *tunasc, TUNTAB *ttab); 1299 extern void chk_services(char *labels, ulong *sidok, ulong*sidno);1304 extern void chk_services(char *labels, SIDTABBITS *sidok, SIDTABBITS *sidno); 1300 1305 extern void chk_ftab(char *zFilterAsc, FTAB *ftab, const char *zType, const char *zName, const char *zFiltName); 1301 1306 extern void chk_cltab(char *classasc, CLASSTAB *clstab); -
trunk/module-dvbapi.c
r3386 r3390 727 727 for (nr=0, sidtab=cfg->sidtab; sidtab; sidtab=sidtab->next, nr++) { 728 728 if (sidtab->num_caid | sidtab->num_provid | sidtab->num_srvid) { 729 if ((client[cs_idx].sidtabno&( 1<<nr)) && (chk_srvid_match(&er, sidtab))) {729 if ((client[cs_idx].sidtabno&((SIDTABBITS)1<<nr)) && (chk_srvid_match(&er, sidtab))) { 730 730 demux[demux_index].ECMpids[n].status = -1; //ignore 731 731 cs_debug("[IGNORE PID %d] %04X:%06X (service %s) pos %d", n, demux[demux_index].ECMpids[n].CAID, demux[demux_index].ECMpids[n].PROVID, sidtab->label, nr); 732 732 } 733 if ((client[cs_idx].sidtabok&( 1<<nr)) && (chk_srvid_match(&er, sidtab))) {733 if ((client[cs_idx].sidtabok&((SIDTABBITS)1<<nr)) && (chk_srvid_match(&er, sidtab))) { 734 734 demux[demux_index].ECMpids[n].status = nr+1; //priority 735 735 demux[demux_index].max_status = (nr+1 > demux[demux_index].max_status) ? nr+1 : demux[demux_index].max_status; -
trunk/oscam-chk.c
r3373 r3390 40 40 if (sidtab->num_caid | sidtab->num_provid | sidtab->num_srvid) 41 41 { 42 if ((client[idx].sidtabno&( 1<<nr)) &&42 if ((client[idx].sidtabno&((SIDTABBITS)1<<nr)) && 43 43 (chk_srvid_match(er, sidtab))) 44 44 return(0); 45 if ((client[idx].sidtabok&( 1<<nr)) &&45 if ((client[idx].sidtabok&((SIDTABBITS)1<<nr)) && 46 46 (chk_srvid_match(er, sidtab))) 47 47 rc=1; … … 81 81 if (sidtab->num_caid | sidtab->num_provid | sidtab->num_srvid) 82 82 { 83 if ((client[idx].sidtabno&( 1<<nr)) &&83 if ((client[idx].sidtabno&((SIDTABBITS)1<<nr)) && 84 84 (chk_srvid_match_by_caid_prov(caid, provid, sidtab))) 85 85 return(0); 86 if ((client[idx].sidtabok&( 1<<nr)) &&86 if ((client[idx].sidtabok&((SIDTABBITS)1<<nr)) && 87 87 (chk_srvid_match_by_caid_prov(caid, provid, sidtab))) 88 88 rc=1; -
trunk/oscam-config.c
r3357 r3390 167 167 } 168 168 169 void chk_services(char *labels, ulong *sidok, ulong*sidno)169 void chk_services(char *labels, SIDTABBITS *sidok, SIDTABBITS *sidno) 170 170 { 171 171 int i; … … 175 175 for (ptr=strtok(labels, ","); ptr; ptr=strtok(NULL, ",")) { 176 176 for (trim(ptr), i = 0, sidtab = cfg->sidtab; sidtab; sidtab = sidtab->next, i++) { 177 if (!strcmp(sidtab->label, ptr)) *sidok|=( 1<<i);178 if ((ptr[0]=='!') && (!strcmp(sidtab->label, ptr+1))) *sidno|=( 1<<i);177 if (!strcmp(sidtab->label, ptr)) *sidok|=((SIDTABBITS)1<<i); 178 if ((ptr[0]=='!') && (!strcmp(sidtab->label, ptr+1))) *sidno|=((SIDTABBITS)1<<i); 179 179 } 180 180 } … … 1461 1461 strcpy(cfg->ac_logfile, "./oscam_ac.log"); 1462 1462 #endif 1463 #ifdef MODULE_CCCAM 1464 cfg->cc_update_interval = 240; 1465 #endif 1463 1466 sprintf(token, "%s%s", cs_confdir, cs_conf); 1464 1467 if (!(fp = fopen(token, "r"))) { … … 2220 2223 2221 2224 fprintf_conf(f, CONFVARWIDTH, "services", ""); 2222 char sidok[ 33]; long2bitchar(account->sidtabok,sidok);2223 char sidno[ 33]; long2bitchar(account->sidtabno,sidno);2225 char sidok[MAX_SIDBITS+1]; sidtabbits2bitchar(account->sidtabok,sidok); 2226 char sidno[MAX_SIDBITS+1]; sidtabbits2bitchar(account->sidtabno,sidno); 2224 2227 struct s_sidtab *sidtab = cfg->sidtab; 2225 2228 i=0; dot = ""; … … 2396 2399 2397 2400 fprintf_conf(f, CONFVARWIDTH, "services", ""); 2398 char sidok[ 33]; long2bitchar(reader[i].sidtabok, sidok);2399 char sidno[ 33]; long2bitchar(reader[i].sidtabno, sidno);2401 char sidok[MAX_SIDBITS+1]; sidtabbits2bitchar(reader[i].sidtabok, sidok); 2402 char sidno[MAX_SIDBITS+1]; sidtabbits2bitchar(reader[i].sidtabno, sidno); 2400 2403 struct s_sidtab *sidtab = cfg->sidtab; 2401 2404 j=0; dot = ""; -
trunk/oscam-http.c
r3381 r3390 1009 1009 1010 1010 //services 1011 char sidok[ 33];1012 long2bitchar(reader[ridx].sidtabok, sidok);1013 char sidno[ 33];1014 long2bitchar(reader[ridx].sidtabno,sidno);1011 char sidok[MAX_SIDBITS+1]; 1012 sidtabbits2bitchar(reader[ridx].sidtabok, sidok); 1013 char sidno[MAX_SIDBITS+1]; 1014 sidtabbits2bitchar(reader[ridx].sidtabno,sidno); 1015 1015 struct s_sidtab *sidtab = cfg->sidtab; 1016 1016 //build matrix … … 1406 1406 /* SERVICES */ 1407 1407 //services - first we have to move the long sidtabok/sidtabno to a binary array 1408 char sidok[ 33];1409 long2bitchar(account->sidtabok,sidok);1410 char sidno[ 33];1411 long2bitchar(account->sidtabno,sidno);1408 char sidok[MAX_SIDBITS+1]; 1409 sidtabbits2bitchar(account->sidtabok,sidok); 1410 char sidno[MAX_SIDBITS+1]; 1411 sidtabbits2bitchar(account->sidtabno,sidno); 1412 1412 struct s_sidtab *sidtab = cfg->sidtab; 1413 1413 //build matrix -
trunk/oscam-simples.c
r3370 r3390 670 670 #endif 671 671 672 /* Converts a long64 value to a char array in bitwise representation. 673 Note that the result array MUST be at least 65 bit large and that 674 this function assumes long values to hold only values up to 64bits and to be positive! 675 the result of e.g. long 7 is 1110000000000000000000000000000000000000000000000000000000000000 this means the array 676 is reversed */ 677 void sidtabbits2bitchar(SIDTABBITS value, char *result){ 678 int pos; 679 for (pos=0;pos<MAX_SIDBITS;pos++) result[pos]='0'; 680 result[pos] = '\0'; 681 682 pos=0; 683 while (value > 0 && pos < MAX_SIDBITS){ 684 if(value % 2 == 1) result[pos]='1'; 685 else result[pos]='0'; 686 value=value / 2; 687 pos++; 688 } 689 } 690 691 672 692 /* Converts a long value to a char array in bitwise representation. 673 693 Note that the result array MUST be at least 33 bit large and that
Note:
See TracChangeset
for help on using the changeset viewer.