source: trunk/globals.h @ 431

Last change on this file since 431 was 127, checked in by smurzch2, 10 years ago

Back to SVN numbering.

File size: 18.6 KB
Line 
1#include <stdlib.h>
2#include <stdio.h>
3#include <assert.h>
4#include <fcntl.h>
5#include <sys/ioctl.h>
6#include <sys/poll.h>
7#include <ctype.h>
8#include <sys/types.h>
9#include <sys/stat.h>
10#include <sys/shm.h>
11#include <sys/wait.h>
12#include <unistd.h>
13#include <sys/mman.h>
14#include <stdarg.h>
15#include <time.h>
16#include <sys/timeb.h>
17#include <limits.h>
18
19#include <sys/socket.h>
20#include <netinet/in.h>
21#include <arpa/inet.h>
22#include <netdb.h>
23#include <string.h>
24#include <signal.h>
25#include <errno.h>
26
27#include <pthread.h>
28
29#ifndef CS_GLOBALS
30#define CS_GLOBALS
31#define CS_VERSION      "0.99.4svn"
32
33#if defined(__GNUC__)
34#  define GCC_PACK __attribute__((packed))
35#else
36#  define GCC_PACK
37#endif
38
39#include "oscam-config.h"
40#ifndef USE_CMAKE
41#  include "oscam-ostype.h"
42#endif
43#include "oscam-types.h"
44#include "cscrypt/cscrypt.h"
45
46#ifndef CS_CONFDIR
47#define CS_CONFDIR      "/usr/local/etc"
48#endif
49#ifndef CS_MMAPFILE
50#define CS_MMAPFILE         "/tmp/oscam.mem"
51#endif
52#ifndef CS_LOGFILE
53#define CS_LOGFILE      "/var/log/oscam.log"
54#endif
55#define CS_QLEN         128 // size of request queue
56#define CS_MAXQLEN      128 // size of request queue for cardreader
57#define CS_MAXCAIDTAB       32  // max. caid-defs/user
58#define CS_MAXTUNTAB        16  // max. betatunnel mappings
59#define CS_MAXPROV      32
60#define CS_MAXPORTS     32  // max server ports
61#define CS_MAXFILTERS       16
62
63#define CS_MAXCARDS     4096
64#define CS_MAXIGNORE    1024
65#define CS_MAXLOCALS    16
66#define CS_ECMSTORESIZE     16  // use MD5()
67#define CS_EMMSTORESIZE     270
68#define CS_CLIENT_TIMEOUT   5000
69#define CS_CLIENT_MAXIDLE   120
70#define CS_BIND_TIMEOUT     120
71#define CS_DELAY        0
72#define CS_RESOLVE_DELAY    30
73#define CS_MAXLOGHIST       30
74#define CS_LOGHISTSIZE      160 // 32+128: username + logline
75
76#ifdef OLD_DEFS
77#ifdef  CS_EMBEDDED
78#define CS_MAXPENDING       32
79#define CS_ECMCACHESIZE     32
80#define CS_EMMCACHESIZE     64
81#define CS_MAXPID       32
82#define CS_MAXREADER        8
83#else
84#define CS_MAXPENDING       128
85#define CS_ECMCACHESIZE     128
86#define CS_EMMCACHESIZE     256
87#define CS_MAXPID       128
88#define CS_MAXREADER        64
89#endif
90#endif
91
92#ifdef  CS_EMBEDDED
93#define CS_MAXPID       32
94#define CS_MAXREADER        (CS_MAXPID>>1)
95#define CS_MAXPENDING       CS_MAXPID
96#define CS_ECMCACHESIZE     CS_MAXPID
97#define CS_EMMCACHESIZE     (CS_MAXPID<<1)
98#else
99#define CS_MAXPID       512
100#define CS_MAXREADER        (CS_MAXPID>>2)
101#define CS_MAXPENDING       (CS_MAXPID<<1)
102#define CS_ECMCACHESIZE     CS_MAXPID
103#define CS_EMMCACHESIZE     (CS_MAXPID<<1)
104#define CS_RDR_INIT_HIST
105#endif
106
107#define D_DUMP          1   // Debug Dumps
108#define D_MASTER        2   // Debug Master Process
109#define D_READER        4   // Debug Reader/Proxy Process
110#define D_CLIENT        8   // Debug Client Process
111#define D_DEVICE        16  // Debug Reader I/O
112#define D_WATCHDOG      32  // Debug Watchdog
113#define D_ALL_DUMP      63
114
115#define R_MOUSE         0x1 // Reader smartcard mouse
116#define R_INTERN        0x2 // Reader smartcard intern
117#define R_SMART     0x5 // Smartreader+
118#define R_CAMD35        0x10    // Reader cascading camd 3.5x
119#define R_CAMD33        0x11    // Reader cascading camd 3.3x
120#define R_NEWCAMD       0x12    // Reader cascading newcamd
121#define R_RADEGAST      0x13    // Reader cascading radegast
122#define R_CS378X        0x14    // Reader cascading camd 3.5x TCP
123#define R_GBOX      0x20    // Reader cascading gbox
124#define R_SERIAL        0x80    // Reader serial
125#define R_IS_NETWORK        0x70
126#define R_IS_CASCADING      0xF0
127
128#define CS_MAX_MOD 8
129#define MOD_CONN_TCP        1
130#define MOD_CONN_UDP        2
131#define MOD_CONN_NET        3
132#define MOD_CONN_SERIAL     4
133
134#ifdef CS_CORE
135char *PIP_ID_TXT[] = { "ECM", "EMM", "LOG", "CIN", "HUP", NULL };
136char *RDR_CD_TXT[] = { "cd", "dsr", "cts", "ring", "none",
137#ifdef USE_GPIO
138                       "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
139#endif
140                       NULL };
141#else
142extern char *PIP_ID_TXT[];
143extern char *RDR_CD_TXT[];
144#endif
145
146#define PIP_ID_ECM      0
147#define PIP_ID_EMM      1
148#define PIP_ID_LOG      2
149#define PIP_ID_CIN      3  // CARD_INFO
150#define PIP_ID_HUP      4
151#define PIP_ID_MAX      PIP_ID_HUP
152#define PIP_ID_DCW      5
153
154#define PIP_ID_ERR      (-1)
155#define PIP_ID_DIR      (-2)
156#define PIP_ID_NUL      (-3)
157
158#define cdiff *c_start
159
160#define NCD_AUTO        0
161#define NCD_524         1
162#define NCD_525         2
163
164#define CS_ANTICASC
165
166// moved from reader-common.h
167#define CARD_INSERTED  1
168#define CARD_NEED_INIT 2
169#define CARD_FAILURE   4
170
171enum {E1_GLOBAL=0, E1_USER, E1_READER, E1_SERVER, E1_LSERVER};
172enum {E2_GLOBAL=0, E2_GROUP, E2_CAID, E2_IDENT, E2_CLASS, E2_CHID, E2_QUEUE,
173      E2_EA_LEN, E2_F0_LEN, E2_OFFLINE, E2_SID};
174
175//typedef unsigned char uchar;
176//typedef unsigned long ulong;
177
178typedef struct s_classtab
179{
180  uchar an;
181  uchar bn;
182  uchar aclass[31];
183  uchar bclass[31];
184} GCC_PACK CLASSTAB;
185
186typedef struct s_caidtab
187{
188  ushort caid[CS_MAXCAIDTAB];
189  ushort mask[CS_MAXCAIDTAB];
190  ushort cmap[CS_MAXCAIDTAB];
191} GCC_PACK CAIDTAB;
192
193typedef struct s_tuntab
194{
195  ushort bt_caidfrom[CS_MAXTUNTAB];
196  ushort bt_caidto[CS_MAXTUNTAB];
197  ushort bt_srvid[CS_MAXTUNTAB];
198} GCC_PACK TUNTAB;
199
200typedef struct s_sidtab
201{
202  char     label[33];
203  ushort   num_caid;
204  ushort   num_provid;
205  ushort   num_srvid;
206  ushort   *caid;
207  ulong    *provid;
208  ushort   *srvid;
209  struct   s_sidtab *next;
210} GCC_PACK SIDTAB;
211
212
213typedef struct s_filter
214{
215  ushort caid;
216  uchar  nprids;
217  ulong  prids[CS_MAXPROV];
218} GCC_PACK FILTER;
219
220typedef struct s_ftab
221{
222  int    nfilts;
223  FILTER filts[CS_MAXFILTERS];
224} GCC_PACK FTAB;
225
226typedef struct s_port
227{
228  int    fd;
229  int    s_port;
230  FTAB   ftab;
231} GCC_PACK PORT;
232
233typedef struct s_ptab
234{
235  int    nports;
236  PORT   ports[CS_MAXPORTS];
237} GCC_PACK PTAB;
238
239struct s_ecm
240{
241  uchar  ecmd5[CS_ECMSTORESIZE];
242  uchar  cw[16];
243  ushort caid;
244  ulong  prid;
245  ulong  grp;
246//  int level;
247};
248
249struct s_emm
250{
251  uchar emm[CS_EMMSTORESIZE];
252  uchar type;
253  int   count;
254};
255
256struct s_module
257{
258  //int  fd;
259  int  multi;
260  int  type;
261  int  watchdog;
262  char desc[16];
263  char *logtxt;
264  //int  s_port;
265  in_addr_t s_ip;
266  void (*s_handler)();
267  int  (*recv)();
268  void (*send_dcw)();
269  int  c_multi;
270  int  (*c_recv_chk)();
271  int  (*c_init)();
272  int  (*c_send_ecm)();
273  int  (*c_init_log)();
274  int  (*c_recv_log)();
275  int  c_port;
276  PTAB *ptab;
277};
278
279struct s_irdeto_quess
280{
281  int    b47;
282  ushort caid;
283  ushort sid;
284  struct s_irdeto_quess *next;
285};
286
287struct s_client
288{
289  pid_t     pid;
290  in_addr_t ip;
291  in_port_t port;
292  time_t    login;
293  time_t    last;
294  time_t    lastswitch;
295  time_t    lastemm;
296  time_t    lastecm;
297  ulong     grp;
298  int       crypted;
299  int       dup;
300  int       au;
301  int       monlvl;
302  int       dbglvl;
303  CAIDTAB   ctab;
304  TUNTAB    ttab;
305  ulong     sidtabok;   // positiv services
306  ulong     sidtabno;   // negative services
307  int       typ;
308  int       ctyp;
309  int       stat;
310  int       ufd;
311  int       last_srvid;
312  int       last_caid;
313  int       tosleep;
314  char      usr[32];
315  int       udp_fd;
316  int       fd_m2c;
317  struct    sockaddr_in udp_sa;
318  int       log;
319  int       logcounter;
320  int       cwfound;
321  int       cwcache;
322  int       cwnot;
323  uchar     ucrc[4];         // needed by monitor and used by camd35
324  ulong     pcrc;        // pwd crc
325  AES_KEY   aeskey;        // needed by monitor and used by camd33, camd35
326  ushort    ncd_msgid;
327  uchar     ncd_skey[16];
328  int       port_idx;    // index in server ptab
329  int       ncd_server;  // newcamd server?
330#ifdef CS_ANTICASC
331  ushort    ac_idx;
332  ushort    ac_limit;
333  uchar     ac_penalty;
334#endif
335  FTAB      fchid;
336  FTAB      ftab;        // user [caid] and ident filter
337  CLASSTAB  cltab;
338};
339
340struct s_reader
341{
342  int       cs_idx;
343  int       fd;
344  ulong     grp;
345  int       fallback;
346  int       typ;
347  int       card_system;
348  char      label[32];
349  char      device[128];
350  int       detect;
351  int       mhz;
352  int       custom_speed;
353  int       r_port;
354  char      r_usr[64];
355  char      r_pwd[64];
356  int       r_crypted;
357  int       l_port;
358  int       log_port;
359  CAIDTAB   ctab;
360  ulong     boxid;
361  uchar     aes_key[16];
362  ulong     sidtabok;   // positiv services
363  ulong     sidtabno;   // negative services
364  uchar     hexserial[8];
365  int       nprov;
366  uchar     prid[CS_MAXPROV][8];
367  uchar     availkeys[CS_MAXPROV][16];  // viaccess; misused in seca, if availkeys[PROV][0]=0 then expired, 1 then valid.
368  uchar     sa[CS_MAXPROV][4];      // viaccess & seca
369  ushort    acs;        // irdeto
370  ushort    caid[16];
371  uchar     b_nano[256];
372  char      pincode[5];
373  int       logemm;
374  int       cachemm;
375  int       rewritemm;
376  int       online;
377  int       card_status;
378  struct    s_module ph;
379  uchar     ncd_key[16];
380  uchar     ncd_skey[16];
381  int       ncd_disable_server_filt;
382  ushort    ncd_msgid;
383  int       ncd_proto;
384  uchar     tcp_connected;
385  int       tcp_ito;      // inactivity timeout
386  int       tcp_rto;      // reconnect timeout
387  time_t    last_g;       // get (if last_s-last_g>tcp_rto - reconnect )
388  time_t    last_s;       // send
389  uchar     show_cls;     // number of classes subscription showed on kill -31
390  int       maxqlen;      // max queue length
391  int       qlen;         // current queue length
392  FTAB      fchid;
393  FTAB      ftab;
394  CLASSTAB  cltab;
395  uchar     gbox_pwd[4];
396  uchar     gbox_timecode[7];
397  int       gbox_online;
398  uchar     gbox_vers;
399  uchar     gbox_prem;
400  int       gbox_fd;
401  struct timeb  gbox_lasthello;     // incoming time stamp
402#ifdef CS_RDR_INIT_HIST
403  uchar     init_history[1024];
404  int       init_history_pos;
405#endif
406};
407
408#ifdef CS_ANTICASC
409
410struct s_acasc_shm {
411  ushort count : 15;
412  ushort deny  : 1;
413};
414
415struct s_acasc {
416  ushort stat[10];
417  uchar  idx;    // current active index in stat[]
418};
419
420struct s_cpmap
421{
422  ushort caid;
423  ulong  provid;
424  ushort sid;
425  ushort chid;
426  ushort dwtime;
427  struct s_cpmap *next;
428};
429#endif
430
431struct s_auth
432{
433  char     usr[33];
434  char     pwd[33];
435  int      uniq;
436  int      au;
437  int      monlvl;
438  ulong    grp;
439  int      tosleep;
440  CAIDTAB  ctab;
441  ulong    sidtabok;    // positiv services
442  ulong    sidtabno;    // negative services
443  FTAB     fchid;
444  FTAB     ftab;       // user [caid] and ident filter
445  CLASSTAB cltab;
446  TUNTAB   ttab;
447#ifdef CS_ANTICASC
448  int      ac_idx;
449  int      ac_users;   // 0 - unlimited
450  uchar    ac_penalty; // 0 - log, >0 - fake dw
451#endif
452  in_addr_t dynip;
453  uchar     dyndns[64];
454  struct   s_auth *next;
455};
456
457struct s_srvid
458{
459  int  srvid;
460  char name[33];
461  struct s_srvid *next;
462};
463
464struct s_ip
465{
466  in_addr_t ip[2];
467  struct s_ip *next;
468};
469
470struct s_config
471{
472  int       nice;
473  ulong     netprio;
474  ulong     ctimeout;
475  ulong     ftimeout;
476  int       cmaxidle;
477  int       ulparent;
478  ulong     delay;
479  int       bindwait;
480  int       resolvedelay;
481  int       tosleep;
482  in_addr_t srvip;
483  char      pidfile[128];
484  char      usrfile[128];
485  char      cwlogdir[128];
486  struct s_auth *account;
487  struct s_srvid *srvid;
488  struct s_sidtab *sidtab;
489  int       mon_port;
490  in_addr_t mon_srvip;
491  struct s_ip *mon_allowed;
492  int       mon_aulow;
493  int       mon_hideclient_to;
494  int       mon_level;
495  int       c33_port;
496  in_addr_t c33_srvip;
497  uchar     c33_key[16];
498  int       c33_crypted;
499  int       c33_passive;
500  struct s_ip *c33_plain;
501  int       c35_port;
502  in_addr_t c35_srvip;
503  PTAB      c35_tcp_ptab;
504  in_addr_t c35_tcp_srvip;
505  PTAB      ncd_ptab;
506  in_addr_t ncd_srvip;
507  uchar     ncd_key[16];
508  int       rad_port;
509  in_addr_t rad_srvip;
510  struct s_ip *rad_allowed;
511  char      rad_usr[32];
512  char      ser_device[512];
513  int       srtimeout;  // SerialReaderTimeount in millisec
514  int       max_log_size;
515  int       show_ecm_dw;
516  int       waitforcards;
517  int       preferlocalcards;
518  uchar      gbox_pwd[8];
519  uchar     ignorefile[512];
520  uchar     cardfile[512];
521  uchar     gbxShareOnl[512];
522  int       maxdist;
523  int       num_locals;
524  unsigned long locals[CS_MAXLOCALS];
525  //struct s_irdeto_quess *itab[0xff];
526#ifdef CS_ANTICASC
527  char      ac_enabled;
528  int       ac_users;       // num of users for account (0 - default)
529  int       ac_stime;       // time to collect AC statistics (3 min - default)
530  int       ac_samples;     // qty of samples
531  int       ac_penalty;     // 0 - write to log
532  int       ac_fakedelay;   // 100-1000 ms
533  int       ac_denysamples; 
534  char      ac_logfile[128];
535  struct s_cpmap *cpmap;
536#endif
537//  struct s_reader reader[];
538};
539
540typedef struct ecm_request_t
541{
542 
543  uchar         ecm[256];
544  uchar         cw[16];
545  uchar         ecmd5[CS_ECMSTORESIZE];
546//  uchar         l;
547  short         l;
548  ushort        caid;
549  ushort        ocaid;
550  ushort        srvid;
551  ushort        chid;
552  ushort        pid;
553  ushort        idx;
554  ulong         prid;
555  int           reader[CS_MAXREADER];
556  int           cidx;       // client index
557  int           cpti;       // client pending table index
558  int           stage;      // processing stage in server module
559  int           level;      // send-level in client module
560  int           rc;
561  uchar         rcEx;
562  struct timeb  tps;        // incoming time stamp
563  uchar         locals_done;
564  ushort        gbxCWFrom;
565  ushort        gbxFrom;
566  ushort        gbxTo;
567 
568  uchar         gbxForward[16];
569  int           gbxRidx;
570} GCC_PACK      ECM_REQUEST;
571
572typedef struct emm_packet_t
573{
574  uchar emm[258];
575  uchar l;
576  uchar caid[2];
577  uchar provid[4];
578  uchar hexserial[8];
579  uchar type;
580  int   cidx;
581} GCC_PACK EMM_PACKET;
582
583// oscam-simples
584extern char *remote_txt(void);
585extern char *trim(char *);
586extern char *strtolower(char *);
587extern int gethexval(char);
588extern int cs_atob(uchar *, char *, int);
589extern ulong cs_atoi(char *, int, int);
590extern int byte_atob(char *);
591extern long word_atob(char *);
592extern int key_atob(char *, uchar *);
593extern int key_atob4(char *, uchar *);
594extern char *key_btoa(char *, uchar *);
595extern char *cs_hexdump(int, uchar *, int);
596extern in_addr_t cs_inet_order(in_addr_t);
597extern char *cs_inet_ntoa(in_addr_t);
598extern in_addr_t cs_inet_addr(char *txt);
599extern ulong b2i(int, uchar *);
600extern ullong b2ll(int, uchar *);
601extern uchar *i2b(int, ulong);
602extern ulong a2i(char *, int);
603extern int boundary(int, int);
604extern void cs_ftime(struct timeb *);
605extern void cs_sleepms(int);
606extern int bytes_available(int);
607extern void cs_setpriority(int);
608extern struct s_auth *find_user(char *);
609
610// oscam variables
611extern int pfd, rfd, fd_c2m, fd_m2c, cs_idx, *c_start, cs_ptyp, cs_dblevel, cs_hw;
612extern int *logidx, *loghistidx, *log_fd;
613extern int is_server, *mcl;
614extern uchar mbuf[1024];
615extern ushort len4caid[256];
616extern pid_t master_pid;
617extern struct s_ecm *ecmcache;
618extern struct s_client *client;
619extern struct s_reader *reader;
620
621extern struct card_struct *Cards;
622extern struct idstore_struct *idstore;
623extern unsigned long *IgnoreList;
624
625extern struct s_config *cfg;
626extern char cs_confdir[], *loghist;
627extern EMM_PACKET epg;
628extern struct s_module ph[CS_MAX_MOD];
629extern ECM_REQUEST *ecmtask;
630extern char logfile[256];
631#ifdef CS_ANTICASC
632extern struct s_acasc_shm *acasc;
633extern FILE *fpa;
634extern int use_ac_log;
635#endif
636
637
638// oscam
639extern char *cs_platform(char *);
640extern int recv_from_udpipe(uchar *, int);
641extern char* username(int);
642extern int idx_from_pid(pid_t);
643extern int chk_bcaid(ECM_REQUEST *, CAIDTAB *);
644extern void cs_exit(int sig);
645extern int cs_fork(in_addr_t, in_port_t);
646extern void wait4master(void);
647extern int cs_auth_client(struct s_auth *, char*);
648extern void cs_disconnect_client(void);
649extern int check_ecmcache(ECM_REQUEST *, ulong);
650extern int write_to_pipe(int, int, uchar *, int);
651extern int read_from_pipe(int, uchar **, int);
652extern int write_ecm_request(int, ECM_REQUEST *);
653extern int write_ecm_answer(int, ECM_REQUEST *);
654extern void log_emm_request(int);
655extern ulong chk_provid(uchar *, ushort);
656extern void guess_cardsystem(ECM_REQUEST *);
657extern void guess_irdeto(ECM_REQUEST *);
658extern void get_cw(ECM_REQUEST *);
659extern void do_emm(EMM_PACKET *);
660extern ECM_REQUEST *get_ecmtask(void);
661extern void request_cw(ECM_REQUEST *, int, int);
662extern int send_dcw(ECM_REQUEST *);
663extern int process_input(uchar *, int, int);
664extern int chk_srvid(ECM_REQUEST *, int);
665extern int chk_sfilter(ECM_REQUEST *, PTAB*);
666extern int chk_ufilters(ECM_REQUEST *);
667extern int chk_rfilter(ECM_REQUEST *, struct s_reader *);
668extern int chk_rsfilter(ECM_REQUEST *, int);
669extern int chk_avail_reader(ECM_REQUEST *, struct s_reader *);
670extern void set_signal_handler(int , int , void (*)(int));
671extern void cs_log_config(void);
672
673#ifdef CS_ANTICASC
674//extern void start_anticascader(void);
675extern void init_ac(void);
676extern void ac_init_stat(int);
677extern int  ac_init_log(char*);
678extern void ac_do_stat(void);
679extern void ac_init_client(struct s_auth *);
680extern void ac_chk(ECM_REQUEST*, int);
681#endif
682
683// oscam-nano
684extern int chk_class(ECM_REQUEST *, CLASSTAB*, const char*, const char*);
685
686// oscam-config
687extern int  init_config(void);
688extern int  init_userdb(void);
689extern int  init_readerdb(void);
690extern int  init_sidtab(void);
691extern int  init_srvid(void);
692extern int  search_boxkey(ushort, ulong, char *);
693extern void init_len4caid(void);
694extern int  init_irdeto_guess_tab(void);
695
696// oscam-reader
697extern int ridx, logfd;
698extern void cs_ri_brk(int);
699extern void cs_ri_log(char *,...);
700extern void start_cardreader(void);
701extern void reader_card_info(void);
702
703// oscam-log
704extern int  cs_init_log(char *);
705extern void cs_log(char *,...);
706extern void cs_debug(char *,...);
707extern void cs_ddump(uchar *, int, char *, ...);
708extern void cs_close_log(void);
709extern int  cs_init_statistics(char *);
710extern void cs_statistics(int);
711extern void cs_dump(uchar *, int, char *, ...);
712
713// oscam-aes
714extern void aes_set_key(char *);
715extern void aes_encrypt_idx(int, uchar *, int);
716extern void aes_decrypt(uchar *, int);
717#define aes_encrypt(b, n) aes_encrypt_idx(cs_idx, b, n)
718
719// reader-common
720extern int reader_device_init(char *, int);
721extern int reader_checkhealth(void);
722extern int reader_ecm(ECM_REQUEST *);
723extern int reader_emm(EMM_PACKET *);
724
725// reader-irdeto
726extern int irdeto_card_init(uchar *, int);
727extern int irdeto_do_ecm(ECM_REQUEST *);
728extern int irdeto_do_emm(EMM_PACKET *);
729extern int irdeto_card_info(void);
730
731// reader-viaccess
732extern int viaccess_card_init(uchar *, int);
733extern int viaccess_do_ecm(ECM_REQUEST *);
734extern int viaccess_do_emm(EMM_PACKET *);
735extern int viaccess_card_info(void);
736
737// reader-videoguard
738extern int videoguard_card_init(uchar *, int);
739extern int videoguard_do_ecm(ECM_REQUEST *);
740extern int videoguard_do_emm(EMM_PACKET *);
741extern int videoguard_card_info(void);
742
743// reader-cryptoworks
744extern int cryptoworks_card_init(uchar *, int);
745extern int cryptoworks_do_ecm(ECM_REQUEST *);
746extern int cryptoworks_do_emm(EMM_PACKET *);
747extern int cryptoworks_card_info(void);
748
749// reader-seca
750extern int seca_card_init(uchar *, int);
751extern int seca_do_ecm(ECM_REQUEST *);
752extern int seca_do_emm(EMM_PACKET *);
753extern int seca_card_info(void);
754 
755// protocol modules
756extern int  monitor_send_idx(int, char *);
757extern void module_monitor(struct s_module *);
758extern void module_camd35(struct s_module *);
759extern void module_camd35_tcp(struct s_module *);
760extern void module_camd33(struct s_module *);
761extern void module_newcamd(struct s_module *);
762extern void module_radegast(struct s_module *);
763extern void module_oscam_ser(struct s_module *);
764extern void module_gbox(struct s_module *);
765extern struct timeval *chk_pending(struct timeb tp_ctimeout);
766#endif  // CS_GLOBALS
Note: See TracBrowser for help on using the repository browser.