Module: Nl::Datagram

Defined in:
nl/lib/nl/datagram.rb

Overview

Splits Netlink datagrams into aligned header/payload frames.

Class Method Summary collapse

Class Method Details

.each_frame(buffer) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'nl/lib/nl/datagram.rb', line 9

def self.each_frame(buffer)
  return enum_for(__method__, buffer) unless block_given?

  decoder = Decoder.new(buffer)
  while decoder.available?(Raw::NLMSG_HDRLEN)
    header = Raw::NlMsgHdr.decode(decoder)
    payload_size = header.len - Raw::NLMSG_HDRLEN
    payload = decoder.get_buffer(payload_size)
    decoder.align_to(Raw::NLMSG_ALIGNTO)
    yield header, payload
  end
end