Class: OSPFv2::SequenceNumber

Inherits:
Object
  • Object
show all
Includes:
Comparable, OSPFv2
Defined in:
lib/ie/sequence_number.rb

Constant Summary

Constants included from OSPFv2

ASBR_SUMMMARY_LSA, AllDRouters, AllSPFRouters, AreaId, CheckAge, DefaultDestination, EXTERNAL_BASE_ADDRESS, EXTERNAL_LSA, IPPROTO_OSPF, InitialSequenceNumber, LINK_BASE_ADDRESS, LSA_HEADER_LEN, LSInfinity, LSRefreshTime, MaxAge, MaxAgeDiff, MaxSequenceNumber, MinLSArrival, MinLSInterval, N, NETWORK_BASE_ADDRESS, NETWORK_LSA, NSSA_LSA, Netmask, PACKET_HEADER_LEN, ROUTER_LINK_P2P, ROUTER_LINK_STUB, ROUTER_LINK_TRANSIT, ROUTER_LINK_VL, ROUTER_LSA, RouterId, SUMMARY_BASE_ADDRESS, SUMMARY_LSA, VERSION

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(seqn = :init) ⇒ SequenceNumber

Returns a new instance of SequenceNumber.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/ie/sequence_number.rb', line 47

def initialize(seqn=:init)
  if seqn.is_a?(Symbol)
    if seqn == :max
      @seqn= MaxSequenceNumber
    elsif seqn == :init
      @seqn = InitialSequenceNumber
    elsif seqn == :reserved
      @seqn = N
    end 
  elsif seqn.is_a?(self.class)
    @seqn = seqn.to_I
  else
    @seqn=seqn
  end
  @seqn = [@seqn].pack('I')
end

Class Method Details

.initialObject



31
32
33
# File 'lib/ie/sequence_number.rb', line 31

def SequenceNumber.initial
  [N + 1].pack('I').unpack('i')[0]
end

.maxObject



35
36
37
# File 'lib/ie/sequence_number.rb', line 35

def SequenceNumber.max
  [N - 1].pack('I').unpack('i')[0]
end

.NObject



39
40
41
# File 'lib/ie/sequence_number.rb', line 39

def SequenceNumber.N
  [N].pack('I').unpack('i')[0]
end

.to_s(seqn) ⇒ Object



43
44
45
# File 'lib/ie/sequence_number.rb', line 43

def SequenceNumber.to_s(seqn)
  new(seqn).to_s
end

Instance Method Details

#+(num) ⇒ Object



79
80
81
82
83
# File 'lib/ie/sequence_number.rb', line 79

def +(num)
  seqn = (@seqn.unpack('i')[0]+num)
  @seqn = [seqn].pack('I')
  self
end

#-(num) ⇒ Object



91
92
93
# File 'lib/ie/sequence_number.rb', line 91

def -(num)
  self.+(-num)
end

#<=>(o) ⇒ Object



64
65
66
# File 'lib/ie/sequence_number.rb', line 64

def <=>(o)
  to_i <=> o.to_i
end

#encodeObject



95
96
97
# File 'lib/ie/sequence_number.rb', line 95

def encode
  [to_i].pack('N')
end

#incr(num = 1) ⇒ Object



85
86
87
88
89
# File 'lib/ie/sequence_number.rb', line 85

def incr(num=1)
  seqn = (@seqn.unpack('i')[0]+num)
  @seqn = [seqn].pack('I')
  self
end

#to_hashObject



99
100
101
# File 'lib/ie/sequence_number.rb', line 99

def to_hash
  to_I
end

#to_iObject



68
69
70
# File 'lib/ie/sequence_number.rb', line 68

def to_i
  @seqn.unpack('i')[0]
end

#to_IObject



71
72
73
# File 'lib/ie/sequence_number.rb', line 71

def to_I
  @seqn.unpack('I')[0]
end

#to_sObject



75
76
77
# File 'lib/ie/sequence_number.rb', line 75

def to_s
  "0x"+ sprintf("%08.8x", to_I)
end