Changeset 3008 for trunk/oscam-chk.c
- Timestamp:
- 09/07/10 21:59:45 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-chk.c
r3000 r3008 47 47 } 48 48 return(rc); 49 } 50 51 int chk_srvid_match_by_caid_prov(ushort caid, ulong provid, SIDTAB *sidtab) 52 { 53 int i, rc=0; 54 55 if (!sidtab->num_caid) 56 rc|=1; 57 else 58 for (i=0; (i<sidtab->num_caid) && (!(rc&1)); i++) 59 if (caid==sidtab->caid[i]) rc|=1; 60 61 if (!sidtab->num_provid) 62 rc|=2; 63 else 64 for (i=0; (i<sidtab->num_provid) && (!(rc&2)); i++) 65 if (provid==sidtab->provid[i]) rc|=2; 66 67 return(rc==3); 68 } 69 70 int chk_srvid_by_caid_prov(ushort caid, ulong provid, int idx) { 71 int nr, rc=0; 72 SIDTAB *sidtab; 73 74 if (!client[idx].sidtabok) 75 { 76 if (!client[idx].sidtabno) return(1); 77 rc=1; 78 } 79 for (nr=0, sidtab=cfg->sidtab; sidtab; sidtab=sidtab->next, nr++) 80 if (sidtab->num_caid | sidtab->num_provid | sidtab->num_srvid) 81 { 82 if ((client[idx].sidtabno&(1<<nr)) && 83 (chk_srvid_match_by_caid_prov(caid, provid, sidtab))) 84 return(0); 85 if ((client[idx].sidtabok&(1<<nr)) && 86 (chk_srvid_match_by_caid_prov(caid, provid, sidtab))) 87 rc=1; 88 } 89 return(rc); 90 49 91 } 50 92 … … 302 344 303 345 int matching_reader(ECM_REQUEST *er, struct s_reader *rdr) { 346 //Checking connected & group valid: 304 347 if (!((rdr->fd) && (rdr->grp&client[cs_idx].grp))) 305 348 return(0); 306 349 350 //Checking enabled and not deleted: 307 351 if (!rdr->enable || rdr->deleted) { 308 352 cs_debug_mask(D_TRACE, "reader disabled/deleted %s", rdr->label); … … 310 354 } 311 355 312 //Schlocke reader-defined function 356 //Schlocke reader-defined function, reader-self-check: 313 357 if (rdr->ph.c_available && !rdr->ph.c_available(rdr->ridx, AVAIL_CHECK_CONNECTED)) { 314 358 cs_debug_mask(D_TRACE, "reader unavailable %s", rdr->label); … … 316 360 } 317 361 362 //Checking caids: 318 363 if (!chk_ctab(er->ocaid, &rdr->ctab) || !chk_ctab(er->caid, &rdr->ctab)) { 319 364 cs_debug_mask(D_TRACE, "caid %04X not found in caidlist reader %s", er->caid, rdr->label); … … 321 366 } 322 367 368 //Checking services: 323 369 if (!chk_srvid(er, rdr->cs_idx)) { 324 370 cs_debug_mask(D_TRACE, "service %04X not matching reader %s", er->srvid, rdr->label); … … 326 372 } 327 373 374 //Checking ident: 328 375 if (!chk_rfilter(er, rdr)) { 329 376 cs_debug_mask(D_TRACE, "r-filter reader %s", rdr->label); … … 331 378 } 332 379 380 //Check ECM nanos: 333 381 if (!chk_class(er, &rdr->cltab, "reader", rdr->label)) { 334 382 cs_debug_mask(D_TRACE, "class filter reader %s", rdr->label); … … 336 384 } 337 385 386 //Checking chid: 338 387 if (!chk_chid(er, &rdr->fchid, "reader", rdr->label)) { 339 388 cs_debug_mask(D_TRACE, "chid filter reader %s", rdr->label); … … 341 390 } 342 391 392 //All checks done, reader is matching! 343 393 return(1); 344 394 }
Note:
See TracChangeset
for help on using the changeset viewer.