1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 
  39 
  40 
  41 
  42 
  43 
  44 
  45 
  46 
  47 
  48 
  49 
  50 
  51 
  52 
  53 
  54 
  55 
  56 
  57 
  58 
  59 
  60 
  61 
  62 
  63 
  64 
  65 
  66 
  67 
  68 
  69 
  70 
  71 
  72 
  73 
  74 
  75 
  76 
  77 
  78 
  79 
  80 
  81 
  82 
  83 
  84 
  85 
  86 
  87 
  88 GENL_struct(DRBD_NLA_CFG_REPLY, 1, drbd_cfg_reply,
  89                 
  90         __str_field(1, DRBD_GENLA_F_MANDATORY,  info_text, 0)
  91 )
  92 
  93 
  94 
  95 
  96 
  97 
  98 GENL_struct(DRBD_NLA_CFG_CONTEXT, 2, drbd_cfg_context,
  99         __u32_field(1, DRBD_GENLA_F_MANDATORY,  ctx_volume)
 100         __str_field(2, DRBD_GENLA_F_MANDATORY,  ctx_resource_name, 128)
 101         __bin_field(3, DRBD_GENLA_F_MANDATORY,  ctx_my_addr, 128)
 102         __bin_field(4, DRBD_GENLA_F_MANDATORY,  ctx_peer_addr, 128)
 103 )
 104 
 105 GENL_struct(DRBD_NLA_DISK_CONF, 3, disk_conf,
 106         __str_field(1, DRBD_F_REQUIRED | DRBD_F_INVARIANT,      backing_dev,    128)
 107         __str_field(2, DRBD_F_REQUIRED | DRBD_F_INVARIANT,      meta_dev,       128)
 108         __s32_field(3, DRBD_F_REQUIRED | DRBD_F_INVARIANT,      meta_dev_idx)
 109 
 110         
 111         __u64_field(4, DRBD_GENLA_F_MANDATORY | DRBD_F_INVARIANT,       disk_size)
 112         
 113 
 114         __u32_field(5, DRBD_GENLA_F_MANDATORY | DRBD_F_INVARIANT,       max_bio_bvecs)
 115 
 116         __u32_field_def(6, DRBD_GENLA_F_MANDATORY,      on_io_error, DRBD_ON_IO_ERROR_DEF)
 117         __u32_field_def(7, DRBD_GENLA_F_MANDATORY,      fencing, DRBD_FENCING_DEF)
 118 
 119         __u32_field_def(8,      DRBD_GENLA_F_MANDATORY, resync_rate, DRBD_RESYNC_RATE_DEF)
 120         __s32_field_def(9,      DRBD_GENLA_F_MANDATORY, resync_after, DRBD_MINOR_NUMBER_DEF)
 121         __u32_field_def(10,     DRBD_GENLA_F_MANDATORY, al_extents, DRBD_AL_EXTENTS_DEF)
 122         __u32_field_def(11,     DRBD_GENLA_F_MANDATORY, c_plan_ahead, DRBD_C_PLAN_AHEAD_DEF)
 123         __u32_field_def(12,     DRBD_GENLA_F_MANDATORY, c_delay_target, DRBD_C_DELAY_TARGET_DEF)
 124         __u32_field_def(13,     DRBD_GENLA_F_MANDATORY, c_fill_target, DRBD_C_FILL_TARGET_DEF)
 125         __u32_field_def(14,     DRBD_GENLA_F_MANDATORY, c_max_rate, DRBD_C_MAX_RATE_DEF)
 126         __u32_field_def(15,     DRBD_GENLA_F_MANDATORY, c_min_rate, DRBD_C_MIN_RATE_DEF)
 127         __u32_field_def(20,     DRBD_GENLA_F_MANDATORY, disk_timeout, DRBD_DISK_TIMEOUT_DEF)
 128         __u32_field_def(21,     0 ,       read_balancing, DRBD_READ_BALANCING_DEF)
 129         __u32_field_def(25,     0 ,       rs_discard_granularity, DRBD_RS_DISCARD_GRANULARITY_DEF)
 130 
 131         __flg_field_def(16, DRBD_GENLA_F_MANDATORY,     disk_barrier, DRBD_DISK_BARRIER_DEF)
 132         __flg_field_def(17, DRBD_GENLA_F_MANDATORY,     disk_flushes, DRBD_DISK_FLUSHES_DEF)
 133         __flg_field_def(18, DRBD_GENLA_F_MANDATORY,     disk_drain, DRBD_DISK_DRAIN_DEF)
 134         __flg_field_def(19, DRBD_GENLA_F_MANDATORY,     md_flushes, DRBD_MD_FLUSHES_DEF)
 135         __flg_field_def(23,     0 ,       al_updates, DRBD_AL_UPDATES_DEF)
 136         __flg_field_def(24,     0 ,       discard_zeroes_if_aligned, DRBD_DISCARD_ZEROES_IF_ALIGNED_DEF)
 137         __flg_field_def(26,     0 ,       disable_write_same, DRBD_DISABLE_WRITE_SAME_DEF)
 138 )
 139 
 140 GENL_struct(DRBD_NLA_RESOURCE_OPTS, 4, res_opts,
 141         __str_field_def(1,      DRBD_GENLA_F_MANDATORY, cpu_mask,       DRBD_CPU_MASK_SIZE)
 142         __u32_field_def(2,      DRBD_GENLA_F_MANDATORY, on_no_data, DRBD_ON_NO_DATA_DEF)
 143 )
 144 
 145 GENL_struct(DRBD_NLA_NET_CONF, 5, net_conf,
 146         __str_field_def(1,      DRBD_GENLA_F_MANDATORY | DRBD_F_SENSITIVE,
 147                                                 shared_secret,  SHARED_SECRET_MAX)
 148         __str_field_def(2,      DRBD_GENLA_F_MANDATORY, cram_hmac_alg,  SHARED_SECRET_MAX)
 149         __str_field_def(3,      DRBD_GENLA_F_MANDATORY, integrity_alg,  SHARED_SECRET_MAX)
 150         __str_field_def(4,      DRBD_GENLA_F_MANDATORY, verify_alg,     SHARED_SECRET_MAX)
 151         __str_field_def(5,      DRBD_GENLA_F_MANDATORY, csums_alg,      SHARED_SECRET_MAX)
 152         __u32_field_def(6,      DRBD_GENLA_F_MANDATORY, wire_protocol, DRBD_PROTOCOL_DEF)
 153         __u32_field_def(7,      DRBD_GENLA_F_MANDATORY, connect_int, DRBD_CONNECT_INT_DEF)
 154         __u32_field_def(8,      DRBD_GENLA_F_MANDATORY, timeout, DRBD_TIMEOUT_DEF)
 155         __u32_field_def(9,      DRBD_GENLA_F_MANDATORY, ping_int, DRBD_PING_INT_DEF)
 156         __u32_field_def(10,     DRBD_GENLA_F_MANDATORY, ping_timeo, DRBD_PING_TIMEO_DEF)
 157         __u32_field_def(11,     DRBD_GENLA_F_MANDATORY, sndbuf_size, DRBD_SNDBUF_SIZE_DEF)
 158         __u32_field_def(12,     DRBD_GENLA_F_MANDATORY, rcvbuf_size, DRBD_RCVBUF_SIZE_DEF)
 159         __u32_field_def(13,     DRBD_GENLA_F_MANDATORY, ko_count, DRBD_KO_COUNT_DEF)
 160         __u32_field_def(14,     DRBD_GENLA_F_MANDATORY, max_buffers, DRBD_MAX_BUFFERS_DEF)
 161         __u32_field_def(15,     DRBD_GENLA_F_MANDATORY, max_epoch_size, DRBD_MAX_EPOCH_SIZE_DEF)
 162         __u32_field_def(16,     DRBD_GENLA_F_MANDATORY, unplug_watermark, DRBD_UNPLUG_WATERMARK_DEF)
 163         __u32_field_def(17,     DRBD_GENLA_F_MANDATORY, after_sb_0p, DRBD_AFTER_SB_0P_DEF)
 164         __u32_field_def(18,     DRBD_GENLA_F_MANDATORY, after_sb_1p, DRBD_AFTER_SB_1P_DEF)
 165         __u32_field_def(19,     DRBD_GENLA_F_MANDATORY, after_sb_2p, DRBD_AFTER_SB_2P_DEF)
 166         __u32_field_def(20,     DRBD_GENLA_F_MANDATORY, rr_conflict, DRBD_RR_CONFLICT_DEF)
 167         __u32_field_def(21,     DRBD_GENLA_F_MANDATORY, on_congestion, DRBD_ON_CONGESTION_DEF)
 168         __u32_field_def(22,     DRBD_GENLA_F_MANDATORY, cong_fill, DRBD_CONG_FILL_DEF)
 169         __u32_field_def(23,     DRBD_GENLA_F_MANDATORY, cong_extents, DRBD_CONG_EXTENTS_DEF)
 170         __flg_field_def(24, DRBD_GENLA_F_MANDATORY,     two_primaries, DRBD_ALLOW_TWO_PRIMARIES_DEF)
 171         __flg_field(25, DRBD_GENLA_F_MANDATORY | DRBD_F_INVARIANT,      discard_my_data)
 172         __flg_field_def(26, DRBD_GENLA_F_MANDATORY,     tcp_cork, DRBD_TCP_CORK_DEF)
 173         __flg_field_def(27, DRBD_GENLA_F_MANDATORY,     always_asbp, DRBD_ALWAYS_ASBP_DEF)
 174         __flg_field(28, DRBD_GENLA_F_MANDATORY | DRBD_F_INVARIANT,      tentative)
 175         __flg_field_def(29,     DRBD_GENLA_F_MANDATORY, use_rle, DRBD_USE_RLE_DEF)
 176         
 177         
 178         
 179         __flg_field_def(33, 0 ,   csums_after_crash_only, DRBD_CSUMS_AFTER_CRASH_ONLY_DEF)
 180         __u32_field_def(34, 0 , sock_check_timeo, DRBD_SOCKET_CHECK_TIMEO_DEF)
 181 )
 182 
 183 GENL_struct(DRBD_NLA_SET_ROLE_PARMS, 6, set_role_parms,
 184         __flg_field(1, DRBD_GENLA_F_MANDATORY,  assume_uptodate)
 185 )
 186 
 187 GENL_struct(DRBD_NLA_RESIZE_PARMS, 7, resize_parms,
 188         __u64_field(1, DRBD_GENLA_F_MANDATORY,  resize_size)
 189         __flg_field(2, DRBD_GENLA_F_MANDATORY,  resize_force)
 190         __flg_field(3, DRBD_GENLA_F_MANDATORY,  no_resync)
 191         __u32_field_def(4, 0 , al_stripes, DRBD_AL_STRIPES_DEF)
 192         __u32_field_def(5, 0 , al_stripe_size, DRBD_AL_STRIPE_SIZE_DEF)
 193 )
 194 
 195 GENL_struct(DRBD_NLA_STATE_INFO, 8, state_info,
 196         
 197 
 198         __u32_field(1, DRBD_GENLA_F_MANDATORY,  sib_reason)
 199         __u32_field(2, DRBD_F_REQUIRED, current_state)
 200         __u64_field(3, DRBD_GENLA_F_MANDATORY,  capacity)
 201         __u64_field(4, DRBD_GENLA_F_MANDATORY,  ed_uuid)
 202 
 203         
 204 
 205 
 206 
 207 
 208         __u32_field(5, DRBD_GENLA_F_MANDATORY,  prev_state)
 209         __u32_field(6, DRBD_GENLA_F_MANDATORY,  new_state)
 210 
 211         
 212         __bin_field(7, DRBD_GENLA_F_MANDATORY,  uuids, (UI_SIZE*sizeof(__u64)))
 213         __u32_field(8, DRBD_GENLA_F_MANDATORY,  disk_flags)
 214         __u64_field(9, DRBD_GENLA_F_MANDATORY,  bits_total)
 215         __u64_field(10, DRBD_GENLA_F_MANDATORY, bits_oos)
 216         
 217         __u64_field(11, DRBD_GENLA_F_MANDATORY, bits_rs_total)
 218         __u64_field(12, DRBD_GENLA_F_MANDATORY, bits_rs_failed)
 219 
 220         
 221         __str_field(13, DRBD_GENLA_F_MANDATORY, helper, 32)
 222         __u32_field(14, DRBD_GENLA_F_MANDATORY, helper_exit_code)
 223 
 224         __u64_field(15,                      0, send_cnt)
 225         __u64_field(16,                      0, recv_cnt)
 226         __u64_field(17,                      0, read_cnt)
 227         __u64_field(18,                      0, writ_cnt)
 228         __u64_field(19,                      0, al_writ_cnt)
 229         __u64_field(20,                      0, bm_writ_cnt)
 230         __u32_field(21,                      0, ap_bio_cnt)
 231         __u32_field(22,                      0, ap_pending_cnt)
 232         __u32_field(23,                      0, rs_pending_cnt)
 233 )
 234 
 235 GENL_struct(DRBD_NLA_START_OV_PARMS, 9, start_ov_parms,
 236         __u64_field(1, DRBD_GENLA_F_MANDATORY,  ov_start_sector)
 237         __u64_field(2, DRBD_GENLA_F_MANDATORY,  ov_stop_sector)
 238 )
 239 
 240 GENL_struct(DRBD_NLA_NEW_C_UUID_PARMS, 10, new_c_uuid_parms,
 241         __flg_field(1, DRBD_GENLA_F_MANDATORY, clear_bm)
 242 )
 243 
 244 GENL_struct(DRBD_NLA_TIMEOUT_PARMS, 11, timeout_parms,
 245         __u32_field(1,  DRBD_F_REQUIRED,        timeout_type)
 246 )
 247 
 248 GENL_struct(DRBD_NLA_DISCONNECT_PARMS, 12, disconnect_parms,
 249         __flg_field(1, DRBD_GENLA_F_MANDATORY,  force_disconnect)
 250 )
 251 
 252 GENL_struct(DRBD_NLA_DETACH_PARMS, 13, detach_parms,
 253         __flg_field(1, DRBD_GENLA_F_MANDATORY,  force_detach)
 254 )
 255 
 256 GENL_struct(DRBD_NLA_RESOURCE_INFO, 15, resource_info,
 257         __u32_field(1, 0, res_role)
 258         __flg_field(2, 0, res_susp)
 259         __flg_field(3, 0, res_susp_nod)
 260         __flg_field(4, 0, res_susp_fen)
 261         
 262 )
 263 
 264 GENL_struct(DRBD_NLA_DEVICE_INFO, 16, device_info,
 265         __u32_field(1, 0, dev_disk_state)
 266 )
 267 
 268 GENL_struct(DRBD_NLA_CONNECTION_INFO, 17, connection_info,
 269         __u32_field(1, 0, conn_connection_state)
 270         __u32_field(2, 0, conn_role)
 271 )
 272 
 273 GENL_struct(DRBD_NLA_PEER_DEVICE_INFO, 18, peer_device_info,
 274         __u32_field(1, 0, peer_repl_state)
 275         __u32_field(2, 0, peer_disk_state)
 276         __u32_field(3, 0, peer_resync_susp_user)
 277         __u32_field(4, 0, peer_resync_susp_peer)
 278         __u32_field(5, 0, peer_resync_susp_dependency)
 279 )
 280 
 281 GENL_struct(DRBD_NLA_RESOURCE_STATISTICS, 19, resource_statistics,
 282         __u32_field(1, 0, res_stat_write_ordering)
 283 )
 284 
 285 GENL_struct(DRBD_NLA_DEVICE_STATISTICS, 20, device_statistics,
 286         __u64_field(1, 0, dev_size)  
 287         __u64_field(2, 0, dev_read)  
 288         __u64_field(3, 0, dev_write)  
 289         __u64_field(4, 0, dev_al_writes)  
 290         __u64_field(5, 0, dev_bm_writes)  
 291         __u32_field(6, 0, dev_upper_pending)  
 292         __u32_field(7, 0, dev_lower_pending)  
 293         __flg_field(8, 0, dev_upper_blocked)
 294         __flg_field(9, 0, dev_lower_blocked)
 295         __flg_field(10, 0, dev_al_suspended)  
 296         __u64_field(11, 0, dev_exposed_data_uuid)
 297         __u64_field(12, 0, dev_current_uuid)
 298         __u32_field(13, 0, dev_disk_flags)
 299         __bin_field(14, 0, history_uuids, HISTORY_UUIDS * sizeof(__u64))
 300 )
 301 
 302 GENL_struct(DRBD_NLA_CONNECTION_STATISTICS, 21, connection_statistics,
 303         __flg_field(1, 0, conn_congested)
 304 )
 305 
 306 GENL_struct(DRBD_NLA_PEER_DEVICE_STATISTICS, 22, peer_device_statistics,
 307         __u64_field(1, 0, peer_dev_received)  
 308         __u64_field(2, 0, peer_dev_sent)  
 309         __u32_field(3, 0, peer_dev_pending)  
 310         __u32_field(4, 0, peer_dev_unacked)  
 311         __u64_field(5, 0, peer_dev_out_of_sync)  
 312         __u64_field(6, 0, peer_dev_resync_failed)  
 313         __u64_field(7, 0, peer_dev_bitmap_uuid)
 314         __u32_field(9, 0, peer_dev_flags)
 315 )
 316 
 317 GENL_struct(DRBD_NLA_NOTIFICATION_HEADER, 23, drbd_notification_header,
 318         __u32_field(1, DRBD_GENLA_F_MANDATORY, nh_type)
 319 )
 320 
 321 GENL_struct(DRBD_NLA_HELPER, 24, drbd_helper_info,
 322         __str_field(1, DRBD_GENLA_F_MANDATORY, helper_name, 32)
 323         __u32_field(2, DRBD_GENLA_F_MANDATORY, helper_status)
 324 )
 325 
 326 
 327 
 328 
 329 GENL_mc_group(events)
 330 
 331         
 332 GENL_notification(
 333         DRBD_EVENT, 1, events,
 334         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 335         GENL_tla_expected(DRBD_NLA_STATE_INFO, DRBD_F_REQUIRED)
 336         GENL_tla_expected(DRBD_NLA_NET_CONF, DRBD_GENLA_F_MANDATORY)
 337         GENL_tla_expected(DRBD_NLA_DISK_CONF, DRBD_GENLA_F_MANDATORY)
 338         GENL_tla_expected(DRBD_NLA_SYNCER_CONF, DRBD_GENLA_F_MANDATORY)
 339 )
 340 
 341         
 342 GENL_op(
 343         DRBD_ADM_GET_STATUS, 2,
 344         GENL_op_init(
 345                 .doit = drbd_adm_get_status,
 346                 .dumpit = drbd_adm_get_status_all,
 347                 
 348 
 349         ),
 350         
 351 
 352         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY)
 353 )
 354 
 355         
 356 GENL_op(DRBD_ADM_NEW_MINOR, 5, GENL_doit(drbd_adm_new_minor),
 357         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 358 GENL_op(DRBD_ADM_DEL_MINOR, 6, GENL_doit(drbd_adm_del_minor),
 359         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 360 
 361         
 362 GENL_op(DRBD_ADM_NEW_RESOURCE, 7, GENL_doit(drbd_adm_new_resource),
 363         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 364 GENL_op(DRBD_ADM_DEL_RESOURCE, 8, GENL_doit(drbd_adm_del_resource),
 365         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 366 
 367 GENL_op(DRBD_ADM_RESOURCE_OPTS, 9,
 368         GENL_doit(drbd_adm_resource_opts),
 369         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 370         GENL_tla_expected(DRBD_NLA_RESOURCE_OPTS, DRBD_GENLA_F_MANDATORY)
 371 )
 372 
 373 GENL_op(
 374         DRBD_ADM_CONNECT, 10,
 375         GENL_doit(drbd_adm_connect),
 376         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 377         GENL_tla_expected(DRBD_NLA_NET_CONF, DRBD_F_REQUIRED)
 378 )
 379 
 380 GENL_op(
 381         DRBD_ADM_CHG_NET_OPTS, 29,
 382         GENL_doit(drbd_adm_net_opts),
 383         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 384         GENL_tla_expected(DRBD_NLA_NET_CONF, DRBD_F_REQUIRED)
 385 )
 386 
 387 GENL_op(DRBD_ADM_DISCONNECT, 11, GENL_doit(drbd_adm_disconnect),
 388         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 389 
 390 GENL_op(DRBD_ADM_ATTACH, 12,
 391         GENL_doit(drbd_adm_attach),
 392         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 393         GENL_tla_expected(DRBD_NLA_DISK_CONF, DRBD_F_REQUIRED)
 394 )
 395 
 396 GENL_op(DRBD_ADM_CHG_DISK_OPTS, 28,
 397         GENL_doit(drbd_adm_disk_opts),
 398         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 399         GENL_tla_expected(DRBD_NLA_DISK_OPTS, DRBD_F_REQUIRED)
 400 )
 401 
 402 GENL_op(
 403         DRBD_ADM_RESIZE, 13,
 404         GENL_doit(drbd_adm_resize),
 405         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 406         GENL_tla_expected(DRBD_NLA_RESIZE_PARMS, DRBD_GENLA_F_MANDATORY)
 407 )
 408 
 409 GENL_op(
 410         DRBD_ADM_PRIMARY, 14,
 411         GENL_doit(drbd_adm_set_role),
 412         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 413         GENL_tla_expected(DRBD_NLA_SET_ROLE_PARMS, DRBD_F_REQUIRED)
 414 )
 415 
 416 GENL_op(
 417         DRBD_ADM_SECONDARY, 15,
 418         GENL_doit(drbd_adm_set_role),
 419         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 420         GENL_tla_expected(DRBD_NLA_SET_ROLE_PARMS, DRBD_F_REQUIRED)
 421 )
 422 
 423 GENL_op(
 424         DRBD_ADM_NEW_C_UUID, 16,
 425         GENL_doit(drbd_adm_new_c_uuid),
 426         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 427         GENL_tla_expected(DRBD_NLA_NEW_C_UUID_PARMS, DRBD_GENLA_F_MANDATORY)
 428 )
 429 
 430 GENL_op(
 431         DRBD_ADM_START_OV, 17,
 432         GENL_doit(drbd_adm_start_ov),
 433         GENL_tla_expected(DRBD_NLA_START_OV_PARMS, DRBD_GENLA_F_MANDATORY)
 434 )
 435 
 436 GENL_op(DRBD_ADM_DETACH,        18, GENL_doit(drbd_adm_detach),
 437         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 438         GENL_tla_expected(DRBD_NLA_DETACH_PARMS, DRBD_GENLA_F_MANDATORY))
 439 
 440 GENL_op(DRBD_ADM_INVALIDATE,    19, GENL_doit(drbd_adm_invalidate),
 441         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 442 GENL_op(DRBD_ADM_INVAL_PEER,    20, GENL_doit(drbd_adm_invalidate_peer),
 443         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 444 GENL_op(DRBD_ADM_PAUSE_SYNC,    21, GENL_doit(drbd_adm_pause_sync),
 445         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 446 GENL_op(DRBD_ADM_RESUME_SYNC,   22, GENL_doit(drbd_adm_resume_sync),
 447         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 448 GENL_op(DRBD_ADM_SUSPEND_IO,    23, GENL_doit(drbd_adm_suspend_io),
 449         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 450 GENL_op(DRBD_ADM_RESUME_IO,     24, GENL_doit(drbd_adm_resume_io),
 451         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 452 GENL_op(DRBD_ADM_OUTDATE,       25, GENL_doit(drbd_adm_outdate),
 453         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 454 GENL_op(DRBD_ADM_GET_TIMEOUT_TYPE, 26, GENL_doit(drbd_adm_get_timeout_type),
 455         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 456 GENL_op(DRBD_ADM_DOWN,          27, GENL_doit(drbd_adm_down),
 457         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED))
 458 
 459 GENL_op(DRBD_ADM_GET_RESOURCES, 30,
 460          GENL_op_init(
 461                  .dumpit = drbd_adm_dump_resources,
 462          ),
 463          GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY)
 464          GENL_tla_expected(DRBD_NLA_RESOURCE_INFO, DRBD_GENLA_F_MANDATORY)
 465          GENL_tla_expected(DRBD_NLA_RESOURCE_STATISTICS, DRBD_GENLA_F_MANDATORY))
 466 
 467 GENL_op(DRBD_ADM_GET_DEVICES, 31,
 468          GENL_op_init(
 469                  .dumpit = drbd_adm_dump_devices,
 470                  .done = drbd_adm_dump_devices_done,
 471          ),
 472          GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY)
 473          GENL_tla_expected(DRBD_NLA_DEVICE_INFO, DRBD_GENLA_F_MANDATORY)
 474          GENL_tla_expected(DRBD_NLA_DEVICE_STATISTICS, DRBD_GENLA_F_MANDATORY))
 475 
 476 GENL_op(DRBD_ADM_GET_CONNECTIONS, 32,
 477          GENL_op_init(
 478                  .dumpit = drbd_adm_dump_connections,
 479                  .done = drbd_adm_dump_connections_done,
 480          ),
 481          GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY)
 482          GENL_tla_expected(DRBD_NLA_CONNECTION_INFO, DRBD_GENLA_F_MANDATORY)
 483          GENL_tla_expected(DRBD_NLA_CONNECTION_STATISTICS, DRBD_GENLA_F_MANDATORY))
 484 
 485 GENL_op(DRBD_ADM_GET_PEER_DEVICES, 33,
 486          GENL_op_init(
 487                  .dumpit = drbd_adm_dump_peer_devices,
 488                  .done = drbd_adm_dump_peer_devices_done,
 489          ),
 490          GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY)
 491          GENL_tla_expected(DRBD_NLA_PEER_DEVICE_INFO, DRBD_GENLA_F_MANDATORY)
 492          GENL_tla_expected(DRBD_NLA_PEER_DEVICE_STATISTICS, DRBD_GENLA_F_MANDATORY))
 493 
 494 GENL_notification(
 495         DRBD_RESOURCE_STATE, 34, events,
 496         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 497         GENL_tla_expected(DRBD_NLA_NOTIFICATION_HEADER, DRBD_F_REQUIRED)
 498         GENL_tla_expected(DRBD_NLA_RESOURCE_INFO, DRBD_F_REQUIRED)
 499         GENL_tla_expected(DRBD_NLA_RESOURCE_STATISTICS, DRBD_F_REQUIRED))
 500 
 501 GENL_notification(
 502         DRBD_DEVICE_STATE, 35, events,
 503         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 504         GENL_tla_expected(DRBD_NLA_NOTIFICATION_HEADER, DRBD_F_REQUIRED)
 505         GENL_tla_expected(DRBD_NLA_DEVICE_INFO, DRBD_F_REQUIRED)
 506         GENL_tla_expected(DRBD_NLA_DEVICE_STATISTICS, DRBD_F_REQUIRED))
 507 
 508 GENL_notification(
 509         DRBD_CONNECTION_STATE, 36, events,
 510         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 511         GENL_tla_expected(DRBD_NLA_NOTIFICATION_HEADER, DRBD_F_REQUIRED)
 512         GENL_tla_expected(DRBD_NLA_CONNECTION_INFO, DRBD_F_REQUIRED)
 513         GENL_tla_expected(DRBD_NLA_CONNECTION_STATISTICS, DRBD_F_REQUIRED))
 514 
 515 GENL_notification(
 516         DRBD_PEER_DEVICE_STATE, 37, events,
 517         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 518         GENL_tla_expected(DRBD_NLA_NOTIFICATION_HEADER, DRBD_F_REQUIRED)
 519         GENL_tla_expected(DRBD_NLA_PEER_DEVICE_INFO, DRBD_F_REQUIRED)
 520         GENL_tla_expected(DRBD_NLA_PEER_DEVICE_STATISTICS, DRBD_F_REQUIRED))
 521 
 522 GENL_op(
 523         DRBD_ADM_GET_INITIAL_STATE, 38,
 524         GENL_op_init(
 525                 .dumpit = drbd_adm_get_initial_state,
 526         ),
 527         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_GENLA_F_MANDATORY))
 528 
 529 GENL_notification(
 530         DRBD_HELPER, 40, events,
 531         GENL_tla_expected(DRBD_NLA_CFG_CONTEXT, DRBD_F_REQUIRED)
 532         GENL_tla_expected(DRBD_NLA_HELPER, DRBD_F_REQUIRED))
 533 
 534 GENL_notification(
 535         DRBD_INITIAL_STATE_DONE, 41, events,
 536         GENL_tla_expected(DRBD_NLA_NOTIFICATION_HEADER, DRBD_F_REQUIRED))