The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/dvdio.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: dvdio.h,v 1.6 2005/02/26 22:25:34 perry Exp $  */
    2 
    3 #include <sys/types.h>
    4 #include <sys/ioccom.h>
    5 
    6 /* DVD-ROM Specific ioctls */
    7 #define DVD_READ_STRUCT         _IOWR('d', 0, dvd_struct)
    8 #define DVD_WRITE_STRUCT        _IOWR('d', 1, dvd_struct)
    9 #define DVD_AUTH                _IOWR('d', 2, dvd_authinfo)
   10 
   11 #define GPCMD_READ_DVD_STRUCTURE        0xad
   12 #define GPCMD_SEND_DVD_STRUCTURE        0xad
   13 #define GPCMD_REPORT_KEY                0xa4
   14 #define GPCMD_SEND_KEY                  0xa3
   15 
   16 /* DVD struct types */
   17 #define DVD_STRUCT_PHYSICAL             0x00
   18 #define DVD_STRUCT_COPYRIGHT            0x01
   19 #define DVD_STRUCT_DISCKEY              0x02
   20 #define DVD_STRUCT_BCA                  0x03
   21 #define DVD_STRUCT_MANUFACT             0x04
   22 
   23 struct dvd_layer {
   24         u_int8_t book_version   : 4;
   25         u_int8_t book_type      : 4;
   26         u_int8_t min_rate       : 4;
   27         u_int8_t disc_size      : 4;
   28         u_int8_t layer_type     : 4;
   29         u_int8_t track_path     : 1;
   30         u_int8_t nlayers        : 2;
   31         u_int8_t track_density  : 4;
   32         u_int8_t linear_density : 4;
   33         u_int8_t bca            : 1;
   34         u_int32_t start_sector;
   35         u_int32_t end_sector;
   36         u_int32_t end_sector_l0;
   37 };
   38 
   39 struct dvd_physical {
   40         u_int8_t type;
   41         u_int8_t layer_num;
   42         struct dvd_layer layer[4];
   43 };
   44 
   45 struct dvd_copyright {
   46         u_int8_t type;
   47 
   48         u_int8_t layer_num;
   49         u_int8_t cpst;
   50         u_int8_t rmi;
   51 };
   52 
   53 struct dvd_disckey {
   54         u_int8_t type;
   55 
   56         unsigned agid           : 2;
   57         u_int8_t value[2048];
   58 };
   59 
   60 struct dvd_bca {
   61         u_int8_t type;
   62 
   63         int len;
   64         u_int8_t value[188];
   65 };
   66 
   67 struct dvd_manufact {
   68         u_int8_t type;
   69 
   70         u_int8_t layer_num;
   71         int len;
   72         u_int8_t value[2048];
   73 };
   74 
   75 typedef union {
   76         u_int8_t type;
   77 
   78         struct dvd_physical     physical;
   79         struct dvd_copyright    copyright;
   80         struct dvd_disckey      disckey;
   81         struct dvd_bca          bca;
   82         struct dvd_manufact     manufact;
   83 } dvd_struct;
   84 
   85 /*
   86  * DVD authentication ioctl
   87  */
   88 
   89 /* Authentication states */
   90 #define DVD_LU_SEND_AGID        0
   91 #define DVD_HOST_SEND_CHALLENGE 1
   92 #define DVD_LU_SEND_KEY1        2
   93 #define DVD_LU_SEND_CHALLENGE   3
   94 #define DVD_HOST_SEND_KEY2      4
   95 
   96 /* Termination states */
   97 #define DVD_AUTH_ESTABLISHED    5
   98 #define DVD_AUTH_FAILURE        6
   99 
  100 /* Other functions */
  101 #define DVD_LU_SEND_TITLE_KEY   7
  102 #define DVD_LU_SEND_ASF         8
  103 #define DVD_INVALIDATE_AGID     9
  104 #define DVD_LU_SEND_RPC_STATE   10
  105 #define DVD_HOST_SEND_RPC_STATE 11
  106 
  107 /* State data */
  108 typedef u_int8_t dvd_key[5];            /* 40-bit value, MSB is first elem. */
  109 typedef u_int8_t dvd_challenge[10];     /* 80-bit value, MSB is first elem. */
  110 
  111 struct dvd_lu_send_agid {
  112         u_int8_t type;
  113         unsigned agid           : 2;
  114 };
  115 
  116 struct dvd_host_send_challenge {
  117         u_int8_t type;
  118         unsigned agid           : 2;
  119 
  120         dvd_challenge chal;
  121 };
  122 
  123 struct dvd_send_key {
  124         u_int8_t type;
  125         unsigned agid           : 2;
  126 
  127         dvd_key key;
  128 };
  129 
  130 struct dvd_lu_send_challenge {
  131         u_int8_t type;
  132         unsigned agid           : 2;
  133 
  134         dvd_challenge chal;
  135 };
  136 
  137 #define DVD_CPM_NO_COPYRIGHT    0
  138 #define DVD_CPM_COPYRIGHTED     1
  139 
  140 #define DVD_CP_SEC_NONE         0
  141 #define DVD_CP_SEC_EXIST        1
  142 
  143 #define DVD_CGMS_UNRESTRICTED   0
  144 #define DVD_CGMS_SINGLE         2
  145 #define DVD_CGMS_RESTRICTED     3
  146 
  147 struct dvd_lu_send_title_key {
  148         u_int8_t type;
  149         unsigned agid           : 2;
  150 
  151         dvd_key title_key;
  152         int lba;
  153         unsigned cpm            : 1;
  154         unsigned cp_sec         : 1;
  155         unsigned cgms           : 2;
  156 };
  157 
  158 struct dvd_lu_send_asf {
  159         u_int8_t type;
  160         unsigned agid           : 2;
  161 
  162         unsigned asf            : 1;
  163 };
  164 
  165 struct dvd_host_send_rpcstate {
  166         u_int8_t type;
  167         u_int8_t pdrc;
  168 };
  169 
  170 struct dvd_lu_send_rpcstate {
  171         u_int8_t type           : 2;
  172         u_int8_t vra            : 3;
  173         u_int8_t ucca           : 3;
  174         u_int8_t region_mask;
  175         u_int8_t rpc_scheme;
  176 };
  177 
  178 typedef union {
  179         u_int8_t type;
  180 
  181         struct dvd_lu_send_agid         lsa;
  182         struct dvd_host_send_challenge  hsc;
  183         struct dvd_send_key             lsk;
  184         struct dvd_lu_send_challenge    lsc;
  185         struct dvd_send_key             hsk;
  186         struct dvd_lu_send_title_key    lstk;
  187         struct dvd_lu_send_asf          lsasf;
  188         struct dvd_host_send_rpcstate   hrpcs;
  189         struct dvd_lu_send_rpcstate     lrpcs;
  190 } dvd_authinfo;
  191 
  192 typedef struct {
  193         u_int16_t report_key_length;
  194         u_int8_t reserved1[2];
  195         u_int8_t ucca           : 3;
  196         u_int8_t vra            : 3;
  197         u_int8_t type_code      : 2;
  198         u_int8_t region_mask;
  199         u_int8_t rpc_scheme;
  200         u_int8_t reserved2;
  201 } dvd_rpc_state_t;
  202 

Cache object: 50d4b83bc8892a8dadb2d61fabfe679d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.