Compare commits

..

62 Commits

Author SHA1 Message Date
Patrick J Cherry
754f3ef681 Maybe this will fix the yaml.. 2017-06-30 09:47:29 +01:00
Patrick J Cherry
6e16adcd54 Add a publish-to-rubygems branch execption for publishing 2017-06-30 09:29:57 +01:00
Patrick J Cherry
08049d6dfb Merge branch 'master' into publish-to-rubygems 2017-06-30 09:29:36 +01:00
Patrick J Cherry
84ca8ee842 Added a rubygems publish task.
This could be tricksy to get right!
2017-06-30 09:28:18 +01:00
James Carter
28722623e2 Merge branch 'update-changelog' into 'master'
Updated changelog

See merge request !4
2017-05-10 15:28:52 +01:00
Patrick J Cherry
1afe488c81 Updated changelog 2017-05-10 15:25:51 +01:00
James Carter
424f700fb8 Merge branch '3-packaging-change-triggers-falling-back-to-gcc-to-determine-sizeof-size_t-warnings' into 'master'
Packaging change triggers `Falling back to gcc to determine sizeof size_t` warnings

Closes #3

See merge request !3
2017-05-10 13:30:48 +01:00
Patrick J Cherry
bbcbb10e75 Use #bytesize instead of #size when measuring the length of our packed integer. 2017-05-10 12:17:51 +01:00
Patrick J Cherry
6e75dc4e17 Re-instate this as an arch-independent package, and remove gcc call
We're now assuming that the size of size_t is a long unsigned integer.
In the kernel there's a comment:

/*
 * Most 32 bit architectures use "unsigned int" size_t,
 * and all 64 bit architectures use "unsigned long" size_t.
 */

On 32 bit architectures, an unsigned int is the same size as an unsigned
long anyway, so I think this assumption is OK.
2017-05-10 11:38:10 +01:00
Patrick J Cherry
a539a87132 Revert "Revert "This is really an arch-independent package""
This reverts commit c7d9554d63.
2017-05-10 11:38:02 +01:00
Patrick J Cherry
c7d9554d63 Revert "This is really an arch-independent package"
This reverts commit 2614fdd90d.
2017-05-10 10:11:14 +01:00
Ian Chilton
e2543fb32b Merge branch 'package-gem' into 'master'
Added gem packaging job

See merge request !2
2017-03-07 16:52:00 +00:00
Patrick J Cherry
e7ba3b40c2 Added gem packaging job 2017-03-07 16:25:15 +00:00
Steve Kemp
f591cd8dcb Merge branch '2-package-and-publish-in-gitlab-ci-retire-maker2-job' into 'master'
Build in gitlab-ci

Closes #2

See merge request !1
2017-03-01 08:38:06 +00:00
Patrick J Cherry
b25a4b8744 Updated changelog 2017-02-28 16:44:50 +00:00
Patrick J Cherry
a389edbf27 Set correct image for publishing 2017-02-28 16:39:58 +00:00
Patrick J Cherry
8c21f7c28f Use docker images to build 2017-02-28 16:34:13 +00:00
Patrick J Cherry
2614fdd90d This is really an arch-independent package 2017-02-28 16:33:28 +00:00
Patrick J Cherry
230c5f8641 Added quilt as a build-dep 2017-02-28 16:28:56 +00:00
Patrick J Cherry
17cf206279 Added correct debbuildopt 2017-02-28 16:25:05 +00:00
Patrick J Cherry
15a303cb97 Use quilt to build 2017-02-28 16:21:31 +00:00
Patrick J Cherry
7488920028 Update sautobuild just do do a binary build; also save artifacts 2017-02-28 16:20:27 +00:00
Patrick J Cherry
ae655dde0e added wheezy 2017-02-28 16:17:10 +00:00
Patrick J Cherry
4c7488d928 gitlab-ci: Checkout master before trying to do stuff 2017-02-22 13:06:20 +00:00
Patrick J Cherry
1aff2698f7 gitlab-ci: Updated some more 2017-02-22 13:05:19 +00:00
Patrick J Cherry
c3a79718fa Use sautobuild to do the building 2017-02-22 12:09:19 +00:00
Patrick J Cherry
27e9ba595b Add more git-buildpackage flags 2017-01-24 16:54:15 +00:00
Patrick J Cherry
ad1fbc788d Checkout the branch, don't create it 2017-01-24 16:52:05 +00:00
Patrick J Cherry
1f2b994c45 First pass at gitlab-ci 2017-01-24 16:51:07 +00:00
Patrick J Cherry
885990c5b3 Updated changelog 2016-10-17 13:11:17 +01:00
Patrick J Cherry
da46b0ec2a Merge branch 'master' into debian/jessie 2016-10-17 13:10:35 +01:00
Patrick J Cherry
552696e3b0 Updated to 0.18 2016-10-17 13:08:53 +01:00
Patrick J Cherry
23d710e94b Updated linux header constants 2016-10-17 13:07:47 +01:00
Patrick J Cherry
9e6ce9d913 Merged in another test fix 2015-04-02 11:53:48 +01:00
Patrick J Cherry
06d78d4168 Scaled back the massive allocation of IPs from 11 /24s to 4.
Otherwise I get

Error: test_massively_parallel_IP_address_addition(TestAddr::TestWithNetlinkRouteSocket)
  Errno::EMFILE: Too many open files - socket(2)
  lib/linux/netlink/nlsocket.rb:61:in `initialize'
  lib/linux/netlink/nlsocket.rb:61:in `new'
  lib/linux/netlink/nlsocket.rb:61:in `initialize'
  lib/linux/netlink/route.rb:21:in `initialize'
  test/t_route.rb:54:in `new'
  test/t_route.rb:54:in `block (4 levels) in <class:TestAddr>'
2015-04-02 11:52:56 +01:00
Patrick J Cherry
a97bbe0d7c Merged in new tests 2015-04-02 11:47:17 +01:00
Patrick J Cherry
2ceb0fbf6d Make sure link exists before proceeding with test 2015-04-02 11:44:40 +01:00
Patrick J Cherry
d771a2be9c New tests 2015-04-01 23:12:30 +01:00
Patrick J Cherry
51b8bbcd8a Fixed new massive IP test thing to work with ruby1.8 and also non-root users 2015-04-01 23:05:41 +01:00
Patrick J Cherry
118903d9d5 Added tag 0.17-1+jessie1 for changeset 149ff4e2efb4 2015-04-01 22:52:30 +01:00
Patrick J Cherry
0ed037fc9d New jessie release 2015-04-01 22:52:10 +01:00
Patrick J Cherry
4b17ea4714 new branch 2015-04-01 17:40:19 +01:00
Patrick J Cherry
05e54f22e8 Added tag 0.16-1+wheezy1 for changeset c0eb6a0f135a 2014-08-26 16:34:27 +01:00
Patrick J Cherry
f2f99ce8e4 New upstream release. 2014-08-26 16:34:20 +01:00
Patrick J Cherry
8d47c623c4 Added tag 0.15-1+wheezy1 for changeset 73cc3d95f810 2014-01-21 10:01:59 +00:00
Patrick J Cherry
827ca74740 New upstream release 2014-01-21 10:01:42 +00:00
Patrick J Cherry
75a6eaca70 Added tag 0.14-1+wheezy1 for changeset babbc25e15f5 2013-11-14 13:38:35 +00:00
Patrick J Cherry
427fa40ef4 New upstream release 2013-11-14 13:37:57 +00:00
Patrick J Cherry
7ad9816fc3 Added tag 0.13-1+wheezy1 for changeset 6681f37480ff 2013-11-13 16:17:36 +00:00
Patrick J Cherry
4e4d0e02b6 New upstream release 2013-11-13 16:16:57 +00:00
Patrick J Cherry
a4afa867a1 Added tag 0.12-1+wheezy1 for changeset 5a2086dbce00 2013-09-12 14:27:19 +01:00
Patrick J Cherry
72ce94ef59 Merge, new upstream release 2013-09-12 14:27:08 +01:00
Patrick J Cherry
ee38239429 merge 2013-07-16 16:50:24 +01:00
Patrick J Cherry
33fe733d3f merge 2013-07-16 16:47:11 +01:00
Patrick J Cherry
181d3cd30a Foo 2013-07-16 16:28:40 +01:00
Patrick J Cherry
4ed52c07dd Added tag 0.11-1+wheezy2 for changeset 123ea9ee6130 2013-07-05 14:25:40 +01:00
Patrick J Cherry
ffe52106cd merged heads 2013-07-05 14:25:08 +01:00
Patrick J Cherry
10f11d9bc1 Updated package name to match ruby-packaging standards.
Added patch to remove rubygems requirements.
2013-07-05 14:23:49 +01:00
Patrick J Cherry
4cba09d819 Added patches to remove rubygems requirements. 2013-07-05 14:17:24 +01:00
Patrick J Cherry
9e1b28a8b1 Added tag 0.11-1+wheezy1 for changeset 5db0aa45b5e2 2013-07-05 13:58:14 +01:00
Patrick J Cherry
08050fbec7 Updated packaging for wheezy. 2013-07-05 13:58:07 +01:00
Patrick J Cherry
7eb0b073ec Added wheezy branch 2013-07-05 13:54:39 +01:00
14 changed files with 547 additions and 364 deletions

53
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,53 @@
stages:
- package
- publish
package:jessie:gem:
image: $CI_REGISTRY/docker-images/layers:$DISTRO-ruby
stage: package
variables:
DISTRO: jessie
GEMFILE: netlinkrb.gemspec
script:
- package
artifacts:
paths:
- pkg/
package:jessie: &package
image: $CI_REGISTRY/docker-images/layers:$DISTRO-deb
stage: package
variables:
DISTRO: jessie
script:
- package
artifacts:
paths:
- pkg/
package:stretch:
<<: *package
variables:
DISTRO: stretch
package:wheezy:
<<: *package
variables:
DISTRO: wheezy
publish:
image: $CI_REGISTRY/docker-images/layers:jessie-publish
stage: publish
script:
- publish
publish:rubygems:
image: $CI_REGISTRY/docker-images/layers:$DISTRO-ruby
stage: publish
script:
- mkdir -p ~/.gem
- 'echo -e "---\n:rubygems_api_key: ''$RUBYGEMS_API_KEY''\n" > ~/.gem/credentials'
- gem push pkg/jessie/gems/netlinkrb-*.gem
only:
- master
- publish-to-rubygems

View File

@@ -1,6 +1,7 @@
^debian/liblinux-netlink-ruby(1.8|1.9.1)?$ ^debian/ruby-linux-netlink$
~$ ~$
^.config-liblinux-netlink-ruby ^.config-liblinux-netlink-ruby
^.pc/
^debian/files$ ^debian/files$
^debian/.*\.substvars$ ^debian/.*\.substvars$
^debian/.*\.debhelper.log$ ^debian/.*\.debhelper.log$

68
debian/changelog vendored
View File

@@ -1,44 +1,82 @@
linux-netlink-ruby (0.17-1+squeeze1) oldstable; urgency=medium ruby-linux-netlink (0.19-1) stable; urgency=medium
* The size of size_t is now calculated from the size of an unsigned long
int, instead of calling gcc.
-- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 10 May 2017 15:24:42 +0100
ruby-linux-netlink (0.18-2) stable; urgency=medium
* This package is now architecture independent.
* The source format has been removed in favour of using dh --with quilt.
-- Patrick J Cherry <patrick@bytemark.co.uk> Tue, 28 Feb 2017 16:43:43 +0000
ruby-linux-netlink (0.18-1+jessie1) stable; urgency=medium
* Fixed new massive IP test thing to work with ruby1.8 and also non-root users
* Make sure link exists before proceeding with test
* Scaled back the massive allocation of IPs from 11 /24s to 4.
* Updated linux header constants
* Updated to 0.18
-- Patrick J Cherry <patrick@bytemark.co.uk> Mon, 17 Oct 2016 13:09:35 +0100
ruby-linux-netlink (0.17-1+jessie1) testing; urgency=medium
* New upstream release * New upstream release
-- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 01 Apr 2015 22:48:55 +0100 -- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 01 Apr 2015 22:51:34 +0100
linux-netlink-ruby (0.16-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.16-1+jessie1) testing; urgency=medium
* Repackaged for jessie
-- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 01 Apr 2015 17:39:44 +0100
ruby-linux-netlink (0.16-1+wheezy1) stable; urgency=medium
* New upstream release. * New upstream release.
-- Patrick J Cherry <patch@dynamo> Tue, 26 Aug 2014 16:32:44 +0100 -- Patrick J Cherry <patch@dynamo> Tue, 26 Aug 2014 16:33:48 +0100
linux-netlink-ruby (0.15-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.15-1+wheezy1) stable; urgency=low
* New upstream release. * New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Tue, 21 Jan 2014 10:02:54 +0000 -- Patrick J Cherry <patrick@bytemark.co.uk> Tue, 21 Jan 2014 10:01:20 +0000
linux-netlink-ruby (0.14-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.14-1+wheezy1) stable; urgency=low
* New upstream release. * New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 14 Nov 2013 11:59:05 +0000 -- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 14 Nov 2013 13:37:28 +0000
linux-netlink-ruby (0.13-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.13-1+wheezy1) stable; urgency=low
* New upstream release. * New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 13 Nov 2013 16:15:43 +0000 -- Patrick J Cherry <patrick@bytemark.co.uk> Wed, 13 Nov 2013 16:16:36 +0000
linux-netlink-ruby (0.12-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.12-1+wheezy1) stable; urgency=low
* New upstream release. * New upstream release.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 12 Sep 2013 14:28:10 +0100 -- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 12 Sep 2013 14:26:41 +0100
linux-netlink-ruby (0.11-1+squeeze1) oldstable; urgency=low ruby-linux-netlink (0.11-1+wheezy2) stable; urgency=low
* New upstream version. * Switch to dpkg-source 3.0 (quilt) format.
* Added patch to remove rubygems requires.
* Renamed source package to fit in with the new guidelines.
-- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 13:52:09 +0100 -- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 14:16:30 +0100
linux-netlink-ruby (0.11-1+wheezy1) stable; urgency=low
* New upstream version, repackaged for wheezy.
-- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 14:16:05 +0100
linux-netlink-ruby (0.10-6) stable; urgency=low linux-netlink-ruby (0.10-6) stable; urgency=low

35
debian/control vendored
View File

@@ -1,39 +1,18 @@
Source: linux-netlink-ruby Source: ruby-linux-netlink
Maintainer: Matthew Bloch <matthew@bytemark.co.uk> Maintainer: Matthew Bloch <matthew@bytemark.co.uk>
Uploaders: Patrick J Cherry <patrick@bytemark.co.uk> Uploaders: Patrick J Cherry <patrick@bytemark.co.uk>
Section: ruby Section: ruby
Priority: optional Priority: optional
Build-Depends: debhelper (>= 7), cdbs, ruby1.8, ruby1.9.1, ruby-pkg-tools, rake Build-Depends: debhelper (>= 7), gem2deb, rake, ruby-ffi, quilt
Standards-Version: 3.8.0 Standards-Version: 3.8.0
XS-Ruby-Versions: all
Package: liblinux-netlink-ruby Package: ruby-linux-netlink
Architecture: all Architecture: all
Depends: liblinux-netlink-ruby1.8 | liblinux-netlink-ruby1.9.1, ${misc:Depends} Depends: ruby | ruby-interpreter, ruby-ffi, ${misc:Depends}
Provides: liblinux-netlink-ruby1.8, liblinux-netlink-ruby1.9.1
XB-Ruby-Versions: ${ruby:Versions}
Description: Netlink socket library for Ruby Description: Netlink socket library for Ruby
This library provides an API for using a Linux Netlink socket, for doing This library provides an API for using a Linux Netlink socket, for doing
things like manipulating IP interfaces and routes programmatically, and things like manipulating IP interfaces and routes programmatically, and
capturing packets from ULOG. capturing packets from ULOG.
.
This is the metapackage for all versions of Ruby.
Package: liblinux-netlink-ruby1.8
Architecture: any
Depends: ruby1.8 (>= 1.8.7), libffi-ruby1.8, ${misc:Depends}
Description: Netlink socket library for Ruby 1.8
This library provides an API for using a Linux Netlink socket, for doing
things like manipulating IP interfaces and routes programmatically, and
capturing packets from ULOG.
.
This is the version for Ruby 1.8.7.
Package: liblinux-netlink-ruby1.9.1
Architecture: any
Depends: ruby1.9.1, libffi-ruby1.9.1, ${misc:Depends}
Description: Netlink socket library for Ruby 1.9.1
This library provides an API for using a Linux Netlink socket, for doing
things like manipulating IP interfaces and routes programmatically, and
capturing packets from ULOG.
.
This is the version for Ruby 1.9.1.

View File

@@ -1 +0,0 @@
examples/*

View File

@@ -0,0 +1,32 @@
Removed "require rubygems" from everywhere.
--- a/lib/linux/iptables.rb
+++ b/lib/linux/iptables.rb
@@ -1,11 +1,6 @@
require 'socket'
require 'linux/constants'
-
-begin
- require 'ffi'
-rescue LoadError
- require('rubygems') ? retry : raise
-end
+require 'ffi'
# Good things about FFI::Struct:
--- a/lib/linux/sendmsg.rb
+++ b/lib/linux/sendmsg.rb
@@ -1,12 +1,7 @@
# Patchup to add Socket#sendmsg and Socket#recvmsg for ruby 1.8
if BasicSocket.instance_methods.grep(/^sendmsg$/).empty?
- begin
- require 'ffi'
- rescue LoadError
- require('rubygems') ? retry : raise
- end
-
+ require 'ffi'
class BasicSocket
module FFIExt

1
debian/patches/series vendored Normal file
View File

@@ -0,0 +1 @@
remove-rubygems-requirements

2
debian/ruby-test-files.yaml vendored Normal file
View File

@@ -0,0 +1,2 @@
---
- test/t_route.rb

20
debian/rules vendored
View File

@@ -1,11 +1,23 @@
#!/usr/bin/make -f #!/usr/bin/make -f
# #
# export DH_VERBOSE=1
#
# Uncomment to ignore all test failures (but the tests will run anyway)
# export DH_RUBY_IGNORE_TESTS=all
#
# Uncomment to ignore some test failures (but the tests will run anyway).
# Valid values:
# export DH_RUBY_IGNORE_TESTS=ruby1.8 ruby1.9.1 require-rubygems
#
# If you need to specify the .gemspec (eg there is more than one)
# export DH_RUBY_GEMSPEC=gem.gemspec
include /usr/share/cdbs/1/rules/debhelper.mk %:
include /usr/share/ruby-pkg-tools/1/class/ruby-setup-rb.mk dh $@ --buildsystem=ruby --with ruby --with quilt
makebuilddir:: override_dh_auto_build-arch:
rake lib/linux/c_struct_sizeof_size_t.rb rake lib/linux/c_struct_sizeof_size_t.rb
clean:: override_dh_auto_clean:
rake clean rake clean

View File

@@ -82,8 +82,8 @@ class CStruct
begin begin
require 'linux/c_struct_sizeof_size_t.rb' require 'linux/c_struct_sizeof_size_t.rb'
rescue LoadError rescue LoadError
warn "Falling back to gcc to determine sizeof size_t." if $VERBOSE warn "netlinkrb: Assuming size_t is a long unsigned int." if $DEBUG
SIZEOF_SIZE_T = Integer(`echo __SIZEOF_SIZE_T__ | gcc -E -P -`) rescue 1.size SIZEOF_SIZE_T = [0].pack("L_").bytesize
end end
define_type :size_t, define_type :size_t,

View File

@@ -36,6 +36,7 @@ module Linux
NLM_F_ACK = 4 NLM_F_ACK = 4
NLM_F_ECHO = 8 NLM_F_ECHO = 8
NLM_F_DUMP_INTR = 16 NLM_F_DUMP_INTR = 16
NLM_F_DUMP_FILTERED = 32
NLM_F_ROOT = 0x100 NLM_F_ROOT = 0x100
NLM_F_MATCH = 0x200 NLM_F_MATCH = 0x200
NLM_F_ATOMIC = 0x400 NLM_F_ATOMIC = 0x400
@@ -53,6 +54,8 @@ module Linux
NLMSG_DONE = 0x3 NLMSG_DONE = 0x3
NLMSG_OVERRUN = 0x4 NLMSG_OVERRUN = 0x4
NLMSG_MIN_TYPE = 0x10
NETLINK_ADD_MEMBERSHIP = 1 NETLINK_ADD_MEMBERSHIP = 1
NETLINK_DROP_MEMBERSHIP = 2 NETLINK_DROP_MEMBERSHIP = 2
NETLINK_PKTINFO = 3 NETLINK_PKTINFO = 3
@@ -60,6 +63,9 @@ module Linux
NETLINK_NO_ENOBUFS = 5 NETLINK_NO_ENOBUFS = 5
NETLINK_RX_RING = 6 NETLINK_RX_RING = 6
NETLINK_TX_RING = 7 NETLINK_TX_RING = 7
NETLINK_LISTEN_ALL_NSID = 8
NETLINK_LIST_MEMBERSHIPS = 9
NETLINK_CAP_ACK = 10
NETLINK_UNCONNECTED = 0 NETLINK_UNCONNECTED = 0
NETLINK_CONNECTED = 1 NETLINK_CONNECTED = 1
@@ -71,6 +77,7 @@ module Linux
NLA_ALIGNTO = 4 # same on i686 and x86_64 NLA_ALIGNTO = 4 # same on i686 and x86_64
# from linux/rtnetlink.h. # from linux/rtnetlink.h.
RTM_BASE = 16
RTM_NEWLINK = 16 RTM_NEWLINK = 16
RTM_DELLINK = 17 RTM_DELLINK = 17
RTM_GETLINK = 18 RTM_GETLINK = 18
@@ -133,6 +140,12 @@ module Linux
RTM_DELMDB = 85 RTM_DELMDB = 85
RTM_GETMDB = 86 RTM_GETMDB = 86
RTM_NEWNSID = 88
RTM_DELNSID = 89
RTM_GETNSID = 90
RTM_NEWSTATS = 92
RTM_GETSTATS = 94
# RT#type # RT#type
RTN_UNSPEC = 0 RTN_UNSPEC = 0
@@ -164,6 +177,7 @@ module Linux
RTPROT_NTK = 15 RTPROT_NTK = 15
RTPROT_DHCP = 16 RTPROT_DHCP = 16
RTPROT_MROUTED = 17 RTPROT_MROUTED = 17
RTPROT_BABEL = 42
# RT#scope, IFAddr#scope # RT#scope, IFAddr#scope
RT_SCOPE_UNIVERSE = 0 RT_SCOPE_UNIVERSE = 0
@@ -177,6 +191,7 @@ module Linux
RTM_F_CLONED = 0x200 RTM_F_CLONED = 0x200
RTM_F_EQUALIZE = 0x400 RTM_F_EQUALIZE = 0x400
RTM_F_PREFIX = 0x800 RTM_F_PREFIX = 0x800
RTM_F_LOOKUP_TABLE = 0x1000
# RT#table (reserved values) # RT#table (reserved values)
RT_TABLE_UNSPEC = 0 RT_TABLE_UNSPEC = 0
@@ -201,11 +216,21 @@ module Linux
RTA_TABLE = 15 RTA_TABLE = 15
RTA_MARK = 16 RTA_MARK = 16
RTA_MFC_STATS = 17 RTA_MFC_STATS = 17
RTA_VIA = 18
RTA_NEWDST = 19
RTA_PREF = 20
RTA_ENCAP_TYPE = 21
RTA_ENCAP = 22
RTA_EXPIRES = 23
RTA_PAD = 24
# Keys for RT#nh_flags # Keys for RT#nh_flags
RTNH_F_DEAD = 1 # Nexthop is dead (used by multipath) RTNH_F_DEAD = 1 # Nexthop is dead (used by multipath)
RTNH_F_PERVASIVE = 2 # Do recursive gateway lookup RTNH_F_PERVASIVE = 2 # Do recursive gateway lookup
RTNH_F_ONLINK = 4 # Gateway is forced on link RTNH_F_ONLINK = 4 # Gateway is forced on link
RTNH_F_OFFLOAD = 8 # offloaded route
RTNH_F_LINKDOWN = 16 # carrier-down on nexthop
# Keys for RT#metrics # Keys for RT#metrics
RTAX_UNSPEC = 0 RTAX_UNSPEC = 0
@@ -224,6 +249,7 @@ module Linux
RTAX_RTO_MIN = 13 RTAX_RTO_MIN = 13
RTAX_INITRWND = 14 RTAX_INITRWND = 14
RTAX_QUICKACK = 15 RTAX_QUICKACK = 15
RTAX_CC_ALGO = 16
# from linux/if_link.h # from linux/if_link.h
IFLA_UNSPEC = 0 IFLA_UNSPEC = 0
@@ -261,6 +287,14 @@ module Linux
IFLA_NUM_RX_QUEUES = 32 IFLA_NUM_RX_QUEUES = 32
IFLA_CARRIER = 33 IFLA_CARRIER = 33
IFLA_PHYS_PORT_ID = 34 IFLA_PHYS_PORT_ID = 34
IFLA_CARRIER_CHANGES = 35
IFLA_PHYS_SWITCH_ID = 36
IFLA_LINK_NETNSID = 37
IFLA_PHYS_PORT_NAME = 38
IFLA_PROTO_DOWN = 39
IFLA_GSO_MAX_SEGS = 40
IFLA_GSO_MAX_SIZE = 41
IFLA_PAD = 42
BRIDGE_MODE_UNSPEC = 0 BRIDGE_MODE_UNSPEC = 0
BRIDGE_MODE_HAIRPIN = 1 BRIDGE_MODE_HAIRPIN = 1
@@ -275,12 +309,30 @@ module Linux
IFLA_BRPORT_FAST_LEAVE = 7 # multicast fast leave IFLA_BRPORT_FAST_LEAVE = 7 # multicast fast leave
IFLA_BRPORT_LEARNING = 8 # mac learning IFLA_BRPORT_LEARNING = 8 # mac learning
IFLA_BRPORT_UNICAST_FLOOD = 9 # flood unicast traffic IFLA_BRPORT_UNICAST_FLOOD = 9 # flood unicast traffic
IFLA_BRPORT_PROXYARP = 10 # proxy ARP
IFLA_BRPORT_LEARNING_SYNC = 11 # mac learning sync from device
IFLA_BRPORT_PROXYARP_WIFI = 12 # proxy ARP for Wi-Fi
IFLA_BRPORT_ROOT_ID = 13 # designated root
IFLA_BRPORT_BRIDGE_ID = 14 # designated bridge
IFLA_BRPORT_DESIGNATED_PORT = 15
IFLA_BRPORT_DESIGNATED_COST = 16
IFLA_BRPORT_ID = 17
IFLA_BRPORT_NO = 18
IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19
IFLA_BRPORT_CONFIG_PENDING = 20
IFLA_BRPORT_MESSAGE_AGE_TIMER = 21
IFLA_BRPORT_FORWARD_DELAY_TIMER = 22
IFLA_BRPORT_HOLD_TIMER = 23
IFLA_BRPORT_FLUSH = 24
IFLA_BRPORT_MULTICAST_ROUTER = 25
IFLA_BRPORT_PAD = 26
IFLA_INFO_UNSPEC = 0 IFLA_INFO_UNSPEC = 0
IFLA_INFO_KIND = 1 # "vlan", "gre" etc IFLA_INFO_KIND = 1 # "vlan", "gre" etc
IFLA_INFO_DATA = 2 # packed rtattrs specific to type, e.g. vlan IFLA_INFO_DATA = 2 # packed rtattrs specific to type, e.g. vlan
IFLA_INFO_XSTATS = 3 IFLA_INFO_XSTATS = 3
# INFO_DATA for INFO_KIND == "vlan" # INFO_DATA for INFO_KIND == "vlan"
IFLA_VLAN_UNSPEC = 0 IFLA_VLAN_UNSPEC = 0
IFLA_VLAN_ID = 1 # ushort IFLA_VLAN_ID = 1 # ushort
@@ -295,11 +347,16 @@ module Linux
IFLA_MACVLAN_UNSPEC = 0 IFLA_MACVLAN_UNSPEC = 0
IFLA_MACVLAN_MODE = 1 IFLA_MACVLAN_MODE = 1
IFLA_MACVLAN_FLAGS = 2 IFLA_MACVLAN_FLAGS = 2
IFLA_MACVLAN_MACADDR_MODE = 3
IFLA_MACVLAN_MACADDR = 4
IFLA_MACVLAN_MACADDR_DATA = 5
IFLA_MACVLAN_MACADDR_COUNT = 6
MACVLAN_MODE_PRIVATE = 1 MACVLAN_MODE_PRIVATE = 1 # don't talk to other macvlans
MACVLAN_MODE_VEPA = 2 MACVLAN_MODE_VEPA = 2 # talk to other ports through ext bridge
MACVLAN_MODE_BRIDGE = 4 MACVLAN_MODE_BRIDGE = 4 # talk to bridge ports directly
MACVLAN_MODE_PASSTHRU = 8 MACVLAN_MODE_PASSTHRU = 8 # take over the underlying device
MACVLAN_MODE_SOURCE = 16 # use source MAC address list to assign
# TODO: VXLAN and VF stuff is missing here # TODO: VXLAN and VF stuff is missing here
@@ -331,6 +388,8 @@ module Linux
IFA_F_PERMANENT = 0x80 IFA_F_PERMANENT = 0x80
IFA_F_MANAGETEMPADDR = 0x100 IFA_F_MANAGETEMPADDR = 0x100
IFA_F_NOPREFIXROUTE = 0x200 IFA_F_NOPREFIXROUTE = 0x200
IFA_F_MCAUTOJOIN = 0x400
IFA_F_STABLE_PRIVACY = 0x800
# from linux/if_arp.h - selected subset # from linux/if_arp.h - selected subset
ARPHRD_NETROM = 0 ARPHRD_NETROM = 0
@@ -392,8 +451,10 @@ module Linux
NF_INET_NUMHOOKS = 5 NF_INET_NUMHOOKS = 5
NFPROTO_UNSPEC = 0 NFPROTO_UNSPEC = 0
NFPROTO_INET = 1
NFPROTO_IPV4 = 2 NFPROTO_IPV4 = 2
NFPROTO_ARP = 3 NFPROTO_ARP = 3
NFPROTO_NETDEV = 5
NFPROTO_BRIDGE = 7 NFPROTO_BRIDGE = 7
NFPROTO_IPV6 = 10 NFPROTO_IPV6 = 10
NFPROTO_DECNET = 12 NFPROTO_DECNET = 12

View File

@@ -5,7 +5,7 @@ $:.unshift lib unless $:.include? lib
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "netlinkrb" s.name = "netlinkrb"
s.version = "0.17" s.version = "0.18"
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.authors = ["Brian Candler", "Matthew Bloch", "Patrick Cherry", "Alex Young", "Nicholas Thomas"] s.authors = ["Brian Candler", "Matthew Bloch", "Patrick Cherry", "Alex Young", "Nicholas Thomas"]
s.email = ["matthew@bytemark.co.uk"] s.email = ["matthew@bytemark.co.uk"]

View File

@@ -42,8 +42,12 @@ class TestAddr < Test::Unit::TestCase
test "massively parallel IP address addition" do test "massively parallel IP address addition" do
@ifname = create_test_interface @ifname = create_test_interface
return if @ifname.nil?
ips = (10..20).map {|y| (1..254).map {|z| "10.100.#{y}.#{z}" } }.flatten.compact link = @ip.link.list.find{|x| x.ifname == @ifname}
return if link.nil?
ips = (10..13).map {|y| (1..254).map {|z| "10.100.#{y}.#{z}" } }.flatten.compact
threads = ips.map {|ip| threads = ips.map {|ip|
Thread.new { Thread.new {
@@ -55,7 +59,8 @@ class TestAddr < Test::Unit::TestCase
} }
} }
threads.map(&:join) threads.map{|t| t.join }
created = @ip.addr.list(:index => @ifname, :family => Socket::AF_INET). created = @ip.addr.list(:index => @ifname, :family => Socket::AF_INET).
map {|ifaddr| ifaddr.address.to_s } map {|ifaddr| ifaddr.address.to_s }