interfacez 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8cd4cdba45bdc3c9ee5f65a733afdab9736e0a99b9f5f6cc56e2bff6e3f22392
4
- data.tar.gz: ab510eaabb3e5cada57f4f10a827eb131386acd1335dafff22024bf575a565f9
3
+ metadata.gz: 59fc474fefa0478ba81ba00f1ce41de6c9cc423c3f8e8296bbd5055a86825a76
4
+ data.tar.gz: 1da020117eabb38b8f44c5b3f3a0fc5d4c3f16d522d93b2529bcef04cc36865e
5
5
  SHA512:
6
- metadata.gz: dfb4a1c0c8ead706d0ada9427d695fd18c647a0b181699de62b3964a15a0407dfe1b41cddd7d96147e9986bf6e86a63ed7295c13ccccbb405057dc2983f8e0d9
7
- data.tar.gz: 321405b666b65a6c4b377fb8783b73be700ab260307dd9ff217871e1beab4cf029216472b2d46c44ea1944a0e061241bd735787072b181894ee27eafd22692b7
6
+ metadata.gz: 72c67db1a181fb6259292933559c083b8989053d8ffd9d47f775371890e402d82d9dbdb97a349cdbb5ac741025e486a561ae07c3a11f1a058ec0fd2ecd8a82b9
7
+ data.tar.gz: ca0754fa026185c20f7d09b243fe218e60bc82a5de3ec0cfa7207cada163b506863c911d86c82229a3c83ae7990a5e140f1f8ee181d9d14640d07743fe0d6115
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- interfacez (1.0.0)
4
+ interfacez (1.0.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  module Interfacez
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/interfacez.rb CHANGED
@@ -19,6 +19,25 @@ module Interfacez
19
19
  Interfacez.ipv6_loopbacks { |iface| return iface }
20
20
  end
21
21
 
22
+ # Check for any (ipv4 or ipv6) loopback interface.
23
+ def self.loopback?
24
+ Interfacez.ipv4_loopbacks { |iface| return true }
25
+ Interfacez.ipv6_loopbacks { |iface| return true }
26
+ return false
27
+ end
28
+
29
+ # Get all (ipv4 or ipv6) loopback interfaces.
30
+ def self.loopbacks
31
+ if block_given?
32
+ Interfacez.ipv4_loopbacks { |iface| yield iface }
33
+ Interfacez.ipv6_loopbacks { |iface| yield iface }
34
+ else
35
+ loopbacks = []
36
+ Interfacez.loopbacks { |l| loopbacks << l unless loopbacks.any?(l) }
37
+ return loopbacks
38
+ end
39
+ end
40
+
22
41
  # First available ipv4 loopback interface.
23
42
  def self.ipv4_loopback
24
43
  Interfacez.ipv4_loopbacks { |iface| return iface }
@@ -26,13 +45,16 @@ module Interfacez
26
45
 
27
46
  # All ipv4 loopback interfaces.
28
47
  def self.ipv4_loopbacks
29
- results = []
30
- raw_interface_addresses.each do |iface|
31
- next unless iface.addr.ipv4_loopback?
32
- yield iface.name if block_given?
33
- results << iface.name
48
+ if block_given?
49
+ raw_interface_addresses.each do |iface|
50
+ next unless iface.addr.ipv4_loopback?
51
+ yield iface.name if block_given?
52
+ end
53
+ else
54
+ results = []
55
+ Interfacez.ipv4_loopbacks { |l| results << l }
56
+ return results
34
57
  end
35
- return results
36
58
  end
37
59
 
38
60
  # First available ipv6 loopback interface.
@@ -42,13 +64,16 @@ module Interfacez
42
64
 
43
65
  # All ipv6 loopback interfaces.
44
66
  def self.ipv6_loopbacks
45
- results = []
46
- raw_interface_addresses.each do |iface|
47
- next unless iface.addr.ipv6_loopback?
48
- yield iface.name if block_given?
49
- results << iface.name
67
+ if block_given?
68
+ raw_interface_addresses.each do |iface|
69
+ next unless iface.addr.ipv6_loopback?
70
+ yield iface.name if block_given?
71
+ end
72
+ else
73
+ results = []
74
+ Interfacez.ipv4_loopbacks { |l| results << l }
75
+ return results
50
76
  end
51
- return results
52
77
  end
53
78
 
54
79
  # All network interface names available on system.
@@ -64,7 +89,8 @@ module Interfacez
64
89
 
65
90
  # Network interfaces with their ipv4 addresses, if they have
66
91
  # any asscoited with it.
67
- def self.ipv4_addresses
92
+ def self.ipv4_addresses(interface = nil)
93
+ return ipv4_addresses_of(interface) unless interface.nil?
68
94
  results = Hash.new()
69
95
  raw_interface_addresses.each do |iface|
70
96
  if iface.addr.ipv4?
@@ -80,9 +106,22 @@ module Interfacez
80
106
  return results
81
107
  end
82
108
 
109
+ # Return all ipv4 addresses of a given interface.
110
+ def self.ipv4_address_of(interface)
111
+ addresses = Interfacez.ipv4_addresses[interface]
112
+ return nil if addresses.nil?
113
+ return addresses[0]
114
+ end
115
+
116
+ # Return the first ipv4 address of a given interface.
117
+ def self.ipv4_addresses_of(interface)
118
+ return Interfacez.ipv4_addresses[interface] || []
119
+ end
120
+
83
121
  # Network interfaces with their ipv6 addresses, if they have
84
122
  # any asscoited with it.
85
- def self.ipv6_addresses
123
+ def self.ipv6_addresses(interface = nil)
124
+ return ipv6_addresses_of(interface) unless interface.nil?
86
125
  results = Hash.new()
87
126
  raw_interface_addresses.each do |iface|
88
127
  if iface.addr.ipv6?
@@ -98,6 +137,26 @@ module Interfacez
98
137
  return results
99
138
  end
100
139
 
140
+ # Return all available ipv6 addreses of a given interface.
141
+ def self.ipv6_addresses_of(interface)
142
+ return Interfacez.ipv4_addresses[interface] || []
143
+ end
144
+
145
+ # Return the first ipv6 address of a given interface.
146
+ def self.ipv6_address_of(interface)
147
+ addresses = Interfacez.ipv6_addresses_of(interface)
148
+ return nil if addresses.nil?
149
+ return addresses[0]
150
+ end
151
+
152
+ # Get index of network interface.
153
+ def self.index_of(interface)
154
+ raw_interface_addresses.each do |iface|
155
+ return iface.ifindex if iface.name == iface
156
+ end
157
+ return nil
158
+ end
159
+
101
160
  # :nodoc:
102
161
  def self.raw_interface_addresses
103
162
  Socket.getifaddrs
@@ -105,4 +164,5 @@ module Interfacez
105
164
  warn "Unable to get raw interface address list from Socket class"
106
165
  return []
107
166
  end
167
+
108
168
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interfacez
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kent 'picat' Gruber
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-03 00:00:00.000000000 Z
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler