Class: PacketGen::Header::NetBIOS::Datagram
- Inherits:
-
Base
- Object
- Types::Fields
- Base
- PacketGen::Header::NetBIOS::Datagram
- Defined in:
- lib/packetgen/header/netbios/datagram.rb
Overview
NetBIOS Session Service messages.
Constant Summary collapse
- UDP_PORT =
Port number for NetBIOS Session Service over TCP
138- TYPES =
Datagram packet types
{ 'direct_unique' => 0x10, 'direct_group' => 0x11, 'broadcast' => 0x12, 'error' => 0x13, 'query_request' => 0x14, 'positive_query_resp' => 0x15, 'negative_query_resp' => 0x16, }.freeze
Instance Attribute Summary collapse
-
#:rsv(: rsv) ⇒ Integer
4-bit rsv field.
-
#:snt(: snt) ⇒ Integer
2-bit SNT (Source end-Node Type) field from #flags.
-
#body ⇒ String
User data.
-
#dgm_id ⇒ Integer
16-bit next transaction ID for datagrams.
-
#dgm_length ⇒ Object
Length of data + second level of encoded names.
-
#dst_name ⇒ Object
NetBIOS destination name.
-
#error_code ⇒ Integer
Error code.
-
#f ⇒ Boolean
First packet flag.
-
#flags ⇒ Integer
8-bit flags.
-
#m ⇒ Boolean
More flag.
-
#packet_offset ⇒ Integer
Not present in error datagram.
-
#src_ip ⇒ Object
Source IP address.
-
#src_name ⇒ Object
NetBIOS source name.
-
#src_port ⇒ Object
Source port.
-
#type ⇒ Integer
8-bit session packet type.
Attributes inherited from Base
Instance Method Summary collapse
-
#calc_length ⇒ Integer
Compute and set #dgm_length field.
Methods inherited from Base
#added_to_packet, bind, bind_header, calculate_and_set_length, #header_id, inherited, #initialize, #ip_header, known_headers, #ll_header, #method_name, #parse?, #protocol_name, protocol_name
Methods inherited from Types::Fields
#[], #[]=, #bits_on, define_bit_fields_on, define_field, define_field_after, define_field_before, delete_field, fields, #fields, #force_binary, inherited, #initialize, #inspect, #is_optional?, #is_present?, #offset_of, #optional?, #optional_fields, #present?, #read, remove_bit_fields_on, remove_field, #sz, #to_h, #to_s, update_field
Constructor Details
This class inherits a constructor from PacketGen::Header::Base
Instance Attribute Details
#:rsv(: rsv) ⇒ Integer
4-bit rsv field. 4 upper bits of #flags
90 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 90 define_bit_fields_on :flags, :rsv, 4, :snt, 2, :f, :m |
#:snt(: snt) ⇒ Integer
2-bit SNT (Source end-Node Type) field from #flags.
90 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 90 define_bit_fields_on :flags, :rsv, 4, :snt, 2, :f, :m |
#body ⇒ String
User data. Ony present in direct_unique, direct_group and broadcast datagrams.
74 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 74 define_field :body, Types::String, optional: ->(h) { (h.type >= 0x10) && (h.type <= 0x12) } |
#dgm_id ⇒ Integer
16-bit next transaction ID for datagrams
42 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 42 define_field :dgm_id, Types::Int16 |
#dgm_length ⇒ Object
Length of data + second level of encoded names. Not present in error datagram.
54 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 54 define_field :dgm_length, Types::Int16, optional: ->(h) { h.type != 0x13 } |
#dst_name ⇒ Object
NetBIOS destination name. Present in all but error datagrams.
70 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 70 define_field :dst_name, Name, default: '', optional: ->(h) { h.type != 0x13 } |
#error_code ⇒ Integer
Error code. Only present in error datagrams.
62 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 62 define_field :error_code, Types::Int16, optional: ->(h) { h.type == 0x13 } |
#f ⇒ Boolean
First packet flag. If set then this is first (and possibly only) fragment of NetBIOS datagram.
90 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 90 define_bit_fields_on :flags, :rsv, 4, :snt, 2, :f, :m |
#flags ⇒ Integer
8-bit flags
38 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 38 define_field :flags, Types::Int8 |
#m ⇒ Boolean
More flag. If set then more NetBIOS datagram fragments follow.
90 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 90 define_bit_fields_on :flags, :rsv, 4, :snt, 2, :f, :m |
#packet_offset ⇒ Integer
Not present in error datagram.
58 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 58 define_field :packet_offset, Types::Int16, optional: ->(h) { h.type != 0x13 } |
#src_ip ⇒ Object
Source IP address
46 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 46 define_field :src_ip, IP::Addr |
#src_name ⇒ Object
NetBIOS source name. Only present in direct_unique, direct_group and broadcast datagrams.
66 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 66 define_field :src_name, Name, default: '', optional: ->(h) { (h.type >= 0x10) && (h.type <= 0x12) } |
Instance Method Details
#calc_length ⇒ Integer
Compute and set #dgm_length field
94 95 96 97 98 99 |
# File 'lib/packetgen/header/netbios/datagram.rb', line 94 def calc_length length = self[:body].sz length += self[:src_name].sz if present?(:src_name) length += self[:dst_name].sz if present?(:dst_name) self.dgm_length = length end |