nl-linux 0.2.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/.yardopts +5 -0
  4. data/CHANGELOG.md +8 -0
  5. data/Rakefile +27 -5
  6. data/generated/nl/linux/binder.rb +227 -19
  7. data/generated/nl/linux/conntrack.rb +1325 -365
  8. data/generated/nl/linux/dev_energymodel.rb +357 -66
  9. data/generated/nl/linux/devlink.rb +6310 -1859
  10. data/generated/nl/linux/dpll.rb +2202 -376
  11. data/generated/nl/linux/drm_ras.rb +312 -63
  12. data/generated/nl/linux/ethtool.rb +7555 -2447
  13. data/generated/nl/linux/fou.rb +381 -133
  14. data/generated/nl/linux/handshake.rb +340 -70
  15. data/generated/nl/linux/lockd.rb +132 -27
  16. data/generated/nl/linux/mptcp_pm.rb +773 -161
  17. data/generated/nl/linux/net_shaper.rb +892 -211
  18. data/generated/nl/linux/netdev.rb +2366 -518
  19. data/generated/nl/linux/nfsd.rb +1299 -317
  20. data/generated/nl/linux/nftables.rb +5351 -1533
  21. data/generated/nl/linux/nl80211.rb +4601 -882
  22. data/generated/nl/linux/nlctrl.rb +460 -117
  23. data/generated/nl/linux/ovpn.rb +1360 -262
  24. data/generated/nl/linux/ovs_datapath.rb +312 -98
  25. data/generated/nl/linux/ovs_flow.rb +1866 -358
  26. data/generated/nl/linux/ovs_packet.rb +331 -45
  27. data/generated/nl/linux/ovs_vport.rb +374 -123
  28. data/generated/nl/linux/psp.rb +1093 -201
  29. data/generated/nl/linux/rt_addr.rb +423 -165
  30. data/generated/nl/linux/rt_link.rb +6928 -1336
  31. data/generated/nl/linux/rt_neigh.rb +1063 -297
  32. data/generated/nl/linux/rt_route.rb +1112 -483
  33. data/generated/nl/linux/rt_rule.rb +931 -262
  34. data/generated/nl/linux/sunrpc_cache.rb +407 -82
  35. data/generated/nl/linux/tc.rb +10081 -1763
  36. data/generated/nl/linux/tcp_metrics.rb +388 -109
  37. data/generated/nl/linux/team.rb +350 -84
  38. data/generated/nl/linux/wireguard.rb +525 -96
  39. data/generated/nl/linux.rb +1 -0
  40. data/lib/nl/linux/nlctrl_resolver.rb +31 -0
  41. data/lib/nl/linux/version.rb +1 -1
  42. data/sig/generated/nl/linux/binder.rbs +366 -0
  43. data/sig/generated/nl/linux/conntrack.rbs +2787 -0
  44. data/sig/generated/nl/linux/dev_energymodel.rbs +636 -0
  45. data/sig/generated/nl/linux/devlink.rbs +12496 -0
  46. data/sig/generated/nl/linux/dpll.rbs +3461 -0
  47. data/sig/generated/nl/linux/drm_ras.rbs +553 -0
  48. data/sig/generated/nl/linux/ethtool.rbs +15291 -0
  49. data/sig/generated/nl/linux/fou.rbs +702 -0
  50. data/sig/generated/nl/linux/handshake.rbs +622 -0
  51. data/sig/generated/nl/linux/lockd.rbs +234 -0
  52. data/sig/generated/nl/linux/mptcp_pm.rbs +1511 -0
  53. data/sig/generated/nl/linux/net_shaper.rbs +1645 -0
  54. data/sig/generated/nl/linux/netdev.rbs +4187 -0
  55. data/sig/generated/nl/linux/nfsd.rbs +2520 -0
  56. data/sig/generated/nl/linux/nftables.rbs +10304 -0
  57. data/sig/generated/nl/linux/nl80211.rbs +9786 -0
  58. data/sig/generated/nl/linux/nlctrl.rbs +944 -0
  59. data/sig/generated/nl/linux/nlctrl_resolver.rbs +20 -0
  60. data/sig/generated/nl/linux/ovpn.rbs +2564 -0
  61. data/sig/generated/nl/linux/ovs_datapath.rbs +640 -0
  62. data/sig/generated/nl/linux/ovs_flow.rbs +3659 -0
  63. data/sig/generated/nl/linux/ovs_packet.rbs +540 -0
  64. data/sig/generated/nl/linux/ovs_vport.rbs +777 -0
  65. data/sig/generated/nl/linux/psp.rbs +1846 -0
  66. data/sig/generated/nl/linux/rt_addr.rbs +866 -0
  67. data/sig/generated/nl/linux/rt_link.rbs +13438 -0
  68. data/sig/generated/nl/linux/rt_neigh.rbs +2124 -0
  69. data/sig/generated/nl/linux/rt_route.rbs +2218 -0
  70. data/sig/generated/nl/linux/rt_rule.rbs +1726 -0
  71. data/sig/generated/nl/linux/sunrpc_cache.rbs +739 -0
  72. data/sig/generated/nl/linux/tc.rbs +19931 -0
  73. data/sig/generated/nl/linux/tcp_metrics.rbs +740 -0
  74. data/sig/generated/nl/linux/team.rbs +733 -0
  75. data/sig/generated/nl/linux/version.rbs +7 -0
  76. data/sig/generated/nl/linux/wireguard.rbs +1006 -0
  77. data/sig/generated/nl/linux.rbs +6 -0
  78. data/sig/generated/nl-linux.rbs +2 -0
  79. metadata +51 -10
@@ -1,32 +1,65 @@
1
1
  # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2
+ #
3
+ # This file is based on Documentation/netlink/specs/ovs_vport.yaml from Linux v7.2.
2
4
  #--
3
5
  # frozen_string_literal: true
4
- # rbs_inline: enabled
5
6
  # This code is generated by Ynl::Generator. DO NOT EDIT.
6
7
  require 'nl'
7
8
  module Nl; module Linux
8
9
  # OVS vport configuration over generic netlink.
9
- class OvsVport < ::Nl::Family
10
+ class OvsVport < ::Nl::Genl::Family
10
11
  NAME = "ovs_vport"
11
- PROTOCOL = Ractor.make_shareable(::Nl::Protocols::Genl.new("ovs_vport"))
12
+ VERSION = 2
13
+ # @rbs (?resolver: ^(::Nl::Genl::Client, ::String) -> ::Nl::Genl::FamilyInfo, ?executor: executor?, ?notification_capacity: ::Integer?) -> (::Nl::Family::Session & instance)
14
+ # @rbs | [R] (?resolver: ^(::Nl::Genl::Client, ::String) -> ::Nl::Genl::FamilyInfo, ?executor: executor?, ?notification_capacity: ::Integer?) { (instance) -> R } -> R
15
+ # @overload open(resolver: ::Nl::Linux::DEFAULT_RESOLVER, executor: nil, notification_capacity: DEFAULT_NOTIFICATION_CAPACITY)
16
+ # @param [#call] resolver
17
+ # @param [Symbol, nil] executor
18
+ # @param [Integer, nil] notification_capacity
19
+ # @return [OvsVport]
20
+ # @overload open(resolver: ::Nl::Linux::DEFAULT_RESOLVER, executor: nil, notification_capacity: DEFAULT_NOTIFICATION_CAPACITY, &block)
21
+ # @param [#call] resolver
22
+ # @param [Symbol, nil] executor
23
+ # @param [Integer, nil] notification_capacity
24
+ # @yieldparam [OvsVport] family
25
+ # @return [Object] the result of the block
26
+ def self.open(resolver: ::Nl::Linux::DEFAULT_RESOLVER, executor: nil, notification_capacity: DEFAULT_NOTIFICATION_CAPACITY)
27
+ super
28
+ end
29
+ # @private
30
+ MCAST_GROUPS = Ractor.make_shareable({:"ovs_vport" => ::Nl::McastGroup.new("ovs_vport", nil)}) #: Hash[::Symbol, ::Nl::McastGroup]
31
+ module Enums
32
+ module VportType
33
+ Unspec = 0
34
+ Netdev = 1
35
+ Internal = 2
36
+ Gre = 3
37
+ Vxlan = 4
38
+ Geneve = 5
39
+ end
40
+ end
12
41
  module Structs
13
42
  OvsHeader = Struct.new(
14
43
  :"dp_ifindex", #: ::Integer
15
44
  )
16
45
  class OvsHeader
17
- # :nodoc:
18
- MEMBERS = Ractor.make_shareable({dp_ifindex: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)}) #: Hash[::Symbol, ::Nl::_DataType]
46
+ # @!attribute [rw] dp_ifindex
47
+ # @return [Integer]
48
+ # @private
49
+ MEMBERS = Ractor.make_shareable({dp_ifindex: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)}) #: Hash[::Symbol, ::Nl::_DataType]
19
50
  # Decodes the struct.
20
- #--
21
51
  # @rbs decoder: ::Nl::Decoder
22
52
  # @rbs return: instance
53
+ # @param [Nl::Decoder] decoder
54
+ # @return [self]
23
55
  def self.decode(decoder)
24
56
  self.new(*MEMBERS.map {|name, datatype| datatype.decode(decoder) })
25
57
  end
26
58
  # Encodes the struct.
27
- #--
28
59
  # @rbs encoder: ::Nl::Encoder
29
60
  # @rbs return: void
61
+ # @param [Nl::Encoder] encoder
62
+ # @return [void]
30
63
  def encode(encoder)
31
64
  MEMBERS.each {|name, datatype| datatype.encode(encoder, self.public_send(name)) }
32
65
  end
@@ -42,350 +75,568 @@ class OvsVport < ::Nl::Family
42
75
  :"tx_dropped", #: ::Integer
43
76
  )
44
77
  class OvsVportStats
45
- # :nodoc:
46
- MEMBERS = Ractor.make_shareable({rx_packets: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_packets: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_bytes: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_bytes: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_errors: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_errors: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_dropped: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_dropped: ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)}) #: Hash[::Symbol, ::Nl::_DataType]
78
+ # @!attribute [rw] rx_packets
79
+ # @return [Integer]
80
+ # @!attribute [rw] tx_packets
81
+ # @return [Integer]
82
+ # @!attribute [rw] rx_bytes
83
+ # @return [Integer]
84
+ # @!attribute [rw] tx_bytes
85
+ # @return [Integer]
86
+ # @!attribute [rw] rx_errors
87
+ # @return [Integer]
88
+ # @!attribute [rw] tx_errors
89
+ # @return [Integer]
90
+ # @!attribute [rw] rx_dropped
91
+ # @return [Integer]
92
+ # @!attribute [rw] tx_dropped
93
+ # @return [Integer]
94
+ # @private
95
+ MEMBERS = Ractor.make_shareable({rx_packets: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_packets: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_bytes: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_bytes: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_errors: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_errors: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), rx_dropped: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil), tx_dropped: ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)}) #: Hash[::Symbol, ::Nl::_DataType]
47
96
  # Decodes the struct.
48
- #--
49
97
  # @rbs decoder: ::Nl::Decoder
50
98
  # @rbs return: instance
99
+ # @param [Nl::Decoder] decoder
100
+ # @return [self]
51
101
  def self.decode(decoder)
52
102
  self.new(*MEMBERS.map {|name, datatype| datatype.decode(decoder) })
53
103
  end
54
104
  # Encodes the struct.
55
- #--
56
105
  # @rbs encoder: ::Nl::Encoder
57
106
  # @rbs return: void
107
+ # @param [Nl::Encoder] encoder
108
+ # @return [void]
58
109
  def encode(encoder)
59
110
  MEMBERS.each {|name, datatype| datatype.encode(encoder, self.public_send(name)) }
60
111
  end
61
112
  end
62
113
  end
63
114
  module AttributeSets
64
- class VportOptions < ::Nl::Protocols::Genl::AttributeSet
115
+ class VportOptions < ::Nl::AttributeSet
65
116
  # Abstract class
66
- class Attribute < ::Nl::Protocols::Genl::AttributeSet::Attribute
117
+ class Attribute < ::Nl::AttributeSet::Attribute
67
118
  end
68
119
  class DstPort < Attribute
69
120
  TYPE = 1
70
121
  NAME = :"dst_port"
71
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
122
+ # @private
123
+ ORDER = 0
124
+ # @private
125
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
72
126
  end
73
127
  class Extension < Attribute
74
128
  TYPE = 2
75
129
  NAME = :"extension"
76
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
130
+ # @private
131
+ ORDER = 1
132
+ # @private
133
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
77
134
  end
78
- # :nodoc:
135
+ # @private
79
136
  BY_NAME = Ractor.make_shareable({:"dst_port" => DstPort, :"extension" => Extension}) #: Hash[::Symbol, Attribute]
80
- # :nodoc:
137
+ # @private
81
138
  BY_TYPE = Ractor.make_shareable({1 => DstPort, 2 => Extension}) #: Hash[::Integer, Attribute]
139
+ # @rbs return: ::Integer
140
+ # @return [Integer]
141
+ # @see DstPort
142
+ def dst_port; self[:"dst_port"]&.value; end
143
+ # @rbs return: ::Integer
144
+ # @return [Integer]
145
+ # @see Extension
146
+ def extension; self[:"extension"]&.value; end
82
147
  class << self
83
148
  # Looks up Attribute class by name.
84
- #--
85
149
  # @rbs name: Symbol
86
150
  # @rbs return: Attribute
151
+ # @param [Symbol] name
152
+ # @return [Attribute]
87
153
  def by_name(name); BY_NAME.fetch(name); end
88
154
  # Looks up Attribute class by type value.
89
- #--
90
155
  # @rbs type: Integer
91
156
  # @rbs return: Attribute
157
+ # @param [Integer] type
158
+ # @return [Attribute]
92
159
  def by_type(type); BY_TYPE.fetch(type); end
93
160
  end
94
161
  end
95
- class UpcallStats < ::Nl::Protocols::Genl::AttributeSet
162
+ class UpcallStats < ::Nl::AttributeSet
96
163
  # Abstract class
97
- class Attribute < ::Nl::Protocols::Genl::AttributeSet::Attribute
164
+ class Attribute < ::Nl::AttributeSet::Attribute
98
165
  end
99
166
  class Success < Attribute
100
167
  TYPE = 0
101
168
  NAME = :"success"
102
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)
169
+ # @private
170
+ ORDER = 0
171
+ # @private
172
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)
103
173
  end
104
174
  class Fail < Attribute
105
175
  TYPE = 1
106
176
  NAME = :"fail"
107
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)
177
+ # @private
178
+ ORDER = 1
179
+ # @private
180
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U64, check: nil)
108
181
  end
109
- # :nodoc:
182
+ # @private
110
183
  BY_NAME = Ractor.make_shareable({:"success" => Success, :"fail" => Fail}) #: Hash[::Symbol, Attribute]
111
- # :nodoc:
184
+ # @private
112
185
  BY_TYPE = Ractor.make_shareable({0 => Success, 1 => Fail}) #: Hash[::Integer, Attribute]
186
+ # @rbs return: ::Integer
187
+ # @return [Integer]
188
+ # @see Success
189
+ def success; self[:"success"]&.value; end
190
+ # @rbs return: ::Integer
191
+ # @return [Integer]
192
+ # @see Fail
193
+ def fail; self[:"fail"]&.value; end
113
194
  class << self
114
195
  # Looks up Attribute class by name.
115
- #--
116
196
  # @rbs name: Symbol
117
197
  # @rbs return: Attribute
198
+ # @param [Symbol] name
199
+ # @return [Attribute]
118
200
  def by_name(name); BY_NAME.fetch(name); end
119
201
  # Looks up Attribute class by type value.
120
- #--
121
202
  # @rbs type: Integer
122
203
  # @rbs return: Attribute
204
+ # @param [Integer] type
205
+ # @return [Attribute]
123
206
  def by_type(type); BY_TYPE.fetch(type); end
124
207
  end
125
208
  end
126
- class Vport < ::Nl::Protocols::Genl::AttributeSet
209
+ class Vport < ::Nl::AttributeSet
127
210
  # Abstract class
128
- class Attribute < ::Nl::Protocols::Genl::AttributeSet::Attribute
211
+ class Attribute < ::Nl::AttributeSet::Attribute
129
212
  end
130
213
  class PortNo < Attribute
131
214
  TYPE = 1
132
215
  NAME = :"port_no"
133
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
216
+ # @private
217
+ ORDER = 0
218
+ # @private
219
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
134
220
  end
221
+ # Known enum values are defined in {Enums::VportType}.
135
222
  class Type < Attribute
136
223
  TYPE = 2
137
224
  NAME = :"type"
138
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
225
+ # @private
226
+ ORDER = 1
227
+ # @private
228
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
139
229
  end
140
230
  class Name < Attribute
141
231
  TYPE = 3
142
232
  NAME = :"name"
143
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::String.new(check: nil)
233
+ # @private
234
+ ORDER = 2
235
+ # @private
236
+ DATATYPE = ::Nl::DataTypes::String.new(check: nil)
144
237
  end
145
238
  class Options < Attribute
146
239
  TYPE = 4
147
240
  NAME = :"options"
241
+ # @private
242
+ ORDER = 3
148
243
  end
149
244
  class UpcallPid < Attribute
150
245
  TYPE = 5
151
246
  NAME = :"upcall_pid"
152
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Binary.new(check: nil)
247
+ # @private
248
+ ORDER = 4
249
+ # @private
250
+ DATATYPE = ::Nl::DataTypes::PackedArray.new(::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil), check: nil)
153
251
  end
154
252
  class Stats < Attribute
155
253
  TYPE = 6
156
254
  NAME = :"stats"
157
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Binary.new(check: nil)
255
+ # @private
256
+ ORDER = 5
257
+ # @private
258
+ DATATYPE = ::Nl::DataTypes::Struct.new(Structs::OvsVportStats, check: nil, consume_remaining: true)
158
259
  end
159
260
  class Ifindex < Attribute
160
261
  TYPE = 8
161
262
  NAME = :"ifindex"
162
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
263
+ # @private
264
+ ORDER = 6
265
+ # @private
266
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
163
267
  end
164
268
  class Netnsid < Attribute
165
269
  TYPE = 9
166
270
  NAME = :"netnsid"
167
- DATATYPE = ::Nl::Protocols::Genl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
271
+ # @private
272
+ ORDER = 7
273
+ # @private
274
+ DATATYPE = ::Nl::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
168
275
  end
169
276
  class UpcallStats < Attribute
170
277
  TYPE = 10
171
278
  NAME = :"upcall_stats"
279
+ # @private
280
+ ORDER = 8
172
281
  end
173
- # :nodoc:
282
+ # @private
174
283
  BY_NAME = Ractor.make_shareable({:"port_no" => PortNo, :"type" => Type, :"name" => Name, :"options" => Options, :"upcall_pid" => UpcallPid, :"stats" => Stats, :"ifindex" => Ifindex, :"netnsid" => Netnsid, :"upcall_stats" => UpcallStats}) #: Hash[::Symbol, Attribute]
175
- # :nodoc:
284
+ # @private
176
285
  BY_TYPE = Ractor.make_shareable({1 => PortNo, 2 => Type, 3 => Name, 4 => Options, 5 => UpcallPid, 6 => Stats, 8 => Ifindex, 9 => Netnsid, 10 => UpcallStats}) #: Hash[::Integer, Attribute]
286
+ # @rbs return: ::Integer
287
+ # @return [Integer]
288
+ # @see PortNo
289
+ def port_no; self[:"port_no"]&.value; end
290
+ # Known enum values are defined in {Enums::VportType}.
291
+ # @rbs return: ::Integer
292
+ # @return [Integer]
293
+ # @see Type
294
+ def type; self[:"type"]&.value; end
295
+ # @rbs return: ::String
296
+ # @return [String]
297
+ # @see Name
298
+ def name; self[:"name"]&.value; end
299
+ # @rbs return: AttributeSets::VportOptions
300
+ # @return [AttributeSets::VportOptions]
301
+ # @see Options
302
+ def options; self[:"options"]&.value; end
303
+ # @rbs return: ::Array[::Integer]
304
+ # @return [Array<Integer>]
305
+ # @see UpcallPid
306
+ def upcall_pid; self[:"upcall_pid"]&.value; end
307
+ # @rbs return: Structs::OvsVportStats
308
+ # @return [Structs::OvsVportStats]
309
+ # @see Stats
310
+ def stats; self[:"stats"]&.value; end
311
+ # @rbs return: ::Integer
312
+ # @return [Integer]
313
+ # @see Ifindex
314
+ def ifindex; self[:"ifindex"]&.value; end
315
+ # @rbs return: ::Integer
316
+ # @return [Integer]
317
+ # @see Netnsid
318
+ def netnsid; self[:"netnsid"]&.value; end
319
+ # @rbs return: AttributeSets::UpcallStats
320
+ # @return [AttributeSets::UpcallStats]
321
+ # @see UpcallStats
322
+ def upcall_stats; self[:"upcall_stats"]&.value; end
177
323
  class << self
178
324
  # Looks up Attribute class by name.
179
- #--
180
325
  # @rbs name: Symbol
181
326
  # @rbs return: Attribute
327
+ # @param [Symbol] name
328
+ # @return [Attribute]
182
329
  def by_name(name); BY_NAME.fetch(name); end
183
330
  # Looks up Attribute class by type value.
184
- #--
185
331
  # @rbs type: Integer
186
332
  # @rbs return: Attribute
333
+ # @param [Integer] type
334
+ # @return [Attribute]
187
335
  def by_type(type); BY_TYPE.fetch(type); end
188
336
  end
189
337
  end
190
- Vport::Options::DATATYPE = ::Nl::Protocols::Genl::DataTypes::NestedAttributes.new(VportOptions)
191
- Vport::UpcallStats::DATATYPE = ::Nl::Protocols::Genl::DataTypes::NestedAttributes.new(UpcallStats)
338
+ # @private
339
+ Vport::Options::DATATYPE = ::Nl::DataTypes::NestedAttributes.new(AttributeSets::VportOptions, selector_bindings: Ractor.make_shareable([]))
340
+ # @private
341
+ Vport::UpcallStats::DATATYPE = ::Nl::DataTypes::NestedAttributes.new(AttributeSets::UpcallStats, selector_bindings: Ractor.make_shareable([]))
192
342
  end
193
343
  module Messages
194
344
  # Create a new OVS vport
195
- class DoNewRequest < ::Nl::Protocols::Genl::Message
345
+ class DoNewRequest < ::Nl::Genl::Message
196
346
  TYPE = 1
197
347
  FIXED_HEADER = Structs::OvsHeader
198
348
  ATTRIBUTE_SET = AttributeSets::Vport
199
349
  ATTRIBUTES = Ractor.make_shareable(%i[type name options upcall_pid ifindex])
200
- # Gets the value of `dp-ifindex` field in the message's fixed header.
201
- #--
202
350
  # @rbs return: ::Integer
351
+ # @return [Integer]
203
352
  def dp_ifindex; fixed_header.dp_ifindex; end
204
- # Gets the value of `type` attribute in the message.
205
- #--
353
+ # Known enum values are defined in {Enums::VportType}.
206
354
  # @rbs return: ::Integer
355
+ # @return [Integer]
356
+ # @see AttributeSets::Vport::Type
207
357
  def type; attributes[:"type"]&.value; end
208
- # Gets the value of `name` attribute in the message.
209
- #--
210
358
  # @rbs return: ::String
359
+ # @return [String]
360
+ # @see AttributeSets::Vport::Name
211
361
  def name; attributes[:"name"]&.value; end
212
- # Gets the value of `options` attribute in the message.
213
- #--
214
362
  # @rbs return: AttributeSets::VportOptions
363
+ # @return [AttributeSets::VportOptions]
364
+ # @see AttributeSets::Vport::Options
215
365
  def options; attributes[:"options"]&.value; end
216
- # Gets the value of `upcall-pid` attribute in the message.
217
- #--
218
- # @rbs return: untyped
366
+ # @rbs return: ::Array[::Integer]
367
+ # @return [Array<Integer>]
368
+ # @see AttributeSets::Vport::UpcallPid
219
369
  def upcall_pid; attributes[:"upcall_pid"]&.value; end
220
- # Gets the value of `ifindex` attribute in the message.
221
- #--
222
370
  # @rbs return: ::Integer
371
+ # @return [Integer]
372
+ # @see AttributeSets::Vport::Ifindex
223
373
  def ifindex; attributes[:"ifindex"]&.value; end
224
374
  end
225
375
  # Delete existing OVS vport from a data path
226
- class DoDelRequest < ::Nl::Protocols::Genl::Message
376
+ class DoDelRequest < ::Nl::Genl::Message
227
377
  TYPE = 2
228
378
  FIXED_HEADER = Structs::OvsHeader
229
379
  ATTRIBUTE_SET = AttributeSets::Vport
230
380
  ATTRIBUTES = Ractor.make_shareable(%i[port_no type name])
231
- # Gets the value of `dp-ifindex` field in the message's fixed header.
232
- #--
233
381
  # @rbs return: ::Integer
382
+ # @return [Integer]
234
383
  def dp_ifindex; fixed_header.dp_ifindex; end
235
- # Gets the value of `port-no` attribute in the message.
236
- #--
237
384
  # @rbs return: ::Integer
385
+ # @return [Integer]
386
+ # @see AttributeSets::Vport::PortNo
238
387
  def port_no; attributes[:"port_no"]&.value; end
239
- # Gets the value of `type` attribute in the message.
240
- #--
388
+ # Known enum values are defined in {Enums::VportType}.
241
389
  # @rbs return: ::Integer
390
+ # @return [Integer]
391
+ # @see AttributeSets::Vport::Type
242
392
  def type; attributes[:"type"]&.value; end
243
- # Gets the value of `name` attribute in the message.
244
- #--
245
393
  # @rbs return: ::String
394
+ # @return [String]
395
+ # @see AttributeSets::Vport::Name
246
396
  def name; attributes[:"name"]&.value; end
247
397
  end
248
398
  # Get / dump OVS vport configuration and state
249
- class DoGetRequest < ::Nl::Protocols::Genl::Message
399
+ class DoGetRequest < ::Nl::Genl::Message
250
400
  TYPE = 3
251
401
  FIXED_HEADER = Structs::OvsHeader
252
402
  ATTRIBUTE_SET = AttributeSets::Vport
253
403
  ATTRIBUTES = Ractor.make_shareable(%i[name])
254
- # Gets the value of `dp-ifindex` field in the message's fixed header.
255
- #--
256
404
  # @rbs return: ::Integer
405
+ # @return [Integer]
257
406
  def dp_ifindex; fixed_header.dp_ifindex; end
258
- # Gets the value of `name` attribute in the message.
259
- #--
260
407
  # @rbs return: ::String
408
+ # @return [String]
409
+ # @see AttributeSets::Vport::Name
261
410
  def name; attributes[:"name"]&.value; end
262
411
  end
263
412
  # Get / dump OVS vport configuration and state
264
- class DoGetReply < ::Nl::Protocols::Genl::Message
413
+ class DoGetReply < ::Nl::Genl::Message
265
414
  TYPE = 3
266
415
  FIXED_HEADER = Structs::OvsHeader
267
416
  ATTRIBUTE_SET = AttributeSets::Vport
268
417
  ATTRIBUTES = Ractor.make_shareable(%i[port_no type name upcall_pid stats ifindex netnsid upcall_stats])
269
- # Gets the value of `dp-ifindex` field in the message's fixed header.
270
- #--
271
418
  # @rbs return: ::Integer
419
+ # @return [Integer]
272
420
  def dp_ifindex; fixed_header.dp_ifindex; end
273
- # Gets the value of `port-no` attribute in the message.
274
- #--
275
421
  # @rbs return: ::Integer
422
+ # @return [Integer]
423
+ # @see AttributeSets::Vport::PortNo
276
424
  def port_no; attributes[:"port_no"]&.value; end
277
- # Gets the value of `type` attribute in the message.
278
- #--
425
+ # Known enum values are defined in {Enums::VportType}.
279
426
  # @rbs return: ::Integer
427
+ # @return [Integer]
428
+ # @see AttributeSets::Vport::Type
280
429
  def type; attributes[:"type"]&.value; end
281
- # Gets the value of `name` attribute in the message.
282
- #--
283
430
  # @rbs return: ::String
431
+ # @return [String]
432
+ # @see AttributeSets::Vport::Name
284
433
  def name; attributes[:"name"]&.value; end
285
- # Gets the value of `upcall-pid` attribute in the message.
286
- #--
287
- # @rbs return: untyped
434
+ # @rbs return: ::Array[::Integer]
435
+ # @return [Array<Integer>]
436
+ # @see AttributeSets::Vport::UpcallPid
288
437
  def upcall_pid; attributes[:"upcall_pid"]&.value; end
289
- # Gets the value of `stats` attribute in the message.
290
- #--
291
- # @rbs return: untyped
438
+ # @rbs return: Structs::OvsVportStats
439
+ # @return [Structs::OvsVportStats]
440
+ # @see AttributeSets::Vport::Stats
292
441
  def stats; attributes[:"stats"]&.value; end
293
- # Gets the value of `ifindex` attribute in the message.
294
- #--
295
442
  # @rbs return: ::Integer
443
+ # @return [Integer]
444
+ # @see AttributeSets::Vport::Ifindex
296
445
  def ifindex; attributes[:"ifindex"]&.value; end
297
- # Gets the value of `netnsid` attribute in the message.
298
- #--
299
446
  # @rbs return: ::Integer
447
+ # @return [Integer]
448
+ # @see AttributeSets::Vport::Netnsid
300
449
  def netnsid; attributes[:"netnsid"]&.value; end
301
- # Gets the value of `upcall-stats` attribute in the message.
302
- #--
303
450
  # @rbs return: AttributeSets::UpcallStats
451
+ # @return [AttributeSets::UpcallStats]
452
+ # @see AttributeSets::Vport::UpcallStats
304
453
  def upcall_stats; attributes[:"upcall_stats"]&.value; end
305
454
  end
306
455
  # Get / dump OVS vport configuration and state
307
- class DumpGetRequest < ::Nl::Protocols::Genl::Message
456
+ class DumpGetRequest < ::Nl::Genl::Message
308
457
  TYPE = 3
309
458
  FIXED_HEADER = Structs::OvsHeader
310
459
  ATTRIBUTE_SET = AttributeSets::Vport
311
460
  ATTRIBUTES = Ractor.make_shareable(%i[name])
312
- # Gets the value of `dp-ifindex` field in the message's fixed header.
313
- #--
314
461
  # @rbs return: ::Integer
462
+ # @return [Integer]
315
463
  def dp_ifindex; fixed_header.dp_ifindex; end
316
- # Gets the value of `name` attribute in the message.
317
- #--
318
464
  # @rbs return: ::String
465
+ # @return [String]
466
+ # @see AttributeSets::Vport::Name
319
467
  def name; attributes[:"name"]&.value; end
320
468
  end
321
469
  # Get / dump OVS vport configuration and state
322
- class DumpGetReply < ::Nl::Protocols::Genl::Message
470
+ class DumpGetReply < ::Nl::Genl::Message
323
471
  TYPE = 3
324
472
  FIXED_HEADER = Structs::OvsHeader
325
473
  ATTRIBUTE_SET = AttributeSets::Vport
326
474
  ATTRIBUTES = Ractor.make_shareable(%i[port_no type name upcall_pid stats ifindex netnsid upcall_stats])
327
- # Gets the value of `dp-ifindex` field in the message's fixed header.
328
- #--
329
475
  # @rbs return: ::Integer
476
+ # @return [Integer]
330
477
  def dp_ifindex; fixed_header.dp_ifindex; end
331
- # Gets the value of `port-no` attribute in the message.
332
- #--
333
478
  # @rbs return: ::Integer
479
+ # @return [Integer]
480
+ # @see AttributeSets::Vport::PortNo
334
481
  def port_no; attributes[:"port_no"]&.value; end
335
- # Gets the value of `type` attribute in the message.
336
- #--
482
+ # Known enum values are defined in {Enums::VportType}.
337
483
  # @rbs return: ::Integer
484
+ # @return [Integer]
485
+ # @see AttributeSets::Vport::Type
338
486
  def type; attributes[:"type"]&.value; end
339
- # Gets the value of `name` attribute in the message.
340
- #--
341
487
  # @rbs return: ::String
488
+ # @return [String]
489
+ # @see AttributeSets::Vport::Name
342
490
  def name; attributes[:"name"]&.value; end
343
- # Gets the value of `upcall-pid` attribute in the message.
344
- #--
345
- # @rbs return: untyped
491
+ # @rbs return: ::Array[::Integer]
492
+ # @return [Array<Integer>]
493
+ # @see AttributeSets::Vport::UpcallPid
346
494
  def upcall_pid; attributes[:"upcall_pid"]&.value; end
347
- # Gets the value of `stats` attribute in the message.
348
- #--
349
- # @rbs return: untyped
495
+ # @rbs return: Structs::OvsVportStats
496
+ # @return [Structs::OvsVportStats]
497
+ # @see AttributeSets::Vport::Stats
350
498
  def stats; attributes[:"stats"]&.value; end
351
- # Gets the value of `ifindex` attribute in the message.
352
- #--
353
499
  # @rbs return: ::Integer
500
+ # @return [Integer]
501
+ # @see AttributeSets::Vport::Ifindex
354
502
  def ifindex; attributes[:"ifindex"]&.value; end
355
- # Gets the value of `netnsid` attribute in the message.
356
- #--
357
503
  # @rbs return: ::Integer
504
+ # @return [Integer]
505
+ # @see AttributeSets::Vport::Netnsid
358
506
  def netnsid; attributes[:"netnsid"]&.value; end
359
- # Gets the value of `upcall-stats` attribute in the message.
360
- #--
361
507
  # @rbs return: AttributeSets::UpcallStats
508
+ # @return [AttributeSets::UpcallStats]
509
+ # @see AttributeSets::Vport::UpcallStats
362
510
  def upcall_stats; attributes[:"upcall_stats"]&.value; end
363
511
  end
364
512
  end
513
+ module Notifications
514
+ end
515
+ # @private
516
+ NOTIFICATIONS = Ractor.make_shareable({}) #: Hash[::Integer, ::Class]
365
517
  # Create a new OVS vport
366
- #--
367
- # @rbs (?dp_ifindex: ::Integer, ?type: ::Integer, ?name: ::String, ?options: AttributeSets::VportOptions, ?upcall_pid: untyped, ?ifindex: ::Integer) -> void
518
+ # @rbs (?dp_ifindex: ::Integer, ?type: ::Integer, ?name: ::String, ?options: (AttributeSets::VportOptions | ::Hash[::Symbol, untyped]), ?upcall_pid: ::Array[::Integer], ?ifindex: ::Integer) -> void
519
+ # @param [Hash] args
520
+ # @option args [Integer] dp_ifindex
521
+ # @option args [Integer] type Known enum values are defined in {Enums::VportType}.
522
+ # @option args [String] name
523
+ # @option args [AttributeSets::VportOptions, Hash<Symbol, Object>] options
524
+ # @option args [Array<Integer>] upcall_pid
525
+ # @option args [Integer] ifindex
526
+ # @return [void]
527
+ # @see Messages::DoNewRequest
368
528
  def do_new(**args)
369
529
  exchange_message(:"do", Messages::DoNewRequest, nil, args)
370
530
  end
371
531
  # Delete existing OVS vport from a data path
372
- #--
373
532
  # @rbs (?dp_ifindex: ::Integer, ?port_no: ::Integer, ?type: ::Integer, ?name: ::String) -> void
533
+ # @param [Hash] args
534
+ # @option args [Integer] dp_ifindex
535
+ # @option args [Integer] port_no
536
+ # @option args [Integer] type Known enum values are defined in {Enums::VportType}.
537
+ # @option args [String] name
538
+ # @return [void]
539
+ # @see Messages::DoDelRequest
374
540
  def do_del(**args)
375
541
  exchange_message(:"do", Messages::DoDelRequest, nil, args)
376
542
  end
377
543
  # Get / dump OVS vport configuration and state
378
- #--
379
544
  # @rbs (?dp_ifindex: ::Integer, ?name: ::String) -> Messages::DoGetReply
545
+ # @param [Hash] args
546
+ # @option args [Integer] dp_ifindex
547
+ # @option args [String] name
548
+ # @return [Messages::DoGetReply]
549
+ # @see Messages::DoGetRequest
380
550
  def do_get(**args)
381
551
  exchange_message(:"do", Messages::DoGetRequest, Messages::DoGetReply, args)
382
552
  end
383
553
  # Get / dump OVS vport configuration and state
384
- #--
385
- # @rbs (?dp_ifindex: ::Integer, ?name: ::String) -> Enumerable[Messages::DumpGetReply]
554
+ # @rbs (?dp_ifindex: ::Integer, ?name: ::String) -> Array[Messages::DumpGetReply]
386
555
  # | (?dp_ifindex: ::Integer, ?name: ::String) { (Messages::DumpGetReply) -> void } -> void
556
+ # @overload dump_get(**args)
557
+ # Returns an array when no block is given.
558
+ # @param [Hash] args
559
+ # @option args [Integer] dp_ifindex
560
+ # @option args [String] name
561
+ # @return [Array<Messages::DumpGetReply>]
562
+ # @overload dump_get(**args, &block)
563
+ # Yields each reply when a block is given.
564
+ # @param [Hash] args
565
+ # @option args [Integer] dp_ifindex
566
+ # @option args [String] name
567
+ # @yieldparam [Messages::DumpGetReply] reply
568
+ # @return [void]
569
+ # @see Messages::DumpGetRequest
387
570
  def dump_get(**args, &block)
388
571
  exchange_message(:"dump", Messages::DumpGetRequest, Messages::DumpGetReply, args, &block)
389
572
  end
573
+ class AsyncOperations
574
+ # @private
575
+ def initialize(&exchange)
576
+ @exchange = exchange
577
+ end
578
+ # Create a new OVS vport
579
+ # @rbs (?dp_ifindex: ::Integer, ?type: ::Integer, ?name: ::String, ?options: (AttributeSets::VportOptions | ::Hash[::Symbol, untyped]), ?upcall_pid: ::Array[::Integer], ?ifindex: ::Integer) -> ::Nl::Async::Future[void]
580
+ # @param [Hash] args
581
+ # @option args [Integer] dp_ifindex
582
+ # @option args [Integer] type Known enum values are defined in {Enums::VportType}.
583
+ # @option args [String] name
584
+ # @option args [AttributeSets::VportOptions, Hash<Symbol, Object>] options
585
+ # @option args [Array<Integer>] upcall_pid
586
+ # @option args [Integer] ifindex
587
+ # @return [Nl::Async::Future<void>]
588
+ # @see Messages::DoNewRequest
589
+ def do_new(**args)
590
+ @exchange.call(:"do", Messages::DoNewRequest, nil, args)
591
+ end
592
+ # Delete existing OVS vport from a data path
593
+ # @rbs (?dp_ifindex: ::Integer, ?port_no: ::Integer, ?type: ::Integer, ?name: ::String) -> ::Nl::Async::Future[void]
594
+ # @param [Hash] args
595
+ # @option args [Integer] dp_ifindex
596
+ # @option args [Integer] port_no
597
+ # @option args [Integer] type Known enum values are defined in {Enums::VportType}.
598
+ # @option args [String] name
599
+ # @return [Nl::Async::Future<void>]
600
+ # @see Messages::DoDelRequest
601
+ def do_del(**args)
602
+ @exchange.call(:"do", Messages::DoDelRequest, nil, args)
603
+ end
604
+ # Get / dump OVS vport configuration and state
605
+ # @rbs (?dp_ifindex: ::Integer, ?name: ::String) -> ::Nl::Async::Future[Messages::DoGetReply]
606
+ # @param [Hash] args
607
+ # @option args [Integer] dp_ifindex
608
+ # @option args [String] name
609
+ # @return [Nl::Async::Future<Messages::DoGetReply>]
610
+ # @see Messages::DoGetRequest
611
+ def do_get(**args)
612
+ @exchange.call(:"do", Messages::DoGetRequest, Messages::DoGetReply, args)
613
+ end
614
+ # Get / dump OVS vport configuration and state
615
+ # @rbs (?dp_ifindex: ::Integer, ?name: ::String) -> ::Nl::Async::Stream[Messages::DumpGetReply]
616
+ # @param [Hash] args
617
+ # @option args [Integer] dp_ifindex
618
+ # @option args [String] name
619
+ # @return [Nl::Async::Stream<Messages::DumpGetReply>]
620
+ # @see Messages::DumpGetRequest
621
+ def dump_get(**args)
622
+ @exchange.call(:"dump", Messages::DumpGetRequest, Messages::DumpGetReply, args)
623
+ end
624
+ end
625
+ # Returns the asynchronous operation facade for this family.
626
+ # @rbs (?stream_capacity: ::Integer?) -> AsyncOperations
627
+ # @param [::Integer, nil] stream_capacity
628
+ # @return [AsyncOperations]
629
+ def async(stream_capacity: nil)
630
+ return @async_operations ||= build_async_facade(AsyncOperations) if stream_capacity.nil?
631
+ build_async_facade(AsyncOperations, stream_capacity:)
632
+ end
633
+ # @rbs (*(:ovs_vport) groups) -> self
634
+ # @param [Array<:ovs_vport>] groups
635
+ # @return [self]
636
+ def subscribe(*groups) = super
637
+ # @rbs (*(:ovs_vport) groups) -> self
638
+ # @param [Array<:ovs_vport>] groups
639
+ # @return [self]
640
+ def unsubscribe(*groups) = super
390
641
  end
391
642
  end; end