Changeset 10971
- Timestamp:
- 08/31/15 22:43:40 (9 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r10970 r10971 1351 1351 #endif 1352 1352 1353 typedef struct ce_csp_tab_data 1354 { 1355 int32_t caid; 1356 int32_t cmask; 1357 int32_t prid; 1358 int32_t srvid; 1359 int16_t awtime; 1360 int16_t dwtime; 1361 } CECSPVALUETAB_DATA; 1362 1353 1363 typedef struct ce_csp_tab 1354 1364 { 1355 uint16_t n; 1356 int32_t caid[CS_MAXCAIDTAB]; 1357 int32_t cmask[CS_MAXCAIDTAB]; 1358 int32_t prid[CS_MAXCAIDTAB]; 1359 int32_t srvid[CS_MAXCAIDTAB]; 1360 int16_t awtime[CS_MAXCAIDTAB]; 1361 int16_t dwtime[CS_MAXCAIDTAB]; 1365 int32_t cevnum; 1366 CECSPVALUETAB_DATA *cevdata; 1362 1367 } CECSPVALUETAB; 1363 1368 1369 typedef struct cacheex_check_cw_tab_data 1370 { 1371 int32_t caid; 1372 int32_t cmask; 1373 int32_t prid; 1374 int32_t srvid; 1375 int8_t mode; 1376 uint32_t counter; 1377 } CWCHECKTAB_DATA; 1378 1364 1379 typedef struct cacheex_check_cw_tab 1365 1380 { 1366 uint16_t n; 1367 int32_t caid[CS_MAXCAIDTAB]; 1368 int32_t cmask[CS_MAXCAIDTAB]; 1369 int32_t prid[CS_MAXCAIDTAB]; 1370 int32_t srvid[CS_MAXCAIDTAB]; 1371 int8_t mode[CS_MAXCAIDTAB]; 1372 uint32_t counter[CS_MAXCAIDTAB]; 1381 int32_t cwchecknum; 1382 CWCHECKTAB_DATA *cwcheckdata; 1383 1373 1384 } CWCHECKTAB; 1374 1385 -
trunk/module-cacheex.c
r10941 r10971 116 116 if (!cfg.max_hitcache_time) //we don't want check/save hitcache 117 117 return; 118 if (!cfg.cacheex_wait_timetab. n)118 if (!cfg.cacheex_wait_timetab.cevnum) 119 119 return; 120 120 uint32_t cacheex_wait_time = get_cacheex_wait_time(er,NULL); … … 877 877 int16_t counter = 1; 878 878 879 for(i = 0; i < cfg.cacheex_cwcheck_tab.n; i++) 880 { 881 if(i == 0 && cfg.cacheex_cwcheck_tab.caid[i] <= 0) 882 { 883 mode = cfg.cacheex_cwcheck_tab.mode[i]; 884 counter = cfg.cacheex_cwcheck_tab.counter[i]; 879 for(i = 0; i < cfg.cacheex_cwcheck_tab.cwchecknum; i++) 880 { 881 CWCHECKTAB_DATA *d = &cfg.cacheex_cwcheck_tab.cwcheckdata[i]; 882 883 if(i == 0 && d->caid <= 0) 884 { 885 mode = d->mode; 886 counter = d->counter; 885 887 continue; //check other, only valid for unset 886 888 } 887 889 888 if( cfg.cacheex_cwcheck_tab.caid[i] == er->caid || cfg.cacheex_cwcheck_tab.caid[i] == er->caid >> 8 || ((cfg.cacheex_cwcheck_tab.cmask[i] >= 0 && (er->caid & cfg.cacheex_cwcheck_tab.cmask[i]) == cfg.cacheex_cwcheck_tab.caid[i]) || cfg.cacheex_cwcheck_tab.caid[i]== -1))889 { 890 if(( cfg.cacheex_cwcheck_tab.prid[i] >= 0 && cfg.cacheex_cwcheck_tab.prid[i] == (int32_t)er->prid) || cfg.cacheex_cwcheck_tab.prid[i]== -1)890 if(d->caid == er->caid || d->caid == er->caid >> 8 || ((d->cmask >= 0 && (er->caid & d->cmask) == d->caid) || d->caid == -1)) 891 { 892 if((d->prid >= 0 && d->prid == (int32_t)er->prid) || d->prid == -1) 891 893 { 892 if(( cfg.cacheex_cwcheck_tab.srvid[i] >= 0 && cfg.cacheex_cwcheck_tab.srvid[i] == er->srvid) || cfg.cacheex_cwcheck_tab.srvid[i]== -1)894 if((d->srvid >= 0 && d->srvid == er->srvid) || d->srvid == -1) 893 895 { 894 mode = cfg.cacheex_cwcheck_tab.mode[i];895 counter = cfg.cacheex_cwcheck_tab.counter[i];896 mode = d->mode; 897 counter = d->counter; 896 898 break; 897 899 } … … 926 928 int32_t i, dwtime = -1, awtime = -1; 927 929 928 for(i = 0; i < cfg.cacheex_wait_timetab.n; i++) 929 { 930 if(i == 0 && cfg.cacheex_wait_timetab.caid[i] <= 0) 931 { 932 dwtime = cfg.cacheex_wait_timetab.dwtime[i]; 933 awtime = cfg.cacheex_wait_timetab.awtime[i]; 930 for(i = 0; i < cfg.cacheex_wait_timetab.cevnum; i++) 931 { 932 CECSPVALUETAB_DATA *d = &cfg.cacheex_wait_timetab.cevdata[i]; 933 934 if(i == 0 && d->caid <= 0) 935 { 936 dwtime = d->dwtime; 937 awtime = d->awtime; 934 938 continue; //check other, only valid for unset 935 939 } 936 940 937 if( cfg.cacheex_wait_timetab.caid[i] == er->caid || cfg.cacheex_wait_timetab.caid[i] == er->caid >> 8 || ((cfg.cacheex_wait_timetab.cmask[i] >= 0 && (er->caid & cfg.cacheex_wait_timetab.cmask[i]) == cfg.cacheex_wait_timetab.caid[i]) || cfg.cacheex_wait_timetab.caid[i]== -1))938 { 939 if(( cfg.cacheex_wait_timetab.prid[i] >= 0 && cfg.cacheex_wait_timetab.prid[i] == (int32_t)er->prid) || cfg.cacheex_wait_timetab.prid[i]== -1)941 if(d->caid == er->caid || d->caid == er->caid >> 8 || ((d->cmask >= 0 && (er->caid & d->cmask) == d->caid) || d->caid == -1)) 942 { 943 if((d->prid >= 0 && d->prid == (int32_t)er->prid) || d->prid == -1) 940 944 { 941 if(( cfg.cacheex_wait_timetab.srvid[i] >= 0 && cfg.cacheex_wait_timetab.srvid[i] == er->srvid) || cfg.cacheex_wait_timetab.srvid[i]== -1)945 if((d->srvid >= 0 && d->srvid == er->srvid) || d->srvid == -1) 942 946 { 943 dwtime = cfg.cacheex_wait_timetab.dwtime[i];944 awtime = cfg.cacheex_wait_timetab.awtime[i];947 dwtime = d->dwtime; 948 awtime = d->awtime; 945 949 break; 946 950 } … … 974 978 int32_t chk_csp_ctab(ECM_REQUEST *er, CECSPVALUETAB *tab) 975 979 { 976 if(!er->caid || !tab-> n)980 if(!er->caid || !tab->cevnum) 977 981 { return 1; } // nothing setup we add all 978 982 int32_t i; 979 for(i = 0; i < tab-> n; i++)980 { 981 982 if( tab->caid[i]> 0)983 { 984 if( tab->caid[i] == er->caid || tab->caid[i] == er->caid >> 8 || ((tab->cmask[i] >= 0 && (er->caid & tab->cmask[i]) == tab->caid[i]) || tab->caid[i]== -1))983 for(i = 0; i < tab->cevnum; i++) 984 { 985 CECSPVALUETAB_DATA *d = &tab->cevdata[i]; 986 if(d->caid > 0) 987 { 988 if(d->caid == er->caid || d->caid == er->caid >> 8 || ((d->cmask >= 0 && (er->caid & d->cmask) == d->caid) || d->caid == -1)) 985 989 { 986 if(( tab->prid[i] >= 0 && tab->prid[i] == (int32_t)er->prid) || tab->prid[i]== -1)990 if((d->prid >= 0 && d->prid == (int32_t)er->prid) || d->prid == -1) 987 991 { 988 if(( tab->srvid[i] >= 0 && tab->srvid[i] == er->srvid) || tab->srvid[i]== -1)992 if((d->srvid >= 0 && d->srvid == er->srvid) || d->srvid == -1) 989 993 { 990 994 return 1; -
trunk/module-camd35-cacheex.c
r10781 r10971 2 2 3 3 #include "globals.h" 4 #include "oscam-array.h" 4 5 5 6 #if defined(CS_CACHEEX) && (defined(MODULE_CAMD35) || defined(MODULE_CAMD35_TCP)) … … 44 45 } 45 46 46 i2b_buf(2, filter->n, buf + i);47 i2b_buf(2, (uint16_t)filter->cevnum, buf + i); 47 48 i += 2; 48 49 … … 50 51 for(j=0; j<max_filters; j++) 51 52 { 52 if(j<CS_MAXCAIDTAB) 53 { 54 i2b_buf(4, filter->caid[j], buf + i); 55 } 56 i += 4; 57 } 58 59 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 60 { 61 if(j<CS_MAXCAIDTAB) 62 { 63 i2b_buf(4, filter->cmask[j], buf + i); 64 } 65 i += 4; 66 } 67 68 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 69 { 70 if(j<CS_MAXCAIDTAB) 71 { 72 i2b_buf(4, filter->prid[j], buf + i); 73 } 74 i += 4; 75 } 76 77 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 78 { 79 if(j<CS_MAXCAIDTAB) 80 { 81 i2b_buf(4, filter->srvid[j], buf + i); 53 if(filter->cevnum > j){ 54 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 55 i2b_buf(4, d->caid, buf + i); 56 } 57 else{ 58 i2b_buf(4, 0000, buf + i); 59 } 60 i += 4; 61 } 62 63 for(j=0; j<max_filters; j++) 64 { 65 if(filter->cevnum > j){ 66 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 67 i2b_buf(4, d->cmask, buf + i); 68 } 69 else{ 70 i2b_buf(4, 0000, buf + i); 71 } 72 i += 4; 73 } 74 75 for(j=0; j<max_filters; j++) 76 { 77 if(filter->cevnum > j){ 78 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 79 i2b_buf(4, d->prid, buf + i); 80 } 81 else{ 82 i2b_buf(4, 0000, buf + i); 83 } 84 i += 4; 85 } 86 87 for(j=0; j<max_filters; j++) 88 { 89 if(filter->cevnum > j){ 90 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 91 i2b_buf(4, d->srvid, buf + i); 92 } 93 else{ 94 i2b_buf(4, 0000, buf + i); 82 95 } 83 96 i += 4; … … 95 108 struct s_reader *rdr = cl->reader; 96 109 int i = 20, j; 110 int32_t caid, cmask, provid, srvid; 97 111 CECSPVALUETAB *filter; 98 112 … … 112 126 } 113 127 114 filter->n = b2i(2, buf + i);128 cecspvaluetab_clear(filter); 115 129 i += 2; 116 if(filter->n > CS_MAXCAIDTAB)117 {118 filter->n = CS_MAXCAIDTAB;119 }120 130 121 131 int32_t max_filters = 15; 122 132 for(j=0; j<max_filters; j++) 123 133 { 124 if(j<CS_MAXCAIDTAB) 125 { 126 filter->caid[j] = b2i(4, buf + i); 127 } 128 i += 4; 129 } 130 131 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 132 { 133 if(j<CS_MAXCAIDTAB) 134 { 135 filter->cmask[j] = b2i(4, buf + i); 136 } 137 i += 4; 138 } 139 140 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 141 { 142 if(j<CS_MAXCAIDTAB) 143 { 144 filter->prid[j] = b2i(4, buf + i); 145 } 146 i += 4; 147 } 148 149 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 150 { 151 if(j<CS_MAXCAIDTAB) 152 { 153 filter->srvid[j] = b2i(4, buf + i); 134 caid = b2i(4, buf + i); 135 if(caid > 0){ 136 CECSPVALUETAB_DATA d; 137 memset(&d, 0, sizeof(d)); 138 d.caid = b2i(4, buf + i); 139 cecspvaluetab_add(filter, &d); 140 } 141 i += 4; 142 } 143 144 for(j=0; j<max_filters; j++) 145 { 146 cmask = b2i(4, buf + i); 147 if(j<filter->cevnum){ 148 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 149 d->cmask = cmask; 150 } 151 i += 4; 152 } 153 154 for(j=0; j<max_filters; j++) 155 { 156 provid = b2i(4, buf + i); 157 if(j<filter->cevnum){ 158 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 159 d->prid = provid; 160 } 161 i += 4; 162 } 163 164 for(j=0; j<max_filters; j++) 165 { 166 srvid = b2i(4, buf + i); 167 if(j<filter->cevnum){ 168 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 169 d->srvid = srvid; 154 170 } 155 171 i += 4; -
trunk/module-cccam-cacheex.c
r10781 r10971 2 2 3 3 #include "globals.h" 4 #include "oscam-array.h" 4 5 5 6 #if defined(CS_CACHEEX) && defined(MODULE_CCCAM) … … 42 43 } 43 44 44 i2b_buf(2, filter->n, buf + i);45 i2b_buf(2, (uint16_t)filter->cevnum, buf + i); 45 46 i += 2; 46 47 … … 48 49 for(j=0; j<max_filters; j++) 49 50 { 50 if(j<CS_MAXCAIDTAB) 51 { 52 i2b_buf(4, filter->caid[j], buf + i); 53 } 54 i += 4; 55 } 56 57 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 58 { 59 if(j<CS_MAXCAIDTAB) 60 { 61 i2b_buf(4, filter->cmask[j], buf + i); 62 } 63 i += 4; 64 } 65 66 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 67 { 68 if(j<CS_MAXCAIDTAB) 69 { 70 i2b_buf(4, filter->prid[j], buf + i); 71 } 72 i += 4; 73 } 74 75 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 76 { 77 if(j<CS_MAXCAIDTAB) 78 { 79 i2b_buf(4, filter->srvid[j], buf + i); 51 if(filter->cevnum > j){ 52 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 53 i2b_buf(4, d->caid, buf + i); 54 } 55 else{ 56 i2b_buf(4, 0000, buf + i); 57 } 58 i += 4; 59 } 60 61 for(j=0; j<max_filters; j++) 62 { 63 if(filter->cevnum > j){ 64 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 65 i2b_buf(4, d->cmask, buf + i); 66 } 67 else{ 68 i2b_buf(4, 0000, buf + i); 69 } 70 i += 4; 71 } 72 73 for(j=0; j<max_filters; j++) 74 { 75 if(filter->cevnum > j){ 76 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 77 i2b_buf(4, d->prid, buf + i); 78 } 79 else{ 80 i2b_buf(4, 0000, buf + i); 81 } 82 i += 4; 83 } 84 85 for(j=0; j<max_filters; j++) 86 { 87 if(filter->cevnum > j){ 88 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 89 i2b_buf(4, d->srvid, buf + i); 90 } 91 else{ 92 i2b_buf(4, 0000, buf + i); 80 93 } 81 94 i += 4; … … 90 103 struct s_reader *rdr = (cl->typ == 'c') ? NULL : cl->reader; 91 104 int i = 0, j; 105 int32_t caid, cmask, provid, srvid; 92 106 CECSPVALUETAB *filter; 93 107 … … 107 121 } 108 122 109 filter->n = b2i(2, buf + i);123 cecspvaluetab_clear(filter); 110 124 i += 2; 111 125 … … 113 127 for(j=0; j<max_filters; j++) 114 128 { 115 if(j<CS_MAXCAIDTAB) 116 { 117 filter->caid[j] = b2i(4, buf + i); 118 } 119 i += 4; 120 } 121 122 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 123 { 124 if(j<CS_MAXCAIDTAB) 125 { 126 filter->cmask[j] = b2i(4, buf + i); 127 } 128 i += 4; 129 } 130 131 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 132 { 133 if(j<CS_MAXCAIDTAB) 134 { 135 filter->prid[j] = b2i(4, buf + i); 136 } 137 i += 4; 138 } 139 140 for(j=0; j<max_filters && j<CS_MAXCAIDTAB; j++) 141 { 142 if(j<CS_MAXCAIDTAB) 143 { 144 filter->srvid[j] = b2i(4, buf + i); 129 caid = b2i(4, buf + i); 130 if(caid > 0){ 131 CECSPVALUETAB_DATA d; 132 memset(&d, 0, sizeof(d)); 133 d.caid = b2i(4, buf + i); 134 cecspvaluetab_add(filter, &d); 135 } 136 i += 4; 137 } 138 139 for(j=0; j<max_filters; j++) 140 { 141 cmask = b2i(4, buf + i); 142 if(j<filter->cevnum){ 143 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 144 d->cmask = cmask; 145 } 146 i += 4; 147 } 148 149 for(j=0; j<max_filters; j++) 150 { 151 provid = b2i(4, buf + i); 152 if(j<filter->cevnum){ 153 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 154 d->prid = provid; 155 } 156 i += 4; 157 } 158 159 for(j=0; j<max_filters; j++) 160 { 161 srvid = b2i(4, buf + i); 162 if(j<filter->cevnum){ 163 CECSPVALUETAB_DATA *d = &filter->cevdata[j]; 164 d->srvid = srvid; 145 165 } 146 166 i += 4; -
trunk/oscam-array.c
r10680 r10971 69 69 DECLARE_ARRAY_FUNCS(caidvaluetab, CAIDVALUETAB, CAIDVALUETAB_DATA, cvdata, cvnum); // Declare caidvaluetab_clear(), caidvaluetab_clone(), caidvaluetab_add() 70 70 DECLARE_ARRAY_FUNCS(caidtab, CAIDTAB, CAIDTAB_DATA, ctdata, ctnum); // Declare caidtab_clear(), caidtab_clone(), caidtab_add() 71 DECLARE_ARRAY_FUNCS(cecspvaluetab, CECSPVALUETAB, CECSPVALUETAB_DATA, cevdata, cevnum); // Declare cecspvaluetab_clear(), cecspvaluetab_clone(), cecspvaluetab_add() 72 DECLARE_ARRAY_FUNCS(cwcheckvaluetab, CWCHECKTAB, CWCHECKTAB_DATA, cwcheckdata, cwchecknum); // Declare cwcheckvaluetab_clear(), cwcheckvaluetab_clone(), cwcheckvaluetab_add() 71 73 72 74 #undef DECLARE_ARRAY_FUNCS -
trunk/oscam-array.h
r10680 r10971 25 25 DECLARE_ARRAY_FUNCS(caidvaluetab, CAIDVALUETAB, CAIDVALUETAB_DATA, cvdata, cvnum); // Declare caidvaluetab_clear(), caidvaluetab_clone(), caidvaluetab_add() 26 26 DECLARE_ARRAY_FUNCS(caidtab, CAIDTAB, CAIDTAB_DATA, ctdata, ctnum); // Declare caidtab_clear(), caidtab_clone(), caidtab_add() 27 DECLARE_ARRAY_FUNCS(cecspvaluetab, CECSPVALUETAB, CECSPVALUETAB_DATA, cevdata, cevnum); // Declare cecspvaluetab_clear(), cecspvaluetab_clone(), cecspvaluetab_add() 28 DECLARE_ARRAY_FUNCS(cwcheckvaluetab, CWCHECKTAB, CWCHECKTAB_DATA, cwcheckdata, cwchecknum); // Declare cwcheckvaluetab_clear(), cwcheckvaluetab_clone(), cwcheckvaluetab_add() 27 29 28 30 #undef DECLARE_ARRAY_FUNCS -
trunk/oscam-conf-chk.c
r10680 r10971 101 101 { 102 102 //[caid][&mask][@provid][$servid][:awtime][:]dwtime 103 int32_t i;104 103 char *ptr = NULL, *saveptr1 = NULL; 105 CECSPVALUETAB newtab; 106 memset(&newtab, 0, sizeof(CECSPVALUETAB)); 107 108 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (i < CS_MAXCAIDTAB) && (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 109 { 104 cecspvaluetab_clear(tab); 105 106 int32_t i; 107 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 108 { 109 CECSPVALUETAB_DATA d; 110 memset(&d, 0, sizeof(d)); 111 110 112 int32_t caid = -1, cmask = -1, srvid = -1; 111 113 int32_t j, provid = -1; … … 151 153 if((i == 0 && (caid <= 0)) || (caid > 0)) 152 154 { 153 newtab.caid[i] = caid; 154 newtab.cmask[i] = cmask; 155 newtab.prid[i] = provid; 156 newtab.srvid[i] = srvid; 157 newtab.awtime[i] = awtime; 158 newtab.dwtime[i] = dwtime; 159 newtab.n = i + 1; 160 } 161 162 } 163 memcpy(tab, &newtab, sizeof(CECSPVALUETAB)); 155 d.caid = caid; 156 d.cmask = cmask; 157 d.prid = provid; 158 d.srvid = srvid; 159 d.awtime = awtime; 160 d.dwtime = dwtime; 161 cecspvaluetab_add(tab, &d); 162 } 163 } 164 164 } 165 165 … … 170 170 int32_t i; 171 171 char *ptr = NULL, *saveptr1 = NULL; 172 CWCHECKTAB newtab; 173 memset(&newtab, 0, sizeof(CWCHECKTAB)); 174 175 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (i < CS_MAXCAIDTAB) && (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 176 { 172 cwcheckvaluetab_clear(tab); 173 174 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 175 { 176 CWCHECKTAB_DATA d; 177 memset(&d, 0, sizeof(d)); 178 177 179 int32_t caid = -1, cmask = -1, provid = -1, srvid = -1; 178 180 int16_t mode = -1, counter = -1; … … 208 210 if((i == 0 && (caid <= 0)) || (caid > 0)) 209 211 { 210 newtab.caid[i] = caid; 211 newtab.cmask[i] = cmask; 212 newtab.prid[i] = provid; 213 newtab.srvid[i] = srvid; 214 newtab.mode[i] = mode; 215 newtab.counter[i] = counter; 216 newtab.n = i + 1; 217 } 218 219 } 220 memcpy(tab, &newtab, sizeof(CWCHECKTAB)); 212 d.caid = caid; 213 d.cmask = cmask; 214 d.prid = provid; 215 d.srvid = srvid; 216 d.mode = mode; 217 d.counter = counter; 218 cwcheckvaluetab_add(tab, &d); 219 } 220 221 } 221 222 } 222 223 … … 227 228 int32_t i; 228 229 char *ptr = NULL, *saveptr1 = NULL; 229 CECSPVALUETAB newtab; 230 memset(&newtab, 0, sizeof(CECSPVALUETAB)); 231 232 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (i < CS_MAXCAIDTAB) && (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 233 { 230 cecspvaluetab_clear(tab); 231 232 for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) 233 { 234 CECSPVALUETAB_DATA d; 235 memset(&d, 0, sizeof(d)); 236 234 237 int32_t caid = -1, cmask = -1, srvid = -1; 235 238 int32_t provid = -1; … … 254 257 if(caid > 0) 255 258 { 256 newtab.caid[i] = caid; 257 newtab.cmask[i] = cmask; 258 newtab.prid[i] = provid; 259 newtab.srvid[i] = srvid; 260 newtab.n = i + 1; 261 } 262 263 } 264 memcpy(tab, &newtab, sizeof(CECSPVALUETAB)); 259 d.caid = caid; 260 d.cmask = cmask; 261 d.prid = provid; 262 d.srvid = srvid; 263 cecspvaluetab_add(tab, &d); 264 } 265 } 266 265 267 } 266 268 … … 551 553 void clear_cacheextab(CECSPVALUETAB *ctab) 552 554 { 553 memset(ctab, -1, sizeof(CECSPVALUETAB));554 ctab->n = 0;555 } 555 ctab->cevnum = 0; 556 NULLFREE(ctab->cevdata); 557 } -
trunk/oscam-conf-mk.c
r10922 r10971 626 626 char *mk_t_cacheex_valuetab(CECSPVALUETAB *tab) 627 627 { 628 if (!tab->n) { return ""; }629 int32_t i, size = 2 + tab-> n* (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1 + 5 + 1 + 5 + 1); //caid&mask@provid$servid:awtime:dwtime","628 if (!tab || !tab->cevnum) return ""; 629 int32_t i, size = 2 + tab->cevnum * (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1 + 5 + 1 + 5 + 1); //caid&mask@provid$servid:awtime:dwtime"," 630 630 char *buf; 631 631 if(!cs_malloc(&buf, size)) … … 633 633 char *ptr = buf; 634 634 635 for(i = 0; i < tab->n && tab->n <= CS_MAXCAIDTAB ; i++) 636 { 635 for(i = 0; i < tab->cevnum; i++) 636 { 637 CECSPVALUETAB_DATA *d = &tab->cevdata[i]; 637 638 if(i) { ptr += snprintf(ptr, size - (ptr - buf), ","); } 638 if( tab->caid[i]>= 0)639 { 640 if( tab->caid[i]== 0)639 if(d->caid >= 0) 640 { 641 if(d->caid == 0) 641 642 { 642 if( tab->awtime[i]> 0)643 { ptr += snprintf(ptr, size - (ptr - buf), "%d", tab->caid[i]); }643 if(d->awtime > 0) 644 { ptr += snprintf(ptr, size - (ptr - buf), "%d", d->caid); } 644 645 } 645 else if( tab->caid[i]< 256) //Do not format 0D as 000D, its a shortcut for 0Dxx:646 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", tab->caid[i]); }646 else if(d->caid < 256) //Do not format 0D as 000D, its a shortcut for 0Dxx: 647 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", d->caid); } 647 648 else 648 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", tab->caid[i]); }649 } 650 if( tab->cmask[i]>= 0)651 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", tab->cmask[i]); }652 if( tab->prid[i]>= 0)653 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", tab->prid[i]); }654 if( tab->srvid[i]>= 0)655 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", tab->srvid[i]); }656 if( tab->awtime[i]> 0)657 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", tab->awtime[i]); }658 if(! (tab->dwtime[i] > 0))649 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", d->caid); } 650 } 651 if(d->cmask >= 0) 652 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", d->cmask); } 653 if(d->prid >= 0) 654 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", d->prid); } 655 if(d->srvid >= 0) 656 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", d->srvid); } 657 if(d->awtime > 0) 658 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", d->awtime); } 659 if(!d->dwtime > 0) 659 660 { ptr += snprintf(ptr, size - (ptr - buf), ":0"); } 660 if( tab->dwtime[i]> 0)661 { 662 if(( tab->caid[i] <= 0) && (tab->prid[i] == -1) && (tab->srvid[i] == -1) && (tab->srvid[i] == -1) && (tab->awtime[i]<= 0))663 { ptr += snprintf(ptr, size - (ptr - buf), "%d", tab->dwtime[i]); }661 if(d->dwtime > 0) 662 { 663 if((d->caid <= 0) && (d->prid == -1) && (d->srvid == -1) && (d->srvid == -1) && (d->awtime <= 0)) 664 { ptr += snprintf(ptr, size - (ptr - buf), "%d", d->dwtime); } 664 665 else 665 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", tab->dwtime[i]); }666 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", d->dwtime); } 666 667 } 667 668 } … … 673 674 char *mk_t_cacheex_cwcheck_valuetab(CWCHECKTAB *tab) 674 675 { 675 if(!tab ->n) { return ""; }676 int32_t i, size = 2 + tab-> n* (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1 + 5 + 1 + 5 + 1); //caid[&mask][@provid][$servid]:mode:counter","676 if(!tab || !tab->cwchecknum) { return ""; } 677 int32_t i, size = 2 + tab->cwchecknum * (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1 + 5 + 1 + 5 + 1); //caid[&mask][@provid][$servid]:mode:counter"," 677 678 char *buf; 678 679 if(!cs_malloc(&buf, size)) … … 680 681 char *ptr = buf; 681 682 682 for(i = 0; i < tab->n && i <= CS_MAXCAIDTAB; i++) 683 { 683 for(i = 0; i < tab->cwchecknum; i++) 684 { 685 CWCHECKTAB_DATA *d = &tab->cwcheckdata[i]; 686 684 687 if(i) { ptr += snprintf(ptr, size - (ptr - buf), ","); } 685 if( tab->caid[i]>= 0)686 { 687 if( tab->caid[i]== 0)688 { ptr += snprintf(ptr, size - (ptr - buf), "%d", tab->caid[i]); }689 else if( tab->caid[i]< 256) //Do not format 0D as 000D, its a shortcut for 0Dxx:690 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", tab->caid[i]); }688 if(d->caid >= 0) 689 { 690 if(d->caid == 0) 691 { ptr += snprintf(ptr, size - (ptr - buf), "%d", d->caid); } 692 else if(d->caid < 256) //Do not format 0D as 000D, its a shortcut for 0Dxx: 693 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", d->caid); } 691 694 else 692 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", tab->caid[i]); }693 } 694 if( tab->cmask[i]>= 0)695 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", tab->cmask[i]); }696 if( tab->prid[i]>= 0)697 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", tab->prid[i]); }698 if( tab->srvid[i]>= 0)699 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", tab->srvid[i]); }700 if( tab->mode[i]>= 0)701 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", tab->mode[i]); }702 if( tab->counter[i]> 0)703 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", tab->counter[i]); }695 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", d->caid); } 696 } 697 if(d->cmask >= 0) 698 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", d->cmask); } 699 if(d->prid >= 0) 700 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", d->prid); } 701 if(d->srvid >= 0) 702 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", d->srvid); } 703 if(d->mode >= 0) 704 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", d->mode); } 705 if(d->counter > 0) 706 { ptr += snprintf(ptr, size - (ptr - buf), ":%d", d->counter); } 704 707 } 705 708 *ptr = 0; … … 709 712 char *mk_t_cacheex_hitvaluetab(CECSPVALUETAB *tab) 710 713 { 711 if (!tab->n) { return ""; }712 int32_t i, size = 2 + tab-> n* (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1); //caid&mask@provid$servid","714 if (!tab || !tab->cevnum) return ""; 715 int32_t i, size = 2 + tab->cevnum * (4 + 1 + 4 + 1 + 6 + 1 + 4 + 1); //caid&mask@provid$servid"," 713 716 char *buf; 714 717 if(!cs_malloc(&buf, size)) … … 716 719 char *ptr = buf; 717 720 718 for(i = 0; i < tab->n; i++) 719 { 721 for(i = 0; i < tab->cevnum; i++) 722 { 723 CECSPVALUETAB_DATA *d = &tab->cevdata[i]; 720 724 if(i) { ptr += snprintf(ptr, size - (ptr - buf), ","); } 721 if( tab->caid[i]> 0)722 { 723 if( tab->caid[i]< 256) //Do not format 0D as 000D, its a shortcut for 0Dxx:724 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", tab->caid[i]); }725 if(d->caid > 0) 726 { 727 if(d->caid < 256) //Do not format 0D as 000D, its a shortcut for 0Dxx: 728 { ptr += snprintf(ptr, size - (ptr - buf), "%02X", d->caid); } 725 729 else 726 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", tab->caid[i]); }727 if( tab->cmask[i]>= 0)728 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", tab->cmask[i]); }729 if( tab->prid[i]>= 0)730 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", tab->prid[i]); }731 if( tab->srvid[i]>= 0)732 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", tab->srvid[i]); }730 { ptr += snprintf(ptr, size - (ptr - buf), "%04X", d->caid); } 731 if(d->cmask >= 0) 732 { ptr += snprintf(ptr, size - (ptr - buf), "&%04X", d->cmask); } 733 if(d->prid >= 0) 734 { ptr += snprintf(ptr, size - (ptr - buf), "@%06X", d->prid); } 735 if(d->srvid >= 0) 736 { ptr += snprintf(ptr, size - (ptr - buf), "$%04X", d->srvid); } 733 737 } 734 738 } -
trunk/oscam-config-account.c
r10926 r10971 504 504 tuntab_clear(&ptr->ttab); 505 505 caidtab_clear(&ptr->ctab); 506 #ifdef CS_CACHEEX 507 cecspvaluetab_clear(&ptr->cacheex.filter_caidtab); 508 #endif 506 509 #ifdef WITH_LB 507 510 caidvaluetab_clear(&ptr->lb_nbest_readers_tab); -
trunk/oscam-config-global.c
r10961 r10971 193 193 return; 194 194 } 195 if(cacheex_value_table-> n|| cfg.http_full_cfg)195 if(cacheex_value_table->cevnum || cfg.http_full_cfg) 196 196 { 197 197 value = mk_t_cacheex_valuetab(cacheex_value_table); … … 208 208 if(strlen(value) == 0) 209 209 { 210 memset(cacheex_value_table, -1, sizeof(CWCHECKTAB));211 cacheex_value_table->n = 0;210 cacheex_value_table->cwchecknum = 0; 211 NULLFREE(cacheex_value_table->cwcheckdata); 212 212 } 213 213 else … … 218 218 } 219 219 220 if(cacheex_value_table-> n|| cfg.http_full_cfg)220 if(cacheex_value_table->cwchecknum || cfg.http_full_cfg) 221 221 { 222 222 value = mk_t_cacheex_cwcheck_valuetab(cacheex_value_table); … … 237 237 return; 238 238 } 239 if(cacheex_value_table-> n|| cfg.http_full_cfg)239 if(cacheex_value_table->cevnum || cfg.http_full_cfg) 240 240 { 241 241 value = mk_t_cacheex_hitvaluetab(cacheex_value_table); … … 590 590 return cfg.delay > 0 || cfg.max_cache_time != 15 591 591 #ifdef CS_CACHEEX 592 || cfg.cacheex_wait_timetab. n || cfg.cacheex_enable_stats > 0 || cfg.csp_port || cfg.csp.filter_caidtab.n|| cfg.csp.allow_request == 0 || cfg.csp.allow_reforward > 0592 || cfg.cacheex_wait_timetab.cevnum || cfg.cacheex_enable_stats > 0 || cfg.csp_port || cfg.csp.filter_caidtab.cevnum || cfg.csp.allow_request == 0 || cfg.csp.allow_reforward > 0 593 593 #endif 594 594 #ifdef CW_CYCLE_CHECK … … 1085 1085 #ifdef CS_CACHEEX 1086 1086 caidvaluetab_clear(&cfg.cacheex_mode1_delay_tab); 1087 cecspvaluetab_clear(&cfg.cacheex_wait_timetab); 1087 1088 #endif 1088 1089 #ifdef CW_CYCLE_CHECK -
trunk/oscam-config-reader.c
r10920 r10971 1081 1081 1082 1082 caidtab_clear(&rdr->ctab); 1083 1083 #ifdef CS_CACHEEX 1084 cecspvaluetab_clear(&rdr->cacheex.filter_caidtab); 1085 #endif 1084 1086 lb_destroy_stats(rdr); 1085 1087 -
trunk/webif/config/cache_cacheexcsp.html
r10924 r10971 1 1 <TR><TH COLSPAN="2">CacheEx / CSP</TH></TR> 2 2 <TR><TD><A>CacheEx CW Check:</A></TD><TD><input name="cacheex_cw_check" type="text" maxlength="320" value="##CACHEEXCWCHECK##"><br />Format: caid[&mask][@provid][$servid]:mode:counter[,n]</TD></TR> 3 <TR><TD><A>Wait time:</A></TD><TD><input name="wait_time" type="text" maxlength="320"value="##WAIT_TIME##"> ms</TD></TR>3 <TR><TD><A>Wait time:</A></TD><TD><input name="wait_time" type="text" value="##WAIT_TIME##"> ms</TD></TR> 4 4 <TR><TD><A>Mode1 delay time:</A></TD><TD><input name="cacheex_mode1_delay" type="text" maxlength="320" value="##CACHEEXMODE1DELAY##"> ms</TD></TR> 5 5 <TR><TD><A>Max hit time:</A></TD><TD><input name="max_hit_time" class="withunit short" type="text" maxlength="5" value="##MAX_HIT_TIME##"> s keep hit for dynamic wait time</TD></TR> 6 <TR><TD><A data-p="cacheexenablestats_2">Write statistic:</A></TD><TD><input name="cacheexenablestats" value="0" type="hidden"><input name="cacheexenablestats" value="1" type="checkbox" ##CACHEEXSTATSSELECTED##><label></label></TD></TR> 7 <TR><TD><A>Wait until ctimeout:</A></TD><TD><input name="wait_until_ctimeout" value="0" type="hidden"><input name="wait_until_ctimeout" value="1" type="checkbox" ##WTTCHECKED##><label></label></TD></TR> 6 <TR><TD><A data-p="cacheexenablestats_2">Write statistic:</A></TD><TD><input name="cacheexenablestats" value="0" type="hidden"><input name="cacheexenablestats" value="1" type="checkbox" ##CACHEEXSTATSSELECTED##><label></label></TD></TR> <TR><TD><A>Wait until ctimeout:</A></TD><TD><input name="wait_until_ctimeout" value="0" type="hidden"><input name="wait_until_ctimeout" value="1" type="checkbox" ##WTTCHECKED##><label></label></TD></TR> 8 7 9 8 <TR><TH COLSPAN="2">CSP</TH></TR>
Note:
See TracChangeset
for help on using the changeset viewer.