nl-linux 0.2.3 → 0.3.0

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -0
  3. data/CHANGELOG.md +8 -0
  4. data/NLSPEC_VERSION +1 -1
  5. data/Rakefile +13 -3
  6. data/generated/nl/linux/binder.rb +80 -0
  7. data/generated/nl/linux/conntrack.rb +39 -2
  8. data/generated/nl/linux/dev_energymodel.rb +106 -0
  9. data/generated/nl/linux/devlink.rb +1478 -200
  10. data/generated/nl/linux/dpll.rb +790 -66
  11. data/generated/nl/linux/drm_ras.rb +309 -0
  12. data/generated/nl/linux/ethtool.rb +1597 -248
  13. data/generated/nl/linux/fou.rb +82 -13
  14. data/generated/nl/linux/handshake.rb +93 -1
  15. data/generated/nl/linux/lockd.rb +50 -0
  16. data/generated/nl/linux/mptcp_pm.rb +159 -0
  17. data/generated/nl/linux/net_shaper.rb +124 -1
  18. data/generated/nl/linux/netdev.rb +515 -6
  19. data/generated/nl/linux/nfsd.rb +878 -10
  20. data/generated/nl/linux/nftables.rb +2134 -179
  21. data/generated/nl/linux/nl80211.rb +81 -22
  22. data/generated/nl/linux/nlctrl.rb +59 -8
  23. data/generated/nl/linux/ovpn.rb +207 -12
  24. data/generated/nl/linux/ovs_datapath.rb +59 -10
  25. data/generated/nl/linux/ovs_flow.rb +63 -20
  26. data/generated/nl/linux/ovs_packet.rb +277 -0
  27. data/generated/nl/linux/ovs_vport.rb +59 -10
  28. data/generated/nl/linux/psp.rb +453 -6
  29. data/generated/nl/linux/rt_addr.rb +69 -14
  30. data/generated/nl/linux/rt_link.rb +452 -112
  31. data/generated/nl/linux/rt_neigh.rb +227 -16
  32. data/generated/nl/linux/rt_route.rb +92 -49
  33. data/generated/nl/linux/rt_rule.rb +300 -11
  34. data/generated/nl/linux/sunrpc_cache.rb +423 -0
  35. data/generated/nl/linux/tc.rb +168 -54
  36. data/generated/nl/linux/tcp_metrics.rb +69 -12
  37. data/generated/nl/linux/team.rb +80 -0
  38. data/generated/nl/linux/wireguard.rb +99 -7
  39. data/generated/nl/linux.rb +3 -0
  40. data/lib/nl/linux/version.rb +1 -1
  41. data/linux/devlink.yaml +92 -2
  42. data/linux/dpll.yaml +94 -5
  43. data/linux/drm_ras.yaml +126 -0
  44. data/linux/ethtool.yaml +21 -4
  45. data/linux/handshake.yaml +9 -0
  46. data/linux/mptcp_pm.yaml +1 -0
  47. data/linux/net_shaper.yaml +13 -6
  48. data/linux/netdev.yaml +61 -2
  49. data/linux/nfsd.yaml +303 -2
  50. data/linux/nftables.yaml +640 -49
  51. data/linux/ovpn.yaml +26 -1
  52. data/linux/ovs_packet.yaml +130 -0
  53. data/linux/psp.yaml +80 -3
  54. data/linux/rt-link.yaml +70 -24
  55. data/linux/sunrpc_cache.yaml +149 -0
  56. data/linux/tc.yaml +3 -0
  57. metadata +17 -9
@@ -1,4 +1,6 @@
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/tc.yaml from Linux v7.2.
2
4
  #--
3
5
  # frozen_string_literal: true
4
6
  # rbs_inline: enabled
@@ -9,6 +11,7 @@ module Nl; module Linux
9
11
  class Tc < ::Nl::Family
10
12
  NAME = "tc"
11
13
  PROTOCOL = Ractor.make_shareable(::Nl::Protocols::Raw.new("tc", 0))
14
+ MCAST_GROUPS = Ractor.make_shareable({:"rtnlgrp_tc" => ::Nl::McastGroup.new("rtnlgrp-tc", 4)}) #: Hash[::Symbol, ::Nl::McastGroup]
12
15
  module Structs
13
16
  Tcmsg = Struct.new(
14
17
  :"family", #: ::Integer
@@ -135,8 +138,8 @@ class Tc < ::Nl::Family
135
138
  end
136
139
  end
137
140
  TcHtbOpt = Struct.new(
138
- :"rate", #: untyped
139
- :"ceil", #: untyped
141
+ :"rate", #: ::String
142
+ :"ceil", #: ::String
140
143
  :"buffer", #: ::Integer
141
144
  :"cbuffer", #: ::Integer
142
145
  :"quantum", #: ::Integer
@@ -270,10 +273,10 @@ class Tc < ::Nl::Family
270
273
  end
271
274
  TcMqprioQopt = Struct.new(
272
275
  :"num_tc", #: ::Integer
273
- :"prio_tc_map", #: untyped
276
+ :"prio_tc_map", #: ::String
274
277
  :"hw", #: ::Integer
275
- :"count", #: untyped
276
- :"offset", #: untyped
278
+ :"count", #: ::String
279
+ :"offset", #: ::String
277
280
  )
278
281
  class TcMqprioQopt
279
282
  # :nodoc:
@@ -533,7 +536,7 @@ class Tc < ::Nl::Family
533
536
  end
534
537
  TcPrioQopt = Struct.new(
535
538
  :"bands", #: ::Integer
536
- :"priomap", #: untyped
539
+ :"priomap", #: ::String
537
540
  )
538
541
  class TcPrioQopt
539
542
  # :nodoc:
@@ -661,7 +664,7 @@ class Tc < ::Nl::Family
661
664
  end
662
665
  end
663
666
  TcSfqQoptV1 = Struct.new(
664
- :"v0", #: untyped
667
+ :"v0", #: ::String
665
668
  :"depth", #: ::Integer
666
669
  :"headdrop", #: ::Integer
667
670
  :"limit", #: ::Integer
@@ -672,7 +675,7 @@ class Tc < ::Nl::Family
672
675
  :"Scell_log", #: ::Integer
673
676
  :"flags", #: ::Integer
674
677
  :"max_P", #: ::Integer
675
- :"stats", #: untyped
678
+ :"stats", #: ::String
676
679
  )
677
680
  class TcSfqQoptV1
678
681
  # :nodoc:
@@ -719,8 +722,8 @@ class Tc < ::Nl::Family
719
722
  end
720
723
  end
721
724
  TcTbfQopt = Struct.new(
722
- :"rate", #: untyped
723
- :"peakrate", #: untyped
725
+ :"rate", #: ::String
726
+ :"peakrate", #: ::String
724
727
  :"limit", #: ::Integer
725
728
  :"buffer", #: ::Integer
726
729
  :"mtu", #: ::Integer
@@ -955,8 +958,8 @@ class Tc < ::Nl::Family
955
958
  :"horizon_drops", #: ::Integer
956
959
  :"horizon_caps", #: ::Integer
957
960
  :"fastpath_packets", #: ::Integer
958
- :"band_drops", #: untyped
959
- :"band_pkt_count", #: untyped
961
+ :"band_drops", #: ::String
962
+ :"band_pkt_count", #: ::String
960
963
  :"pad", #: nil
961
964
  )
962
965
  class TcFqQdStats
@@ -1251,7 +1254,7 @@ class Tc < ::Nl::Family
1251
1254
  :"offoff", #: ::Integer
1252
1255
  :"hoff", #: ::Integer
1253
1256
  :"hmask", #: ::Integer
1254
- :"keys", #: untyped
1257
+ :"keys", #: ::String
1255
1258
  )
1256
1259
  class TcU32Sel
1257
1260
  # :nodoc:
@@ -1463,8 +1466,8 @@ class Tc < ::Nl::Family
1463
1466
  :"limit", #: ::Integer
1464
1467
  :"burst", #: ::Integer
1465
1468
  :"mtu", #: ::Integer
1466
- :"rate", #: untyped
1467
- :"peakrate", #: untyped
1469
+ :"rate", #: ::String
1470
+ :"peakrate", #: ::String
1468
1471
  :"refcnt", #: ::Integer
1469
1472
  :"bindcnt", #: ::Integer
1470
1473
  :"capab", #: ::Integer
@@ -1495,7 +1498,7 @@ class Tc < ::Nl::Family
1495
1498
  :"bindcnt", #: ::Integer
1496
1499
  :"nkeys", #: ::Integer
1497
1500
  :"flags", #: ::Integer
1498
- :"keys", #: untyped
1501
+ :"keys", #: ::String
1499
1502
  )
1500
1503
  class TcPeditSel
1501
1504
  # :nodoc:
@@ -3005,10 +3008,15 @@ class Tc < ::Nl::Family
3005
3008
  NAME = :"blue_timer_us"
3006
3009
  DATATYPE = ::Nl::Protocols::Raw::DataTypes::Scalar.new(::Nl::Endian::Host::S32, check: nil)
3007
3010
  end
3011
+ class ActiveQueues < Attribute
3012
+ TYPE = 17
3013
+ NAME = :"active_queues"
3014
+ DATATYPE = ::Nl::Protocols::Raw::DataTypes::Scalar.new(::Nl::Endian::Host::U32, check: nil)
3015
+ end
3008
3016
  # :nodoc:
3009
- BY_NAME = Ractor.make_shareable({:"pad" => Pad, :"capacity_estimate64" => CapacityEstimate64, :"memory_limit" => MemoryLimit, :"memory_used" => MemoryUsed, :"avg_netoff" => AvgNetoff, :"min_netlen" => MinNetlen, :"max_netlen" => MaxNetlen, :"min_adjlen" => MinAdjlen, :"max_adjlen" => MaxAdjlen, :"tin_stats" => TinStats, :"deficit" => Deficit, :"cobalt_count" => CobaltCount, :"dropping" => Dropping, :"drop_next_us" => DropNextUs, :"p_drop" => PDrop, :"blue_timer_us" => BlueTimerUs}) #: Hash[::Symbol, Attribute]
3017
+ BY_NAME = Ractor.make_shareable({:"pad" => Pad, :"capacity_estimate64" => CapacityEstimate64, :"memory_limit" => MemoryLimit, :"memory_used" => MemoryUsed, :"avg_netoff" => AvgNetoff, :"min_netlen" => MinNetlen, :"max_netlen" => MaxNetlen, :"min_adjlen" => MinAdjlen, :"max_adjlen" => MaxAdjlen, :"tin_stats" => TinStats, :"deficit" => Deficit, :"cobalt_count" => CobaltCount, :"dropping" => Dropping, :"drop_next_us" => DropNextUs, :"p_drop" => PDrop, :"blue_timer_us" => BlueTimerUs, :"active_queues" => ActiveQueues}) #: Hash[::Symbol, Attribute]
3010
3018
  # :nodoc:
3011
- BY_TYPE = Ractor.make_shareable({1 => Pad, 2 => CapacityEstimate64, 3 => MemoryLimit, 4 => MemoryUsed, 5 => AvgNetoff, 6 => MinNetlen, 7 => MaxNetlen, 8 => MinAdjlen, 9 => MaxAdjlen, 10 => TinStats, 11 => Deficit, 12 => CobaltCount, 13 => Dropping, 14 => DropNextUs, 15 => PDrop, 16 => BlueTimerUs}) #: Hash[::Integer, Attribute]
3019
+ BY_TYPE = Ractor.make_shareable({1 => Pad, 2 => CapacityEstimate64, 3 => MemoryLimit, 4 => MemoryUsed, 5 => AvgNetoff, 6 => MinNetlen, 7 => MaxNetlen, 8 => MinAdjlen, 9 => MaxAdjlen, 10 => TinStats, 11 => Deficit, 12 => CobaltCount, 13 => Dropping, 14 => DropNextUs, 15 => PDrop, 16 => BlueTimerUs, 17 => ActiveQueues}) #: Hash[::Integer, Attribute]
3012
3020
  class << self
3013
3021
  # Looks up Attribute class by name.
3014
3022
  #--
@@ -6067,11 +6075,11 @@ class Tc < ::Nl::Family
6067
6075
  def kind; attributes[:"kind"]&.value; end
6068
6076
  # Gets the value of `options` attribute in the message.
6069
6077
  #--
6070
- # @rbs return: untyped
6078
+ # @rbs return: ::String
6071
6079
  def options; attributes[:"options"]&.value; end
6072
6080
  # Gets the value of `rate` attribute in the message.
6073
6081
  #--
6074
- # @rbs return: untyped
6082
+ # @rbs return: ::String
6075
6083
  def rate; attributes[:"rate"]&.value; end
6076
6084
  # Gets the value of `chain` attribute in the message.
6077
6085
  #--
@@ -6176,19 +6184,19 @@ class Tc < ::Nl::Family
6176
6184
  def kind; attributes[:"kind"]&.value; end
6177
6185
  # Gets the value of `options` attribute in the message.
6178
6186
  #--
6179
- # @rbs return: untyped
6187
+ # @rbs return: ::String
6180
6188
  def options; attributes[:"options"]&.value; end
6181
6189
  # Gets the value of `stats` attribute in the message.
6182
6190
  #--
6183
- # @rbs return: untyped
6191
+ # @rbs return: ::String
6184
6192
  def stats; attributes[:"stats"]&.value; end
6185
6193
  # Gets the value of `xstats` attribute in the message.
6186
6194
  #--
6187
- # @rbs return: untyped
6195
+ # @rbs return: ::String
6188
6196
  def xstats; attributes[:"xstats"]&.value; end
6189
6197
  # Gets the value of `rate` attribute in the message.
6190
6198
  #--
6191
- # @rbs return: untyped
6199
+ # @rbs return: ::String
6192
6200
  def rate; attributes[:"rate"]&.value; end
6193
6201
  # Gets the value of `fcnt` attribute in the message.
6194
6202
  #--
@@ -6278,19 +6286,19 @@ class Tc < ::Nl::Family
6278
6286
  def kind; attributes[:"kind"]&.value; end
6279
6287
  # Gets the value of `options` attribute in the message.
6280
6288
  #--
6281
- # @rbs return: untyped
6289
+ # @rbs return: ::String
6282
6290
  def options; attributes[:"options"]&.value; end
6283
6291
  # Gets the value of `stats` attribute in the message.
6284
6292
  #--
6285
- # @rbs return: untyped
6293
+ # @rbs return: ::String
6286
6294
  def stats; attributes[:"stats"]&.value; end
6287
6295
  # Gets the value of `xstats` attribute in the message.
6288
6296
  #--
6289
- # @rbs return: untyped
6297
+ # @rbs return: ::String
6290
6298
  def xstats; attributes[:"xstats"]&.value; end
6291
6299
  # Gets the value of `rate` attribute in the message.
6292
6300
  #--
6293
- # @rbs return: untyped
6301
+ # @rbs return: ::String
6294
6302
  def rate; attributes[:"rate"]&.value; end
6295
6303
  # Gets the value of `fcnt` attribute in the message.
6296
6304
  #--
@@ -6349,11 +6357,11 @@ class Tc < ::Nl::Family
6349
6357
  def kind; attributes[:"kind"]&.value; end
6350
6358
  # Gets the value of `options` attribute in the message.
6351
6359
  #--
6352
- # @rbs return: untyped
6360
+ # @rbs return: ::String
6353
6361
  def options; attributes[:"options"]&.value; end
6354
6362
  # Gets the value of `rate` attribute in the message.
6355
6363
  #--
6356
- # @rbs return: untyped
6364
+ # @rbs return: ::String
6357
6365
  def rate; attributes[:"rate"]&.value; end
6358
6366
  # Gets the value of `chain` attribute in the message.
6359
6367
  #--
@@ -6454,19 +6462,19 @@ class Tc < ::Nl::Family
6454
6462
  def kind; attributes[:"kind"]&.value; end
6455
6463
  # Gets the value of `options` attribute in the message.
6456
6464
  #--
6457
- # @rbs return: untyped
6465
+ # @rbs return: ::String
6458
6466
  def options; attributes[:"options"]&.value; end
6459
6467
  # Gets the value of `stats` attribute in the message.
6460
6468
  #--
6461
- # @rbs return: untyped
6469
+ # @rbs return: ::String
6462
6470
  def stats; attributes[:"stats"]&.value; end
6463
6471
  # Gets the value of `xstats` attribute in the message.
6464
6472
  #--
6465
- # @rbs return: untyped
6473
+ # @rbs return: ::String
6466
6474
  def xstats; attributes[:"xstats"]&.value; end
6467
6475
  # Gets the value of `rate` attribute in the message.
6468
6476
  #--
6469
- # @rbs return: untyped
6477
+ # @rbs return: ::String
6470
6478
  def rate; attributes[:"rate"]&.value; end
6471
6479
  # Gets the value of `fcnt` attribute in the message.
6472
6480
  #--
@@ -6525,11 +6533,11 @@ class Tc < ::Nl::Family
6525
6533
  def kind; attributes[:"kind"]&.value; end
6526
6534
  # Gets the value of `options` attribute in the message.
6527
6535
  #--
6528
- # @rbs return: untyped
6536
+ # @rbs return: ::String
6529
6537
  def options; attributes[:"options"]&.value; end
6530
6538
  # Gets the value of `rate` attribute in the message.
6531
6539
  #--
6532
- # @rbs return: untyped
6540
+ # @rbs return: ::String
6533
6541
  def rate; attributes[:"rate"]&.value; end
6534
6542
  # Gets the value of `chain` attribute in the message.
6535
6543
  #--
@@ -6646,19 +6654,19 @@ class Tc < ::Nl::Family
6646
6654
  def kind; attributes[:"kind"]&.value; end
6647
6655
  # Gets the value of `options` attribute in the message.
6648
6656
  #--
6649
- # @rbs return: untyped
6657
+ # @rbs return: ::String
6650
6658
  def options; attributes[:"options"]&.value; end
6651
6659
  # Gets the value of `stats` attribute in the message.
6652
6660
  #--
6653
- # @rbs return: untyped
6661
+ # @rbs return: ::String
6654
6662
  def stats; attributes[:"stats"]&.value; end
6655
6663
  # Gets the value of `xstats` attribute in the message.
6656
6664
  #--
6657
- # @rbs return: untyped
6665
+ # @rbs return: ::String
6658
6666
  def xstats; attributes[:"xstats"]&.value; end
6659
6667
  # Gets the value of `rate` attribute in the message.
6660
6668
  #--
6661
- # @rbs return: untyped
6669
+ # @rbs return: ::String
6662
6670
  def rate; attributes[:"rate"]&.value; end
6663
6671
  # Gets the value of `fcnt` attribute in the message.
6664
6672
  #--
@@ -6752,19 +6760,19 @@ class Tc < ::Nl::Family
6752
6760
  def kind; attributes[:"kind"]&.value; end
6753
6761
  # Gets the value of `options` attribute in the message.
6754
6762
  #--
6755
- # @rbs return: untyped
6763
+ # @rbs return: ::String
6756
6764
  def options; attributes[:"options"]&.value; end
6757
6765
  # Gets the value of `stats` attribute in the message.
6758
6766
  #--
6759
- # @rbs return: untyped
6767
+ # @rbs return: ::String
6760
6768
  def stats; attributes[:"stats"]&.value; end
6761
6769
  # Gets the value of `xstats` attribute in the message.
6762
6770
  #--
6763
- # @rbs return: untyped
6771
+ # @rbs return: ::String
6764
6772
  def xstats; attributes[:"xstats"]&.value; end
6765
6773
  # Gets the value of `rate` attribute in the message.
6766
6774
  #--
6767
- # @rbs return: untyped
6775
+ # @rbs return: ::String
6768
6776
  def rate; attributes[:"rate"]&.value; end
6769
6777
  # Gets the value of `fcnt` attribute in the message.
6770
6778
  #--
@@ -6823,11 +6831,11 @@ class Tc < ::Nl::Family
6823
6831
  def kind; attributes[:"kind"]&.value; end
6824
6832
  # Gets the value of `options` attribute in the message.
6825
6833
  #--
6826
- # @rbs return: untyped
6834
+ # @rbs return: ::String
6827
6835
  def options; attributes[:"options"]&.value; end
6828
6836
  # Gets the value of `rate` attribute in the message.
6829
6837
  #--
6830
- # @rbs return: untyped
6838
+ # @rbs return: ::String
6831
6839
  def rate; attributes[:"rate"]&.value; end
6832
6840
  # Gets the value of `chain` attribute in the message.
6833
6841
  #--
@@ -6936,19 +6944,19 @@ class Tc < ::Nl::Family
6936
6944
  def kind; attributes[:"kind"]&.value; end
6937
6945
  # Gets the value of `options` attribute in the message.
6938
6946
  #--
6939
- # @rbs return: untyped
6947
+ # @rbs return: ::String
6940
6948
  def options; attributes[:"options"]&.value; end
6941
6949
  # Gets the value of `stats` attribute in the message.
6942
6950
  #--
6943
- # @rbs return: untyped
6951
+ # @rbs return: ::String
6944
6952
  def stats; attributes[:"stats"]&.value; end
6945
6953
  # Gets the value of `xstats` attribute in the message.
6946
6954
  #--
6947
- # @rbs return: untyped
6955
+ # @rbs return: ::String
6948
6956
  def xstats; attributes[:"xstats"]&.value; end
6949
6957
  # Gets the value of `rate` attribute in the message.
6950
6958
  #--
6951
- # @rbs return: untyped
6959
+ # @rbs return: ::String
6952
6960
  def rate; attributes[:"rate"]&.value; end
6953
6961
  # Gets the value of `fcnt` attribute in the message.
6954
6962
  #--
@@ -6976,9 +6984,12 @@ class Tc < ::Nl::Family
6976
6984
  def egress_block; attributes[:"egress_block"]&.value; end
6977
6985
  end
6978
6986
  end
6987
+ module Notifications
6988
+ end
6989
+ NOTIFICATIONS = Ractor.make_shareable({}) #: Hash[::Integer, ::Class]
6979
6990
  # Create new tc qdisc.
6980
6991
  #--
6981
- # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: untyped, ?rate: untyped, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
6992
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
6982
6993
  def do_newqdisc(**args)
6983
6994
  exchange_message(:"do", Messages::DoNewqdiscRequest, nil, args)
6984
6995
  end
@@ -7003,7 +7014,7 @@ class Tc < ::Nl::Family
7003
7014
  end
7004
7015
  # Get / dump tc traffic class information.
7005
7016
  #--
7006
- # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: untyped, ?rate: untyped, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7017
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7007
7018
  def do_newtclass(**args)
7008
7019
  exchange_message(:"do", Messages::DoNewtclassRequest, nil, args)
7009
7020
  end
@@ -7021,7 +7032,7 @@ class Tc < ::Nl::Family
7021
7032
  end
7022
7033
  # Get / dump tc filter information.
7023
7034
  #--
7024
- # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: untyped, ?rate: untyped, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7035
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7025
7036
  def do_newtfilter(**args)
7026
7037
  exchange_message(:"do", Messages::DoNewtfilterRequest, nil, args)
7027
7038
  end
@@ -7046,7 +7057,7 @@ class Tc < ::Nl::Family
7046
7057
  end
7047
7058
  # Get / dump tc chain information.
7048
7059
  #--
7049
- # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: untyped, ?rate: untyped, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7060
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> void
7050
7061
  def do_newchain(**args)
7051
7062
  exchange_message(:"do", Messages::DoNewchainRequest, nil, args)
7052
7063
  end
@@ -7062,5 +7073,108 @@ class Tc < ::Nl::Family
7062
7073
  def do_getchain(**args)
7063
7074
  exchange_message(:"do", Messages::DoGetchainRequest, Messages::DoGetchainReply, args)
7064
7075
  end
7076
+ class AsyncOperations
7077
+ # :nodoc:
7078
+ def initialize(&exchange)
7079
+ @exchange = exchange
7080
+ end
7081
+ # Create new tc qdisc.
7082
+ #--
7083
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> ::Nl::Async::Future[void]
7084
+ def do_newqdisc(**args)
7085
+ @exchange.call(:"do", Messages::DoNewqdiscRequest, nil, args)
7086
+ end
7087
+ # Delete existing tc qdisc.
7088
+ #--
7089
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer) -> ::Nl::Async::Future[void]
7090
+ def do_delqdisc(**args)
7091
+ @exchange.call(:"do", Messages::DoDelqdiscRequest, nil, args)
7092
+ end
7093
+ # Get / dump tc qdisc information.
7094
+ #--
7095
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?dump_invisible: ::Integer) -> ::Nl::Async::Future[Messages::DoGetqdiscReply]
7096
+ def do_getqdisc(**args)
7097
+ @exchange.call(:"do", Messages::DoGetqdiscRequest, Messages::DoGetqdiscReply, args)
7098
+ end
7099
+ # Get / dump tc qdisc information.
7100
+ #--
7101
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?dump_invisible: ::Integer) -> ::Nl::Async::Stream[Messages::DumpGetqdiscReply]
7102
+ def dump_getqdisc(**args)
7103
+ @exchange.call(:"dump", Messages::DumpGetqdiscRequest, Messages::DumpGetqdiscReply, args)
7104
+ end
7105
+ # Get / dump tc traffic class information.
7106
+ #--
7107
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> ::Nl::Async::Future[void]
7108
+ def do_newtclass(**args)
7109
+ @exchange.call(:"do", Messages::DoNewtclassRequest, nil, args)
7110
+ end
7111
+ # Get / dump tc traffic class information.
7112
+ #--
7113
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer) -> ::Nl::Async::Future[void]
7114
+ def do_deltclass(**args)
7115
+ @exchange.call(:"do", Messages::DoDeltclassRequest, nil, args)
7116
+ end
7117
+ # Get / dump tc traffic class information.
7118
+ #--
7119
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer) -> ::Nl::Async::Future[Messages::DoGettclassReply]
7120
+ def do_gettclass(**args)
7121
+ @exchange.call(:"do", Messages::DoGettclassRequest, Messages::DoGettclassReply, args)
7122
+ end
7123
+ # Get / dump tc filter information.
7124
+ #--
7125
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> ::Nl::Async::Future[void]
7126
+ def do_newtfilter(**args)
7127
+ @exchange.call(:"do", Messages::DoNewtfilterRequest, nil, args)
7128
+ end
7129
+ # Get / dump tc filter information.
7130
+ #--
7131
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?chain: ::Integer) -> ::Nl::Async::Future[void]
7132
+ def do_deltfilter(**args)
7133
+ @exchange.call(:"do", Messages::DoDeltfilterRequest, nil, args)
7134
+ end
7135
+ # Get / dump tc filter information.
7136
+ #--
7137
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?chain: ::Integer) -> ::Nl::Async::Future[Messages::DoGettfilterReply]
7138
+ def do_gettfilter(**args)
7139
+ @exchange.call(:"do", Messages::DoGettfilterRequest, Messages::DoGettfilterReply, args)
7140
+ end
7141
+ # Get / dump tc filter information.
7142
+ #--
7143
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?chain: ::Integer, ?dump_flags: ::Integer) -> ::Nl::Async::Stream[Messages::DumpGettfilterReply]
7144
+ def dump_gettfilter(**args)
7145
+ @exchange.call(:"dump", Messages::DumpGettfilterRequest, Messages::DumpGettfilterReply, args)
7146
+ end
7147
+ # Get / dump tc chain information.
7148
+ #--
7149
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?kind: ::String, ?options: ::String, ?rate: ::String, ?chain: ::Integer, ?ingress_block: ::Integer, ?egress_block: ::Integer) -> ::Nl::Async::Future[void]
7150
+ def do_newchain(**args)
7151
+ @exchange.call(:"do", Messages::DoNewchainRequest, nil, args)
7152
+ end
7153
+ # Get / dump tc chain information.
7154
+ #--
7155
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?chain: ::Integer) -> ::Nl::Async::Future[void]
7156
+ def do_delchain(**args)
7157
+ @exchange.call(:"do", Messages::DoDelchainRequest, nil, args)
7158
+ end
7159
+ # Get / dump tc chain information.
7160
+ #--
7161
+ # @rbs (?family: ::Integer, ?ifindex: ::Integer, ?handle: ::Integer, ?parent: ::Integer, ?info: ::Integer, ?chain: ::Integer) -> ::Nl::Async::Future[Messages::DoGetchainReply]
7162
+ def do_getchain(**args)
7163
+ @exchange.call(:"do", Messages::DoGetchainRequest, Messages::DoGetchainReply, args)
7164
+ end
7165
+ end
7166
+ # Returns the asynchronous operation facade for this family.
7167
+ #--
7168
+ # @rbs (?stream_capacity: ::Integer?) -> AsyncOperations
7169
+ def async(stream_capacity: nil)
7170
+ return @async_operations ||= build_async_facade(AsyncOperations) if stream_capacity.nil?
7171
+ build_async_facade(AsyncOperations, stream_capacity:)
7172
+ end
7173
+ #--
7174
+ # @rbs (*(:rtnlgrp_tc) groups) -> self
7175
+ def subscribe(*groups) = super
7176
+ #--
7177
+ # @rbs (*(:rtnlgrp_tc) groups) -> self
7178
+ def unsubscribe(*groups) = super
7065
7179
  end
7066
7180
  end; end
@@ -1,4 +1,6 @@
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/tcp_metrics.yaml from Linux v7.2.
2
4
  #--
3
5
  # frozen_string_literal: true
4
6
  # rbs_inline: enabled
@@ -9,6 +11,7 @@ module Nl; module Linux
9
11
  class TcpMetrics < ::Nl::Family
10
12
  NAME = "tcp_metrics"
11
13
  PROTOCOL = Ractor.make_shareable(::Nl::Protocols::Genl.new("tcp_metrics"))
14
+ MCAST_GROUPS = Ractor.make_shareable({}) #: Hash[::Symbol, ::Nl::McastGroup]
12
15
  module Structs
13
16
  end
14
17
  module AttributeSets
@@ -172,7 +175,7 @@ class TcpMetrics < ::Nl::Family
172
175
  def addr_ipv4; attributes[:"addr_ipv4"]&.value; end
173
176
  # Gets the value of `addr-ipv6` attribute in the message.
174
177
  #--
175
- # @rbs return: untyped
178
+ # @rbs return: ::String
176
179
  def addr_ipv6; attributes[:"addr_ipv6"]&.value; end
177
180
  # Gets the value of `saddr-ipv4` attribute in the message.
178
181
  #--
@@ -180,7 +183,7 @@ class TcpMetrics < ::Nl::Family
180
183
  def saddr_ipv4; attributes[:"saddr_ipv4"]&.value; end
181
184
  # Gets the value of `saddr-ipv6` attribute in the message.
182
185
  #--
183
- # @rbs return: untyped
186
+ # @rbs return: ::String
184
187
  def saddr_ipv6; attributes[:"saddr_ipv6"]&.value; end
185
188
  end
186
189
  # Retrieve metrics.
@@ -195,7 +198,7 @@ class TcpMetrics < ::Nl::Family
195
198
  def addr_ipv4; attributes[:"addr_ipv4"]&.value; end
196
199
  # Gets the value of `addr-ipv6` attribute in the message.
197
200
  #--
198
- # @rbs return: untyped
201
+ # @rbs return: ::String
199
202
  def addr_ipv6; attributes[:"addr_ipv6"]&.value; end
200
203
  # Gets the value of `age` attribute in the message.
201
204
  #--
@@ -219,7 +222,7 @@ class TcpMetrics < ::Nl::Family
219
222
  def fopen_syn_drop_ts; attributes[:"fopen_syn_drop_ts"]&.value; end
220
223
  # Gets the value of `fopen-cookie` attribute in the message.
221
224
  #--
222
- # @rbs return: untyped
225
+ # @rbs return: ::String
223
226
  def fopen_cookie; attributes[:"fopen_cookie"]&.value; end
224
227
  # Gets the value of `saddr-ipv4` attribute in the message.
225
228
  #--
@@ -227,10 +230,17 @@ class TcpMetrics < ::Nl::Family
227
230
  def saddr_ipv4; attributes[:"saddr_ipv4"]&.value; end
228
231
  # Gets the value of `saddr-ipv6` attribute in the message.
229
232
  #--
230
- # @rbs return: untyped
233
+ # @rbs return: ::String
231
234
  def saddr_ipv6; attributes[:"saddr_ipv6"]&.value; end
232
235
  end
233
236
  # Retrieve metrics.
237
+ class DumpGetRequest < ::Nl::Protocols::Genl::Message
238
+ TYPE = 1
239
+ FIXED_HEADER = nil
240
+ ATTRIBUTE_SET = AttributeSets::TcpMetrics
241
+ ATTRIBUTES = Ractor.make_shareable(%i[])
242
+ end
243
+ # Retrieve metrics.
234
244
  class DumpGetReply < ::Nl::Protocols::Genl::Message
235
245
  TYPE = 1
236
246
  FIXED_HEADER = nil
@@ -242,7 +252,7 @@ class TcpMetrics < ::Nl::Family
242
252
  def addr_ipv4; attributes[:"addr_ipv4"]&.value; end
243
253
  # Gets the value of `addr-ipv6` attribute in the message.
244
254
  #--
245
- # @rbs return: untyped
255
+ # @rbs return: ::String
246
256
  def addr_ipv6; attributes[:"addr_ipv6"]&.value; end
247
257
  # Gets the value of `age` attribute in the message.
248
258
  #--
@@ -266,7 +276,7 @@ class TcpMetrics < ::Nl::Family
266
276
  def fopen_syn_drop_ts; attributes[:"fopen_syn_drop_ts"]&.value; end
267
277
  # Gets the value of `fopen-cookie` attribute in the message.
268
278
  #--
269
- # @rbs return: untyped
279
+ # @rbs return: ::String
270
280
  def fopen_cookie; attributes[:"fopen_cookie"]&.value; end
271
281
  # Gets the value of `saddr-ipv4` attribute in the message.
272
282
  #--
@@ -274,10 +284,12 @@ class TcpMetrics < ::Nl::Family
274
284
  def saddr_ipv4; attributes[:"saddr_ipv4"]&.value; end
275
285
  # Gets the value of `saddr-ipv6` attribute in the message.
276
286
  #--
277
- # @rbs return: untyped
287
+ # @rbs return: ::String
278
288
  def saddr_ipv6; attributes[:"saddr_ipv6"]&.value; end
279
289
  end
280
290
  # Delete metrics.
291
+ #
292
+ # Requires CAP_NET_ADMIN in the initial user namespace.
281
293
  class DoDelRequest < ::Nl::Protocols::Genl::Message
282
294
  TYPE = 2
283
295
  FIXED_HEADER = nil
@@ -289,7 +301,7 @@ class TcpMetrics < ::Nl::Family
289
301
  def addr_ipv4; attributes[:"addr_ipv4"]&.value; end
290
302
  # Gets the value of `addr-ipv6` attribute in the message.
291
303
  #--
292
- # @rbs return: untyped
304
+ # @rbs return: ::String
293
305
  def addr_ipv6; attributes[:"addr_ipv6"]&.value; end
294
306
  # Gets the value of `saddr-ipv4` attribute in the message.
295
307
  #--
@@ -297,21 +309,66 @@ class TcpMetrics < ::Nl::Family
297
309
  def saddr_ipv4; attributes[:"saddr_ipv4"]&.value; end
298
310
  # Gets the value of `saddr-ipv6` attribute in the message.
299
311
  #--
300
- # @rbs return: untyped
312
+ # @rbs return: ::String
301
313
  def saddr_ipv6; attributes[:"saddr_ipv6"]&.value; end
302
314
  end
303
315
  end
316
+ module Notifications
317
+ end
318
+ NOTIFICATIONS = Ractor.make_shareable({}) #: Hash[::Integer, ::Class]
304
319
  # Retrieve metrics.
305
320
  #--
306
- # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: untyped, ?saddr_ipv4: ::Integer, ?saddr_ipv6: untyped) -> Messages::DoGetReply
321
+ # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: ::String, ?saddr_ipv4: ::Integer, ?saddr_ipv6: ::String) -> Messages::DoGetReply
307
322
  def do_get(**args)
308
323
  exchange_message(:"do", Messages::DoGetRequest, Messages::DoGetReply, args)
309
324
  end
325
+ # Retrieve metrics.
326
+ #--
327
+ # @rbs () -> Enumerable[Messages::DumpGetReply]
328
+ # | () { (Messages::DumpGetReply) -> void } -> void
329
+ def dump_get(**args, &block)
330
+ exchange_message(:"dump", Messages::DumpGetRequest, Messages::DumpGetReply, args, &block)
331
+ end
310
332
  # Delete metrics.
333
+ #
334
+ # Requires CAP_NET_ADMIN in the initial user namespace.
311
335
  #--
312
- # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: untyped, ?saddr_ipv4: ::Integer, ?saddr_ipv6: untyped) -> void
336
+ # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: ::String, ?saddr_ipv4: ::Integer, ?saddr_ipv6: ::String) -> void
313
337
  def do_del(**args)
314
338
  exchange_message(:"do", Messages::DoDelRequest, nil, args)
315
339
  end
340
+ class AsyncOperations
341
+ # :nodoc:
342
+ def initialize(&exchange)
343
+ @exchange = exchange
344
+ end
345
+ # Retrieve metrics.
346
+ #--
347
+ # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: ::String, ?saddr_ipv4: ::Integer, ?saddr_ipv6: ::String) -> ::Nl::Async::Future[Messages::DoGetReply]
348
+ def do_get(**args)
349
+ @exchange.call(:"do", Messages::DoGetRequest, Messages::DoGetReply, args)
350
+ end
351
+ # Retrieve metrics.
352
+ #--
353
+ # @rbs () -> ::Nl::Async::Stream[Messages::DumpGetReply]
354
+ def dump_get(**args)
355
+ @exchange.call(:"dump", Messages::DumpGetRequest, Messages::DumpGetReply, args)
356
+ end
357
+ # Delete metrics.
358
+ #
359
+ # Requires CAP_NET_ADMIN in the initial user namespace.
360
+ #--
361
+ # @rbs (?addr_ipv4: ::Integer, ?addr_ipv6: ::String, ?saddr_ipv4: ::Integer, ?saddr_ipv6: ::String) -> ::Nl::Async::Future[void]
362
+ def do_del(**args)
363
+ @exchange.call(:"do", Messages::DoDelRequest, nil, args)
364
+ end
365
+ end
366
+ # Returns the asynchronous operation facade for this family.
367
+ #--
368
+ # @rbs (?stream_capacity: ::Integer?) -> AsyncOperations
369
+ def async(stream_capacity: nil)
370
+ return @async_operations ||= build_async_facade(AsyncOperations) if stream_capacity.nil?
371
+ build_async_facade(AsyncOperations, stream_capacity:)
372
+ end
316
373
  end
317
374
  end; end