// Copyright © 2015, skdltmxn // Licensed under the MIT License // This module contains the definitions for portable NetBIOS 3.0 support. pub const NCBNAMSZ: usize = 16; pub const MAX_LANA: usize = 254; pub type PFPOST = Option; #[cfg(target_arch="x86_64")] STRUCT!{nodebug struct NCB { ncb_command: ::UCHAR, ncb_retcode: ::UCHAR, ncb_lsn: ::UCHAR, ncb_num: ::UCHAR, ncb_buffer: ::PUCHAR, ncb_length: ::WORD, ncb_callname: [::UCHAR; NCBNAMSZ], ncb_name: [::UCHAR; NCBNAMSZ], ncb_rto: ::UCHAR, ncb_sto: ::UCHAR, ncb_post: PFPOST, ncb_lana_num: ::UCHAR, ncb_cmd_cplt: ::UCHAR, ncb_reserve: [::UCHAR; 18], ncb_event: ::HANDLE, }} #[cfg(target_arch="x86")] STRUCT!{nodebug struct NCB { ncb_command: ::UCHAR, ncb_retcode: ::UCHAR, ncb_lsn: ::UCHAR, ncb_num: ::UCHAR, ncb_buffer: ::PUCHAR, ncb_length: ::WORD, ncb_callname: [::UCHAR; NCBNAMSZ], ncb_name: [::UCHAR; NCBNAMSZ], ncb_rto: ::UCHAR, ncb_sto: ::UCHAR, ncb_post: PFPOST, ncb_lana_num: ::UCHAR, ncb_cmd_cplt: ::UCHAR, ncb_reserve: [::UCHAR; 10], ncb_event: ::HANDLE, }} pub type PNCB = *mut NCB; STRUCT!{struct ADAPTER_STATUS { adapter_address: [::UCHAR; 6], rev_major: ::UCHAR, reserved0: ::UCHAR, adapter_type: ::UCHAR, rev_minor: ::UCHAR, duration: ::WORD, frmr_recv: ::WORD, frmr_xmit: ::WORD, iframe_recv_err: ::WORD, xmit_aborts: ::WORD, xmit_success: ::DWORD, recv_success: ::DWORD, iframe_xmit_err: ::WORD, recv_buff_unavail: ::WORD, t1_timeouts: ::WORD, ti_timeouts: ::WORD, reserved1: ::DWORD, free_ncbs: ::WORD, max_cfg_ncbs: ::WORD, max_ncbs: ::WORD, xmit_buf_unavail: ::WORD, max_dgram_size: ::WORD, pending_sess: ::WORD, max_cfg_sess: ::WORD, max_sess: ::WORD, max_sess_pkt_size: ::WORD, name_count: ::WORD, }} pub type PADAPTER_STATUS = *mut ADAPTER_STATUS; STRUCT!{struct NAME_BUFFER { name: [::UCHAR; NCBNAMSZ], name_num: ::UCHAR, name_flags: ::UCHAR, }} pub type PNAME_BUFFER = *mut NAME_BUFFER; pub const NAME_FLAGS_MASK: ::UCHAR = 0x87; pub const GROUP_NAME: ::UCHAR = 0x80; pub const UNIQUE_NAME: ::UCHAR = 0x00; pub const REGISTERING: ::UCHAR = 0x00; pub const REGISTERED: ::UCHAR = 0x04; pub const DEREGISTERED: ::UCHAR = 0x05; pub const DUPLICATE: ::UCHAR = 0x06; pub const DUPLICATE_DEREG: ::UCHAR = 0x07; STRUCT!{struct SESSION_HEADER { sess_name: ::UCHAR, num_sess: ::UCHAR, rcv_dg_outstanding: ::UCHAR, rcv_any_outstanding: ::UCHAR, }} pub type PSESSION_HEADER = *mut SESSION_HEADER; STRUCT!{struct SESSION_BUFFER { lsn: ::UCHAR, state: ::UCHAR, local_name: [::UCHAR; NCBNAMSZ], remote_name: [::UCHAR; NCBNAMSZ], rcvs_outstanding: ::UCHAR, sends_outstanding: ::UCHAR, }} pub type PSESSION_BUFFER = *mut SESSION_BUFFER; pub const LISTEN_OUTSTANDING: ::UCHAR = 0x01; pub const CALL_PENDING: ::UCHAR = 0x02; pub const SESSION_ESTABLISHED: ::UCHAR = 0x03; pub const HANGUP_PENDING: ::UCHAR = 0x04; pub const HANGUP_COMPLETE: ::UCHAR = 0x05; pub const SESSION_ABORTED: ::UCHAR = 0x06; STRUCT!{nodebug struct LANA_ENUM { length: ::UCHAR, lana: [::UCHAR; MAX_LANA + 1], }} pub type PLANA_ENUM = *mut LANA_ENUM; STRUCT!{struct FIND_NAME_HEADER { node_count: ::WORD, reserved: ::UCHAR, unique_group: ::UCHAR, }} pub type PFIND_NAME_HEADER = *mut FIND_NAME_HEADER; STRUCT!{struct FIND_NAME_BUFFER { length: ::UCHAR, access_control: ::UCHAR, frame_control: ::UCHAR, destination_addr: [::UCHAR; 6], source_addr: [::UCHAR; 6], routing_info: [::UCHAR; 18], }} pub type PFIND_NAME_BUFFER = *mut FIND_NAME_BUFFER; STRUCT!{struct ACTION_HEADER { transport_id: ::ULONG, action_code: ::USHORT, reserved: ::USHORT, }} pub type PACTION_HEADER = *mut ACTION_HEADER; pub const NCBCALL: ::UCHAR = 0x10; pub const NCBLISTEN: ::UCHAR = 0x11; pub const NCBHANGUP: ::UCHAR = 0x12; pub const NCBSEND: ::UCHAR = 0x14; pub const NCBRECV: ::UCHAR = 0x15; pub const NCBRECVANY: ::UCHAR = 0x16; pub const NCBCHAINSEND: ::UCHAR = 0x17; pub const NCBDGSEND: ::UCHAR = 0x20; pub const NCBDGRECV: ::UCHAR = 0x21; pub const NCBDGSENDBC: ::UCHAR = 0x22; pub const NCBADDNAME: ::UCHAR = 0x30; pub const NCBDELNAME: ::UCHAR = 0x31; pub const NCBRESET: ::UCHAR = 0x32; pub const NCBASTAT: ::UCHAR = 0x33; pub const NCBSSTAT: ::UCHAR = 0x34; pub const NCBCANCEL: ::UCHAR = 0x35; pub const NCBADDGRNAME: ::UCHAR = 0x36; pub const NCBENUM: ::UCHAR = 0x37; pub const NCBUNLINK: ::UCHAR = 0x70; pub const NCBSENDNA: ::UCHAR = 0x71; pub const NCBCHAINSENDNA: ::UCHAR = 0x72; pub const NCBLANSTALERT: ::UCHAR = 0x73; pub const NCBACTION: ::UCHAR = 0x77; pub const NCBFINDNAME: ::UCHAR = 0x78; pub const NCBTRACE: ::UCHAR = 0x79; pub const ASYNCH: ::UCHAR = 0x80; pub const NRC_GOODRET: ::UCHAR = 0x00; pub const NRC_BUFLEN: ::UCHAR = 0x01; pub const NRC_ILLCMD: ::UCHAR = 0x03; pub const NRC_CMDTMO: ::UCHAR = 0x05; pub const NRC_INCOMP: ::UCHAR = 0x06; pub const NRC_BADDR: ::UCHAR = 0x07; pub const NRC_SNUMOUT: ::UCHAR = 0x08; pub const NRC_NORES: ::UCHAR = 0x09; pub const NRC_SCLOSED: ::UCHAR = 0x0a; pub const NRC_CMDCAN: ::UCHAR = 0x0b; pub const NRC_DUPNAME: ::UCHAR = 0x0d; pub const NRC_NAMTFUL: ::UCHAR = 0x0e; pub const NRC_ACTSES: ::UCHAR = 0x0f; pub const NRC_LOCTFUL: ::UCHAR = 0x11; pub const NRC_REMTFUL: ::UCHAR = 0x12; pub const NRC_ILLNN: ::UCHAR = 0x13; pub const NRC_NOCALL: ::UCHAR = 0x14; pub const NRC_NOWILD: ::UCHAR = 0x15; pub const NRC_INUSE: ::UCHAR = 0x16; pub const NRC_NAMERR: ::UCHAR = 0x17; pub const NRC_SABORT: ::UCHAR = 0x18; pub const NRC_NAMCONF: ::UCHAR = 0x19; pub const NRC_IFBUSY: ::UCHAR = 0x21; pub const NRC_TOOMANY: ::UCHAR = 0x22; pub const NRC_BRIDGE: ::UCHAR = 0x23; pub const NRC_CANOCCR: ::UCHAR = 0x24; pub const NRC_CANCEL: ::UCHAR = 0x26; pub const NRC_DUPENV: ::UCHAR = 0x30; pub const NRC_ENVNOTDEF: ::UCHAR = 0x34; pub const NRC_OSRESNOTAV: ::UCHAR = 0x35; pub const NRC_MAXAPPS: ::UCHAR = 0x36; pub const NRC_NOSAPS: ::UCHAR = 0x37; pub const NRC_NORESOURCES: ::UCHAR = 0x38; pub const NRC_INVADDRESS: ::UCHAR = 0x39; pub const NRC_INVDDID: ::UCHAR = 0x3B; pub const NRC_LOCKFAIL: ::UCHAR = 0x3C; pub const NRC_OPENERR: ::UCHAR = 0x3f; pub const NRC_SYSTEM: ::UCHAR = 0x40; pub const NRC_PENDING: ::UCHAR = 0xff;