Compare commits

..

2 Commits

Author SHA1 Message Date
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
11 changed files with 77 additions and 129 deletions

View File

@@ -1,4 +1,4 @@
^debian/liblinux-netlink-ruby(1.8|1.9.1)?$ ^debian/ruby-linux-netlink$
~$ ~$
^.config-liblinux-netlink-ruby ^.config-liblinux-netlink-ruby
^debian/files$ ^debian/files$

12
debian/changelog vendored
View File

@@ -1,14 +1,8 @@
linux-netlink-ruby (0.12-1+squeeze1) oldstable; urgency=low linux-netlink-ruby (0.11-1+wheezy1) stable; urgency=low
* New upstream release. * New upstream version, repackaged for wheezy.
-- Patrick J Cherry <patrick@bytemark.co.uk> Thu, 12 Sep 2013 14:28:10 +0100 -- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 13:57:06 +0100
linux-netlink-ruby (0.11-1+squeeze1) oldstable; urgency=low
* New upstream version.
-- Patrick J Cherry <patrick@bytemark.co.uk> Fri, 05 Jul 2013 13:52:09 +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

@@ -3,37 +3,16 @@ 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
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: any
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/*

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
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

@@ -233,14 +233,11 @@ module Linux
IFLA_STATS64 = 23 IFLA_STATS64 = 23
IFLA_VF_PORTS = 24 IFLA_VF_PORTS = 24
IFLA_PORT_SELF = 25 IFLA_PORT_SELF = 25
IFLA_AF_SPEC = 26 IFLA_AF_SPEC = 26
IFLA_GROUP = 27 IFLA_GROUP = 27
IFLA_NET_NS_FD = 28 IFLA_NET_NS_FD = 28
IFLA_EXT_MASK = 29 IFLA_EXT_MASK = 29
IFLA_PROMISCUITY = 30 IFLA_PROMISCUITY = 30
IFLA_NUM_TX_QUEUES = 31
IFLA_NUM_RX_QUEUES = 32
IFLA_CARRIER = 33
IFLA_INFO_UNSPEC = 0 IFLA_INFO_UNSPEC = 0
IFLA_INFO_KIND = 1 # "vlan", "gre" etc IFLA_INFO_KIND = 1 # "vlan", "gre" etc

View File

@@ -65,9 +65,6 @@ module Netlink
rtattr :net_ns_fd, IFLA_NET_NS_FD rtattr :net_ns_fd, IFLA_NET_NS_FD
rtattr :ext_mask, IFLA_EXT_MASK rtattr :ext_mask, IFLA_EXT_MASK
rtattr :promiscuity, IFLA_PROMISCUITY rtattr :promiscuity, IFLA_PROMISCUITY
rtattr :num_tx_queues, IFLA_NUM_TX_QUEUES
rtattr :num_rx_queues, IFLA_NUM_RX_QUEUES
rtattr :carrier, IFLA_CARRIER
# Return the best stats available (64bit or 32bit) # Return the best stats available (64bit or 32bit)
def stats def stats

View File

@@ -5,9 +5,9 @@ $:.unshift lib unless $:.include? lib
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "netlinkrb" s.name = "netlinkrb"
s.version = "0.12" s.version = "0.11"
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.authors = ["Brian Candler", "Matthew Bloch", "Patrick Cherry", "Alex Young"] s.authors = ["Brian Candler", "Patrick Cherry", "Alex Young"]
s.email = ["matthew@bytemark.co.uk"] s.email = ["matthew@bytemark.co.uk"]
s.summary = "Interface to Linux' Netlink API" s.summary = "Interface to Linux' Netlink API"
s.description = "Ruby native interface to the Netlink API which avoids shelling out to command-line tools as much as possible." s.description = "Ruby native interface to the Netlink API which avoids shelling out to command-line tools as much as possible."

View File

@@ -16,12 +16,11 @@ class TestAddr < Test::Unit::TestCase
context "With netlink route socket" do context "With netlink route socket" do
setup do setup do
@ip = $ip @ip = $ip
@ifname = nil
end end
teardown do teardown do
begin begin
delete_test_interface(@ifname) delete_test_interface
rescue KeyError, IndexError rescue KeyError, IndexError
# Do nothing # Do nothing
end end
@@ -39,29 +38,28 @@ class TestAddr < Test::Unit::TestCase
:kind => "dummy" :kind => "dummy"
) )
) )
rescue Errno::EOPNOTSUPP
# Ugh, fall back to eth0
ifname = "eth0"
rescue Errno::EPERM => err rescue Errno::EPERM => err
do_skip err.to_s if self.respond_to?(:skip)
skip err.to_s
else
puts "Skipping #{self.method_name} -- #{err.to_s}"
return nil
end
end end
return ifname return ifname
end end
def set_interface_up(ifname) def set_interface_up(ifname)
link = @ip.link.list.find{|l| l.ifname == ifname} link = @ip.link.list.find{|l| l.ifname == ifname}
return if link.nil? #
return unless link.linkinfo and "dummy" == link.linkinfo.kind # Bring the link up
#
# @ip.link.change(
# Bring the link up :index => link.index,
# :flags => link.flags | Linux::IFF_UP | Linux::IFF_RUNNING
@ip.link.change( )
:index => link.index,
:flags => link.flags | Linux::IFF_UP | Linux::IFF_RUNNING
)
link = @ip.link.list.find{|l| l.ifname == ifname} link = @ip.link.list.find{|l| l.ifname == ifname}
@@ -73,7 +71,6 @@ class TestAddr < Test::Unit::TestCase
link = @ip.link.list.find{|l| l.ifname == ifname} link = @ip.link.list.find{|l| l.ifname == ifname}
return if link.nil? return if link.nil?
return unless link.linkinfo and "dummy" == link.linkinfo.kind
return unless link.flags == (link.flags | Linux::IFF_UP | Linux::IFF_RUNNING) return unless link.flags == (link.flags | Linux::IFF_UP | Linux::IFF_RUNNING)
# #
@@ -90,39 +87,19 @@ class TestAddr < Test::Unit::TestCase
assert_equal(0, link.flags & Linux::IFF_RUNNING, "Link still has the IFF_RUNNING flag set") assert_equal(0, link.flags & Linux::IFF_RUNNING, "Link still has the IFF_RUNNING flag set")
end end
def delete_test_interface(ifname) def delete_test_interface(ifname = "test_#{$$}")
unless @ip.link[ifname] and @ip.link[ifname].linkinfo and "dummy" == @ip.link[ifname].linkinfo.kind
return nil
end
begin begin
set_interface_down(ifname) set_interface_down(ifname)
ensure ensure
@ip.link.delete(:index => ifname) @ip.link.delete(:index => ifname)
end end
end end
def do_skip(msg)
if self.respond_to?(:skip)
skip msg
else
puts "Skipping #{self.method_name} -- #{msg}"
end
return nil
end
test "Add and remove dummy interface" do
@ifname = create_test_interface
return if @ifname.nil?
link = @ip.link.list.find{|x| x.ifname == @ifname} test "Add and remove dummy interface" do
return if link.nil? ifname = create_test_interface
return if ifname.nil?
unless link.linkinfo and "dummy" == link.linkinfo.kind delete_test_interface(ifname)
return do_skip("Could not create dummy interface")
end
delete_test_interface(@ifname)
end end
def addrlist(opt = {:index=>"lo"}) def addrlist(opt = {:index=>"lo"})
@@ -130,26 +107,23 @@ class TestAddr < Test::Unit::TestCase
end end
def add_and_remove_addr(testaddr, pfx) def add_and_remove_addr(testaddr, pfx)
@ifname = create_test_interface ifname = create_test_interface
return if @ifname.nil? return if ifname.nil?
link = @ip.link.list.find{|x| x.ifname == @ifname} addrs1 = addrlist({:index => ifname})
return if link.nil?
addrs1 = addrlist({:index => @ifname})
assert !addrs1.include?(testaddr) assert !addrs1.include?(testaddr)
@ip.addr.add(:index=>@ifname, :local=>testaddr, :prefixlen=>pfx) @ip.addr.add(:index=>ifname, :local=>testaddr, :prefixlen=>pfx)
assert_raises(Errno::EEXIST) { assert_raises(Errno::EEXIST) {
@ip.addr.add(:index=>@ifname, :local=>testaddr, :prefixlen=>pfx) @ip.addr.add(:index=>ifname, :local=>testaddr, :prefixlen=>pfx)
} }
addrs2 = addrlist({:index => @ifname}) addrs2 = addrlist({:index => ifname})
assert addrs2.include?(testaddr), "#{addrs2.inspect} doesn't include #{testaddr}" assert addrs2.include?(testaddr), "#{addrs2.inspect} doesn't include #{testaddr}"
@ip.addr.delete(:index=>@ifname, :local=>testaddr, :prefixlen=>pfx) @ip.addr.delete(:index=>ifname, :local=>testaddr, :prefixlen=>pfx)
addrs3 = addrlist({:index => @ifname}) addrs3 = addrlist({:index => ifname})
assert_equal addrs1, addrs3 assert_equal addrs1, addrs3
end end
@@ -184,24 +158,22 @@ class TestAddr < Test::Unit::TestCase
end end
test "Add and remove vlan" do test "Add and remove vlan" do
@ifname = create_test_interface ifname = create_test_interface
return if @ifname.nil? return if ifname.nil?
link = @ip.link.list.find{|x| x.ifname == @ifname} vlans1 = vlanlist(ifname)
return if link.nil?
vlans1 = vlanlist(@ifname)
assert !vlans1.include?(1234) assert !vlans1.include?(1234)
@ip.vlan.add(:link=>@ifname, :vlan_id=>1234) @ip.vlan.add(:link=>ifname, :vlan_id=>1234)
vlans2 = vlanlist(@ifname) vlans2 = vlanlist(ifname)
assert vlans2.include?(1234) assert vlans2.include?(1234)
@ip.vlan.delete(:link=>@ifname, :vlan_id=>1234) @ip.vlan.delete(:link=>ifname, :vlan_id=>1234)
vlans3 = vlanlist(@ifname) vlans3 = vlanlist(ifname)
assert_equal vlans1, vlans3 assert_equal vlans1, vlans3
@ip.link.delete(:index => ifname)
end end
def routes def routes
@@ -219,17 +191,13 @@ class TestAddr < Test::Unit::TestCase
end end
def add_and_remove_route(info) def add_and_remove_route(info)
@ifname = create_test_interface ifname = create_test_interface
return if @ifname.nil? return if ifname.nil?
set_interface_up(@ifname) set_interface_up(ifname)
info[:oif] = @ifname info[:oif] = ifname
ifidx = @ip.link.list.find{|x| x.ifname == info[:oif]}.index
link = @ip.link.list.find{|x| x.ifname == info[:oif]}
return if link.nil?
ifidx = link.index
assert_equal 0, routes.select { |x| x == [info[:dst], info[:dst_len], ifidx] }.size assert_equal 0, routes.select { |x| x == [info[:dst], info[:dst_len], ifidx] }.size